diff options
Diffstat (limited to 'elf/rtld.c')
-rw-r--r-- | elf/rtld.c | 9 |
1 files changed, 5 insertions, 4 deletions
@@ -1778,8 +1778,7 @@ dl_main (const ElfW(Phdr) *phdr, elf_setup_debug_entry (main_map, r); /* We start adding objects. */ - r->r_state = RT_ADD; - _dl_debug_state (); + _dl_debug_change_state (r, RT_ADD); LIBC_PROBE (init_start, 2, LM_ID_BASE, r); /* Auditing checkpoint: we are ready to signal that the initial map @@ -2314,6 +2313,9 @@ dl_main (const ElfW(Phdr) *phdr, __rtld_mutex_init (); __rtld_malloc_init_real (main_map); + + /* Update copy-relocated _r_debug if necessary. */ + _dl_debug_post_relocate (main_map); } /* All ld.so initialization is complete. Apply RELRO. */ @@ -2334,8 +2336,7 @@ dl_main (const ElfW(Phdr) *phdr, /* Notify the debugger all new objects are now ready to go. We must re-get the address since by now the variable might be in another object. */ r = _dl_debug_update (LM_ID_BASE); - r->r_state = RT_CONSISTENT; - _dl_debug_state (); + _dl_debug_change_state (r, RT_CONSISTENT); LIBC_PROBE (init_complete, 2, LM_ID_BASE, r); /* Auditing checkpoint: we have added all objects. */ |