diff options
author | Ulrich Drepper <drepper@redhat.com> | 2004-03-07 05:26:02 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2004-03-07 05:26:02 +0000 |
commit | 021723ab784461de9eac57398ea16a47d4ab9366 (patch) | |
tree | 9fef57d701b88d5729e3150ea197f86957727998 /elf/dl-reloc.c | |
parent | bdf4a4f1eabb2e085b0610b53bb37b5263f4728d (diff) | |
download | glibc-021723ab784461de9eac57398ea16a47d4ab9366.zip glibc-021723ab784461de9eac57398ea16a47d4ab9366.tar.gz glibc-021723ab784461de9eac57398ea16a47d4ab9366.tar.bz2 |
Update.
2004-03-06 Ulrich Drepper <drepper@redhat.com>
* elf/dl-lookup.c: We don't need for specialized lookup functions.
Combining the functionality does not slow down relocation processing,
it might even speed it up a little.
* sysdeps/generic/ldsodefs.h: Adjust prototypes for lookup function.
Add only one function pointer to rtlf_global_ro.
* elf/do-lookup.h: Replace #ifs with ifs.
* elf/dl-libc.c: Adjust _dl_lookup_* callers.
* elf/dl-reloc.c: Likewise.
* elf/dl-runtime.c: Likewise.
* elf/dl-sym.c: Likewise.
* elf/rtld.c: Likewise. Adjust _rtld_global_ro initialization.
* sysdeps/generic/ldsodefs.h (__rtld_local_attribute__,
__rtld_global_attribute__): Undef after use.
(_rtld_local_ro): Define __rtld_local_attribute__ with just hidden
if available.
* sysdeps/alpha/Subdirs: New file.
* sysdeps/alpha/soft-fp/Makefile: New file.
* sysdeps/alpha/soft-fp/Versions: New file.
* sysdeps/alpha/soft-fp/local-soft-fp.h: New file.
* sysdeps/alpha/soft-fp/ots_add.c: New file.
* sysdeps/alpha/soft-fp/ots_cmp.c: new file.
* sysdeps/alpha/soft-fp/ots_cmpe.c: New file.
* sysdeps/alpha/soft-fp/ots_cvtqux.c: New file.
* sysdeps/alpha/soft-fp/ots_cvtqx.c: New file.
* sysdeps/alpha/soft-fp/ots_cvttx.c: New file.
* sysdeps/alpha/soft-fp/ots_cvtxq.c: New file.
* sysdeps/alpha/soft-fp/ots_cvtxt.c: New file.
* sysdeps/alpha/soft-fp/ots_div.c: New file.
* sysdeps/alpha/soft-fp/ots_mul.c: New file.
* sysdeps/alpha/soft-fp/ots_nintxq.c: New file.
* sysdeps/alpha/soft-fp/ots_sub.c: New file.
Diffstat (limited to 'elf/dl-reloc.c')
-rw-r--r-- | elf/dl-reloc.c | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/elf/dl-reloc.c b/elf/dl-reloc.c index 4349dc2..4004316 100644 --- a/elf/dl-reloc.c +++ b/elf/dl-reloc.c @@ -213,13 +213,15 @@ _dl_relocate_object (struct link_map *l, struct r_scope_elem *scope[], int _tc = elf_machine_type_class (r_type); \ l->l_lookup_cache.type_class = _tc; \ l->l_lookup_cache.sym = (*ref); \ - _lr = ((version) != NULL && (version)->hash != 0 \ - ? _dl_lookup_versioned_symbol (strtab + (*ref)->st_name, \ - l, (ref), scope, (version),\ - _tc, 0) \ - : _dl_lookup_symbol (strtab + (*ref)->st_name, l, (ref), \ - scope, _tc, \ - DL_LOOKUP_ADD_DEPENDENCY)); \ + const struct r_found_version *v = NULL; \ + int flags = DL_LOOKUP_ADD_DEPENDENCY; \ + if ((version) != NULL && (version)->hash != 0) \ + { \ + v = (version); \ + flags = 0; \ + } \ + _lr = _dl_lookup_symbol_x (strtab + (*ref)->st_name, l, (ref), \ + scope, v, _tc, flags, NULL); \ l->l_lookup_cache.ret = (*ref); \ l->l_lookup_cache.value = _lr; })) \ : l) @@ -234,13 +236,15 @@ _dl_relocate_object (struct link_map *l, struct r_scope_elem *scope[], int _tc = elf_machine_type_class (r_type); \ l->l_lookup_cache.type_class = _tc; \ l->l_lookup_cache.sym = (*ref); \ - _lr = ((version) != NULL && (version)->hash != 0 \ - ? _dl_lookup_versioned_symbol (strtab + (*ref)->st_name, \ - l, (ref), scope, \ - (version), _tc, 0) \ - : _dl_lookup_symbol (strtab + (*ref)->st_name, l, (ref), \ - scope, _tc, \ - DL_LOOKUP_ADD_DEPENDENCY)); \ + const struct r_found_version *v = NULL; \ + int flags = DL_LOOKUP_ADD_DEPENDENCY; \ + if ((version) != NULL && (version)->hash != 0) \ + { \ + v = (version); \ + flags = 0; \ + } \ + _lr = _dl_lookup_symbol_x (strtab + (*ref)->st_name, l, (ref), \ + scope, v, _tc, flags, NULL); \ l->l_lookup_cache.ret = (*ref); \ l->l_lookup_cache.value = _lr; })) \ : l->l_addr) |