diff options
author | Ulrich Drepper <drepper@redhat.com> | 2001-08-26 10:50:26 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2001-08-26 10:50:26 +0000 |
commit | 680254fe22215c1f41f247d085c5cac5783b73f5 (patch) | |
tree | b91211374166ef246d63137e39f7e1968cfb53c8 /include | |
parent | a711b01d34ca5de9857ca5d19235812674fccee6 (diff) | |
download | glibc-680254fe22215c1f41f247d085c5cac5783b73f5.tar glibc-680254fe22215c1f41f247d085c5cac5783b73f5.tar.gz glibc-680254fe22215c1f41f247d085c5cac5783b73f5.tar.bz2 glibc-680254fe22215c1f41f247d085c5cac5783b73f5.zip |
Update.
* include/link.h (struct link_map): Add l_lookup_cache element.
* elf/dl-reloc.c (RESOLVE): Add symbol caching here.
(RESOLVE_MAP): Likewise.
(_dl_relocate_object): Remove cache initialization.
* elf/dl-lookup.c: Rip out cache handling code.
* sysdeps/generic/ldsodefs.h: Remove lookup_cache struct and variable
declarations.
* elf/dl-lookup.c (_dl_lookup_symbol): Reorder some conditions and
remove some __builtin_expect.
(_dl_lookup_versioned_symbol): Likewise.
R_386_RELATIVE handling for ld.so startup. Reduce RTLD_BOOTSTRAP
case to almost no code.
Diffstat (limited to 'include')
-rw-r--r-- | include/link.h | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/include/link.h b/include/link.h index 9345c928d7..5aba874927 100644 --- a/include/link.h +++ b/include/link.h @@ -1,6 +1,6 @@ /* Data structure for communication from the run-time dynamic linker for loaded ELF shared objects. - Copyright (C) 1995-1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -34,6 +34,7 @@ #include <bits/elfclass.h> /* Defines __ELF_NATIVE_CLASS. */ #include <bits/link.h> +#include <dl-lookupcfg.h> /* Rendezvous structure used by the run-time dynamic linker to communicate details of shared object loading to the debugger. If the executable's @@ -231,6 +232,19 @@ struct link_map unsigned int l_idx; struct link_map_machine l_mach; + + struct + { + const ElfW(Sym) *sym; + int noexec; + int noplt; +#ifdef DL_LOOKUP_RETURNS_MAP + struct link_map *value; +#else + ElfW(Addr) value; +#endif + const ElfW(Sym) *ret; + } l_lookup_cache; }; struct dl_phdr_info |