This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.
Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Hi! Here is an updated patch, which just does the elf_machine_rel*_relative renaming and type fixing. 2001-08-24 Jakub Jelinek <jakub@redhat.com> * elf/do-rel.h (elf_machine_rel_relative): Define. * 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. --- libc/elf/do-rel.h.jj Fri Aug 24 11:09:24 2001 +++ libc/elf/do-rel.h Fri Aug 24 16:30:22 2001 @@ -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 @@ -59,8 +60,21 @@ elf_dynamic_do_rel (struct link_map *map (const void *) D_PTR (map, l_info[DT_SYMTAB]); ElfW(Word) nrelative = (map->l_info[RELCOUNT_IDX] == NULL ? 0 : map->l_info[RELCOUNT_IDX]->d_un.d_val); - const ElfW(Rel) *endrel = end; - end -= nrelative; + const ElfW(Rel) *endrel = r + nrelative; + +#ifndef RTLD_BOOTSTRAP + /* This is defined in rtld.c, but nowhere in the static libc.a; make + the reference weak so static programs can still link. This + declaration cannot be done when compiling rtld.c (i.e. #ifdef + RTLD_BOOTSTRAP) because rtld.c contains the common defn for + _dl_rtld_map, which is incompatible with a weak decl in the same + file. */ + weak_extern (_dl_rtld_map); + if (map != &_dl_rtld_map) /* Already done in rtld itself. */ +#endif + for (; r < endrel; ++r) + elf_machine_rel_relative (l_addr, r, + (void *) (l_addr + r->r_offset)); if (map->l_info[VERSYMIDX (DT_VERSYM)]) { @@ -80,22 +94,10 @@ elf_dynamic_do_rel (struct link_map *map elf_machine_rel (map, r, &symtab[ELFW(R_SYM) (r->r_info)], NULL, (void *) (l_addr + r->r_offset)); -#ifndef RTLD_BOOTSTRAP - /* This is defined in rtld.c, but nowhere in the static libc.a; make - the reference weak so static programs can still link. This - declaration cannot be done when compiling rtld.c (i.e. #ifdef - RTLD_BOOTSTRAP) because rtld.c contains the common defn for - _dl_rtld_map, which is incompatible with a weak decl in the same - file. */ - weak_extern (_dl_rtld_map); - if (map != &_dl_rtld_map) /* Already done in rtld itself. */ -#endif - for (; r < endrel; ++r) - elf_machine_rel_relative (l_addr, r, - (void *) (l_addr + r->r_offset)); } } #undef elf_dynamic_do_rel #undef Rel #undef elf_machine_rel +#undef elf_machine_rel_relative --- libc/sysdeps/alpha/dl-machine.h.jj Fri Aug 24 11:09:51 2001 +++ libc/sysdeps/alpha/dl-machine.h Fri Aug 24 14:28:08 2001 @@ -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. */ --- libc/sysdeps/hppa/dl-machine.h.jj Fri Aug 24 11:10:54 2001 +++ libc/sysdeps/hppa/dl-machine.h Fri Aug 24 14:29:46 2001 @@ -629,8 +629,8 @@ elf_machine_rela (struct link_map *map, } 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? */ } --- libc/sysdeps/cris/dl-machine.h.jj Fri Aug 24 11:09:51 2001 +++ libc/sysdeps/cris/dl-machine.h Fri Aug 24 14:30:32 2001 @@ -366,8 +366,8 @@ elf_machine_rela (struct link_map *map, } 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; } --- libc/sysdeps/ia64/dl-machine.h.jj Fri Aug 24 11:10:54 2001 +++ libc/sysdeps/ia64/dl-machine.h Fri Aug 24 14:34:28 2001 @@ -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); --- libc/sysdeps/m68k/dl-machine.h.jj Fri Aug 24 11:10:54 2001 +++ libc/sysdeps/m68k/dl-machine.h Fri Aug 24 14:34:52 2001 @@ -299,8 +299,8 @@ elf_machine_rela (struct link_map *map, } 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; } --- libc/sysdeps/mips/dl-machine.h.jj Fri Aug 24 11:10:54 2001 +++ libc/sysdeps/mips/dl-machine.h Fri Aug 24 14:35:57 2001 @@ -536,8 +536,8 @@ elf_machine_rel (struct link_map *map, c } 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? */ } --- libc/sysdeps/mips/mips64/dl-machine.h.jj Thu Aug 23 18:50:11 2001 +++ libc/sysdeps/mips/mips64/dl-machine.h Fri Aug 24 14:45:12 2001 @@ -574,6 +574,13 @@ elf_machine_rel (struct link_map *map, c } 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) { --- libc/sysdeps/powerpc/dl-machine.h.jj Fri Aug 24 11:10:54 2001 +++ libc/sysdeps/powerpc/dl-machine.h Fri Aug 24 14:39:28 2001 @@ -394,8 +394,8 @@ elf_machine_rela (struct link_map *map, } 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; } --- libc/sysdeps/sparc/sparc32/dl-machine.h.jj Fri Aug 24 11:10:54 2001 +++ libc/sysdeps/sparc/sparc32/dl-machine.h Fri Aug 24 14:39:58 2001 @@ -459,8 +459,8 @@ elf_machine_rela (struct link_map *map, } 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; } --- libc/sysdeps/sparc/sparc64/dl-machine.h.jj Fri Aug 24 11:10:54 2001 +++ libc/sysdeps/sparc/sparc64/dl-machine.h Fri Aug 24 14:41:14 2001 @@ -368,8 +368,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) { *reloc_addr = l_addr + reloc->r_addend; } --- libc/sysdeps/sh/dl-machine.h.jj Fri Aug 24 11:10:54 2001 +++ libc/sysdeps/sh/dl-machine.h Fri Aug 24 14:42:26 2001 @@ -558,8 +558,8 @@ elf_machine_rela (struct link_map *map, } 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; --- libc/sysdeps/s390/s390-32/dl-machine.h.jj Fri Aug 24 11:10:54 2001 +++ libc/sysdeps/s390/s390-32/dl-machine.h Fri Aug 24 14:43:12 2001 @@ -440,8 +440,8 @@ elf_machine_rela (struct link_map *map, } 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; } --- libc/sysdeps/s390/s390-64/dl-machine.h.jj Fri Aug 24 13:52:08 2001 +++ libc/sysdeps/s390/s390-64/dl-machine.h Fri Aug 24 14:43:43 2001 @@ -420,8 +420,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) { *reloc_addr = l_addr + reloc->r_addend; } Jakub
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |