From 1f2a1df36b8e103660786a3058ef5a7dce9797fc Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Fri, 24 Aug 2001 14:58:03 +0000 Subject: Update. 2001-08-24 Jakub Jelinek * elf/do-rel.h (elf_machine_rel_relative): Define for rela if necessary. Undefine newly defined macros at the end. * sysdeps/hppa/dl-machine.h (elf_machine_rela_relative): Rename from elf_machine_rel_relative. * sysdeps/cris/dl-machine.h (elf_machine_rela_relative): Likewise. * sysdeps/m68k/dl-machine.h (elf_machine_rela_relative): Likewise. * sysdeps/powerpc/dl-machine.h (elf_machine_rela_relative): Likewise. * sysdeps/ia64/dl-machine.h (elf_machine_rela_relative): Likewise. Fix argument types. * sysdeps/alpha/dl-machine.h (elf_machine_rela_relative): Likewise. Fix argument types. * sysdeps/sparc/sparc32/dl-machine.h (elf_machine_rela_relative): Likewise. Fix argument types. * sysdeps/sparc/sparc64/dl-machine.h (elf_machine_rela_relative): Likewise. Fix argument types. * sysdeps/sh/dl-machine.h (elf_machine_rela_relative): Likewise. Fix argument types. * sysdeps/mips/dl-machine.h (elf_machine_rel_relative): Use ElfW(Rel) in argument. * sysdeps/mips/mips64/dl-machine.h (elf_machine_rel_relative): New function. --- ChangeLog | 24 ++++++++++++++++++++++++ elf/do-rel.h | 13 ++++++++----- sysdeps/alpha/dl-machine.h | 4 ++-- sysdeps/cris/dl-machine.h | 4 ++-- sysdeps/hppa/dl-machine.h | 4 ++-- sysdeps/ia64/dl-machine.h | 4 ++-- sysdeps/m68k/dl-machine.h | 4 ++-- sysdeps/mips/dl-machine.h | 4 ++-- sysdeps/mips/mips64/dl-machine.h | 18 ++++++++++++++---- sysdeps/powerpc/dl-machine.h | 4 ++-- sysdeps/sh/dl-machine.h | 4 ++-- sysdeps/sparc/sparc32/dl-machine.h | 4 ++-- sysdeps/sparc/sparc64/dl-machine.h | 4 ++-- 13 files changed, 66 insertions(+), 29 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2e97618a63..d1390e4aa1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,27 @@ +2001-08-24 Jakub Jelinek + + * elf/do-rel.h (elf_machine_rel_relative): Define for rela if + necessary. Undefine newly defined macros at the end. + * sysdeps/hppa/dl-machine.h (elf_machine_rela_relative): + Rename from elf_machine_rel_relative. + * sysdeps/cris/dl-machine.h (elf_machine_rela_relative): Likewise. + * sysdeps/m68k/dl-machine.h (elf_machine_rela_relative): Likewise. + * sysdeps/powerpc/dl-machine.h (elf_machine_rela_relative): Likewise. + * sysdeps/ia64/dl-machine.h (elf_machine_rela_relative): Likewise. + Fix argument types. + * sysdeps/alpha/dl-machine.h (elf_machine_rela_relative): Likewise. + Fix argument types. + * sysdeps/sparc/sparc32/dl-machine.h (elf_machine_rela_relative): + Likewise. Fix argument types. + * sysdeps/sparc/sparc64/dl-machine.h (elf_machine_rela_relative): + Likewise. Fix argument types. + * sysdeps/sh/dl-machine.h (elf_machine_rela_relative): Likewise. + Fix argument types. + * sysdeps/mips/dl-machine.h (elf_machine_rel_relative): Use + ElfW(Rel) in argument. + * sysdeps/mips/mips64/dl-machine.h (elf_machine_rel_relative): New + function. + 2001-08-24 Alexandre Oliva * sysdeps/sh/dl-machine.h (elf_machine_rela): Fix typo. diff --git a/elf/do-rel.h b/elf/do-rel.h index f7c2a5b2d4..fa84522d46 100644 --- a/elf/do-rel.h +++ b/elf/do-rel.h @@ -21,12 +21,13 @@ `elf_dynamic_do_rel' and `elf_dynamic_do_rela'. */ #ifdef DO_RELA -# define elf_dynamic_do_rel elf_dynamic_do_rela -# define RELCOUNT_IDX VERSYMIDX (DT_RELACOUNT) -# define Rel Rela -# define elf_machine_rel elf_machine_rela +# define elf_dynamic_do_rel elf_dynamic_do_rela +# define RELCOUNT_IDX VERSYMIDX (DT_RELACOUNT) +# define Rel Rela +# define elf_machine_rel elf_machine_rela +# define elf_machine_rel_relative elf_machine_rela_relative #else -# define RELCOUNT_IDX VERSYMIDX (DT_RELCOUNT) +# define RELCOUNT_IDX VERSYMIDX (DT_RELCOUNT) #endif #ifndef VERSYMIDX @@ -98,3 +99,5 @@ elf_dynamic_do_rel (struct link_map *map, #undef elf_dynamic_do_rel #undef Rel #undef elf_machine_rel +#undef elf_machine_rel_relative +#undef RELCOUNT_IDX diff --git a/sysdeps/alpha/dl-machine.h b/sysdeps/alpha/dl-machine.h index e16f046cb7..37e8136be8 100644 --- a/sysdeps/alpha/dl-machine.h +++ b/sysdeps/alpha/dl-machine.h @@ -548,8 +548,8 @@ elf_machine_rela (struct link_map *map, } static inline void -elf_machine_rel_relative (Elf64_Addr l_addr, const Elf64_Rel *reloc, - Elf64_Addr *const reloc_addr) +elf_machine_rela_relative (Elf64_Addr l_addr, const Elf64_Rela *reloc, + Elf64_Addr *const reloc_addr) { /* XXX Make some timings. Maybe it's preverable to test for unaligned access and only do it the complex way if necessary. */ diff --git a/sysdeps/cris/dl-machine.h b/sysdeps/cris/dl-machine.h index 0813f70ec6..ce8dfc6d4e 100644 --- a/sysdeps/cris/dl-machine.h +++ b/sysdeps/cris/dl-machine.h @@ -366,8 +366,8 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc, } static inline void -elf_machine_rel_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc, - Elf32_Addr *const reloc_addr) +elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc, + Elf32_Addr *const reloc_addr) { *reloc_addr = l_addr + reloc->r_addend; } diff --git a/sysdeps/hppa/dl-machine.h b/sysdeps/hppa/dl-machine.h index bc37986082..15e1c85b39 100644 --- a/sysdeps/hppa/dl-machine.h +++ b/sysdeps/hppa/dl-machine.h @@ -629,8 +629,8 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc, } static inline void -elf_machine_rel_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc, - Elf32_Addr *const reloc_addr) +elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc, + Elf32_Addr *const reloc_addr) { /* XXX Nothing to do. There is no relative relocation, right? */ } diff --git a/sysdeps/ia64/dl-machine.h b/sysdeps/ia64/dl-machine.h index 8123515a08..99c022d148 100644 --- a/sysdeps/ia64/dl-machine.h +++ b/sysdeps/ia64/dl-machine.h @@ -580,8 +580,8 @@ elf_machine_rela (struct link_map *map, } static inline void -elf_machine_rel_relative (Elf64_Addr l_addr, const Elf64_Rel *reloc, - Elf64_Addr *const reloc_addr) +elf_machine_rela_relative (Elf64_Addr l_addr, const Elf64_Rela *reloc, + Elf64_Addr *const reloc_addr) { /* ??? Ignore MSB and Instruction format for now. */ assert (ELF64_R_TYPE (reloc->r_info) == R_IA64_REL64LSB); diff --git a/sysdeps/m68k/dl-machine.h b/sysdeps/m68k/dl-machine.h index e3a5a24586..b0e29274cc 100644 --- a/sysdeps/m68k/dl-machine.h +++ b/sysdeps/m68k/dl-machine.h @@ -299,8 +299,8 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc, } static inline void -elf_machine_rel_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc, - Elf32_Addr *const reloc_addr) +elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc, + Elf32_Addr *const reloc_addr) { *reloc_addr = l_addr + reloc->r_addend; } diff --git a/sysdeps/mips/dl-machine.h b/sysdeps/mips/dl-machine.h index 340cd1750a..878e27d317 100644 --- a/sysdeps/mips/dl-machine.h +++ b/sysdeps/mips/dl-machine.h @@ -536,8 +536,8 @@ elf_machine_rel (struct link_map *map, const ElfW(Rel) *reloc, } static inline void -elf_machine_rel_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc, - Elf32_Addr *const reloc_addr) +elf_machine_rel_relative (ElfW(Addr) l_addr, const ElfW(Rel) *reloc, + ElfW(Addr) *const reloc_addr) { /* XXX Nothing to do. There is no relative relocation, right? */ } diff --git a/sysdeps/mips/mips64/dl-machine.h b/sysdeps/mips/mips64/dl-machine.h index 3ecb3c2afc..eda94c2203 100644 --- a/sysdeps/mips/mips64/dl-machine.h +++ b/sysdeps/mips/mips64/dl-machine.h @@ -1,5 +1,5 @@ -/* Machine-dependent ELF dynamic relocation inline functions. MIPS version. - Copyright (C) 1996, 1997, 1999, 2000 Free Software Foundation, Inc. +/* Machine-dependent ELF dynamic relocation inline functions. MIPS64 version. + Copyright (C) 1996, 1997, 1999, 2000, 2001 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Kazumoto Kojima . @@ -530,10 +530,11 @@ elf_machine_rel (struct link_map *map, const ElfW(Rel) *reloc, const ElfW(Sym) *sym, const struct r_found_version *version, ElfW(Addr) *const reloc_addr) { + const unsigned long int r_type = ELFW(R_TYPE) (reloc->r_info); ElfW(Addr) loadbase; ElfW(Addr) undo __attribute__ ((unused)); - switch (ELFW(R_TYPE) (reloc->r_info)) + switch (r_type) { case R_MIPS_REL32: { @@ -565,14 +566,23 @@ elf_machine_rel (struct link_map *map, const ElfW(Rel) *reloc, *reloc_addr += (sym ? (loadbase + sym->st_value) : 0) - undo; } break; +#ifndef RTLD_BOOTSTRAP case R_MIPS_NONE: /* Alright, Wilbur. */ break; +#endif default: - _dl_reloc_bad_type (map, ELFW(R_TYPE) (reloc->r_info), 0); + _dl_reloc_bad_type (map, r_type, 0); break; } } +static inline void +elf_machine_rel_relative (ElfW(Addr) l_addr, const ElfW(Rel) *reloc, + ElfW(Addr) *const reloc_addr) +{ + /* XXX Nothing to do. There is no relative relocation, right? */ +} + static inline void elf_machine_lazy_rel (struct link_map *map, ElfW(Addr) l_addr, const ElfW(Rel) *reloc) diff --git a/sysdeps/powerpc/dl-machine.h b/sysdeps/powerpc/dl-machine.h index f528dcb9d4..438629a0a8 100644 --- a/sysdeps/powerpc/dl-machine.h +++ b/sysdeps/powerpc/dl-machine.h @@ -394,8 +394,8 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc, } static inline void -elf_machine_rel_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc, - Elf32_Addr *const reloc_addr) +elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc, + Elf32_Addr *const reloc_addr) { *reloc_addr = l_addr + reloc->r_addend; } diff --git a/sysdeps/sh/dl-machine.h b/sysdeps/sh/dl-machine.h index 62f40d516a..6f3b31c437 100644 --- a/sysdeps/sh/dl-machine.h +++ b/sysdeps/sh/dl-machine.h @@ -558,8 +558,8 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc, } static inline void -elf_machine_rel_relative (Elf32_Addr l_addr, const Elf32_Rel *reloc, - Elf32_Addr *const reloc_addr) +elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc, + Elf32_Addr *const reloc_addr) { if (reloc->r_addend) value = l_addr + reloc->r_addend; diff --git a/sysdeps/sparc/sparc32/dl-machine.h b/sysdeps/sparc/sparc32/dl-machine.h index edeb20b931..2ed14fc5f9 100644 --- a/sysdeps/sparc/sparc32/dl-machine.h +++ b/sysdeps/sparc/sparc32/dl-machine.h @@ -459,8 +459,8 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc, } static inline void -elf_machine_rel_relative (Elf32_Addr l_addr, const Elf32_Rel *reloc, - Elf32_Addr *const reloc_addr) +elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc, + Elf32_Addr *const reloc_addr) { *reloc_addr += l_addr + reloc->r_addend; } diff --git a/sysdeps/sparc/sparc64/dl-machine.h b/sysdeps/sparc/sparc64/dl-machine.h index 1e5e25b827..a72cb89e01 100644 --- a/sysdeps/sparc/sparc64/dl-machine.h +++ b/sysdeps/sparc/sparc64/dl-machine.h @@ -368,8 +368,8 @@ elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc, } static inline void -elf_machine_rel_relative (Elf64_Addr l_addr, const Elf64_Rel *reloc, - Elf64_Addr *const reloc_addr) +elf_machine_rela_relative (Elf64_Addr l_addr, const Elf64_Rela *reloc, + Elf64_Addr *const reloc_addr) { *reloc_addr = l_addr + reloc->r_addend; } -- cgit 1.4.1