1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/patches/glibc/2.5/130-glibc-2.3.6-allow-gcc-4.0-elf.patch Wed Jan 16 22:06:15 2008 +0000
1.3 @@ -0,0 +1,67 @@
1.4 +From http://www.mail-archive.com/pld-cvs-commit@pld-linux.org/msg00229.html
1.5 +Fixes
1.6 + rtld.c: In function '_dl_start':
1.7 + dynamic-link.h:47: error: nested function 'elf_machine_rela_relative' declared but never defined
1.8 + dynamic-link.h:41: error: nested function 'elf_machine_rela' declared but never defined
1.9 +when compiling glibc-2.3.4 with gcc-4.0
1.10 +
1.11 +But see also
1.12 +http://sources.redhat.com/ml/libc-hacker/2005-02/msg00000.html
1.13 +and
1.14 +http://sources.redhat.com/ml/libc-hacker/2005-03/msg00008.html
1.15 +which seem to propose less radical fixes?
1.16 +
1.17 +Aha. See also http://sources.redhat.com/bugzilla/show_bug.cgi?id=721
1.18 +
1.19 +--- glibc-2.3.6.orig/elf/dynamic-link.h 2005-03-12 18:12:37.000000000 -0800
1.20 ++++ glibc-2.3.6/elf/dynamic-link.h 2005-03-12 18:12:59.777820848 -0800
1.21 +@@ -19,47 +19,6 @@
1.22 +
1.23 + #include <elf.h>
1.24 + #include <assert.h>
1.25 +-
1.26 +-#ifdef RESOLVE_MAP
1.27 +-/* We pass reloc_addr as a pointer to void, as opposed to a pointer to
1.28 +- ElfW(Addr), because not all architectures can assume that the
1.29 +- relocated address is properly aligned, whereas the compiler is
1.30 +- entitled to assume that a pointer to a type is properly aligned for
1.31 +- the type. Even if we cast the pointer back to some other type with
1.32 +- less strict alignment requirements, the compiler might still
1.33 +- remember that the pointer was originally more aligned, thereby
1.34 +- optimizing away alignment tests or using word instructions for
1.35 +- copying memory, breaking the very code written to handle the
1.36 +- unaligned cases. */
1.37 +-# if ! ELF_MACHINE_NO_REL
1.38 +-auto inline void __attribute__((always_inline))
1.39 +-elf_machine_rel (struct link_map *map, const ElfW(Rel) *reloc,
1.40 +- const ElfW(Sym) *sym, const struct r_found_version *version,
1.41 +- void *const reloc_addr);
1.42 +-auto inline void __attribute__((always_inline))
1.43 +-elf_machine_rel_relative (ElfW(Addr) l_addr, const ElfW(Rel) *reloc,
1.44 +- void *const reloc_addr);
1.45 +-# endif
1.46 +-# if ! ELF_MACHINE_NO_RELA
1.47 +-auto inline void __attribute__((always_inline))
1.48 +-elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc,
1.49 +- const ElfW(Sym) *sym, const struct r_found_version *version,
1.50 +- void *const reloc_addr);
1.51 +-auto inline void __attribute__((always_inline))
1.52 +-elf_machine_rela_relative (ElfW(Addr) l_addr, const ElfW(Rela) *reloc,
1.53 +- void *const reloc_addr);
1.54 +-# endif
1.55 +-# if ELF_MACHINE_NO_RELA || defined ELF_MACHINE_PLT_REL
1.56 +-auto inline void __attribute__((always_inline))
1.57 +-elf_machine_lazy_rel (struct link_map *map,
1.58 +- ElfW(Addr) l_addr, const ElfW(Rel) *reloc);
1.59 +-# else
1.60 +-auto inline void __attribute__((always_inline))
1.61 +-elf_machine_lazy_rel (struct link_map *map,
1.62 +- ElfW(Addr) l_addr, const ElfW(Rela) *reloc);
1.63 +-# endif
1.64 +-#endif
1.65 +-
1.66 + #include <dl-machine.h>
1.67 +
1.68 + #ifndef VERSYMIDX
1.69 +
1.70 +Signed-off-by: Robert P. J. Day <rpjday@mindspring.com>