summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSeemant Kulleen <seemant@gentoo.org>2002-10-12 01:44:41 +0000
committerSeemant Kulleen <seemant@gentoo.org>2002-10-12 01:44:41 +0000
commit7606fbf3a92ba04b7d09e52b2fd698419d70a409 (patch)
treefa824269e0042f1b398ae1babf6f2969d242c3d7 /sys-libs
parentUnmasking latest openbox-2.1.2 (diff)
downloadgentoo-2-7606fbf3a92ba04b7d09e52b2fd698419d70a409.tar.gz
gentoo-2-7606fbf3a92ba04b7d09e52b2fd698419d70a409.tar.bz2
gentoo-2-7606fbf3a92ba04b7d09e52b2fd698419d70a409.zip
sparc and sparc64 fixups
Diffstat (limited to 'sys-libs')
-rw-r--r--sys-libs/glibc/ChangeLog9
-rw-r--r--sys-libs/glibc/files/glibc-2.2.5-gcc311-sparc.patch21
-rw-r--r--sys-libs/glibc/files/glibc-2.2.5-sparc-misc.diff339
-rw-r--r--sys-libs/glibc/files/glibc-2.2.5-sparc64-fixups.diff46
-rw-r--r--sys-libs/glibc/glibc-2.2.5-r7.ebuild14
5 files changed, 406 insertions, 23 deletions
diff --git a/sys-libs/glibc/ChangeLog b/sys-libs/glibc/ChangeLog
index 75846b791d69..dd765a67a9d0 100644
--- a/sys-libs/glibc/ChangeLog
+++ b/sys-libs/glibc/ChangeLog
@@ -1,6 +1,13 @@
# ChangeLog for sys-libs/glibc
# Copyright 2002 Gentoo Technologies, Inc.; Distributed under the GPL
-# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/ChangeLog,v 1.16 2002/10/09 20:11:28 azarah Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/ChangeLog,v 1.17 2002/10/12 01:44:41 seemant Exp $
+
+ 11 Oct 2002; Seemant Kulleen <seemant@gentoo.org> glibc-2.2.5-r7.ebuild
+ files/glibc-2.2.5-sparc-misc.diff files/glibc-2.2.5-sparc64-fixups.diff :
+
+ Added patches from debian's patch set to fix miscellaneous issues on sparc
+ and sparc64. One indication of the hassle with sparc64 was the mozilla
+ compile failure. That _should_ be sorted out now.
09 Oct 2002; Martin Schlemmer <azarah@gentoo.org> glibc-2.2.5-r7.ebuild,
glibc-2.2.5-divdi3.diff :
diff --git a/sys-libs/glibc/files/glibc-2.2.5-gcc311-sparc.patch b/sys-libs/glibc/files/glibc-2.2.5-gcc311-sparc.patch
deleted file mode 100644
index 9da89e75d89c..000000000000
--- a/sys-libs/glibc/files/glibc-2.2.5-gcc311-sparc.patch
+++ /dev/null
@@ -1,21 +0,0 @@
---- glibc-2.2.5/sysdeps/unix/sysv/sysv4/solaris2/sparc/sysdep.h.old Fri Jul 6 06:56:22 2001
-+++ glibc-2.2.5/sysdeps/unix/sysv/sysv4/solaris2/sparc/sysdep.h Wed Jul 24 14:36:31 2002
-@@ -51,6 +51,6 @@
- #define r1 %o1
- #define MOVE(x,y) mov x, y
-
--#define LOC(name) .##L##name
-+#define LOC(name) .L##name
-
- #endif /* __ASSEMBLER__ */
---- glibc-2.2.5/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h.old Fri Jul 6 06:56:21 2001
-+++ glibc-2.2.5/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h Wed Jul 24 14:35:08 2002
-@@ -48,7 +48,7 @@
- #define END(name) \
- .size name, . - name
-
--#define LOC(name) . ## L ## name
-+#define LOC(name) .L##name
-
- #ifdef PIC
- #define SYSCALL_ERROR_HANDLER \
diff --git a/sys-libs/glibc/files/glibc-2.2.5-sparc-misc.diff b/sys-libs/glibc/files/glibc-2.2.5-sparc-misc.diff
new file mode 100644
index 000000000000..dc5f08bf50b7
--- /dev/null
+++ b/sys-libs/glibc/files/glibc-2.2.5-sparc-misc.diff
@@ -0,0 +1,339 @@
+#! /bin/sh -e
+
+# DP: Misc. SPARC fixes.
+
+if [ $# -ne 2 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch) patch -d "$2" -f --no-backup-if-mismatch -p1 < $0;;
+ -unpatch) patch -d "$2" -f --no-backup-if-mismatch -R -p1 < $0;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+esac
+exit 0
+
+2002-05-16 David S. Miller <davem@redhat.com>
+
+ * sysdeps/sparc/sparc32/dl-machine.h (LOAD_PIC_REG): Define.
+ (elf_machine_dynamic): Use it to force PIC register to be loaded.
+ (elf_machine_load_address): Likewise.
+ * sysdeps/sparc/sparc64/dl-machine.h: Mirror sparc32 changes.
+
+ * sysdeps/sparc/sparc64/strncmp.S: When second argument pointer
+ is unaligned, do not forget to fully initialize %g1 magic value.
+
+ * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h (LOC): Fix CPP
+ pasting.
+
+ * sysdeps/unix/sysv/linux/sparc/sys/procfs.h: Fix 64-bit elf
+ register definitions and provide 32-bit variants of structures
+ during 64-bit builds.
+
+ * soft-fp/op-1.h (_FP_FRAC_CLEAR_OVERP_1): Define.
+ * soft-fp/op-2.h (_FP_FRAC_CLEAR_OVERP_2): Define.
+ * soft-fp/op-4.h (_FP_FRAC_CLEAR_OVERP_4): Define.
+ * soft-fp/op-common.h (_FP_PACK_CANONICAL): After rounding, if
+ _FP_FRAC_OVERP_X is set, use _FP_FRAC_CLEAR_OVERP_X to clear it.
+ (_FP_FROM_INT): Perform right shifts on unsigned integer type.
+ Do not clear implicit one bit here, it must be done post-rounding.
+ Only pad to the left using left shift if value uses less than the
+ available fractional bits.
+
+diff -urN glibc-2.2.5.orig/soft-fp/op-1.h glibc-2.2.5/soft-fp/op-1.h
+--- glibc-2.2.5.orig/soft-fp/op-1.h Mon Jun 17 21:48:12 2002
++++ glibc-2.2.5/soft-fp/op-1.h Mon Jun 17 22:27:52 2002
+@@ -55,6 +55,7 @@
+ #define _FP_FRAC_NEGP_1(X) ((_FP_WS_TYPE)X##_f < 0)
+ #define _FP_FRAC_ZEROP_1(X) (X##_f == 0)
+ #define _FP_FRAC_OVERP_1(fs,X) (X##_f & _FP_OVERFLOW_##fs)
++#define _FP_FRAC_CLEAR_OVERP_1(fs,X) (X##_f &= ~_FP_OVERFLOW_##fs)
+ #define _FP_FRAC_EQ_1(X, Y) (X##_f == Y##_f)
+ #define _FP_FRAC_GE_1(X, Y) (X##_f >= Y##_f)
+ #define _FP_FRAC_GT_1(X, Y) (X##_f > Y##_f)
+diff -urN glibc-2.2.5.orig/soft-fp/op-2.h glibc-2.2.5/soft-fp/op-2.h
+--- glibc-2.2.5.orig/soft-fp/op-2.h Mon Jun 17 21:48:12 2002
++++ glibc-2.2.5/soft-fp/op-2.h Mon Jun 17 22:27:52 2002
+@@ -112,6 +112,7 @@
+ #define _FP_FRAC_NEGP_2(X) ((_FP_WS_TYPE)X##_f1 < 0)
+ #define _FP_FRAC_ZEROP_2(X) ((X##_f1 | X##_f0) == 0)
+ #define _FP_FRAC_OVERP_2(fs,X) (_FP_FRAC_HIGH_##fs(X) & _FP_OVERFLOW_##fs)
++#define _FP_FRAC_CLEAR_OVERP_2(fs,X) (_FP_FRAC_HIGH_##fs(X) &= ~_FP_OVERFLOW_##fs)
+ #define _FP_FRAC_EQ_2(X, Y) (X##_f1 == Y##_f1 && X##_f0 == Y##_f0)
+ #define _FP_FRAC_GT_2(X, Y) \
+ (X##_f1 > Y##_f1 || X##_f1 == Y##_f1 && X##_f0 > Y##_f0)
+diff -urN glibc-2.2.5.orig/soft-fp/op-4.h glibc-2.2.5/soft-fp/op-4.h
+--- glibc-2.2.5.orig/soft-fp/op-4.h Mon Jun 17 21:48:12 2002
++++ glibc-2.2.5/soft-fp/op-4.h Mon Jun 17 22:27:52 2002
+@@ -129,6 +129,7 @@
+ #define _FP_FRAC_ZEROP_4(X) ((X##_f[0] | X##_f[1] | X##_f[2] | X##_f[3]) == 0)
+ #define _FP_FRAC_NEGP_4(X) ((_FP_WS_TYPE)X##_f[3] < 0)
+ #define _FP_FRAC_OVERP_4(fs,X) (_FP_FRAC_HIGH_##fs(X) & _FP_OVERFLOW_##fs)
++#define _FP_FRAC_CLEAR_OVERP_4(fs,X) (_FP_FRAC_HIGH_##fs(X) &= ~_FP_OVERFLOW_##fs)
+
+ #define _FP_FRAC_EQ_4(X,Y) \
+ (X##_f[0] == Y##_f[0] && X##_f[1] == Y##_f[1] \
+diff -urN glibc-2.2.5.orig/soft-fp/op-common.h glibc-2.2.5/soft-fp/op-common.h
+--- glibc-2.2.5.orig/soft-fp/op-common.h Mon Jun 17 21:48:12 2002
++++ glibc-2.2.5/soft-fp/op-common.h Mon Jun 17 22:27:52 2002
+@@ -89,11 +89,10 @@
+ _FP_ROUND(wc, X); \
+ if (_FP_FRAC_OVERP_##wc(fs, X)) \
+ { \
+- _FP_FRAC_SRL_##wc(X, (_FP_WORKBITS+1)); \
++ _FP_FRAC_CLEAR_OVERP_##wc(fs, X); \
+ X##_e++; \
+ } \
+- else \
+- _FP_FRAC_SRL_##wc(X, _FP_WORKBITS); \
++ _FP_FRAC_SRL_##wc(X, _FP_WORKBITS); \
+ if (X##_e >= _FP_EXPMAX_##fs) \
+ { \
+ /* overflow */ \
+@@ -682,25 +681,27 @@
+ do { \
+ if (r) \
+ { \
++ unsigned rtype ur_; \
+ X##_c = FP_CLS_NORMAL; \
+ \
+ if ((X##_s = (r < 0))) \
+ r = -r; \
+ \
++ ur_ = (unsigned rtype) r; \
+ if (rsize <= _FP_W_TYPE_SIZE) \
+- __FP_CLZ(X##_e, r); \
++ __FP_CLZ(X##_e, ur_); \
+ else \
+- __FP_CLZ_2(X##_e, (_FP_W_TYPE)(r >> _FP_W_TYPE_SIZE), \
+- (_FP_W_TYPE)r); \
++ __FP_CLZ_2(X##_e, (_FP_W_TYPE)(ur_ >> _FP_W_TYPE_SIZE), \
++ (_FP_W_TYPE)ur_); \
+ if (rsize < _FP_W_TYPE_SIZE) \
+ X##_e -= (_FP_W_TYPE_SIZE - rsize); \
+ X##_e = rsize - X##_e - 1; \
+ \
+ if (_FP_FRACBITS_##fs < rsize && _FP_WFRACBITS_##fs < X##_e) \
+- __FP_FRAC_SRS_1(r, (X##_e - _FP_WFRACBITS_##fs), rsize); \
+- r &= ~((rtype)1 << X##_e); \
+- _FP_FRAC_DISASSEMBLE_##wc(X, ((unsigned rtype)r), rsize); \
+- _FP_FRAC_SLL_##wc(X, (_FP_WFRACBITS_##fs - X##_e - 1)); \
++ __FP_FRAC_SRS_1(ur_, (X##_e - _FP_WFRACBITS_##fs + 1), rsize);\
++ _FP_FRAC_DISASSEMBLE_##wc(X, ur_, rsize); \
++ if ((_FP_WFRACBITS_##fs - X##_e - 1) > 0) \
++ _FP_FRAC_SLL_##wc(X, (_FP_WFRACBITS_##fs - X##_e - 1)); \
+ } \
+ else \
+ { \
+diff -urN glibc-2.2.5.orig/sysdeps/sparc/sparc32/dl-machine.h glibc-2.2.5/sysdeps/sparc/sparc32/dl-machine.h
+--- glibc-2.2.5.orig/sysdeps/sparc/sparc32/dl-machine.h Mon Jun 17 21:48:12 2002
++++ glibc-2.2.5/sysdeps/sparc/sparc32/dl-machine.h Mon Jun 17 22:27:52 2002
+@@ -42,7 +42,6 @@
+ #define LD_SO_PRELOAD ((_dl_hwcap & HWCAP_SPARC_V9) ? "/etc/ld.so.preload32" \
+ : "/etc/ld.so.preload")
+
+-
+ /* Return nonzero iff ELF header is compatible with the running host. */
+ static inline int
+ elf_machine_matches_host (const Elf32_Ehdr *ehdr)
+@@ -64,6 +63,17 @@
+ return 0;
+ }
+
++/* We have to do this because elf_machine_{dynamic,load_address} can be
++ invoked from functions that have no GOT references, and thus the compiler
++ has no obligation to load the PIC register. */
++#define LOAD_PIC_REG(PIC_REG) \
++do { register Elf32_Addr pc __asm("o7"); \
++ __asm("sethi %%hi(_GLOBAL_OFFSET_TABLE_-4), %1\n\t" \
++ "call 1f\n\t" \
++ "add %1, %%lo(_GLOBAL_OFFSET_TABLE_+4), %1\n" \
++ "1:\tadd %1, %0, %1" \
++ : "=r" (pc), "=r" (PIC_REG)); \
++} while (0)
+
+ /* Return the link-time address of _DYNAMIC. Conveniently, this is the
+ first element of the GOT. This must be inlined in a function which
+@@ -72,6 +82,9 @@
+ elf_machine_dynamic (void)
+ {
+ register Elf32_Addr *got asm ("%l7");
++
++ LOAD_PIC_REG (got);
++
+ return *got;
+ }
+
+@@ -80,6 +93,8 @@
+ elf_machine_load_address (void)
+ {
+ register Elf32_Addr pc __asm("%o7"), pic __asm("%l7"), got;
++
++ LOAD_PIC_REG (pic);
+
+ /* Utilize the fact that a local .got entry will be partially
+ initialized at startup awaiting its RELATIVE fixup. */
+diff -urN glibc-2.2.5.orig/sysdeps/sparc/sparc64/dl-machine.h glibc-2.2.5/sysdeps/sparc/sparc64/dl-machine.h
+--- glibc-2.2.5.orig/sysdeps/sparc/sparc64/dl-machine.h Mon Jun 17 21:48:12 2002
++++ glibc-2.2.5/sysdeps/sparc/sparc64/dl-machine.h Mon Jun 17 22:27:52 2002
+@@ -34,6 +34,18 @@
+ return ehdr->e_machine == EM_SPARCV9;
+ }
+
++/* We have to do this because elf_machine_{dynamic,load_address} can be
++ invoked from functions that have no GOT references, and thus the compiler
++ has no obligation to load the PIC register. */
++#define LOAD_PIC_REG(PIC_REG) \
++do { Elf64_Addr tmp; \
++ __asm("sethi %%hi(_GLOBAL_OFFSET_TABLE_-4), %1\n\t" \
++ "rd %%pc, %0\n\t" \
++ "add %1, %%lo(_GLOBAL_OFFSET_TABLE_+4), %1\n\t" \
++ "add %0, %1, %0" \
++ : "=r" (PIC_REG), "=r" (tmp)); \
++} while (0)
++
+ /* Return the link-time address of _DYNAMIC. Conveniently, this is the
+ first element of the GOT. This must be inlined in a function which
+ uses global data. */
+@@ -42,6 +54,8 @@
+ {
+ register Elf64_Addr *elf_pic_register __asm__("%l7");
+
++ LOAD_PIC_REG (elf_pic_register);
++
+ return *elf_pic_register;
+ }
+
+@@ -50,6 +64,8 @@
+ elf_machine_load_address (void)
+ {
+ register Elf64_Addr *elf_pic_register __asm__("%l7");
++
++ LOAD_PIC_REG (elf_pic_register);
+
+ /* We used to utilize the fact that a local .got entry will
+ be partially initialized at startup awaiting its RELATIVE
+diff -urN glibc-2.2.5.orig/sysdeps/sparc/sparc64/strncmp.S glibc-2.2.5/sysdeps/sparc/sparc64/strncmp.S
+--- glibc-2.2.5.orig/sysdeps/sparc/sparc64/strncmp.S Mon Jun 17 21:48:12 2002
++++ glibc-2.2.5/sysdeps/sparc/sparc64/strncmp.S Mon Jun 17 22:27:52 2002
+@@ -290,14 +290,15 @@
+ ldxa [%o0] ASI_PNF, %g4 /* Load */
+ 11: sllx %g3, 3, %g5 /* IEU0 Group */
+ mov 64, %g7 /* IEU1 */
+- sub %o1, %g3, %o1 /* IEU0 Group */
++ or %g1, %g2, %g1 /* IEU0 Group */
++ sub %o1, %g3, %o1 /* IEU1 */
+
+- sub %g7, %g5, %g7 /* IEU1 */
++ sub %g7, %g5, %g7 /* IEU0 Group */
+ ldxa [%o1] ASI_PNF, %o4 /* Load */
+- sllx %g1, 7, %g2 /* IEU0 Group */
+- add %o1, 8, %o1 /* IEU1 */
++ sllx %g1, 7, %g2 /* IEU1 */
++ add %o1, 8, %o1 /* IEU0 Group */
+ /* %g1 = 0101010101010101
+- %g2 = 8080808080800880
++ %g2 = 8080808080808080
+ %g3 = %o1 alignment
+ %g5 = number of bits to shift left
+ %g7 = number of bits to shift right */
+diff -urN glibc-2.2.5.orig/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h glibc-2.2.5/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h
+--- glibc-2.2.5.orig/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h Mon Jun 17 21:48:12 2002
++++ glibc-2.2.5/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h Mon Jun 17 22:27:52 2002
+@@ -48,7 +48,7 @@
+ #define END(name) \
+ .size name, . - name
+
+-#define LOC(name) . ## L ## name
++#define LOC(name) .##L##name
+
+ #ifdef PIC
+ #define SYSCALL_ERROR_HANDLER \
+diff -urN glibc-2.2.5.orig/sysdeps/unix/sysv/linux/sparc/sys/procfs.h glibc-2.2.5/sysdeps/unix/sysv/linux/sparc/sys/procfs.h
+--- glibc-2.2.5.orig/sysdeps/unix/sysv/linux/sparc/sys/procfs.h Mon Jun 17 21:48:12 2002
++++ glibc-2.2.5/sysdeps/unix/sysv/linux/sparc/sys/procfs.h Mon Jun 17 22:27:52 2002
+@@ -35,7 +35,7 @@
+
+ #if __WORDSIZE == 64
+
+-#define ELF_NGREG 20
++#define ELF_NGREG 36
+
+ typedef struct
+ {
+@@ -138,6 +138,73 @@
+
+ typedef struct elf_prstatus prstatus_t;
+ typedef struct elf_prpsinfo prpsinfo_t;
++
++#if __WORDSIZE == 64
++
++/* Provide 32-bit variants so that BFD can read 32-bit
++ core files. */
++#define ELF_NGREG32 38
++typedef struct
++ {
++ union
++ {
++ unsigned int pr_regs[32];
++ double pr_dregs[16];
++ } pr_fr;
++ unsigned int __unused;
++ unsigned int pr_fsr;
++ unsigned char pr_qcnt;
++ unsigned char pr_q_entrysize;
++ unsigned char pr_en;
++ unsigned int pr_q[64];
++ } elf_fpregset_t32;
++
++typedef unsigned int elf_greg_t32;
++typedef elf_greg_t32 elf_gregset_t32[ELF_NGREG32];
++
++struct elf_prstatus32
++ {
++ struct elf_siginfo pr_info; /* Info associated with signal. */
++ short int pr_cursig; /* Current signal. */
++ unsigned int pr_sigpend; /* Set of pending signals. */
++ unsigned int pr_sighold; /* Set of held signals. */
++ __pid_t pr_pid;
++ __pid_t pr_ppid;
++ __pid_t pr_pgrp;
++ __pid_t pr_sid;
++ struct
++ {
++ int tv_sec, tv_usec;
++ } pr_utime, /* User time. */
++ pr_stime, /* System time. */
++ pr_cutime, /* Cumulative user time. */
++ pr_cstime; /* Cumulative system time. */
++ elf_gregset_t32 pr_reg; /* GP registers. */
++ int pr_fpvalid; /* True if math copro being used. */
++ };
++
++struct elf_prpsinfo32
++ {
++ char pr_state; /* Numeric process state. */
++ char pr_sname; /* Char for pr_state. */
++ char pr_zomb; /* Zombie. */
++ char pr_nice; /* Nice val. */
++ unsigned int pr_flag; /* Flags. */
++ unsigned short int pr_uid;
++ unsigned short int pr_gid;
++ int pr_pid, pr_ppid, pr_pgrp, pr_sid;
++ /* Lots missing */
++ char pr_fname[16]; /* Filename of executable. */
++ char pr_psargs[ELF_PRARGSZ]; /* Initial part of arg list. */
++ };
++
++typedef elf_gregset_t32 prgregset32_t;
++typedef elf_fpregset_t32 prfpregset32_t;
++
++typedef struct elf_prstatus32 prstatus32_t;
++typedef struct elf_prpsinfo32 prpsinfo32_t;
++
++#endif /* sparc64 */
+
+ __END_DECLS
+
diff --git a/sys-libs/glibc/files/glibc-2.2.5-sparc64-fixups.diff b/sys-libs/glibc/files/glibc-2.2.5-sparc64-fixups.diff
new file mode 100644
index 000000000000..181f13c52d49
--- /dev/null
+++ b/sys-libs/glibc/files/glibc-2.2.5-sparc64-fixups.diff
@@ -0,0 +1,46 @@
+#! /bin/sh -e
+
+# DP: Fix ldconfig so that lib64 searches are implicit.
+
+if [ $# -ne 2 ]; then
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+fi
+case "$1" in
+ -patch) patch -d "$2" -f --no-backup-if-mismatch -p1 < $0;;
+ -unpatch) patch -d "$2" -f --no-backup-if-mismatch -R -p1 < $0;;
+ *)
+ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+ exit 1
+esac
+exit 0
+
+--- glibc-2.2.3/elf/ldconfig.c~ Tue Mar 20 11:44:35 2001
++++ glibc-2.2.3/elf/ldconfig.c Tue Apr 24 18:14:05 2001
+@@ -287,6 +287,26 @@
+ dir_entries = entry;
+ else if (ptr == NULL)
+ prev->next = entry;
++#ifdef __sparc__
++#define MSUBDIR "64"
++ if (ptr == NULL) {
++ int si = strlen(entry->path) - strlen(MSUBDIR);
++ if (strcmp (entry->path + (si <= 0 ? 0 : si), MSUBDIR) != 0) {
++ /* Handle subdirectory later. */
++ struct dir_entry *new_entry;
++
++ new_entry = xmalloc (sizeof (struct dir_entry));
++ new_entry->path = xmalloc(strlen(entry->path)+strlen(MSUBDIR)+1);
++ new_entry->flag = entry->flag;
++ new_entry->next = NULL;
++ sprintf(new_entry->path, "%s%s", entry->path, MSUBDIR);
++ if (opt_verbose)
++ printf("Adding implicit multilib directory:\n\t%s\n", new_entry->path);
++ add_single_dir (new_entry, 0);
++ }
++ }
++#undef MSUBDIR
++#endif
+ }
+
+ /* Add one directory to the list of directories to process. */
diff --git a/sys-libs/glibc/glibc-2.2.5-r7.ebuild b/sys-libs/glibc/glibc-2.2.5-r7.ebuild
index 791d5c6c61b8..e950a8013e29 100644
--- a/sys-libs/glibc/glibc-2.2.5-r7.ebuild
+++ b/sys-libs/glibc/glibc-2.2.5-r7.ebuild
@@ -1,6 +1,6 @@
# Copyright 1999-2002 Gentoo Technologies, Inc.
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/glibc-2.2.5-r7.ebuild,v 1.9 2002/10/09 20:11:28 azarah Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/glibc-2.2.5-r7.ebuild,v 1.10 2002/10/12 01:44:41 seemant Exp $
IUSE="nls pic build"
inherit flag-o-matic
@@ -111,6 +111,18 @@ src_unpack() {
patch -p1 < ${FILESDIR}/glibc-2.2.5-alpha-gcc3-fix.diff || die
patch -p1 < ${FILESDIR}/glibc-2.2.5-alpha-pcdyn-fix.diff || die
fi
+
+ # A patch for miscellaenous sparc fixes
+ if [ "${ARCH}" = "sparc" -o "${ARCH} = "sparc64" ] ; then
+ cd ${S}
+ patch -p1 < ${FILESDIR}/${P}-sparc-misc.diff || die
+ fi
+
+ # A patch for the notorious sparc64 issues
+ if [ "${ARCH} = "sparc64" ] ; then
+ cd ${S}
+ patch -p1 < ${FILESDIR}/${P}-sparc64-fixups.diff || die
+ fi
}
src_compile() {