From 03e187a41d91069543cfcf33469a05912e555447 Mon Sep 17 00:00:00 2001 From: Florian Weimer Date: Wed, 29 Apr 2020 15:44:03 +0200 Subject: elf: Add initial flag argument to __libc_early_init The rseq initialization should happen only for the libc in the base namespace (in the dynamic case) or the statically linked libc. The __libc_multiple_libcs flag does not quite cover this case at present, so this commit introduces a flag argument to __libc_early_init, indicating whether the libc being libc is the primary one (of the main program). Reviewed-by: Carlos O'Donell --- elf/rtld.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'elf/rtld.c') diff --git a/elf/rtld.c b/elf/rtld.c index 0016db86a7..5ccc3c2dbb 100644 --- a/elf/rtld.c +++ b/elf/rtld.c @@ -2373,8 +2373,10 @@ ERROR: '%s': cannot process note segment.\n", _dl_argv[0]); rtld_timer_accum (&relocate_time, start); } - /* Relocation is complete. Perform early libc initialization. */ - _dl_call_libc_early_init (GL(dl_ns)[LM_ID_BASE].libc_map); + /* Relocation is complete. Perform early libc initialization. This + is the initial libc, even if audit modules have been loaded with + other libcs. */ + _dl_call_libc_early_init (GL(dl_ns)[LM_ID_BASE].libc_map, true); /* Do any necessary cleanups for the startup OS interface code. We do these now so that no calls are made after rtld re-relocation -- cgit v1.2.3