@ -0,0 +1,110 @@ |
|||||
|
Fixes |
||||
|
In file included from dynamic-link.h:22, |
||||
|
from dl-reloc.c:265: |
||||
|
../sysdeps/arm/dl-machine.h: In function '_dl_relocate_object': |
||||
|
../sysdeps/arm/dl-machine.h:371: error: invalid storage class for function 'fix_bad_pc24' |
||||
|
../sysdeps/arm/dl-machine.h:406: error: invalid storage class for function 'elf_machine_rel' |
||||
|
../sysdeps/arm/dl-machine.h:532: error: invalid storage class for function 'elf_machine_rela' |
||||
|
../sysdeps/arm/dl-machine.h:612: error: invalid storage class for function 'elf_machine_rel_relative' |
||||
|
../sysdeps/arm/dl-machine.h:621: error: invalid storage class for function 'elf_machine_rela_relative' |
||||
|
../sysdeps/arm/dl-machine.h:630: error: invalid storage class for function 'elf_machine_lazy_rel' |
||||
|
|
||||
|
--- glibc-2.3.4/sysdeps/arm/dl-machine.h.old Sun Mar 20 17:54:37 2005
|
||||
|
+++ glibc-2.3.4/sysdeps/arm/dl-machine.h Sun Mar 20 17:57:32 2005
|
||||
|
@@ -359,7 +359,14 @@
|
||||
|
# endif |
||||
|
|
||||
|
/* Deal with an out-of-range PC24 reloc. */ |
||||
|
-static Elf32_Addr
|
||||
|
+#if __GNUC__ >= 4
|
||||
|
+ auto inline Elf32_Addr
|
||||
|
+#else
|
||||
|
+ static inline Elf32_Addr
|
||||
|
+#endif
|
||||
|
+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2)
|
||||
|
+ __attribute ((always_inline))
|
||||
|
+#endif
|
||||
|
fix_bad_pc24 (Elf32_Addr *const reloc_addr, Elf32_Addr value) |
||||
|
{ |
||||
|
static void *fix_page; |
||||
|
@@ -392,7 +399,14 @@
|
||||
|
/* Perform the relocation specified by RELOC and SYM (which is fully resolved). |
||||
|
MAP is the object containing the reloc. */ |
||||
|
|
||||
|
-static inline void
|
||||
|
+#if __GNUC__ >= 4
|
||||
|
+ auto inline void
|
||||
|
+#else
|
||||
|
+ static inline void
|
||||
|
+#endif
|
||||
|
+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2)
|
||||
|
+ __attribute ((always_inline))
|
||||
|
+#endif
|
||||
|
elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc, |
||||
|
const Elf32_Sym *sym, const struct r_found_version *version, |
||||
|
void *const reloc_addr_arg) |
||||
|
@@ -517,7 +531,14 @@
|
||||
|
} |
||||
|
|
||||
|
# ifndef RTLD_BOOTSTRAP |
||||
|
-static inline void
|
||||
|
+#if __GNUC__ >= 4
|
||||
|
+ auto inline void
|
||||
|
+#else
|
||||
|
+ static inline void
|
||||
|
+#endif
|
||||
|
+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2)
|
||||
|
+ __attribute ((always_inline))
|
||||
|
+#endif
|
||||
|
elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc, |
||||
|
const Elf32_Sym *sym, const struct r_found_version *version, |
||||
|
void *const reloc_addr_arg) |
||||
|
@@ -597,7 +618,14 @@
|
||||
|
} |
||||
|
# endif |
||||
|
|
||||
|
-static inline void
|
||||
|
+#if __GNUC__ >= 4
|
||||
|
+ auto inline void
|
||||
|
+#else
|
||||
|
+ static inline void
|
||||
|
+#endif
|
||||
|
+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2)
|
||||
|
+ __attribute ((always_inline))
|
||||
|
+#endif
|
||||
|
elf_machine_rel_relative (Elf32_Addr l_addr, const Elf32_Rel *reloc, |
||||
|
void *const reloc_addr_arg) |
||||
|
{ |
||||
|
@@ -606,7 +634,14 @@
|
||||
|
} |
||||
|
|
||||
|
# ifndef RTLD_BOOTSTRAP |
||||
|
-static inline void
|
||||
|
+#if __GNUC__ >= 4
|
||||
|
+ auto inline void
|
||||
|
+#else
|
||||
|
+ static inline void
|
||||
|
+#endif
|
||||
|
+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2)
|
||||
|
+ __attribute ((always_inline))
|
||||
|
+#endif
|
||||
|
elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc, |
||||
|
void *const reloc_addr_arg) |
||||
|
{ |
||||
|
@@ -615,7 +650,14 @@
|
||||
|
} |
||||
|
# endif |
||||
|
|
||||
|
-static inline void
|
||||
|
+#if __GNUC__ >= 4
|
||||
|
+ auto inline void
|
||||
|
+#else
|
||||
|
+ static inline void
|
||||
|
+#endif
|
||||
|
+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2)
|
||||
|
+ __attribute ((always_inline))
|
||||
|
+#endif
|
||||
|
elf_machine_lazy_rel (struct link_map *map, |
||||
|
Elf32_Addr l_addr, const Elf32_Rel *reloc) |
||||
|
{ |
||||
|
|
||||
@ -0,0 +1,54 @@ |
|||||
|
From http://www.mail-archive.com/pld-cvs-commit@pld-linux.org/msg00229.html |
||||
|
Fixes |
||||
|
rtld.c: In function '_dl_start': |
||||
|
dynamic-link.h:47: error: nested function 'elf_machine_rela_relative' declared but never defined |
||||
|
dynamic-link.h:41: error: nested function 'elf_machine_rela' declared but never defined |
||||
|
when compiling glibc-2.3.4 with gcc-4.0 |
||||
|
|
||||
|
--- glibc-2.3-20050307/elf/dynamic-link.h.old 2005-03-12 18:12:37.000000000 -0800
|
||||
|
+++ glibc-2.3-20050307/elf/dynamic-link.h 2005-03-12 18:12:59.777820848 -0800
|
||||
|
@@ -19,43 +19,6 @@
|
||||
|
|
||||
|
#include <elf.h> |
||||
|
#include <assert.h> |
||||
|
-
|
||||
|
-#ifdef RESOLVE
|
||||
|
-/* We pass reloc_addr as a pointer to void, as opposed to a pointer to
|
||||
|
- ElfW(Addr), because not all architectures can assume that the
|
||||
|
- relocated address is properly aligned, whereas the compiler is
|
||||
|
- entitled to assume that a pointer to a type is properly aligned for
|
||||
|
- the type. Even if we cast the pointer back to some other type with
|
||||
|
- less strict alignment requirements, the compiler might still
|
||||
|
- remember that the pointer was originally more aligned, thereby
|
||||
|
- optimizing away alignment tests or using word instructions for
|
||||
|
- copying memory, breaking the very code written to handle the
|
||||
|
- unaligned cases. */
|
||||
|
-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,
|
||||
|
- void *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,
|
||||
|
- void *const reloc_addr);
|
||||
|
-auto void __attribute__((always_inline))
|
||||
|
-elf_machine_rel_relative (ElfW(Addr) l_addr, const ElfW(Rel) *reloc,
|
||||
|
- void *const reloc_addr);
|
||||
|
-auto void __attribute__((always_inline))
|
||||
|
-elf_machine_rela_relative (ElfW(Addr) l_addr, const ElfW(Rela) *reloc,
|
||||
|
- void *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,
|
||||
|
- ElfW(Addr) l_addr, const ElfW(Rel) *reloc);
|
||||
|
-# else
|
||||
|
-auto void __attribute__((always_inline))
|
||||
|
-elf_machine_lazy_rel (struct link_map *map,
|
||||
|
- ElfW(Addr) l_addr, const ElfW(Rela) *reloc);
|
||||
|
-# endif
|
||||
|
-#endif
|
||||
|
-
|
||||
|
#include <dl-machine.h> |
||||
|
|
||||
|
#ifndef VERSYMIDX |
||||
|
|
||||
@ -0,0 +1,42 @@ |
|||||
|
Fixes |
||||
|
In file included from jis0208.c:23: |
||||
|
jis0208.h:32: error: array type has incomplete element type |
||||
|
when building glibc with gcc-4.0 |
||||
|
The bug has been present since at least glibc-2.2.5. |
||||
|
This patch applies cleanly to glibc-2.3.4 |
||||
|
|
||||
|
--- /home/dank/downloads/glibc-2.3-20050307/iconvdata/jis0208.h 2003-06-11 14:40:42.000000000 -0700
|
||||
|
+++ glibc-2.3-20050307/iconvdata/jis0208.h 2005-03-13 20:55:01.784054760 -0800
|
||||
|
@@ -24,15 +24,6 @@
|
||||
|
#include <gconv.h> |
||||
|
#include <stdint.h> |
||||
|
|
||||
|
-/* Conversion table. */
|
||||
|
-extern const uint16_t __jis0208_to_ucs[];
|
||||
|
-
|
||||
|
-extern const char __jisx0208_from_ucs4_lat1[256][2];
|
||||
|
-extern const char __jisx0208_from_ucs4_greek[0xc1][2];
|
||||
|
-extern const struct jisx0208_ucs_idx __jisx0208_from_ucs_idx[];
|
||||
|
-extern const char __jisx0208_from_ucs_tab[][2];
|
||||
|
-
|
||||
|
-
|
||||
|
/* Struct for table with indeces in UCS mapping table. */ |
||||
|
struct jisx0208_ucs_idx |
||||
|
{ |
||||
|
@@ -42,6 +33,15 @@
|
||||
|
}; |
||||
|
|
||||
|
|
||||
|
+/* Conversion table. */
|
||||
|
+extern const uint16_t __jis0208_to_ucs[];
|
||||
|
+
|
||||
|
+extern const char __jisx0208_from_ucs4_lat1[256][2];
|
||||
|
+extern const char __jisx0208_from_ucs4_greek[0xc1][2];
|
||||
|
+extern const struct jisx0208_ucs_idx __jisx0208_from_ucs_idx[];
|
||||
|
+extern const char __jisx0208_from_ucs_tab[][2];
|
||||
|
+
|
||||
|
+
|
||||
|
static inline uint32_t |
||||
|
__attribute ((always_inline)) |
||||
|
jisx0208_to_ucs4 (const unsigned char **s, size_t avail, unsigned char offset) |
||||
|
|
||||
@ -0,0 +1,48 @@ |
|||||
|
2005-02-21 Alan Modra <amodra@bigpond.net.au> |
||||
|
|
||||
|
* sysdeps/unix/sysv/linux/powerpc/sys/procfs.h (elf_vrreg_t): Don't |
||||
|
use __uint128_t. |
||||
|
|
||||
|
Fixes |
||||
|
|
||||
|
In file included from ../linuxthreads_db/proc_service.h:20, |
||||
|
from ../linuxthreads_db/thread_dbP.h:7, |
||||
|
from ../linuxthreads/descr.h:44, |
||||
|
from ../linuxthreads/internals.h:30, |
||||
|
from ../linuxthreads/sysdeps/pthread/bits/libc-lock.h:27, |
||||
|
from ../sysdeps/generic/ldsodefs.h:38, |
||||
|
from ../sysdeps/unix/sysv/linux/ldsodefs.h:25, |
||||
|
from <stdin>:2: |
||||
|
../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:57: error: syntax error before 'elf_vrreg_t' |
||||
|
../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:57: warning: type defaults to 'int' in declaration of 'elf_vrreg_t' |
||||
|
../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:57: warning: data definition has no type or storage class |
||||
|
../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:58: error: syntax error before 'elf_vrregset_t' |
||||
|
../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:58: warning: type defaults to 'int' in declaration of 'elf_vrregset_t' |
||||
|
../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:58: warning: data definition has no type or storage class |
||||
|
|
||||
|
===================================================================
|
||||
|
RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/powerpc/sys/procfs.h,v |
||||
|
retrieving revision 1.11 |
||||
|
retrieving revision 1.12 |
||||
|
diff -u -r1.11 -r1.12
|
||||
|
--- libc/sysdeps/unix/sysv/linux/powerpc/sys/procfs.h 2003/12/17 23:09:34 1.11
|
||||
|
+++ libc/sysdeps/unix/sysv/linux/powerpc/sys/procfs.h 2005/03/02 20:11:38 1.12
|
||||
|
@@ -46,15 +46,10 @@
|
||||
|
typedef double elf_fpreg_t; |
||||
|
typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG]; |
||||
|
|
||||
|
-/* gcc 3.1 and newer support __uint128_t. */
|
||||
|
-#if !__GNUC_PREREQ(3,1)
|
||||
|
-typedef struct {
|
||||
|
- unsigned long u[4];
|
||||
|
-} __attribute((aligned(16))) __uint128_t;
|
||||
|
-#endif
|
||||
|
-
|
||||
|
/* Altivec registers */ |
||||
|
-typedef __uint128_t elf_vrreg_t;
|
||||
|
+typedef struct {
|
||||
|
+ unsigned int u[4];
|
||||
|
+} __attribute__ ((aligned (16))) elf_vrreg_t;
|
||||
|
typedef elf_vrreg_t elf_vrregset_t[ELF_NVRREG]; |
||||
|
#endif |
||||
|
|
||||
@ -0,0 +1,41 @@ |
|||||
|
Fixes |
||||
|
|
||||
|
../sysdeps/powerpc/powerpc32/dl-machine.h: In function '_dl_relocate_object': |
||||
|
../sysdeps/powerpc/powerpc32/dl-machine.h:461: error: invalid storage class for function 'elf_machine_rela_relative' |
||||
|
../sysdeps/powerpc/powerpc32/dl-machine.h:469: error: invalid storage class for function 'elf_machine_lazy_rel' |
||||
|
|
||||
|
diff -ur glibc-2.3-20050307.orig/sysdeps/powerpc/powerpc32/dl-machine.h glibc-2.3-20050307/sysdeps/powerpc/powerpc32/dl-machine.h
|
||||
|
--- glibc-2.3-20050307.orig/sysdeps/powerpc/powerpc32/dl-machine.h Wed Jul 30 23:33:52 2003
|
||||
|
+++ glibc-2.3-20050307/sysdeps/powerpc/powerpc32/dl-machine.h Thu Mar 17 13:19:16 2005
|
||||
|
@@ -455,7 +455,14 @@
|
||||
|
} |
||||
|
} |
||||
|
|
||||
|
-static inline void
|
||||
|
+#if __GNUC__ >= 4
|
||||
|
+ auto inline void
|
||||
|
+#else
|
||||
|
+ static inline void
|
||||
|
+#endif
|
||||
|
+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2)
|
||||
|
+ __attribute ((always_inline))
|
||||
|
+#endif
|
||||
|
elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc, |
||||
|
void *const reloc_addr_arg) |
||||
|
{ |
||||
|
@@ -463,7 +470,14 @@
|
||||
|
*reloc_addr = l_addr + reloc->r_addend; |
||||
|
} |
||||
|
|
||||
|
-static inline void
|
||||
|
+#if __GNUC__ >= 4
|
||||
|
+ auto inline void
|
||||
|
+#else
|
||||
|
+ static inline void
|
||||
|
+#endif
|
||||
|
+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2)
|
||||
|
+ __attribute ((always_inline))
|
||||
|
+#endif
|
||||
|
elf_machine_lazy_rel (struct link_map *map, |
||||
|
Elf32_Addr l_addr, const Elf32_Rela *reloc) |
||||
|
{ |
||||
@ -0,0 +1,60 @@ |
|||||
|
Fixes: |
||||
|
|
||||
|
In file included from dynamic-link.h:22, |
||||
|
from dl-reloc.c:269: |
||||
|
../sysdeps/powerpc/powerpc64/dl-machine.h: In function '_dl_relocate_object': |
||||
|
../sysdeps/powerpc/powerpc64/dl-machine.h:573: error: invalid storage class for function 'elf_machine_rela_relative' |
||||
|
../sysdeps/powerpc/powerpc64/dl-machine.h:607: error: invalid storage class for function 'elf_machine_rela' |
||||
|
../sysdeps/powerpc/powerpc64/dl-machine.h:889: error: invalid storage class for function 'elf_machine_lazy_rel' |
||||
|
|
||||
|
--- glibc-2.3-20050307/sysdeps/powerpc/powerpc64/dl-machine.h.old Thu Mar 17 13:35:23 2005
|
||||
|
+++ glibc-2.3-20050307/sysdeps/powerpc/powerpc64/dl-machine.h Thu Mar 17 13:37:12 2005
|
||||
|
@@ -567,7 +567,14 @@
|
||||
|
const Elf64_Sym *refsym) |
||||
|
attribute_hidden; |
||||
|
|
||||
|
-static inline void
|
||||
|
+#if __GNUC__ >= 4
|
||||
|
+ auto inline void
|
||||
|
+#else
|
||||
|
+ static inline void
|
||||
|
+#endif
|
||||
|
+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2)
|
||||
|
+ __attribute ((always_inline))
|
||||
|
+#endif
|
||||
|
elf_machine_rela_relative (Elf64_Addr l_addr, const Elf64_Rela *reloc, |
||||
|
void *const reloc_addr_arg) |
||||
|
{ |
||||
|
@@ -598,7 +605,14 @@
|
||||
|
|
||||
|
/* Perform the relocation specified by RELOC and SYM (which is fully |
||||
|
resolved). MAP is the object containing the reloc. */ |
||||
|
-static inline void
|
||||
|
+#if __GNUC__ >= 4
|
||||
|
+ auto inline void
|
||||
|
+#else
|
||||
|
+ static inline void
|
||||
|
+#endif
|
||||
|
+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2)
|
||||
|
+ __attribute ((always_inline))
|
||||
|
+#endif
|
||||
|
elf_machine_rela (struct link_map *map, |
||||
|
const Elf64_Rela *reloc, |
||||
|
const Elf64_Sym *sym, |
||||
|
@@ -883,7 +897,14 @@
|
||||
|
MODIFIED_CODE_NOQUEUE (reloc_addr); |
||||
|
} |
||||
|
|
||||
|
-static inline void
|
||||
|
+#if __GNUC__ >= 4
|
||||
|
+ auto inline void
|
||||
|
+#else
|
||||
|
+ static inline void
|
||||
|
+#endif
|
||||
|
+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2)
|
||||
|
+ __attribute ((always_inline))
|
||||
|
+#endif
|
||||
|
elf_machine_lazy_rel (struct link_map *map, |
||||
|
Elf64_Addr l_addr, const Elf64_Rela *reloc) |
||||
|
{ |
||||
|
|
||||
@ -0,0 +1,16 @@ |
|||||
|
../sysdeps/generic/wordexp.c: In function 'exec_comm': |
||||
|
../sysdeps/generic/wordexp.c:815: sorry, unimplemented: inlining failed in call to 'exec_comm_child': function body not available |
||||
|
../sysdeps/generic/wordexp.c:900: sorry, unimplemented: called from here |
||||
|
|
||||
|
|
||||
|
--- glibc-2.3-20050307/sysdeps/generic/wordexp.c.old 2005-03-12 08:54:15.709253928 -0800
|
||||
|
+++ glibc-2.3-20050307/sysdeps/generic/wordexp.c 2005-03-12 08:54:51.242852000 -0800
|
||||
|
@@ -809,7 +809,7 @@
|
||||
|
} |
||||
|
|
||||
|
/* Function called by child process in exec_comm() */ |
||||
|
-static void
|
||||
|
+static inline void
|
||||
|
internal_function __attribute__ ((always_inline)) |
||||
|
exec_comm_child (char *comm, int *fildes, int showerr, int noexec) |
||||
|
{ |
||||
@ -0,0 +1,71 @@ |
|||||
|
? the following error when building with gcc-4.0.0: |
||||
|
|
||||
|
../string/strcoll.c:39: error: '__EI_strcoll' aliased to undefined symbol '__GI_strcoll' |
||||
|
make[2]: *** [/home/dank/crosstool-0.32/build/i686-unknown-linux-gnu/gcc-4.0.0-20050410-glibc-2.3.4/build-glibc/wcsmbs/wcscoll.os] Error 1 |
||||
|
make[2]: Leaving directory `/home/dank/crosstool-0.32/build/i686-unknown-linux-gnu/gcc-4.0.0-20050410-glibc-2.3.4/glibc-2.3.4/wcsmbs' |
||||
|
|
||||
|
|
||||
|
taken from Dan Kegel's glibc patches |
||||
|
|
||||
|
===================================================================
|
||||
|
RCS file: /cvs/glibc/libc/string/strcoll.c,v |
||||
|
retrieving revision 1.33 |
||||
|
retrieving revision 1.34 |
||||
|
diff -u -r1.33 -r1.34
|
||||
|
--- libc/string/strcoll.c 2004/03/14 20:51:30 1.33
|
||||
|
+++ libc/string/strcoll.c 2005/03/17 21:06:24 1.34
|
||||
|
@@ -23,6 +23,7 @@
|
||||
|
# define STRING_TYPE char |
||||
|
# define STRCOLL strcoll |
||||
|
# define STRCOLL_L __strcoll_l |
||||
|
+# define USE_HIDDEN_DEF
|
||||
|
#endif |
||||
|
|
||||
|
#include "../locale/localeinfo.h" |
||||
|
@@ -35,6 +36,7 @@
|
||||
|
{ |
||||
|
return STRCOLL_L (s1, s2, _NL_CURRENT_LOCALE); |
||||
|
} |
||||
|
-#if !defined WIDE_CHAR_VERSION
|
||||
|
-libc_hidden_def (strcoll)
|
||||
|
+
|
||||
|
+#ifdef USE_HIDDEN_DEF
|
||||
|
+libc_hidden_def (STRCOLL)
|
||||
|
#endif |
||||
|
===================================================================
|
||||
|
RCS file: /cvs/glibc/libc/include/wchar.h,v |
||||
|
retrieving revision 1.26 |
||||
|
retrieving revision 1.27 |
||||
|
diff -u -r1.26 -r1.27
|
||||
|
--- libc/include/wchar.h 2004/03/14 20:45:10 1.26
|
||||
|
+++ libc/include/wchar.h 2005/03/17 21:06:24 1.27
|
||||
|
@@ -56,7 +56,6 @@
|
||||
|
extern int __wcsncasecmp (__const wchar_t *__s1, __const wchar_t *__s2, |
||||
|
size_t __n) |
||||
|
__attribute_pure__; |
||||
|
-extern int __wcscoll (__const wchar_t *__s1, __const wchar_t *__s2);
|
||||
|
extern size_t __wcslen (__const wchar_t *__s) __attribute_pure__; |
||||
|
extern size_t __wcsnlen (__const wchar_t *__s, size_t __maxlen) |
||||
|
__attribute_pure__; |
||||
|
===================================================================
|
||||
|
RCS file: /cvs/glibc/libc/wcsmbs/wcscoll.c,v |
||||
|
retrieving revision 1.13 |
||||
|
retrieving revision 1.14 |
||||
|
diff -u -r1.13 -r1.14
|
||||
|
--- libc/wcsmbs/wcscoll.c 2004/03/14 21:05:48 1.13
|
||||
|
+++ libc/wcsmbs/wcscoll.c 2005/03/17 21:06:24 1.14
|
||||
|
@@ -22,12 +22,11 @@
|
||||
|
|
||||
|
#define STRING_TYPE wchar_t |
||||
|
#define USTRING_TYPE wint_t |
||||
|
-#define STRCOLL __wcscoll
|
||||
|
+#define STRCOLL wcscoll
|
||||
|
#define STRCOLL_L __wcscoll_l |
||||
|
|
||||
|
#include "../string/strcoll.c" |
||||
|
|
||||
|
#ifndef USE_IN_EXTENDED_LOCALE_MODEL |
||||
|
-weak_alias (__wcscoll, wcscoll)
|
||||
|
libc_hidden_weak (wcscoll) |
||||
|
#endif |
||||
|
|
||||
@ -0,0 +1,105 @@ |
|||||
|
If I'm really lucky, this fixes the following error building with gcc-4.0.0: |
||||
|
|
||||
|
../sysdeps/ieee754/dbl-64/s_isinf.c:29: error: 'isinf' aliased to undefined symbol '__isinf' |
||||
|
make[2]: *** [/home/dank/queue/jobdir.fast/crosstool-0.32/build/i686-unknown-linux-gnu/gcc-4.0.0-20050410-glibc-2.3.4/build-glibc/math/s_isinf.os] Error 1 |
||||
|
make[1]: *** [math/subdir_lib] Error 2 |
||||
|
make: *** [lib] Error 2 |
||||
|
|
||||
|
patch taken from Dan Kegel's glibc patches |
||||
|
===================================================================
|
||||
|
RCS file: /cvs/glibc/libc/include/libc-symbols.h,v |
||||
|
retrieving revision 1.70 |
||||
|
retrieving revision 1.71 |
||||
|
diff -u -r1.70 -r1.71
|
||||
|
--- libc/include/libc-symbols.h 2005/02/11 00:29:46 1.70
|
||||
|
+++ libc/include/libc-symbols.h 2005/03/17 21:06:27 1.71
|
||||
|
@@ -583,78 +583,23 @@
|
||||
|
# define hidden_proto(name, attrs...) \ |
||||
|
__hidden_proto (name, __GI_##name, ##attrs) |
||||
|
# define __hidden_proto(name, internal, attrs...) \ |
||||
|
- extern __typeof (name) internal; \
|
||||
|
extern __typeof (name) name __asm__ (__hidden_asmname (#internal)) \ |
||||
|
__hidden_proto_hiddenattr (attrs); |
||||
|
# define __hidden_asmname(name) \ |
||||
|
__hidden_asmname1 (__USER_LABEL_PREFIX__, name) |
||||
|
# define __hidden_asmname1(prefix, name) __hidden_asmname2(prefix, name) |
||||
|
# define __hidden_asmname2(prefix, name) #prefix name |
||||
|
-# ifdef HAVE_ASM_SET_DIRECTIVE
|
||||
|
-# define __hidden_def1(original, alias) \
|
||||
|
- ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (alias) ASM_LINE_SEP \
|
||||
|
- .set C_SYMBOL_NAME (alias), C_SYMBOL_NAME (original)
|
||||
|
-# ifdef HAVE_ASM_GLOBAL_DOT_NAME
|
||||
|
-# define __hidden_dot_def1(original, alias) ASM_LINE_SEP \
|
||||
|
- ASM_GLOBAL_DIRECTIVE C_SYMBOL_DOT_NAME (alias) ASM_LINE_SEP \
|
||||
|
- .set C_SYMBOL_DOT_NAME (alias), C_SYMBOL_DOT_NAME (original)
|
||||
|
-# else
|
||||
|
-# define __hidden_dot_def1(original, alias)
|
||||
|
-# endif
|
||||
|
-# else
|
||||
|
-# define __hidden_def1(original, alias) \
|
||||
|
- ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (alias) ASM_LINE_SEP \
|
||||
|
- C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original)
|
||||
|
-# ifdef HAVE_ASM_GLOBAL_DOT_NAME
|
||||
|
-# define __hidden_dot_def1(original, alias) ASM_LINE_SEP \
|
||||
|
- ASM_GLOBAL_DIRECTIVE C_SYMBOL_DOT_NAME (alias) ASM_LINE_SEP \
|
||||
|
- C_SYMBOL_DOT_NAME (alias) = C_SYMBOL_DOT_NAME (original)
|
||||
|
-# else
|
||||
|
-# define __hidden_dot_def1(original, alias)
|
||||
|
-# endif
|
||||
|
-# endif
|
||||
|
-# define __hidden_def2(...) #__VA_ARGS__
|
||||
|
-# define __hidden_def3(...) __hidden_def2 (__VA_ARGS__)
|
||||
|
-# define hidden_def(name) \
|
||||
|
- __asm__ (__hidden_def3 (__hidden_def1 (__GI_##name, name) \
|
||||
|
- __hidden_dot_def1 (__GI_##name, name)));
|
||||
|
-# define hidden_data_def(name) \
|
||||
|
- __asm__ (__hidden_def3 (__hidden_def1 (__GI_##name, name)));
|
||||
|
-# define hidden_ver(local, name) \
|
||||
|
- __asm__ (__hidden_def3 (__hidden_def1 (local, __GI_##name) \
|
||||
|
- __hidden_dot_def1 (local, __GI_##name)));
|
||||
|
-# define hidden_data_ver(local, name) \
|
||||
|
- __asm__ (__hidden_def3 (__hidden_def1 (local, __GI_##name)));
|
||||
|
-# ifdef HAVE_WEAK_SYMBOLS
|
||||
|
-# ifdef HAVE_ASM_WEAKEXT_DIRECTIVE
|
||||
|
-# define __hidden_weak1(original, alias) \
|
||||
|
- .weakext C_SYMBOL_NAME (alias), C_SYMBOL_NAME (original)
|
||||
|
-# ifdef HAVE_ASM_GLOBAL_DOT_NAME
|
||||
|
-# define __hidden_dot_weak1(original, alias) ASM_LINE_SEP \
|
||||
|
- .weakext C_SYMBOL_DOT_NAME (alias), C_SYMBOL_DOT_NAME (original)
|
||||
|
-# else
|
||||
|
-# define __hidden_dot_weak1(original, alias)
|
||||
|
-# endif
|
||||
|
-# else /* ! HAVE_ASM_WEAKEXT_DIRECTIVE */
|
||||
|
-# define __hidden_weak1(original, alias) \
|
||||
|
- .weak C_SYMBOL_NAME (alias) ASM_LINE_SEP \
|
||||
|
- C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original)
|
||||
|
-# ifdef HAVE_ASM_GLOBAL_DOT_NAME
|
||||
|
-# define __hidden_dot_weak1(original, alias) ASM_LINE_SEP \
|
||||
|
- .weak C_SYMBOL_DOT_NAME (alias) ASM_LINE_SEP \
|
||||
|
- C_SYMBOL_DOT_NAME (alias) = C_SYMBOL_DOT_NAME (original)
|
||||
|
-# else
|
||||
|
-# define __hidden_dot_weak1(original, alias)
|
||||
|
-# endif
|
||||
|
-# endif
|
||||
|
-# define hidden_weak(name) \
|
||||
|
- __asm__ (__hidden_def3 (__hidden_weak1 (__GI_##name, name) \
|
||||
|
- __hidden_dot_weak1 (__GI_##name, name)));
|
||||
|
-# define hidden_data_weak(name) \
|
||||
|
- __asm__ (__hidden_def3 (__hidden_weak1 (__GI_##name, name)));
|
||||
|
-# else
|
||||
|
-# define hidden_weak(name) hidden_def (name)
|
||||
|
-# endif
|
||||
|
+# define __hidden_ver1(local, internal, name) \
|
||||
|
+ extern __typeof (name) __EI_##name __asm__(__hidden_asmname (#internal)); \
|
||||
|
+ extern __typeof (name) __EI_##name \
|
||||
|
+ __attribute__((alias (__hidden_asmname (#local))))
|
||||
|
+# define hidden_ver(local, name) __hidden_ver1(local, __GI_##name, name);
|
||||
|
+# define hidden_data_ver(local, name) hidden_ver(local, name)
|
||||
|
+# define hidden_def(name) __hidden_ver1(__GI_##name, name, name);
|
||||
|
+# define hidden_data_def(name) hidden_def(name)
|
||||
|
+# define hidden_weak(name) \
|
||||
|
+ __hidden_ver1(__GI_##name, name, name) __attribute__((weak));
|
||||
|
+# define hidden_data_weak(name) hidden_weak(name)
|
||||
|
# else |
||||
|
/* For assembly, we need to do the opposite of what we do in C: |
||||
|
in assembly gcc __REDIRECT stuff is not in place, so functions |
||||
@ -0,0 +1,39 @@ |
|||||
|
Fixes |
||||
|
../sysdeps/wordsize-64/wcstol_l.c:11: error: '____wcstoll_l_internal' aliased to undefined symbol '____wcstol_l_internal' |
||||
|
../sysdeps/wordsize-64/wcstol_l.c:12: error: '__wcstoll_l' aliased to undefined symbol '__wcstol_l' |
||||
|
../sysdeps/wordsize-64/wcstol_l.c:13: error: 'wcstoll_l' aliased to undefined symbol '__wcstol_l' |
||||
|
|
||||
|
===================================================================
|
||||
|
RCS file: /cvs/glibc/libc/sysdeps/wordsize-64/strtol_l.c,v |
||||
|
retrieving revision 1.4 |
||||
|
retrieving revision 1.4.2.1 |
||||
|
diff -u -r1.4 -r1.4.2.1
|
||||
|
--- libc/sysdeps/wordsize-64/strtol_l.c 2003/03/03 09:45:12 1.4
|
||||
|
+++ libc/sysdeps/wordsize-64/strtol_l.c 2005/03/25 11:59:01 1.4.2.1
|
||||
|
@@ -8,7 +8,9 @@
|
||||
|
#undef ____strtoll_l_internal |
||||
|
#undef __strtoll_l |
||||
|
#undef strtoll_l |
||||
|
+#if !UNSIGNED
|
||||
|
strong_alias (____strtol_l_internal, ____strtoll_l_internal) |
||||
|
libc_hidden_ver (____strtol_l_internal, ____strtoll_l_internal) |
||||
|
weak_alias (__strtol_l, __strtoll_l) |
||||
|
weak_alias (__strtol_l, strtoll_l) |
||||
|
+#endif
|
||||
|
===================================================================
|
||||
|
RCS file: /cvs/glibc/libc/sysdeps/wordsize-64/wcstol_l.c,v |
||||
|
retrieving revision 1.4 |
||||
|
retrieving revision 1.4.2.1 |
||||
|
diff -u -r1.4 -r1.4.2.1
|
||||
|
--- libc/sysdeps/wordsize-64/wcstol_l.c 2002/08/08 11:44:51 1.4
|
||||
|
+++ libc/sysdeps/wordsize-64/wcstol_l.c 2005/03/25 11:59:01 1.4.2.1
|
||||
|
@@ -8,6 +8,8 @@
|
||||
|
#undef ____wcstoll_l_internal |
||||
|
#undef __wcstoll_l |
||||
|
#undef wcstoll_l |
||||
|
+#if !UNSIGNED
|
||||
|
strong_alias (____wcstol_l_internal, ____wcstoll_l_internal) |
||||
|
weak_alias (__wcstol_l, __wcstoll_l) |
||||
|
weak_alias (__wcstol_l, wcstoll_l) |
||||
|
+#endif
|
||||
|
|
||||
@ -0,0 +1,154 @@ |
|||||
|
Fixes http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.c-torture/execute/920501-8.c |
||||
|
and makes printf("%f", 1.0) work. |
||||
|
|
||||
|
diff -uNrp glibc.old/sysdeps/arm/bits/endian.h glibc.new/sysdeps/arm/bits/endian.h
|
||||
|
--- glibc.old/sysdeps/arm/bits/endian.h 1999-04-12 11:59:13.000000000 -0400
|
||||
|
+++ glibc.new/sysdeps/arm/bits/endian.h 2004-02-12 09:15:13.000000000 -0500
|
||||
|
@@ -9,4 +9,9 @@
|
||||
|
#else |
||||
|
#define __BYTE_ORDER __LITTLE_ENDIAN |
||||
|
#endif |
||||
|
+
|
||||
|
+#ifdef __VFP_FP__
|
||||
|
+#define __FLOAT_WORD_ORDER __BYTE_ORDER
|
||||
|
+#else
|
||||
|
#define __FLOAT_WORD_ORDER __BIG_ENDIAN |
||||
|
+#endif
|
||||
|
diff -uNrp glibc.old/sysdeps/arm/gmp-mparam.h glibc.new/sysdeps/arm/gmp-mparam.h
|
||||
|
--- glibc.old/sysdeps/arm/gmp-mparam.h 2001-07-07 15:21:19.000000000 -0400
|
||||
|
+++ glibc.new/sysdeps/arm/gmp-mparam.h 2004-02-12 09:15:13.000000000 -0500
|
||||
|
@@ -26,5 +26,13 @@ MA 02111-1307, USA. */
|
||||
|
#define BITS_PER_SHORTINT 16 |
||||
|
#define BITS_PER_CHAR 8 |
||||
|
|
||||
|
-#define IEEE_DOUBLE_BIG_ENDIAN 0
|
||||
|
-#define IEEE_DOUBLE_MIXED_ENDIAN 1
|
||||
|
+#if defined(__ARMEB__)
|
||||
|
+# define IEEE_DOUBLE_MIXED_ENDIAN 0
|
||||
|
+# define IEEE_DOUBLE_BIG_ENDIAN 1
|
||||
|
+#elif defined(__VFP_FP__)
|
||||
|
+# define IEEE_DOUBLE_MIXED_ENDIAN 0
|
||||
|
+# define IEEE_DOUBLE_BIG_ENDIAN 0
|
||||
|
+#else
|
||||
|
+# define IEEE_DOUBLE_BIG_ENDIAN 0
|
||||
|
+# define IEEE_DOUBLE_MIXED_ENDIAN 1
|
||||
|
+#endif
|
||||
|
diff -uNrp glibc.old/sysdeps/arm/ieee754.h glibc.new/sysdeps/arm/ieee754.h
|
||||
|
--- glibc.old/sysdeps/arm/ieee754.h 2001-07-07 15:21:19.000000000 -0400
|
||||
|
+++ glibc.new/sysdeps/arm/ieee754.h 1969-12-31 19:00:00.000000000 -0500
|
||||
|
@@ -1,115 +0,0 @@
|
||||
|
-/* Copyright (C) 1992, 1995, 1996, 1998 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
|
||||
|
- modify it under the terms of the GNU Lesser General Public
|
||||
|
- License as published by the Free Software Foundation; either
|
||||
|
- version 2.1 of the License, or (at your option) any later version.
|
||||
|
-
|
||||
|
- The GNU C Library is distributed in the hope that it will be useful,
|
||||
|
- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
|
- Lesser General Public License for more details.
|
||||
|
-
|
||||
|
- You should have received a copy of the GNU Lesser General Public
|
||||
|
- License along with the GNU C Library; if not, write to the Free
|
||||
|
- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
|
- 02111-1307 USA. */
|
||||
|
-
|
||||
|
-#ifndef _IEEE754_H
|
||||
|
-
|
||||
|
-#define _IEEE754_H 1
|
||||
|
-#include <features.h>
|
||||
|
-
|
||||
|
-#include <endian.h>
|
||||
|
-
|
||||
|
-__BEGIN_DECLS
|
||||
|
-
|
||||
|
-union ieee754_float
|
||||
|
- {
|
||||
|
- float f;
|
||||
|
-
|
||||
|
- /* This is the IEEE 754 single-precision format. */
|
||||
|
- struct
|
||||
|
- {
|
||||
|
- unsigned int mantissa:23;
|
||||
|
- unsigned int exponent:8;
|
||||
|
- unsigned int negative:1;
|
||||
|
- } ieee;
|
||||
|
-
|
||||
|
- /* This format makes it easier to see if a NaN is a signalling NaN. */
|
||||
|
- struct
|
||||
|
- {
|
||||
|
- unsigned int mantissa:22;
|
||||
|
- unsigned int quiet_nan:1;
|
||||
|
- unsigned int exponent:8;
|
||||
|
- unsigned int negative:1;
|
||||
|
- } ieee_nan;
|
||||
|
- };
|
||||
|
-
|
||||
|
-#define IEEE754_FLOAT_BIAS 0x7f /* Added to exponent. */
|
||||
|
-
|
||||
|
-
|
||||
|
-union ieee754_double
|
||||
|
- {
|
||||
|
- double d;
|
||||
|
-
|
||||
|
- /* This is the IEEE 754 double-precision format. */
|
||||
|
- struct
|
||||
|
- {
|
||||
|
- unsigned int mantissa0:20;
|
||||
|
- unsigned int exponent:11;
|
||||
|
- unsigned int negative:1;
|
||||
|
- unsigned int mantissa1:32;
|
||||
|
- } ieee;
|
||||
|
-
|
||||
|
- /* This format makes it easier to see if a NaN is a signalling NaN. */
|
||||
|
- struct
|
||||
|
- {
|
||||
|
- unsigned int mantissa0:19;
|
||||
|
- unsigned int quiet_nan:1;
|
||||
|
- unsigned int exponent:11;
|
||||
|
- unsigned int negative:1;
|
||||
|
- unsigned int mantissa1:32;
|
||||
|
- } ieee_nan;
|
||||
|
- };
|
||||
|
-
|
||||
|
-#define IEEE754_DOUBLE_BIAS 0x3ff /* Added to exponent. */
|
||||
|
-
|
||||
|
-
|
||||
|
-/* The following two structures are correct for `new' floating point systems but
|
||||
|
- wrong for the old FPPC. The only solution seems to be to avoid their use on
|
||||
|
- old hardware. */
|
||||
|
-
|
||||
|
-union ieee854_long_double
|
||||
|
- {
|
||||
|
- long double d;
|
||||
|
-
|
||||
|
- /* This is the IEEE 854 double-extended-precision format. */
|
||||
|
- struct
|
||||
|
- {
|
||||
|
- unsigned int exponent:15;
|
||||
|
- unsigned int empty:16;
|
||||
|
- unsigned int negative:1;
|
||||
|
- unsigned int mantissa1:32;
|
||||
|
- unsigned int mantissa0:32;
|
||||
|
- } ieee;
|
||||
|
-
|
||||
|
- /* This is for NaNs in the IEEE 854 double-extended-precision format. */
|
||||
|
- struct
|
||||
|
- {
|
||||
|
- unsigned int exponent:15;
|
||||
|
- unsigned int empty:16;
|
||||
|
- unsigned int negative:1;
|
||||
|
- unsigned int mantissa1:32;
|
||||
|
- unsigned int mantissa0:30;
|
||||
|
- unsigned int quiet_nan:1;
|
||||
|
- unsigned int one:1;
|
||||
|
- } ieee_nan;
|
||||
|
- };
|
||||
|
-
|
||||
|
-#define IEEE854_LONG_DOUBLE_BIAS 0x3fff
|
||||
|
-
|
||||
|
-__END_DECLS
|
||||
|
-
|
||||
|
-#endif /* ieee754.h */
|
||||
@ -0,0 +1,21 @@ |
|||||
|
From http://svn.exactcode.de/t2/trunk/package/base/glibc32/make-install-lib-all.patch |
||||
|
Rule to install all needed libraries, not just the ones installed by install-lib, |
||||
|
yet not install programs. |
||||
|
|
||||
|
diff -Naur glibc-2.3.4.orig/Makerules glibc-2.3.4/Makerules
|
||||
|
--- glibc-2.3.4.orig/Makerules 2004-12-15 20:52:39.000000000 +0200
|
||||
|
+++ glibc-2.3.4/Makerules 2005-02-19 15:16:31.415125176 +0200
|
||||
|
@@ -844,6 +844,13 @@
|
||||
|
installed-libcs := $(foreach o,$(filter-out .os,$(object-suffixes-for-libc)),\ |
||||
|
$(inst_libdir)/$(patsubst %,$(libtype$o),\ |
||||
|
$(libprefix)$(libc-name))) |
||||
|
+
|
||||
|
+install-lib-all: $(inst_slibdir)/libc.so$(libc.so-version) \
|
||||
|
+ $(inst_slibdir)/libc-$(version).so \
|
||||
|
+ $(inst_libdir)/libc.so \
|
||||
|
+ $(inst_libdir)/libc.a \
|
||||
|
+ install-lib
|
||||
|
+
|
||||
|
install: $(installed-libcs) |
||||
|
$(installed-libcs): $(inst_libdir)/lib$(libprefix)%: lib $(+force) |
||||
|
$(make-target-directory) |
||||