This is the mail archive of the libc-alpha@sources.redhat.com mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

don't assume reloc_addr passed to elf_machine_rel* is aligned


On Mar 31, 2003, Roland McGrath <roland@redhat.com> wrote:

> I think we need to forego the __typeof solution and either macros
> for the argument type or change all the dl-machine.h files.  The
> latter is actually cleaner, I think.  The current type is not right
> for plenty of other relocs on other machines, that just haven't been
> bitten so far.

Here's a patch that implements the latter, such that, hopefully,
mips*-linux* will build again.  This patch should fix all ports such
that they still compile and behave the same as they did before (except
where the compiler would optimize away alignment tests, which it
might, and now won't), but I'll leave the taking (dis)advantage of any
mis-alignment issues up to the maintainers of each port.  Ok to
install?

Index: ChangeLog
from  Alexandre Oliva  <aoliva@redhat.com>

	* elf/dynamic-link.h (elf_machine_rel, elf_machine_rela,
	elf_machine_rel_relative, elf_machine_rela_relative): Don't assume
	reloc_addr is aligned.
	* sysdeps/alpha/dl-machine.h (elf_machine_rela,
	elf_machine_rela_relative): Adjust.
	* sysdeps/arm/dl-machine.h (elf_machine_rel, elf_machine_rela,
	elf_machine_rel_relative, elf_machine_rela_relative): Adjust.
	* sysdeps/cris/dl-machine.h (elf_machine_rela,
	elf_machine_rela_relative): Adjust.
	* sysdeps/hppa/dl-machine.h (elf_machine_rela,
	elf_machine_rela_relative): Adjust.
	* sysdeps/i386/dl-machine.h (elf_machine_rel, elf_machine_rela,
	elf_machine_rel_relative, elf_machine_rela_relative): Adjust.
	* sysdeps/ia64/dl-machine.h (elf_machine_rela,
	elf_machine_rela_relative): Adjust.
	* sysdeps/m68k/dl-machine.h (elf_machine_rela,
	elf_machine_rela_relative): Adjust.
	* sysdeps/powerpc/powerpc32/dl-machine.h (elf_machine_rela,
	elf_machine_rela_relative): Adjust.
	* sysdeps/powerpc/powerpc64/dl-machine.h
	(elf_machine_rela_relative, elf_machine_rela): Adjust.
	* sysdeps/s390/s390-32/dl-machine.h (elf_machine_rela,
	elf_machine_rela_relative): Adjust.
	* sysdeps/s390/s390-64/dl-machine.h (elf_machine_rela,
	elf_machine_rela_relative): 
	* sysdeps/sh/dl-machine.h (elf_machine_rela,
	elf_machine_rela_relative): Adjust.
	* sysdeps/sparc/sparc32/dl-machine.h (elf_machine_rela,
	elf_machine_rela_relative): Adjust.
	* sysdeps/sparc/sparc64/dl-machine.h (elf_machine_rela) 
	(elf_machine_rela_relative): Adjust.
	* sysdeps/x86_64/dl-machine.h (elf_machine_rela) 
	(elf_machine_rela_relative): Adjust.

Index: elf/dynamic-link.h
===================================================================
RCS file: /cvs/glibc/libc/elf/dynamic-link.h,v
retrieving revision 1.47
diff -u -p -r1.47 dynamic-link.h
--- elf/dynamic-link.h 20 May 2003 22:22:03 -0000 1.47
+++ elf/dynamic-link.h 4 Jun 2003 19:53:59 -0000
@@ -24,17 +24,17 @@
 auto void __attribute__((always_inline))
 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);
+		 void /* ElfW(Addr) */ *const reloc_addr);
 auto void __attribute__((always_inline))
 elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc,
 		  const ElfW(Sym) *sym, const struct r_found_version *version,
-		  ElfW(Addr) *const reloc_addr);
+		  void /* ElfW(Addr) */ *const reloc_addr);
 auto void __attribute__((always_inline))
 elf_machine_rel_relative (ElfW(Addr) l_addr, const ElfW(Rel) *reloc,
-			  ElfW(Addr) *const reloc_addr);
+			  void /* ElfW(Addr) */ *const reloc_addr);
 auto void __attribute__((always_inline))
 elf_machine_rela_relative (ElfW(Addr) l_addr, const ElfW(Rela) *reloc,
-			   ElfW(Addr) *const reloc_addr);
+			   void /* ElfW(Addr) */ *const reloc_addr);
 # if ELF_MACHINE_NO_RELA || defined ELF_MACHINE_PLT_REL
 auto void __attribute__((always_inline))
 elf_machine_lazy_rel (struct link_map *map,
Index: sysdeps/alpha/dl-machine.h
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/alpha/dl-machine.h,v
retrieving revision 1.69
diff -u -p -r1.69 dl-machine.h
--- sysdeps/alpha/dl-machine.h 14 Feb 2003 06:02:01 -0000 1.69
+++ sysdeps/alpha/dl-machine.h 4 Jun 2003 19:53:59 -0000
@@ -511,8 +511,9 @@ elf_machine_rela (struct link_map *map,
 		  const Elf64_Rela *reloc,
 		  const Elf64_Sym *sym,
 		  const struct r_found_version *version,
-		  Elf64_Addr *const reloc_addr)
+		  void /* Elf64_Addr */ *const reloc_addr_)
 {
+  Elf64_Addr *const reloc_addr = reloc_addr_;
   unsigned long int const r_type = ELF64_R_TYPE (reloc->r_info);
 
 #if !defined RTLD_BOOTSTRAP && !defined HAVE_Z_COMBRELOC && !defined SHARED
@@ -648,11 +649,8 @@ elf_machine_rela (struct link_map *map,
 
 static inline void
 elf_machine_rela_relative (Elf64_Addr l_addr, const Elf64_Rela *reloc,
-			   Elf64_Addr *const reloc_addr)
+			   void /* Elf64_Addr */ *const reloc_addr_1)
 {
-  /* XXX Make some timings.  Maybe it's preverable to test for
-     unaligned access and only do it the complex way if necessary.  */
-  void *reloc_addr_1 = reloc_addr;
   Elf64_Addr reloc_addr_val;
 
   /* Load value without causing unaligned trap. */
Index: sysdeps/arm/dl-machine.h
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/arm/dl-machine.h,v
retrieving revision 1.42
diff -u -p -r1.42 dl-machine.h
--- sysdeps/arm/dl-machine.h 15 Nov 2002 22:51:20 -0000 1.42
+++ sysdeps/arm/dl-machine.h 4 Jun 2003 19:54:00 -0000
@@ -1,5 +1,6 @@
 /* Machine-dependent ELF dynamic relocation inline functions.  ARM version.
-   Copyright (C) 1995,96,97,98,99,2000,2001,2002 Free Software Foundation, Inc.
+   Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+	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
@@ -419,8 +420,9 @@ fix_bad_pc24 (Elf32_Addr *const reloc_ad
 static inline void
 elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc,
 		 const Elf32_Sym *sym, const struct r_found_version *version,
-		 Elf32_Addr *const reloc_addr)
+		 void /* Elf32_Addr */ *const reloc_addr_)
 {
+  Elf32_Addr *const reloc_addr = reloc_addr_;
   const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
 
 #if !defined RTLD_BOOTSTRAP || !defined HAVE_Z_COMBRELOC
@@ -544,8 +546,9 @@ elf_machine_rel (struct link_map *map, c
 static inline void
 elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
 		  const Elf32_Sym *sym, const struct r_found_version *version,
-		  Elf32_Addr *const reloc_addr)
+		  void /* Elf32_Addr */ *const reloc_addr_)
 {
+  Elf32_Addr *const reloc_addr = reloc_addr_;
   const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
 
   if (__builtin_expect (r_type == R_ARM_RELATIVE, 0))
@@ -623,16 +626,18 @@ 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)
+			  void /* Elf32_Addr */ *const reloc_addr_)
 {
+  Elf32_Addr *const reloc_addr = reloc_addr_;
   *reloc_addr += l_addr;
 }
 
 # ifndef RTLD_BOOTSTRAP
 static inline void
 elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc,
-			   Elf32_Addr *const reloc_addr)
+			   void /* Elf32_Addr */ *const reloc_addr_)
 {
+  Elf32_Addr *const reloc_addr = reloc_addr_;
   *reloc_addr = l_addr + reloc->r_addend;
 }
 # endif
Index: sysdeps/cris/dl-machine.h
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/cris/dl-machine.h,v
retrieving revision 1.10
diff -u -p -r1.10 dl-machine.h
--- sysdeps/cris/dl-machine.h 28 Aug 2002 21:23:07 -0000 1.10
+++ sysdeps/cris/dl-machine.h 4 Jun 2003 19:54:00 -0000
@@ -1,5 +1,5 @@
 /* Machine-dependent ELF dynamic relocation inline functions.  CRIS version.
-   Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc.
+   Copyright (C) 1996-2001, 2002, 2003 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
@@ -280,8 +280,9 @@ elf_machine_plt_value (struct link_map *
 static inline void
 elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
 		  const Elf32_Sym *sym, const struct r_found_version *version,
-		  Elf32_Addr *const reloc_addr)
+		  void /* Elf32_Addr */ *const reloc_addr_)
 {
+  Elf32_Addr *const reloc_addr = reloc_addr_;
   const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
 
   if (__builtin_expect (r_type == R_CRIS_RELATIVE, 0))
@@ -364,8 +365,9 @@ elf_machine_rela (struct link_map *map, 
 
 static inline void
 elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc,
-			   Elf32_Addr *const reloc_addr)
+			   void /* Elf32_Addr */ *const reloc_addr_)
 {
+  Elf32_Addr *const reloc_addr = reloc_addr_;
   *reloc_addr = l_addr + reloc->r_addend;
 }
 
Index: sysdeps/hppa/dl-machine.h
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/hppa/dl-machine.h,v
retrieving revision 1.18
diff -u -p -r1.18 dl-machine.h
--- sysdeps/hppa/dl-machine.h 28 Sep 2002 04:34:00 -0000 1.18
+++ sysdeps/hppa/dl-machine.h 4 Jun 2003 19:54:00 -0000
@@ -1,5 +1,6 @@
 /* Machine-dependent ELF dynamic relocation inline functions.  PA-RISC version.
-   Copyright (C) 1995-1997,1999,2000,2001,2002 Free Software Foundation, Inc.
+   Copyright (C) 1995-1997,1999,2000,2001,2002, 2003
+	Free Software Foundation, Inc.
    Contributed by David Huggins-Daines <dhd@debian.org>
    This file is part of the GNU C Library.
 
@@ -481,8 +482,9 @@ asm (									\
 static inline void
 elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
 		  const Elf32_Sym *sym, const struct r_found_version *version,
-		  Elf32_Addr *const reloc_addr)
+		  void /* Elf32_Addr */ *const reloc_addr_)
 {
+  Elf32_Addr *const reloc_addr = reloc_addr_;
   const Elf32_Sym *const refsym = sym;
   unsigned long const r_type = ELF32_R_TYPE (reloc->r_info);
   struct link_map *sym_map;
@@ -637,8 +639,9 @@ elf_machine_rela (struct link_map *map, 
 static inline void
 elf_machine_rela_relative (struct link_map *map, Elf32_Addr l_addr,
 			   const Elf32_Rela *reloc,
-			   Elf32_Addr *const reloc_addr)
+			   void /* Elf32_Addr */ *const reloc_addr_)
 {
+  Elf32_Addr *const reloc_addr = reloc_addr_;
   unsigned long const r_type = ELF32_R_TYPE (reloc->r_info);
   Elf32_Addr value;
 
Index: sysdeps/i386/dl-machine.h
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/i386/dl-machine.h,v
retrieving revision 1.119
diff -u -p -r1.119 dl-machine.h
--- sysdeps/i386/dl-machine.h 2 Jun 2003 18:20:22 -0000 1.119
+++ sysdeps/i386/dl-machine.h 4 Jun 2003 19:54:01 -0000
@@ -391,8 +391,9 @@ elf_machine_plt_value (struct link_map *
 static inline void
 elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc,
 		 const Elf32_Sym *sym, const struct r_found_version *version,
-		 Elf32_Addr *const reloc_addr)
+		 void /* Elf32_Addr */ *const reloc_addr_)
 {
+  Elf32_Addr *const reloc_addr = reloc_addr_;
   const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
 
 #if !defined RTLD_BOOTSTRAP || !defined HAVE_Z_COMBRELOC
@@ -534,8 +535,9 @@ elf_machine_rel (struct link_map *map, c
 static inline void
 elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
 		  const Elf32_Sym *sym, const struct r_found_version *version,
-		  Elf32_Addr *const reloc_addr)
+		  void /* Elf32_Addr */ *const reloc_addr_)
 {
+  Elf32_Addr *const reloc_addr = reloc_addr_;
   const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
 
   if (ELF32_R_TYPE (reloc->r_info) == R_386_RELATIVE)
@@ -634,8 +636,9 @@ 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)
+			  void /* Elf32_Addr */ *const reloc_addr_)
 {
+  Elf32_Addr *const reloc_addr = reloc_addr_;
   assert (ELF32_R_TYPE (reloc->r_info) == R_386_RELATIVE);
   *reloc_addr += l_addr;
 }
@@ -643,8 +646,9 @@ elf_machine_rel_relative (Elf32_Addr l_a
 #ifndef RTLD_BOOTSTRAP
 static inline void
 elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc,
-			   Elf32_Addr *const reloc_addr)
+			   void /* Elf32_Addr */ *const reloc_addr_)
 {
+  Elf32_Addr *const reloc_addr = reloc_addr_;
   *reloc_addr = l_addr + reloc->r_addend;
 }
 #endif	/* !RTLD_BOOTSTRAP */
Index: sysdeps/ia64/dl-machine.h
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/ia64/dl-machine.h,v
retrieving revision 1.26
diff -u -p -r1.26 dl-machine.h
--- sysdeps/ia64/dl-machine.h 2 May 2003 02:38:19 -0000 1.26
+++ sysdeps/ia64/dl-machine.h 4 Jun 2003 19:54:01 -0000
@@ -507,8 +507,9 @@ elf_machine_rela (struct link_map *map,
 		  const Elf64_Rela *reloc,
 		  const Elf64_Sym *sym,
 		  const struct r_found_version *version,
-		  Elf64_Addr *const reloc_addr)
+		  void /* Elf64_Addr */ *const reloc_addr_)
 {
+  Elf64_Addr *const reloc_addr = reloc_addr_;
   const unsigned long int r_type = ELF64_R_TYPE (reloc->r_info);
   Elf64_Addr value;
 
@@ -607,8 +608,9 @@ elf_machine_rela (struct link_map *map,
 
 static inline void
 elf_machine_rela_relative (Elf64_Addr l_addr, const Elf64_Rela *reloc,
-			   Elf64_Addr *const reloc_addr)
+			   void /* Elf64_Addr */ *const reloc_addr_)
 {
+  Elf64_Addr *const reloc_addr = reloc_addr_;
   /* ??? Ignore MSB and Instruction format for now.  */
   assert (ELF64_R_TYPE (reloc->r_info) == R_IA64_REL64LSB);
 
Index: sysdeps/m68k/dl-machine.h
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/m68k/dl-machine.h,v
retrieving revision 1.61
diff -u -p -r1.61 dl-machine.h
--- sysdeps/m68k/dl-machine.h 1 Mar 2003 15:33:11 -0000 1.61
+++ sysdeps/m68k/dl-machine.h 4 Jun 2003 19:54:01 -0000
@@ -229,8 +229,9 @@ elf_machine_plt_value (struct link_map *
 static inline void __attribute__ ((always_inline))
 elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
 		  const Elf32_Sym *sym, const struct r_found_version *version,
-		  Elf32_Addr *const reloc_addr)
+		  void /* Elf32_Addr */ *const reloc_addr_)
 {
+  Elf32_Addr *const reloc_addr = reloc_addr_;
   const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
 
   if (__builtin_expect (r_type == R_68K_RELATIVE, 0))
@@ -298,8 +299,9 @@ elf_machine_rela (struct link_map *map, 
 
 static inline void
 elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc,
-			   Elf32_Addr *const reloc_addr)
+			   void /* Elf32_Addr */ *const reloc_addr_)
 {
+  Elf32_Addr *const reloc_addr = reloc_addr_;
   *reloc_addr = l_addr + reloc->r_addend;
 }
 
Index: sysdeps/powerpc/powerpc32/dl-machine.h
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/powerpc/powerpc32/dl-machine.h,v
retrieving revision 1.8
diff -u -p -r1.8 dl-machine.h
--- sysdeps/powerpc/powerpc32/dl-machine.h 16 May 2003 04:16:45 -0000 1.8
+++ sysdeps/powerpc/powerpc32/dl-machine.h 4 Jun 2003 19:54:01 -0000
@@ -356,8 +356,9 @@ extern void _dl_reloc_overflow (struct l
 inline void
 elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
 		  const Elf32_Sym *sym, const struct r_found_version *version,
-		  Elf32_Addr *const reloc_addr)
+		  void /* Elf32_Addr */ *const reloc_addr_)
 {
+  Elf32_Addr *const reloc_addr = reloc_addr_;
   const Elf32_Sym *const refsym = sym;
   Elf32_Addr value;
   const int r_type = ELF32_R_TYPE (reloc->r_info);
@@ -456,8 +457,9 @@ elf_machine_rela (struct link_map *map, 
 
 static inline void
 elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc,
-			   Elf32_Addr *const reloc_addr)
+			   void /* Elf32_Addr */ *const reloc_addr_)
 {
+  Elf32_Addr *const reloc_addr = reloc_addr_;
   *reloc_addr = l_addr + reloc->r_addend;
 }
 
Index: sysdeps/powerpc/powerpc64/dl-machine.h
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/powerpc/powerpc64/dl-machine.h,v
retrieving revision 1.12
diff -u -p -r1.12 dl-machine.h
--- sysdeps/powerpc/powerpc64/dl-machine.h 1 Jun 2003 01:31:07 -0000 1.12
+++ sysdeps/powerpc/powerpc64/dl-machine.h 4 Jun 2003 19:54:02 -0000
@@ -553,8 +553,9 @@ extern void _dl_reloc_overflow (struct l
 
 static inline void
 elf_machine_rela_relative (Elf64_Addr l_addr, const Elf64_Rela *reloc,
-			   Elf64_Addr *const reloc_addr)
+			   void /* Elf64_Addr */ *const reloc_addr_)
 {
+  Elf64_Addr *const reloc_addr = reloc_addr_;
   *reloc_addr = l_addr + reloc->r_addend;
 }
 
@@ -586,8 +587,9 @@ elf_machine_rela (struct link_map *map,
 		  const Elf64_Rela *reloc,
 		  const Elf64_Sym *sym,
 		  const struct r_found_version *version,
-		  Elf64_Addr *const reloc_addr)
+		  void /* Elf64_Addr */ *const reloc_addr_)
 {
+  Elf64_Addr *const reloc_addr = reloc_addr_;
   const int r_type = ELF64_R_TYPE (reloc->r_info);
 #ifndef RTLD_BOOTSTRAP
   const Elf64_Sym *const refsym = sym;
Index: sysdeps/s390/s390-32/dl-machine.h
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/s390/s390-32/dl-machine.h,v
retrieving revision 1.15
diff -u -p -r1.15 dl-machine.h
--- sysdeps/s390/s390-32/dl-machine.h 24 Apr 2003 17:10:55 -0000 1.15
+++ sysdeps/s390/s390-32/dl-machine.h 4 Jun 2003 19:54:02 -0000
@@ -376,9 +376,10 @@ elf_machine_plt_value (struct link_map *
 
 static inline void
 elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
-		 const Elf32_Sym *sym, const struct r_found_version *version,
-		  Elf32_Addr *const reloc_addr)
+		  const Elf32_Sym *sym, const struct r_found_version *version,
+		  void /* Elf32_Addr */ *const reloc_addr_)
 {
+  Elf32_Addr *const reloc_addr = reloc_addr_;
   const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
 
 #if !defined RTLD_BOOTSTRAP || !defined HAVE_Z_COMBRELOC
@@ -529,8 +530,9 @@ elf_machine_rela (struct link_map *map, 
 
 static inline void
 elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc,
-			   Elf32_Addr *const reloc_addr)
+			   void /* Elf32_Addr */ *const reloc_addr_)
 {
+  Elf32_Addr *const reloc_addr = reloc_addr_;
   *reloc_addr = l_addr + reloc->r_addend;
 }
 
Index: sysdeps/s390/s390-64/dl-machine.h
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/s390/s390-64/dl-machine.h,v
retrieving revision 1.14
diff -u -p -r1.14 dl-machine.h
--- sysdeps/s390/s390-64/dl-machine.h 24 Apr 2003 17:10:55 -0000 1.14
+++ sysdeps/s390/s390-64/dl-machine.h 4 Jun 2003 19:54:02 -0000
@@ -344,9 +344,10 @@ elf_machine_plt_value (struct link_map *
 
 static inline void
 elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc,
-		 const Elf64_Sym *sym, const struct r_found_version *version,
-		  Elf64_Addr *const reloc_addr)
+		  const Elf64_Sym *sym, const struct r_found_version *version,
+		  void /* Elf64_Addr */ *const reloc_addr_)
 {
+  Elf64_Addr *const reloc_addr = reloc_addr_;
   const unsigned int r_type = ELF64_R_TYPE (reloc->r_info);
 
 #if !defined RTLD_BOOTSTRAP || !defined HAVE_Z_COMBRELOC
@@ -509,8 +510,9 @@ elf_machine_rela (struct link_map *map, 
 
 static inline void
 elf_machine_rela_relative (Elf64_Addr l_addr, const Elf64_Rela *reloc,
-			   Elf64_Addr *const reloc_addr)
+			   void /* Elf64_Addr */ *const reloc_addr_)
 {
+  Elf64_Addr *const reloc_addr = reloc_addr_;
   *reloc_addr = l_addr + reloc->r_addend;
 }
 
Index: sysdeps/sh/dl-machine.h
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/sh/dl-machine.h,v
retrieving revision 1.27
diff -u -p -r1.27 dl-machine.h
--- sysdeps/sh/dl-machine.h 12 Jan 2003 08:50:51 -0000 1.27
+++ sysdeps/sh/dl-machine.h 4 Jun 2003 19:54:02 -0000
@@ -456,9 +456,10 @@ elf_machine_plt_value (struct link_map *
 
 static inline void
 elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
-		 const Elf32_Sym *sym, const struct r_found_version *version,
-		 Elf32_Addr *const reloc_addr)
+		  const Elf32_Sym *sym, const struct r_found_version *version,
+		  void /* Elf32_Addr */ *const reloc_addr_)
 {
+  Elf32_Addr *const reloc_addr = reloc_addr_;
   const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
   Elf32_Addr value;
 
@@ -622,8 +623,9 @@ elf_machine_rela (struct link_map *map, 
 
 static inline void
 elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc,
-			   Elf32_Addr *const reloc_addr)
+			   void /* Elf32_Addr */ *const reloc_addr_)
 {
+  Elf32_Addr *const reloc_addr = reloc_addr_;
   Elf32_Addr value;
 
   if (reloc->r_addend)
Index: sysdeps/sparc/sparc32/dl-machine.h
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/sparc/sparc32/dl-machine.h,v
retrieving revision 1.45
diff -u -p -r1.45 dl-machine.h
--- sysdeps/sparc/sparc32/dl-machine.h 27 Jan 2003 20:50:57 -0000 1.45
+++ sysdeps/sparc/sparc32/dl-machine.h 4 Jun 2003 19:54:03 -0000
@@ -435,8 +435,9 @@ elf_machine_plt_value (struct link_map *
 static inline void
 elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
 		  const Elf32_Sym *sym, const struct r_found_version *version,
-		  Elf32_Addr *const reloc_addr)
+		  void /* Elf32_Addr */ *const reloc_addr_)
 {
+  Elf32_Addr *const reloc_addr = reloc_addr_;
   const unsigned int r_type = ELF32_R_TYPE (reloc->r_info);
 
 #if !defined RTLD_BOOTSTRAP && !defined HAVE_Z_COMBRELOC
@@ -610,8 +611,9 @@ elf_machine_rela (struct link_map *map, 
 
 static inline void
 elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc,
-			   Elf32_Addr *const reloc_addr)
+			   void /* Elf32_Addr */ *const reloc_addr_)
 {
+  Elf32_Addr *const reloc_addr = reloc_addr_;
   *reloc_addr += l_addr + reloc->r_addend;
 }
 
Index: sysdeps/sparc/sparc64/dl-machine.h
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/sparc/sparc64/dl-machine.h,v
retrieving revision 1.42
diff -u -p -r1.42 dl-machine.h
--- sysdeps/sparc/sparc64/dl-machine.h 27 Sep 2002 03:23:44 -0000 1.42
+++ sysdeps/sparc/sparc64/dl-machine.h 4 Jun 2003 19:54:03 -0000
@@ -1,5 +1,6 @@
 /* Machine-dependent ELF dynamic relocation inline functions.  Sparc64 version.
-   Copyright (C) 1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc.
+   Copyright (C) 1997,1998,1999,2000,2001,2002, 2003
+	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
@@ -240,8 +241,9 @@ elf_machine_plt_value (struct link_map *
 static inline void
 elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc,
 		  const Elf64_Sym *sym, const struct r_found_version *version,
-		  Elf64_Addr *const reloc_addr)
+		  void /* Elf64_Addr */ *const reloc_addr_)
 {
+  Elf64_Addr *const reloc_addr = reloc_addr_;
   const unsigned long int r_type = ELF64_R_TYPE_ID (reloc->r_info);
 
 #if !defined RTLD_BOOTSTRAP || !defined HAVE_Z_COMBRELOC
@@ -430,8 +432,9 @@ elf_machine_rela (struct link_map *map, 
 
 static inline void
 elf_machine_rela_relative (Elf64_Addr l_addr, const Elf64_Rela *reloc,
-			   Elf64_Addr *const reloc_addr)
+			   void /* Elf64_Addr */ *const reloc_addr_)
 {
+  Elf64_Addr *const reloc_addr = reloc_addr_;
   *reloc_addr = l_addr + reloc->r_addend;
 }
 
Index: sysdeps/x86_64/dl-machine.h
===================================================================
RCS file: /cvs/glibc/libc/sysdeps/x86_64/dl-machine.h,v
retrieving revision 1.18
diff -u -p -r1.18 dl-machine.h
--- sysdeps/x86_64/dl-machine.h 30 May 2003 16:10:23 -0000 1.18
+++ sysdeps/x86_64/dl-machine.h 4 Jun 2003 19:54:03 -0000
@@ -358,9 +358,10 @@ elf_machine_plt_value (struct link_map *
 
 static inline void
 elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc,
-		 const Elf64_Sym *sym, const struct r_found_version *version,
-		 Elf64_Addr *const reloc_addr)
+		  const Elf64_Sym *sym, const struct r_found_version *version,
+		  void /* Elf64_Addr */ *const reloc_addr_)
 {
+  Elf64_Addr *const reloc_addr = reloc_addr_;
   const unsigned long int r_type = ELF64_R_TYPE (reloc->r_info);
 
 #if !defined RTLD_BOOTSTRAP || !defined HAVE_Z_COMBRELOC
@@ -522,8 +523,9 @@ elf_machine_rela (struct link_map *map, 
 
 static inline void
 elf_machine_rela_relative (Elf64_Addr l_addr, const Elf64_Rela *reloc,
-			   Elf64_Addr *const reloc_addr)
+			   void /* Elf64_Addr */ *const reloc_addr_)
 {
+  Elf64_Addr *const reloc_addr = reloc_addr_;
   assert (ELF64_R_TYPE (reloc->r_info) == R_X86_64_RELATIVE);
   *reloc_addr = l_addr + reloc->r_addend;
 }
-- 
Alexandre Oliva   Enjoy Guarana', see http://www.ic.unicamp.br/~oliva/
Red Hat GCC Developer                 aoliva@{redhat.com, gcc.gnu.org}
CS PhD student at IC-Unicamp        oliva@{lsd.ic.unicamp.br, gnu.org}
Free Software Evangelist                Professional serial bug killer

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]