summaryrefslogtreecommitdiff
path: root/include/link.h
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2001-08-26 10:50:26 +0000
committerUlrich Drepper <drepper@redhat.com>2001-08-26 10:50:26 +0000
commit680254fe22215c1f41f247d085c5cac5783b73f5 (patch)
treeb91211374166ef246d63137e39f7e1968cfb53c8 /include/link.h
parenta711b01d34ca5de9857ca5d19235812674fccee6 (diff)
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/link.h')
-rw-r--r--include/link.h16
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