patches/glibc/2.3.6/maybe/glibc-2.3.6-allow-gcc-4.0-powerpc64.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sun Feb 17 22:08:06 2008 +0000 (2008-02-17)
changeset 431 8bde4c6ea47a
permissions -rw-r--r--
Robert P. J. DAY says:

apparently, the patchset for gcc 4.2.1 applies properly to the
source for gcc 4.2.2 and gcc 4.2.3. so, if you want, you can simply
add support for those last two just by augmenting menuconfig and
adding a couple symlinks for those two directories. seems like a
cheap way to add a couple new versions.
yann@1
     1
Fixes:
yann@1
     2
yann@1
     3
In file included from dynamic-link.h:22,
yann@1
     4
                 from dl-reloc.c:269:
yann@1
     5
../sysdeps/powerpc/powerpc64/dl-machine.h: In function '_dl_relocate_object':
yann@1
     6
../sysdeps/powerpc/powerpc64/dl-machine.h:573: error: invalid storage class for function 'elf_machine_rela_relative'
yann@1
     7
../sysdeps/powerpc/powerpc64/dl-machine.h:607: error: invalid storage class for function 'elf_machine_rela'
yann@1
     8
../sysdeps/powerpc/powerpc64/dl-machine.h:889: error: invalid storage class for function 'elf_machine_lazy_rel'
yann@1
     9
make[2]: Leaving directory `/home/dank/queue/jobdir.fast2/crosstool-dev/build/powerpc64-unknown-linux-gnu/gcc-4.0-20050305-glibc-2.3-20050307/glibc-2.3-20050307/elf'
yann@1
    10
yann@1
    11
--- glibc-2.3.6.orig/sysdeps/powerpc/powerpc64/dl-machine.h	Thu Mar 17 13:35:23 2005
yann@1
    12
+++ glibc-2.3.6/sysdeps/powerpc/powerpc64/dl-machine.h		Thu Mar 17 13:37:12 2005
yann@1
    13
@@ -567,8 +567,14 @@
yann@1
    14
                                 const Elf64_Sym *refsym)
yann@1
    15
                                 attribute_hidden;
yann@1
    16
 
yann@1
    17
-auto inline void
yann@1
    18
-__attribute__ ((always_inline))
yann@1
    19
+#if __GNUC__ >= 4
yann@1
    20
+  auto inline void
yann@1
    21
+#else
yann@1
    22
+  static inline void
yann@1
    23
+#endif
yann@1
    24
+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2)
yann@1
    25
+  __attribute ((always_inline))
yann@1
    26
+#endif
yann@1
    27
 elf_machine_rela_relative (Elf64_Addr l_addr, const Elf64_Rela *reloc,
yann@1
    28
 			   void *const reloc_addr_arg)
yann@1
    29
 {
yann@1
    30
@@ -599,8 +605,14 @@
yann@1
    31
 
yann@1
    32
 /* Perform the relocation specified by RELOC and SYM (which is fully
yann@1
    33
    resolved).  MAP is the object containing the reloc.  */
yann@1
    34
-auto inline void
yann@1
    35
-__attribute__ ((always_inline))
yann@1
    36
+#if __GNUC__ >= 4
yann@1
    37
+  auto inline void
yann@1
    38
+#else
yann@1
    39
+  static inline void
yann@1
    40
+#endif
yann@1
    41
+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2)
yann@1
    42
+  __attribute ((always_inline))
yann@1
    43
+#endif
yann@1
    44
 elf_machine_rela (struct link_map *map,
yann@1
    45
 		  const Elf64_Rela *reloc,
yann@1
    46
 		  const Elf64_Sym *sym,
yann@1
    47
@@ -885,8 +897,14 @@
yann@1
    48
   MODIFIED_CODE_NOQUEUE (reloc_addr);
yann@1
    49
 }
yann@1
    50
 
yann@1
    51
-auto inline void
yann@1
    52
-__attribute__ ((always_inline))
yann@1
    53
+#if __GNUC__ >= 4
yann@1
    54
+  auto inline void
yann@1
    55
+#else
yann@1
    56
+  static inline void
yann@1
    57
+#endif
yann@1
    58
+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2)
yann@1
    59
+  __attribute ((always_inline))
yann@1
    60
+#endif
yann@1
    61
 elf_machine_lazy_rel (struct link_map *map,
yann@1
    62
 		      Elf64_Addr l_addr, const Elf64_Rela *reloc)
yann@1
    63
 {
yann@1
    64
yann@1
    65
Signed-off-by: Robert P. J. Day <rpjday@mindspring.com>