yann@1: Message-ID: <424A8F67.7060307@kaear.co.uk> yann@1: Date: Wed, 30 Mar 2005 12:37:11 +0100 yann@1: From: Piete Sartain yann@1: To: crossgcc@sources.redhat.com yann@1: Subject: [Patch] CT 0.3 - glibc-2.2.5-allow-gcc-4.0-mipsel yann@1: yann@1: yann@1: I copied the relevant sections out of yann@1: http://kegel.com/crosstool/crosstool-0.29/patches/glibc-2.3-20050307/glibc-2.3.4-allow-gcc-4.0-powerpc64.patch yann@1: for a mipsel target. yann@1: yann@1: The build still fails, but now with an assembler error at crtbegin.o. yann@1: yann@1: [---dank: judging from my old buildlogs, this should fix: yann@1: yann@1: In file included from dynamic-link.h:21, yann@1: from dl-reloc.c:153: yann@1: ../sysdeps/mips/dl-machine.h: In function '_dl_relocate_object': yann@1: ../sysdeps/mips/dl-machine.h:477: error: invalid storage class for function 'elf_machine_rel' yann@1: ../sysdeps/mips/dl-machine.h:539: error: invalid storage class for function 'elf_machine_rel_relative' yann@1: ../sysdeps/mips/dl-machine.h:546: error: invalid storage class for function 'elf_machine_lazy_rel' yann@1: ../sysdeps/mips/dl-machine.h:554: error: invalid storage class for function 'elf_machine_got_rel' yann@1: ../sysdeps/mips/dl-machine.h:641: error: invalid storage class for function 'elf_machine_runtime_setup' yann@1: make[2]: Leaving directory `/home/dank/queue/jobdir.fast2/crosstool-0.30/build/mipsel-unknown-linux-gnu/gcc-4.0-20050305-glibc-2.2.5/glibc-2.2.5/elf' yann@1: make[2]: *** [/home/dank/queue/jobdir.fast2/crosstool-0.30/build/mipsel-unknown-linux-gnu/gcc-4.0-20050305-glibc-2.2.5/build-glibc/elf/dl-reloc.o] Error 1 yann@1: make[1]: *** [elf/subdir_lib] Error 2 yann@1: make[1]: Leaving directory `/home/dank/queue/jobdir.fast2/crosstool-0.30/build/mipsel-unknown-linux-gnu/gcc-4.0-20050305-glibc-2.2.5/glibc-2.2.5' yann@1: make: *** [all] Error 2 yann@1: ---] yann@1: yann@1: yann@1: --- glibc-2.2.5/sysdeps/mips/dl-machine.h.old 2005-03-28 18:19:56.000000000 +0100 yann@1: +++ glibc-2.2.5/sysdeps/mips/dl-machine.h 2005-03-28 18:25:15.000000000 +0100 yann@1: @@ -534,14 +534,28 @@ yann@1: } yann@1: } yann@1: yann@1: -static inline void yann@1: +#if __GNUC__ >= 4 yann@1: + auto inline void yann@1: +#else yann@1: + static inline void yann@1: +#endif yann@1: +#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) yann@1: + __attribute ((always_inline)) yann@1: +#endif yann@1: elf_machine_rel_relative (ElfW(Addr) l_addr, const ElfW(Rel) *reloc, yann@1: ElfW(Addr) *const reloc_addr) yann@1: { yann@1: /* XXX Nothing to do. There is no relative relocation, right? */ yann@1: } yann@1: yann@1: -static inline void yann@1: +#if __GNUC__ >= 4 yann@1: + auto inline void yann@1: +#else yann@1: + static inline void yann@1: +#endif yann@1: +#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) yann@1: + __attribute ((always_inline)) yann@1: +#endif yann@1: elf_machine_lazy_rel (struct link_map *map, yann@1: ElfW(Addr) l_addr, const ElfW(Rel) *reloc) yann@1: { yann@1: @@ -550,7 +564,14 @@ yann@1: yann@1: #ifndef RTLD_BOOTSTRAP yann@1: /* Relocate GOT. */ yann@1: -static inline void yann@1: +#if __GNUC__ >= 4 yann@1: + auto inline void yann@1: +#else yann@1: + static inline void yann@1: +#endif yann@1: +#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) yann@1: + __attribute ((always_inline)) yann@1: +#endif yann@1: elf_machine_got_rel (struct link_map *map, int lazy) yann@1: { yann@1: ElfW(Addr) *got; yann@1: