aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/i386
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 /sysdeps/i386
parenta711b01d34ca5de9857ca5d19235812674fccee6 (diff)
downloadglibc-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 'sysdeps/i386')
-rw-r--r--sysdeps/i386/dl-machine.h7
1 files changed, 5 insertions, 2 deletions
diff --git a/sysdeps/i386/dl-machine.h b/sysdeps/i386/dl-machine.h
index 53d802203a..e7a1b104ef 100644
--- a/sysdeps/i386/dl-machine.h
+++ b/sysdeps/i386/dl-machine.h
@@ -334,13 +334,16 @@ elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc,
if (sym)
value += sym->st_value;
+#ifdef RTLD_BOOTSTRAP
+ assert (r_type == R_386_GLOB_DAT || r_type == R_386_JMP_SLOT);
+ *reloc_addr = value;
+#else
switch (r_type)
{
case R_386_GLOB_DAT:
case R_386_JMP_SLOT:
*reloc_addr = value;
break;
-#ifndef RTLD_BOOTSTRAP
case R_386_32:
*reloc_addr += value;
break;
@@ -372,8 +375,8 @@ elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc,
if we are still debugging. */
_dl_reloc_bad_type (map, r_type, 0);
break;
-#endif
}
+#endif
}
}