diff options
-rw-r--r-- | elf/rtld.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/elf/rtld.c b/elf/rtld.c index 1cabe82660..8ec637f6a8 100644 --- a/elf/rtld.c +++ b/elf/rtld.c @@ -368,6 +368,11 @@ of this helper program; chances are you did not intend to run this program.\n", with the run-time address of the r_debug structure */ l->l_info[DT_DEBUG]->d_un.d_ptr = (ElfW(Addr)) r; + /* Fill in the pointer in the dynamic linker's own dynamic section, in + case you run gdb on the dynamic linker directly. */ + if (_dl_rtld_map.l_info[DT_DEBUG]) + _dl_rtld_map.l_info[DT_DEBUG]->d_un.d_ptr = (ElfW(Addr)) r; + /* Notify the debugger that all objects are now mapped in. */ r->r_state = RT_ADD; _dl_debug_state (); |