From 370f00c3a7bfaa50b091a8cbf049c5d3c92639ab Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Thu, 26 Jul 2001 00:27:15 +0000 Subject: Update. 2001-06-07 David Mosberger * sysdeps/ia64/dl-symaddr.c (_dl_symbol_address): Update call to __ia64_make_fptr() for new interface. (_dl_function_address): Remove. * sysdeps/ia64/dl-machine.h (IA64_BOOT_FPTR_TABLE_LEN): Rename from IA64_BOOT_FPTR_SIZE and reduce its value from 256 to 200. (struct ia64_fdesc): Rename from struct ia64_fptr and drop "next" pointer. Rename member "func" to "ip". (struct ia64_fdesc_table): New type. (__ia64_make_fptr): Change prototype. (__ia64_init_bootstrap_fdesc_table): New function. (ELF_MACHINE_BEFORE_RTLD_RELOC): New macro. (__boot_ldso_fptr): Removed. (__fptr_next): Removed. (__fptr_root): Removed. (__fptr_count): Removed. (TRAMPOLINE_TEMPLATE): Fix typo in comment. Don't use multi-line strings to avoid warning from gcc3. (RTLD_START): Don't use multi-line strings. (ELF_MACHINE_START_ADDRESS): Use DL_STATIC_FUNCTION_ADDRESS. (elf_machine_fixup_plt): Update the code entry point in the function descriptor through a "volatile" pointer to ensure proper write ordering. (elf_machine_rela): Simplify handling of FPTR relocs: always call __ia64_make_fptr(). * sysdeps/ia64/dl-lookupcfg.h (DL_AUTO_FUNCTION_ADDRESS): New macro. (DL_STATIC_FUNCTION_ADDRESS): Likewise. (DL_DT_INIT_ADDRESS): Use DL_AUTO_FUNCTION_ADDRESS. (DL_DT_FINI_ADDRESS): Likewise. * sysdeps/ia64/dl-fptr.c: Rewrite for better scalability and to avoid deadlocks. * include/link.h: Add member machine specific "l_mach" member to link_map. * sysdeps/generic/bits/link.h: New file. * sysdeps/ia64/bits/link.h: Likewise. * elf/rtld.c (_dl_start): Fix typo in comment. (_dl_start_final): Copy new "l_mach" member from temporary to final bootstrap map. --- elf/rtld.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'elf/rtld.c') diff --git a/elf/rtld.c b/elf/rtld.c index 45b29c679d..36dbc6f94c 100644 --- a/elf/rtld.c +++ b/elf/rtld.c @@ -157,7 +157,7 @@ _dl_start (void *arg) HP_TIMING_NOW (start_time); /* Partly clean the `bootstrap_map' structure up. Don't use `memset' - since it might nor be built in or inlined and we cannot make function + since it might not be built in or inlined and we cannot make function calls at this point. */ for (cnt = 0; cnt < sizeof (bootstrap_map.l_info) / sizeof (bootstrap_map.l_info[0]); @@ -228,6 +228,7 @@ _dl_start_final (void *arg, struct link_map *bootstrap_map_p, memcpy (_dl_rtld_map.l_info, bootstrap_map_p->l_info, sizeof _dl_rtld_map.l_info); _dl_setup_hash (&_dl_rtld_map); + _dl_rtld_map.l_mach = bootstrap_map_p->l_mach; /* Don't bother trying to work out how ld.so is mapped in memory. */ _dl_rtld_map.l_map_start = ~0; -- cgit v1.2.3