Greg Clayton 879a47a55f Add the ability to debug through an exec into ld
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
2022-05-09 16:07:40 -07:00

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;
}