From 6c03c2cf27b1a12cbf680377e4796b88a20ed9db Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Sun, 2 Jun 1996 21:35:43 +0000 Subject: * elf/dl-lookup.c (_dl_lookup_symbol): Arg NOSELF renamed to NOPLT. Reject SHN_UNDEF defns iff NOPLT is nonzero. * elf/link.h (_dl_lookup_symbol): Update prototype and comment. * elf/dl-runtime.c (fixup): Pass 1 to _dl_lookup_symbol for NOPLT. * elf/dlsym.c (dlsym): Pass 0. * elf/rtld.c (dl_main): Likewise. * elf/dl-reloc.c (_dl_relocate_object: resolve): Second arg R_OFFSET replaced with NOPLT flag. Pass it through to _dl_lookup_symbol. * elf/do-rel.h (elf_dynamic_do_rel): Update prototype of RESOLVE arg. Pass `elf_machine_pltrel_p (R->r_type)' result as NOPLT flag value. * sysdeps/i386/dl-machine.h (elf_machine_pltrel_p): New macro. * sysdeps/m68k/dl-machine.h (elf_machine_pltrel_p): Likewise. * sysdeps/stub/dl-machine.h (elf_machine_pltrel_p): Likewise. --- sysdeps/i386/dl-machine.h | 4 ++++ sysdeps/m68k/dl-machine.h | 4 ++++ sysdeps/stub/dl-machine.h | 9 +++++++-- 3 files changed, 15 insertions(+), 2 deletions(-) (limited to 'sysdeps') diff --git a/sysdeps/i386/dl-machine.h b/sysdeps/i386/dl-machine.h index 8f720736f0..4e0806fd48 100644 --- a/sysdeps/i386/dl-machine.h +++ b/sysdeps/i386/dl-machine.h @@ -132,6 +132,10 @@ elf_machine_lazy_rel (struct link_map *map, const Elf32_Rel *reloc) } } +/* Nonzero iff TYPE describes relocation of a PLT entry, so + PLT entries should not be allowed to define the value. */ +#define elf_machine_pltrel_p(type) ((type) == R_386_JMP_SLOT) + /* The i386 never uses Elf32_Rela relocations. */ #define ELF_MACHINE_NO_RELA 1 diff --git a/sysdeps/m68k/dl-machine.h b/sysdeps/m68k/dl-machine.h index 8cbb97787c..aa1f19eacb 100644 --- a/sysdeps/m68k/dl-machine.h +++ b/sysdeps/m68k/dl-machine.h @@ -136,6 +136,10 @@ elf_machine_lazy_rel (struct link_map *map, const Elf32_Rela *reloc) } } +/* Nonzero iff TYPE describes relocation of a PLT entry, so + PLT entries should not be allowed to define the value. */ +#define elf_machine_pltrel_p(type) ((type) == R_68K_JMP_SLOT) + /* The m68k never uses Elf32_Rel relocations. */ #define ELF_MACHINE_NO_REL 1 diff --git a/sysdeps/stub/dl-machine.h b/sysdeps/stub/dl-machine.h index d9227233e4..73943f1558 100644 --- a/sysdeps/stub/dl-machine.h +++ b/sysdeps/stub/dl-machine.h @@ -1,5 +1,5 @@ /* Machine-dependent ELF dynamic relocation inline functions. Stub version. -Copyright (C) 1995 Free Software Foundation, Inc. +Copyright (C) 1995, 1996 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 @@ -81,7 +81,7 @@ elf_machine_rel (Elf32_Addr loadaddr, Elf32_Dyn *info[DT_NUM], static inline void elf_machine_rela (Elf32_Addr loadaddr, Elf32_Dyn *info[DT_NUM], - const Elf32_Rela *reloc, + const Elf32_Rela *reloc, Elf32_Addr sym_loadaddr, const Elf32_Sym *sym) { _dl_signal_error (0, "Elf32_Rela relocation requested -- unused on " @@ -89,6 +89,11 @@ elf_machine_rela (Elf32_Addr loadaddr, Elf32_Dyn *info[DT_NUM], } +/* Nonzero iff TYPE describes relocation of a PLT entry, so + PLT entries should not be allowed to define the value. */ +#define elf_machine_pltrel_p(type) ((type) == R_???_JMP_SLOT) + + /* Set up the loaded object described by L so its unrelocated PLT entries will jump to the on-demand fixup code in dl-runtime.c. */ -- cgit v1.2.3