
A previous commit enabled LLDB to be able to debug a program launched via ld: https://reviews.llvm.org/D108061. This commit adds the ability to debug a program launched via ld when it happens during an exec into the dynamic loader. There was an issue where after the exec we would locate the rendezvous structure right away but it didn't contain any valid values and we would try to set the dyanamic loader breakpoint at address zero. This patch fixes that and adds a test. Differential Revision: https://reviews.llvm.org/D125253
17 lines
638 B
C++
17 lines
638 B
C++
#include <unistd.h>
|
|
|
|
int main(int argc, const char *argv[], const char *envp[]) {
|
|
if (argc == 2) {
|
|
// If we have two arguments the first is the path to this executable,
|
|
// the second is the path to the linux dynamic loader that we should
|
|
// exec with. We want to re-run this problem under the dynamic loader
|
|
// and make sure we can hit the breakpoint in the "else".
|
|
const char *interpreter = argv[1];
|
|
const char *this_program = argv[0];
|
|
const char *exec_argv[3] = {interpreter, this_program, nullptr};
|
|
execve(interpreter, (char *const *)exec_argv, (char *const *)envp);
|
|
}
|
|
// Break here
|
|
return 0;
|
|
}
|