Ben, We will need the following patch added to glibc for building on ppc with gcc >= 3.1. A similiar patch will be required for all the other arches as well. This patch already exists upstream in glibc-2-2-branch (without the INTUSE macro in the sysdeps/powerpc/libgcc-compat.c file so you can grab that copy from...
http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/powerpc/libgcc-compat.c?rev=1.1.2.3&content-type=text/x-cvsweb-markup&cvsroot=glibc&only_with_tag=glibc-2-2-branch ...and use its sysdeps/powerpc/libgcc-compat.c instead if you like). However here is a complete patch that will work. Jack ps Franz Sirl created this patch by searching all the binaries for libgcc symbols and them adding them to this libgcc-compat.c for resolving but not linking into new binaries. This is because gcc > 3.1 fixes a bug with gcc incorrectly linking in libgcc symbols into binaries. Without this sort of patch when glibc gets rebuilt against gcc > 3.1, any pre-existing binaries expecting to see these libgcc symbols resolved via glibc will be broken. ------------------------------------------------------------------------------- #! /bin/sh -e # All lines beginning with `# DP:' are a description of the patch. # DP: Fix "/usr/include/bits/string2.h:419: # DP: warning: pointer of type `void *' used in arithmetic" 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 -p0 < $0;; -unpatch) patch -d "$2" -f --no-backup-if-mismatch -R -p0 < $0;; *) echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" exit 1 esac exit 0 Index: sysdeps/powerpc/Makefile =================================================================== RCS file: /cvs/glibc/libc/sysdeps/powerpc/Makefile,v retrieving revision 1.15 diff -u -p -r1.15 Makefile --- sysdeps/powerpc/Makefile 6 Dec 2001 23:41:32 -0000 1.15 +++ sysdeps/powerpc/Makefile 15 May 2002 14:23:39 -0000 @@ -35,6 +35,11 @@ CFLAGS-initfini.s = -g0 -fpic -O1 CFLAGS-init.o = -G0 CFLAGS-gmon-start.o = -G0 endif +ifeq (yes,$(build-shared)) +# Compatibility +sysdep_routines += divdi3 libgcc-compat +shared-only-routines += divdi3 libgcc-compat +endif endif ifeq ($(subdir),string) Index: sysdeps/powerpc/Versions =================================================================== RCS file: /cvs/glibc/libc/sysdeps/powerpc/Versions,v retrieving revision 1.2 diff -u -p -r1.2 Versions --- sysdeps/powerpc/Versions Wed Jun 19 21:29:49 2002 +++ sysdeps/powerpc/Versions.new Wed Jun 19 21:32:53 2002 @@ -3,6 +3,17 @@ _dl_cpuclock_offset; } } +libc { + GLIBC_2.0 { + # Functions from libgcc. + __divdi3; __moddi3; __udivdi3; __umoddi3; + __cmpdi2; __ucmpdi2; + __ashldi3; __ashrdi3; __lshrdi3; + __fixdfdi; __fixunsdfdi; + __fixsfdi; __fixunssfdi; + __floatdidf; __floatdisf; + } +} libm { GLIBC_2.1 { # symbols used in macros from sysdeps/powerpc/bits/fenv.h --- /dev/null Thu Oct 4 06:30:44 2001 +++ sysdeps/powerpc/libgcc-compat.c Sun May 19 02:44:02 2002 @@ -0,0 +1,116 @@ +/* pre-.hidden libgcc compatibility + Copyright (C) 2002 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. */ + + +#include <stdint.h> +#include <shlib-compat.h> + +#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_2_6) + +# define INTUSE(name) name##_internal + +extern int64_t __ashldi3 (int64_t, int32_t); +int64_t INTUSE (__ashldi3) (int64_t u, int32_t b) +{ + return __ashldi3 (u, b); +} +symbol_version (INTUSE (__ashldi3), __ashldi3, GLIBC_2.0); + + +extern int64_t __ashrdi3 (int64_t, int32_t); +int64_t INTUSE (__ashrdi3) (int64_t u, int32_t b) +{ + return __ashrdi3 (u, b); +} +symbol_version (INTUSE (__ashrdi3), __ashrdi3, GLIBC_2.0); + + +extern int64_t __lshrdi3 (int64_t, int32_t); +int64_t INTUSE (__lshrdi3) (int64_t u, int32_t b) +{ + return __lshrdi3 (u, b); +} +symbol_version (INTUSE (__lshrdi3), __lshrdi3, GLIBC_2.0); + + +extern int32_t __cmpdi2 (int64_t, int64_t); +int32_t INTUSE (__cmpdi2) (int64_t u, int64_t v) +{ + return __cmpdi2 (u, v); +} +symbol_version (INTUSE (__cmpdi2), __cmpdi2, GLIBC_2.0); + + +extern int32_t __ucmpdi2 (int64_t, int64_t); +int32_t INTUSE (__ucmpdi2) (int64_t u, int64_t v) +{ + return __ucmpdi2 (u, v); +} +symbol_version (INTUSE (__ucmpdi2), __ucmpdi2, GLIBC_2.0); + + +extern int64_t __fixdfdi (double); +int64_t INTUSE (__fixdfdi) (double d) +{ + return __fixdfdi (d); +} +symbol_version (INTUSE (__fixdfdi), __fixdfdi, GLIBC_2.0); + + +extern int64_t __fixunsdfdi (double); +int64_t INTUSE (__fixunsdfdi) (double d) +{ + return __fixunsdfdi (d); +} +symbol_version (INTUSE (__fixunsdfdi), __fixunsdfdi, GLIBC_2.0); + + +extern int64_t __fixsfdi (float); +int64_t INTUSE (__fixsfdi) (float d) +{ + return __fixsfdi (d); +} +symbol_version (INTUSE (__fixsfdi), __fixsfdi, GLIBC_2.0); + + +extern int64_t __fixunssfdi (float); +int64_t INTUSE (__fixunssfdi) (float d) +{ + return __fixunssfdi (d); +} +symbol_version (INTUSE (__fixunssfdi), __fixunssfdi, GLIBC_2.0); + + +extern double __floatdidf (int64_t); +double INTUSE (__floatdidf) (int64_t u) +{ + return __floatdidf (u); +} +symbol_version (INTUSE (__floatdidf), __floatdidf, GLIBC_2.0); + + +extern float __floatdisf (int64_t); +float INTUSE (__floatdisf) (int64_t u) +{ + return __floatdisf (u); +} +symbol_version (INTUSE (__floatdisf), __floatdisf, GLIBC_2.0); + +#endif + -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

