[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: building a multiarch gcc



On 04-Dec-12 23:09, Rafael Esp?ndola wrote:
> very good :) I see the gcc packages but not the patch. Maybe you have
> forgot to upload it?

I will attach the gcc patches to this mail. Usually the patches get
uploaded by my autobuilding script automatically, but I built the
gcc-3.4 and gcc-4.0 packages 'by hand' using dpkg-buildpackage and did
not upload the patches manually. As soon as my autobuilder has compiled
the gcc packages, the patches will appear on alioth.

Please note that I disabled 'nof' in my gcc patches. The patches also 
contain a small part which I use for the amd64 archive I maintain.
Those parts can of course be ignored for ppc64.

> > Do you have any idea how to fix the java FTBFS?
> I did a ./debian/rules patch and right now the source is building in a
> ppc64 gentoo with the same arguments used in the debian package.
> Gentoo has a newer bintuils and that may make a difference.

I will patch 'binutils' up to a newer version and then try it again.

Regards
Andreas Jochens
diff -urN ../tmp-orig/gcc-3.4-3.4.3/debian/control ./debian/control
--- ../tmp-orig/gcc-3.4-3.4.3/debian/control	2004-12-13 07:41:25.632177800 +0000
+++ ./debian/control	2004-12-11 09:09:18.000000000 +0000
@@ -4,7 +4,7 @@
 Maintainer: Debian GCC maintainers <debian-gcc@lists.debian.org>
 Uploaders: Matthias Klose <doko@debian.org>, Gerhard Tonn <gt@debian.org>
 Standards-Version: 3.6.1
-Build-Depends: libc6.1-dev (>= 2.3.2.ds1-16) [alpha ia64] | libc0.3-dev (>= 2.3.2.ds1-16) | libc0.1-dev (>= 2.3.2.ds1-16) | libc12-dev (>= 2.3.2.ds1-16) | libc6-dev (>= 2.3.2.ds1-16), libc6-dev-sparc64 [sparc], libc6-dev-s390x [s390], amd64-libs-dev [i386], ia32-libs-dev [amd64], libunwind7-dev [ia64], m4, autoconf2.13, autoconf, automake1.4, automake1.7, libtool, autotools-dev, gawk, dejagnu (>= 1.4.3) [!hurd-i386 !kfreebsd-gnu !knetbsd-gnu], expect (>= 5.38.0) [!hurd-i386 !kfreebsd-gnu !knetbsd-gnu], bzip2, binutils (>= 2.15-5) | binutils-multiarch (>= 2.15-5), binutils-hppa64 [hppa], debhelper (>= 4.1), gperf (>= 2.7-3), bison (>= 1:1.875a-1) | bison (<< 1:1.50), flex, gettext, texinfo (>= 4.3), zlib1g-dev, libgc-dev [!avr !kfreebsd-gnu !knetbsd-gnu], xlibs-dev, gnat-3.3 [!arm !m68k !m32r !hurd-i386 !kfreebsd-gnu !knetbsd-gnu !netbsd-elf-gnu] | gnat-3.4 [!arm !m68k !m32r !hurd-i386 !kfreebsd-gnu !knetbsd-gnu !netbsd-elf-gnu] | gnat [i386 powerpc sparc], libncurses5-dev [!netbsd-elf-gnu], libgmp3-dev, tetex-bin [!netbsd-elf-gnu], locales [!kfreebsd-gnu !knetbsd-gnu !netbsd-elf-gnu !hurd-i386], procps [!hurd-i386 !kfreebsd-gnu !knetbsd-gnu], help2man [!netbsd-elf-gnu], sharutils, libgtk2.0-dev (>= 2.4.4-2) [!mips !mipsel !m32r !hurd-i386 !kfreebsd-gnu !knetbsd-gnu !netbsd-elf-gnu], libart-2.0-dev [!mips !mipsel !m32r !hurd-i386 !kfreebsd-gnu !knetbsd-gnu !netbsd-elf-gnu], g++-3.3 [!amd64], g77-3.3 [!amd64], gobjc-3.3 [!amd64], realpath (>= 1.9.12)
+Build-Depends: libc6.1-dev (>= 2.3.2.ds1-16) [alpha ia64] | libc0.3-dev (>= 2.3.2.ds1-16) | libc0.1-dev (>= 2.3.2.ds1-16) | libc12-dev (>= 2.3.2.ds1-16) | libc6-dev (>= 2.3.2.ds1-16), libc6-dev-i386 [amd64], libc6-dev-powerpc [ppc64], libc6-dev-sparc64 [sparc], libc6-dev-s390x [s390], amd64-libs-dev [i386], libunwind7-dev [ia64], m4, autoconf2.13, autoconf, automake1.4, automake1.7, libtool, autotools-dev, gawk, dejagnu (>= 1.4.3) [!hurd-i386 !kfreebsd-gnu !knetbsd-gnu], expect (>= 5.38.0) [!hurd-i386 !kfreebsd-gnu !knetbsd-gnu], bzip2, binutils (>= 2.15-5) | binutils-multiarch (>= 2.15-5), binutils-hppa64 [hppa], debhelper (>= 4.1), gperf (>= 2.7-3), bison (>= 1:1.875a-1) | bison (<< 1:1.50), flex, gettext, texinfo (>= 4.3), zlib1g-dev, libgc-dev [!avr !kfreebsd-gnu !knetbsd-gnu], xlibs-dev, gnat-3.3 [!arm !m68k !m32r !powerpc64 !hurd-i386 !kfreebsd-gnu !knetbsd-gnu !netbsd-elf-gnu] | gnat-3.4 [!arm !m68k !m32r !powerpc64 !hurd-i386 !kfreebsd-gnu !knetbsd-gnu !netbsd-elf-gnu] | gnat [i386 powerpc sparc], libncurses5-dev [!netbsd-elf-gnu], libgmp3-dev, tetex-bin [!netbsd-elf-gnu], locales [!kfreebsd-gnu !knetbsd-gnu !netbsd-elf-gnu !hurd-i386], procps [!hurd-i386 !kfreebsd-gnu !knetbsd-gnu], help2man [!netbsd-elf-gnu], sharutils, libgtk2.0-dev (>= 2.4.4-2) [!mips !mipsel !m32r !powerpc64 !hurd-i386 !kfreebsd-gnu !knetbsd-gnu !netbsd-elf-gnu], libart-2.0-dev [!mips !mipsel !m32r !powerpc64 !hurd-i386 !kfreebsd-gnu !knetbsd-gnu !netbsd-elf-gnu], g++-3.3 [!amd64 !ppc64], g77-3.3 [!amd64 !ppc64], gobjc-3.3 [!amd64 !ppc64], realpath (>= 1.9.12)
 Build-Depends-Indep: doxygen (>= 1.3.7)
 
 Package: gcc-3.4-base
diff -urN ../tmp-orig/gcc-3.4-3.4.3/debian/control.m4 ./debian/control.m4
--- ../tmp-orig/gcc-3.4-3.4.3/debian/control.m4	2004-12-13 07:41:25.657174000 +0000
+++ ./debian/control.m4	2004-12-09 19:45:51.000000000 +0000
@@ -41,7 +41,7 @@
 ifdef(`TARGET',`dnl cross
 Build-Depends: LIBC_BUILD_DEP, m4, autoconf2.13, autoconf, automake1.4, automake1.7, libtool, autotools-dev, gawk, bzip2, dpkg-cross (>= 1.18.1), BINUTILS_BUILD_DEP, debhelper (>= 4.1), , bison (>= 1:1.875a-1) | bison (<< 1:1.50), flex`', realpath (>= 1.9.12)BD64
 ',`dnl native
-Build-Depends: LIBC_BUILD_DEP, libc6-dev-sparc64 [sparc], libc6-dev-s390x [s390], amd64-libs-dev [i386], ia32-libs-dev [amd64], libunwind7-dev [ia64], m4, autoconf2.13, autoconf, automake1.4, automake1.7, libtool, autotools-dev, gawk, dejagnu (>= 1.4.3) [check_no_archs], expect (>= 5.38.0) [check_no_archs], bzip2, BINUTILS_BUILD_DEP, binutils-hppa64 [hppa], debhelper (>= 4.1), gperf (>= 2.7-3), bison (>= 1:1.875a-1) | bison (<< 1:1.50), flex, gettext, texinfo (>= 4.3), zlib1g-dev, libgc-dev [libgc_no_archs], xlibs-dev, gnat-3.3 [ada_no_archs] | gnat-3.4 [ada_no_archs] | gnat [i386 powerpc sparc], libncurses5-dev [pascal_no_archs], libgmp3-dev, tetex-bin [pascal_no_archs], locales [locale_no_archs !hurd-i386], procps [check_no_archs], help2man [pascal_no_archs], sharutils, libgtk2.0-dev (>= 2.4.4-2) [java_no_archs], libart-2.0-dev [java_no_archs], g++-3.3 [!amd64], g77-3.3 [!amd64], gobjc-3.3 [!amd64], realpath (>= 1.9.12)
+Build-Depends: LIBC_BUILD_DEP, libc6-dev-i386 [amd64], libc6-dev-powerpc [ppc64], libc6-dev-sparc64 [sparc], libc6-dev-s390x [s390], amd64-libs-dev [i386], libunwind7-dev [ia64], m4, autoconf2.13, autoconf, automake1.4, automake1.7, libtool, autotools-dev, gawk, dejagnu (>= 1.4.3) [check_no_archs], expect (>= 5.38.0) [check_no_archs], bzip2, BINUTILS_BUILD_DEP, binutils-hppa64 [hppa], debhelper (>= 4.1), gperf (>= 2.7-3), bison (>= 1:1.875a-1) | bison (<< 1:1.50), flex, gettext, texinfo (>= 4.3), zlib1g-dev, libgc-dev [libgc_no_archs], xlibs-dev, gnat-3.3 [ada_no_archs] | gnat-3.4 [ada_no_archs] | gnat [i386 powerpc sparc], libncurses5-dev [pascal_no_archs], libgmp3-dev, tetex-bin [pascal_no_archs], locales [locale_no_archs !hurd-i386], procps [check_no_archs], help2man [pascal_no_archs], sharutils, libgtk2.0-dev (>= 2.4.4-2) [java_no_archs], libart-2.0-dev [java_no_archs], g++-3.3 [!amd64 !ppc64], g77-3.3 [!amd64 !ppc64], gobjc-3.3 [!amd64 !ppc64], realpath (>= 1.9.12)
 Build-Depends-Indep: doxygen (>= 1.3.7)
 ')dnl
 
@@ -119,8 +119,8 @@
 Architecture: any
 Section: libs
 Priority: optional
-Depends: ia32-libs (>= 0.7)
-Description: GCC support library (ia32)
+Depends: ${shlibs:Depends}
+Description: GCC support library (32 bit version)
  Shared version of the support library, a library of internal subroutines
  that GCC uses to overcome shortcomings of particular machines, or
  special needs for some languages.
@@ -524,7 +524,7 @@
 Section: ifdef(`TARGET',`devel',`libs')
 Priority: ifdef(`TARGET',`extra',PRI(optional))
 Depends: gcc`'PV-base (>= CV), lib32gcc`'GCC_SO
-Description: The GNU Standard C++ Library v3 (ia32)
+Description: The GNU Standard C++ Library v3 (32 bit version)
  This package contains an additional runtime library for C++ programs
  built with the GNU compiler.
 ifdef(`TARGET', `dnl
@@ -538,7 +538,7 @@
 Section: libs
 Priority: optional
 Depends: gcc`'PV-base (>= CV), lib32gcc`'GCC_SO
-Description: The GNU Standard C++ Library v3 (ia32)
+Description: The GNU Standard C++ Library v3 (32 bit version)
  This package contains an additional runtime library for C++ programs
  built with the GNU compiler.
 ifdef(`TARGET', `dnl
diff -urN ../tmp-orig/gcc-3.4-3.4.3/debian/patches/amd64-biarch.dpatch ./debian/patches/amd64-biarch.dpatch
--- ../tmp-orig/gcc-3.4-3.4.3/debian/patches/amd64-biarch.dpatch	2004-12-13 07:41:25.442072528 +0000
+++ ./debian/patches/amd64-biarch.dpatch	2004-12-09 18:17:51.000000000 +0000
@@ -86,3 +86,14 @@
  esac
  
  # Remove extraneous blanks from multidirs.
+--- linux64.h	2003-11-29 03:08:10.000000000 +0000
++++ gcc/config/i386/linux64.h	2004-10-07 17:57:27.295477928 +0000
+@@ -61,7 +61,7 @@
+     %{!static: \
+       %{rdynamic:-export-dynamic} \
+       %{m32:%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
+-      %{!m32:%{!dynamic-linker:-dynamic-linker /lib64/ld-linux-x86-64.so.2}}} \
++      %{!m32:%{!dynamic-linker:-dynamic-linker /lib/ld-linux-x86-64.so.2}}} \
+     %{static:-static}}"
+ 
+ #define MULTILIB_DEFAULTS { "m64" }
diff -urN ../tmp-orig/gcc-3.4-3.4.3/debian/patches/i386-biarch.dpatch ./debian/patches/i386-biarch.dpatch
--- ../tmp-orig/gcc-3.4-3.4.3/debian/patches/i386-biarch.dpatch	2004-12-13 07:41:25.438073136 +0000
+++ ./debian/patches/i386-biarch.dpatch	2004-12-09 18:17:51.000000000 +0000
@@ -100,7 +100,7 @@
    %{!shared: \
 @@ -63,8 +67,22 @@ Boston, MA 02111-1307, USA.  */
        %{m32:%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
-       %{!m32:%{!dynamic-linker:-dynamic-linker /lib64/ld-linux-x86-64.so.2}}} \
+       %{!m32:%{!dynamic-linker:-dynamic-linker /lib/ld-linux-x86-64.so.2}}} \
      %{static:-static}}"
 +#else
 +#define LINK_SPEC "%{m64:-m elf_x86_64} %{!m64:-m elf_i386} \
@@ -109,7 +109,7 @@
 +    %{!static: \
 +      %{rdynamic:-export-dynamic} \
 +      %{!m64:%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
-+      %{m64:%{!dynamic-linker:-dynamic-linker /lib64/ld-linux-x86-64.so.2}}} \
++      %{m64:%{!dynamic-linker:-dynamic-linker /lib/ld-linux-x86-64.so.2}}} \
 +    %{static:-static}}"
 +#endif
  
diff -urN ../tmp-orig/gcc-3.4-3.4.3/debian/patches/ppc64-biarch.dpatch ./debian/patches/ppc64-biarch.dpatch
--- ../tmp-orig/gcc-3.4-3.4.3/debian/patches/ppc64-biarch.dpatch	1970-01-01 00:00:00.000000000 +0000
+++ ./debian/patches/ppc64-biarch.dpatch	2004-12-10 19:04:24.000000000 +0000
@@ -0,0 +1,219 @@
+#! /bin/sh -e
+ 
+# DP: biarch patches for powerpc/ppc64
+ 
+dir=
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+    pdir="-d $3"
+    dir="$3/"
+elif [ $# -ne 1 ]; then
+    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+    exit 1
+fi
+case "$1" in
+    -patch)
+        patch $pdir -f --no-backup-if-mismatch -p1 < $0
+        #cd ${dir}gcc && autoconf
+        ;;
+    -unpatch)
+        patch $pdir -f --no-backup-if-mismatch -R -p1 < $0
+        #rm ${dir}gcc/configure
+        ;;
+    *)
+        echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+        exit 1
+esac
+exit 0
+
+
+diff -urN tmp/gcc/config/rs6000/t-linux64 src/gcc/config/rs6000/t-linux64
+--- tmp/gcc/config/rs6000/t-linux64	2004-03-17 15:16:48.000000000 +0000
++++ src/gcc/config/rs6000/t-linux64	2004-11-22 07:56:52.681533760 +0000
+@@ -11,9 +11,9 @@
+-MULTILIB_OPTIONS        = m64/m32 msoft-float
+-MULTILIB_DIRNAMES       = 64 32 nof
++MULTILIB_OPTIONS        = m64/m32
++MULTILIB_DIRNAMES       = 64 32
+ MULTILIB_EXTRA_OPTS     = fPIC mstrict-align
+-MULTILIB_EXCEPTIONS     = m64/msoft-float
+-MULTILIB_EXCLUSIONS     = m64/!m32/msoft-float
+-MULTILIB_OSDIRNAMES	= ../lib64 ../lib nof
+-MULTILIB_MATCHES        = $(MULTILIB_MATCHES_FLOAT)
++#MULTILIB_EXCEPTIONS     = m64/msoft-float
++#MULTILIB_EXCLUSIONS     = m64/!m32/msoft-float
++MULTILIB_OSDIRNAMES	= ../lib ../lib32
++#MULTILIB_MATCHES        = $(MULTILIB_MATCHES_FLOAT)
+ 
+ # We want fine grained libraries, so use the new code to build the
+diff -urN tmp/gcc/config/rs6000/linux64.h src/gcc/config/rs6000/linux64.h
+--- tmp/gcc/config/rs6000/linux64.h	2004-10-03 03:43:56.000000000 +0000
++++ src/gcc/config/rs6000/linux64.h	2004-11-22 07:54:22.832314304 +0000
+@@ -353,7 +353,7 @@
+ 
+ #define LINK_OS_LINUX_SPEC64 "-m elf64ppc %{!shared: %{!static: \
+   %{rdynamic:-export-dynamic} \
+-  %{!dynamic-linker:-dynamic-linker /lib64/ld64.so.1}}}"
++  %{!dynamic-linker:-dynamic-linker /lib/ld64.so.1}}}"
+ 
+ #undef  TOC_SECTION_ASM_OP
+ #define TOC_SECTION_ASM_OP \
+
+diff -urN gcc-3.4.3/config-ml.in src/config-ml.in
+--- gcc-3.4.3/config-ml.in	2004-01-05 00:41:14.000000000 +0000
++++ src/config-ml.in	2004-12-10 18:59:35.651141848 +0000
+@@ -400,7 +400,47 @@
+ 	  ;;
+ 	esac
+ 	;;
+-powerpc*-*-* | rs6000*-*-*)
++powerpc64-*-*)
++	case " $multidirs " in
++	*" 32 "*)
++	  # We will not be able to create libraries with -m32 if
++	  # we cannot even link a trivial program.  It usually
++	  # indicates the 32bit libraries are missing.
++	  if echo 'main() {}' > conftest.c &&
++	     ${CC-gcc} -m32 conftest.c -o conftest; then
++	   echo Enable only libstdc++.
++	   old_multidirs="${multidirs}"
++	   multidirs=""
++	   for x in ${old_multidirs}; do
++	     case "$x" in
++	     *32* ) case ${ml_realsrcdir} in
++	               *"libstdc++-v3" ) multidirs="${multidirs} ${x}" ;;
++	               *"libf2c" ) multidirs="${multidirs} ${x}" ;;
++	               *"libobjc" ) multidirs="${multidirs} ${x}" ;;
++	               *"libiberty" ) multidirs="${multidirs} ${x}" ;;
++	               *"zlib" ) multidirs="${multidirs} ${x}" ;;
++	               *) : ;;
++	            esac 
++	            ;;
++	     *) multidirs="${multidirs} ${x}" ;;
++	     esac
++	   done
++	  else
++	    echo Could not link program with -m32, disabling it.
++	    old_multidirs="${multidirs}"
++	    multidirs=""
++	    for x in ${old_multidirs}; do
++	      case "$x" in
++	      *m32* ) : ;;
++	      *) multidirs="${multidirs} ${x}" ;;
++	      esac
++	    done
++	  fi
++	  rm -f conftest.c conftest
++	  ;;
++	esac
++	;;
++powerpc-*-* | rs6000*-*-*)
+ 	if [ x$enable_aix64 = xno ]
+ 	then
+ 	  old_multidirs="${multidirs}"
+--- ppc64-fp.c	2004-03-11 03:14:52.000000000 +0000
++++ src/gcc/config/rs6000/ppc64-fp.c	2004-11-22 22:22:10.488086024 +0000
+@@ -33,19 +33,19 @@
+ #if defined(__powerpc64__)
+ #include "config/fp-bit.h"
+ 
+-extern DItype __fixtfdi (TFtype);
++/*extern DItype __fixtfdi (TFtype);*/
+ extern DItype __fixdfdi (DFtype);
+ extern DItype __fixsfdi (SFtype);
+ extern USItype __fixunsdfsi (DFtype);
+ extern USItype __fixunssfsi (SFtype);
+-extern TFtype __floatditf (DItype);
++/*extern TFtype __floatditf (DItype);*/
+ extern DFtype __floatdidf (DItype);
+ extern SFtype __floatdisf (DItype);
+-extern DItype __fixunstfdi (TFtype);
++/*extern DItype __fixunstfdi (TFtype);*/
+ 
+ static DItype local_fixunssfdi (SFtype);
+ static DItype local_fixunsdfdi (DFtype);
+-
++/*
+ DItype
+ __fixtfdi (TFtype a)
+ {
+@@ -53,7 +53,7 @@
+     return - __fixunstfdi (-a);
+   return __fixunstfdi (a);
+ }
+-
++*/
+ DItype
+ __fixdfdi (DFtype a)
+ {
+@@ -87,7 +87,7 @@
+                        - (- ((SItype)(((USItype)1 << ((4 * 8) - 1)) - 1)) - 1);
+   return (SItype) a;
+ }
+-
++/*
+ TFtype
+ __floatditf (DItype u)
+ {
+@@ -99,7 +99,7 @@
+ 
+   return (TFtype) dh + (TFtype) dl;
+ }
+-
++*/
+ DFtype
+ __floatdidf (DItype u)
+ {
+@@ -137,29 +137,29 @@
+   return (SFtype) f;
+ }
+ 
+-DItype
+-__fixunstfdi (TFtype a)
+-{
+-  if (a < 0)
+-    return 0;
+-
+-  /* Compute high word of result, as a flonum.  */
+-  const TFtype b = (a / (((UDItype) 1) << (sizeof (SItype) * 8)));
+-  /* Convert that to fixed (but not to DItype!),
+-     and shift it into the high word.  */
+-  UDItype v = (USItype) b;
+-  v <<= (sizeof (SItype) * 8);
+-  /* Remove high part from the TFtype, leaving the low part as flonum.  */
+-  a -= (TFtype) v;
+-  /* Convert that to fixed (but not to DItype!) and add it in.
+-     Sometimes A comes out negative.  This is significant, since
+-     A has more bits than a long int does.  */
+-  if (a < 0)
+-    v -= (USItype) (-a);
+-  else
+-    v += (USItype) a;
+-  return v;
+-}
++//DItype
++//__fixunstfdi (TFtype a)
++//{
++//  if (a < 0)
++//    return 0;
++//
++//  /* Compute high word of result, as a flonum.  */
++//  const TFtype b = (a / (((UDItype) 1) << (sizeof (SItype) * 8)));
++//  /* Convert that to fixed (but not to DItype!),
++//     and shift it into the high word.  */
++//  UDItype v = (USItype) b;
++//  v <<= (sizeof (SItype) * 8);
++//  /* Remove high part from the TFtype, leaving the low part as flonum.  */
++//  a -= (TFtype) v;
++//  /* Convert that to fixed (but not to DItype!) and add it in.
++//     Sometimes A comes out negative.  This is significant, since
++//     A has more bits than a long int does.  */
++//  if (a < 0)
++//    v -= (USItype) (-a);
++//  else
++//    v += (USItype) a;
++//  return v;
++//}
+ 
+ /* This version is needed to prevent recursion; fixunsdfdi in libgcc
+    calls fixdfdi, which in turn calls calls fixunsdfdi.  */
+
diff -urN ../tmp-orig/gcc-3.4-3.4.3/debian/rules.d/binary-ada.mk ./debian/rules.d/binary-ada.mk
--- ../tmp-orig/gcc-3.4-3.4.3/debian/rules.d/binary-ada.mk	2004-12-13 07:41:20.313189680 +0000
+++ ./debian/rules.d/binary-ada.mk	2004-12-09 18:17:51.000000000 +0000
@@ -108,8 +108,8 @@
 	for lib in lib{gnat,gnarl}; do \
 	  vlib=$$lib-$(GNAT_VERSION); \
 	  dh_link -p$(p_gnat) \
-	    /$(PF)/$(libdir)/$$vlib.so.1 /$(gcc_lib_dir)/adalib/$$vlib.so \
-	    /$(PF)/$(libdir)/$$vlib.so.1 /$(gcc_lib_dir)/adalib/$$lib.so; \
+	    /$(PF)/$(libdir)/$$vlib.so.1 /$(PF)/$(libdir)/$$vlib.so \
+	    /$(PF)/$(libdir)/$$vlib.so.1 /$(PF)/$(libdir)/$$lib.so; \
 	done
 endif
 
diff -urN ../tmp-orig/gcc-3.4-3.4.3/debian/rules.d/binary-gcc.mk ./debian/rules.d/binary-gcc.mk
--- ../tmp-orig/gcc-3.4-3.4.3/debian/rules.d/binary-gcc.mk	2004-12-13 07:41:20.322188312 +0000
+++ ./debian/rules.d/binary-gcc.mk	2004-12-09 19:37:40.000000000 +0000
@@ -29,7 +29,7 @@
 ifeq ($(biarch),yes)
     files_gcc += $(gcc_lib_dir)/64/{libgcc*,libgcov.a,*.o}
 endif
-ifeq ($(biarch_ia32),yes)
+ifeq ($(biarch_32),yes)
     files_gcc += $(gcc_lib_dir)/64/{libgcc*,*.o}
 endif
 
@@ -83,7 +83,7 @@
 	ln -sf /$(lib64)/libgcc_s.so.$(GCC_SONAME) $(d)/$(gcc_lib_dir)/libgcc_s_64.so
 	ln -sf /$(lib64)/libgcc_s.so.$(GCC_SONAME) $(d)/$(gcc_lib_dir)/64/libgcc_s.so
 endif
-ifeq ($(biarch_ia32),yes)
+ifeq ($(biarch_32),yes)
 	mkdir -p $(d_gcc)/$(gcc_lib_dir)
 	mv $(d)/$(gcc_lib_dir)/32 $(d_gcc)/$(gcc_lib_dir)/
 	dh_link -p$(p_gcc) \
diff -urN ../tmp-orig/gcc-3.4-3.4.3/debian/rules.d/binary-libgcc-cross.mk ./debian/rules.d/binary-libgcc-cross.mk
--- ../tmp-orig/gcc-3.4-3.4.3/debian/rules.d/binary-libgcc-cross.mk	2004-12-13 07:41:20.326187704 +0000
+++ ./debian/rules.d/binary-libgcc-cross.mk	2004-12-09 19:38:18.000000000 +0000
@@ -2,7 +2,7 @@
 ifeq ($(with_lib64gcc),yes)
   arch_binaries	:= $(arch_binaries) lib64gcc
 endif
-ifeq ($(biarch_ia32),yes)
+ifeq ($(biarch_32),yes)
   arch_binaries	:= $(arch_binaries) lib32gcc
 endif
 
diff -urN ../tmp-orig/gcc-3.4-3.4.3/debian/rules.d/binary-libgcc.mk ./debian/rules.d/binary-libgcc.mk
--- ../tmp-orig/gcc-3.4-3.4.3/debian/rules.d/binary-libgcc.mk	2004-12-13 07:41:20.323188160 +0000
+++ ./debian/rules.d/binary-libgcc.mk	2004-12-09 19:36:04.000000000 +0000
@@ -2,7 +2,7 @@
 ifeq ($(with_lib64gcc),yes)
   arch_binaries	:= $(arch_binaries) lib64gcc
 endif
-ifeq ($(biarch_ia32),yes)
+ifeq ($(biarch_32),yes)
   arch_binaries	:= $(arch_binaries) lib32gcc
 endif
 
@@ -136,10 +136,10 @@
 	rm -rf $(d_l32gcc)
 	dh_installdirs -p$(p_l32gcc) \
 		$(docdir)/$(p_l32gcc) \
-		emul/ia32-linux/usr/lib
+		usr/lib32
 
 	mv $(d)/$(PF)/lib32/libgcc_s.so.$(GCC_SONAME) \
-		$(d_l32gcc)/emul/ia32-linux/usr/lib/.
+		$(d_l32gcc)/usr/lib32/.
 
 	dh_installdocs -p$(p_l32gcc)
 	dh_installchangelogs -p$(p_l32gcc)
diff -urN ../tmp-orig/gcc-3.4-3.4.3/debian/rules.d/binary-libstdcxx-cross.mk ./debian/rules.d/binary-libstdcxx-cross.mk
--- ../tmp-orig/gcc-3.4-3.4.3/debian/rules.d/binary-libstdcxx-cross.mk	2004-12-13 07:41:20.328187400 +0000
+++ ./debian/rules.d/binary-libstdcxx-cross.mk	2004-12-09 19:38:08.000000000 +0000
@@ -4,7 +4,7 @@
 ifeq ($(with_lib64cxx),yes)
   arch_binaries  := $(arch_binaries) lib64stdcxx
 endif
-ifeq ($(biarch_ia32),yes)
+ifeq ($(biarch_32),yes)
   arch_binaries	:= $(arch_binaries) lib32stdcxx
 endif
 
diff -urN ../tmp-orig/gcc-3.4-3.4.3/debian/rules.d/binary-libstdcxx.mk ./debian/rules.d/binary-libstdcxx.mk
--- ../tmp-orig/gcc-3.4-3.4.3/debian/rules.d/binary-libstdcxx.mk	2004-12-13 07:41:20.331186944 +0000
+++ ./debian/rules.d/binary-libstdcxx.mk	2004-12-09 19:37:03.000000000 +0000
@@ -4,7 +4,7 @@
 ifeq ($(with_lib64cxx),yes)
   arch_binaries  := $(arch_binaries) lib64stdcxx
 endif
-ifeq ($(biarch_ia32),yes)
+ifeq ($(biarch_32),yes)
   arch_binaries	:= $(arch_binaries) lib32stdcxx
 endif
 
@@ -88,7 +88,7 @@
     dirs_pic += $(gcc_lib_dir)
     files_pic += $(gcc_lib_dir)/64/libstdc++_pic.a
 endif
-ifeq ($(biarch_ia32),yes)
+ifeq ($(biarch_32),yes)
     dirs_dev += $(gcc_lib_dir)/32/
     files_dev += $(gcc_lib_dir)/32/libstdc++.{a,so} \
         $(gcc_lib_dir)/32/libsupc++.a
@@ -235,10 +235,10 @@
 	rm -rf $(d_lib32)
 	dh_installdirs -p$(p_lib32) \
 		$(docdir)/$(p_lib32) \
-		emul/ia32-linux/usr/lib
+		usr/lib32
 
 	mv $(d)/$(PF)/lib32/libstdc++.so.* \
-		$(d_lib32)/emul/ia32-linux/usr/lib/.
+		$(d_lib32)/usr/lib32/.
 
 	dh_installdocs -p$(p_lib32)
 	echo "See /$(docdir)/$(p_base) for more information" \
@@ -292,7 +292,7 @@
 ifeq ($(with_lib64cxx),yes)
 	mv $(d)/$(PF)/lib64/lib*c++*.{a,so} $(d)/$(gcc_lib_dir)/64/.
 endif
-ifeq ($(biarch_ia32),yes)
+ifeq ($(biarch_32),yes)
 	mv $(d)/$(PF)/lib32/lib*c++*.{a,so} $(d)/$(gcc_lib_dir)/32/.
 endif
 
@@ -308,7 +308,7 @@
 		/$(PF)/lib64/libstdc++.so.$(CXX_SONAME) \
 		/$(gcc_lib_dir)/64/libstdc++.so
 endif
-ifeq ($(biarch_ia32),yes)
+ifeq ($(biarch_32),yes)
 	dh_link -p$(p_dev) \
 		/$(PF)/lib32/libstdc++.so.$(CXX_SONAME) \
 		/$(gcc_lib_dir)/32/libstdc++.so
diff -urN ../tmp-orig/gcc-3.4-3.4.3/debian/rules.defs ./debian/rules.defs
--- ../tmp-orig/gcc-3.4-3.4.3/debian/rules.defs	2004-12-13 07:41:25.661173392 +0000
+++ ./debian/rules.defs	2004-12-11 09:05:11.000000000 +0000
@@ -102,9 +102,9 @@
 # ... and some libraries, which do not change (libffi2, libg2c, libobjc1).
 with_common_libs := built from gcc-3.3
 
-# Build common_pkgs and common_libs for amd64/gcc-3.4
-ifeq ($(DEB_TARGET_GNU_CPU),x86_64)
-  ifneq ($(BUILD_CC_VERSION),3.3)
+# Build common_pkgs and common_libs if gcc-3.4 is the default compiler
+ifeq ($(DEB_TARGET_GNU_CPU),$(findstring $(DEB_TARGET_GNU_CPU),powerpc64 x86_64))
+  ifeq ($(BUILD_CC_VERSION),3.4)
     with_common_pkgs := yes
     with_common_libs := yes
   endif
@@ -209,7 +209,7 @@
   with_java := yes
 endif
 
-java_no_cpus := mips mipsel m32r
+java_no_cpus := mips mipsel m32r powerpc64
 java_no_systems := hurd-i386 kfreebsd-gnu knetbsd-gnu netbsd-elf-gnu
 ifeq ($(DEB_TARGET_GNU_CPU), $(findstring $(DEB_TARGET_GNU_CPU),$(java_no_cpus)))
   with_java := disabled for architecture $(DEB_TARGET_GNU_CPU)
@@ -422,7 +422,7 @@
 endif
 
 with_libgnat := yes
-ada_no_cpus := arm m68k m32r
+ada_no_cpus := arm m68k m32r powerpc64
 ada_no_systems := hurd-i386 kfreebsd-gnu knetbsd-gnu netbsd-elf-gnu
 ifeq ($(DEB_TARGET_GNU_CPU), $(findstring $(DEB_TARGET_GNU_CPU),$(ada_no_cpus)))
   with_ada := disabled for architecure $(DEB_TARGET_GNU_CPU)
@@ -492,7 +492,7 @@
 #endif
 
 # run testsuite --------------------
-with_check := yes
+with_check := no
 # If you don't want to run the gcc testsuite, set `with_check' to `no'
 #with_check := disabled by hand
 ifeq ($(with_base_only),yes)
@@ -540,11 +540,11 @@
   #with_lib64g2c	:= yes
 endif
 
-ifeq ($(DEB_TARGET_ARCH),amd64)
-  biarch_ia32 := yes
+ifeq ($(DEB_TARGET_ARCH), $(findstring $(DEB_TARGET_ARCH),amd64 ppc64))
+  biarch_32 := yes
 endif
 #ifeq ($(DEB_TARGET_ARCH),ia64)
-#  biarch_ia32 := yes
+#  biarch_32 := yes
 #endif
 
 # hppa64 build --------------------
diff -urN ../tmp-orig/gcc-3.4-3.4.3/debian/rules.parameters ./debian/rules.parameters
--- ../tmp-orig/gcc-3.4-3.4.3/debian/rules.parameters	2004-12-13 07:41:25.466068880 +0000
+++ ./debian/rules.parameters	2004-12-09 18:34:25.000000000 +0000
@@ -1,15 +1,15 @@
 # configuration parameters taken from upstream source files
 VER		:= 3.4.4
 BASE_VERSION	:= 3.4
-SOURCE_VERSION	:= 3.4.3-2
-DEB_VERSION	:= 3.4.3-2
-DEB_EVERSION	:= 1:3.4.3-2
+SOURCE_VERSION	:= 3.4.3-4
+DEB_VERSION	:= 3.4.3-4
+DEB_EVERSION	:= 1:3.4.3-4
 GPC_BASE_VERSION	:= 2.1
-DEB_GPC_VERSION	:= 3.4.3-2
+DEB_GPC_VERSION	:= 3.4.3-4
 DEB_SOVERSION	:= 3.4.1-3
 DEB_SOEVERSION	:= 1:3.4.1-3
 DEB_LIBGCC_SOVERSION	:= 1:3.4.1-3
-DEB_LIBGCC_VERSION	:= 1:3.4.3-2
+DEB_LIBGCC_VERSION	:= 1:3.4.3-4
 DEB_STDCXX_SOVERSION	:= 3.4.3-1
 DEB_FFI_SOVERSION	:= 3.4.1-3
 GCC_SONAME	:= 1
diff -urN ../tmp-orig/gcc-3.4-3.4.3/debian/rules.patch ./debian/rules.patch
--- ../tmp-orig/gcc-3.4-3.4.3/debian/rules.patch	2004-12-13 07:41:25.650175064 +0000
+++ ./debian/rules.patch	2004-12-09 18:17:51.000000000 +0000
@@ -82,6 +82,9 @@
 ifeq ($(DEB_TARGET_GNU_CPU),m32r)
   debian_patches += autoreconf m32r-gotoff m32r-stack m32r-libffi m32r-fixes m32r-limits
 endif
+ifeq ($(DEB_TARGET_ARCH),ppc64)
+  debian_patches += ppc64-biarch
+endif
 ifeq ($(DEB_TARGET_GNU_CPU),alpha)
   debian_patches += # alpha-ieee
 endif
diff -urN ../tmp-orig/gcc-3.4-3.4.3/debian/rules2 ./debian/rules2
--- ../tmp-orig/gcc-3.4-3.4.3/debian/rules2	2004-12-13 07:41:25.638176888 +0000
+++ ./debian/rules2	2004-12-10 19:11:21.000000000 +0000
@@ -44,7 +44,7 @@
 ifeq ($(with_ada),yes)
   CC		= gnatgcc $(CPPFLAGS)
 else
-  CC		= cc $(CPPFLAGS)
+  CC		= gcc-3.4 $(CPPFLAGS)
 endif
 
 ifeq ($(DEB_HOST_ARCH), $(findstring $(DEB_HOST_ARCH),m68k))
@@ -148,7 +148,7 @@
 endif
 
 ifeq ($(DEB_TARGET_GNU_CPU), $(findstring $(DEB_TARGET_GNU_CPU),powerpc64))
-  CONFARGS += --disable-softfloat
+  CONFARGS += --disable-softfloat --disable-nof
 endif
 
 ifeq ($(DEB_TARGET_GNU_TYPE),ia64-linux)
@@ -594,7 +594,7 @@
     DEJAGNU_RUNTESTFLAGS = RUNTESTFLAGS="--target_board 'unix unix/-m64'"
   endif
 endif
-ifeq ($(biarch_ia32),yes)
+ifeq ($(biarch_32),yes)
   uname_m := $(shell uname -m)
   ifeq ($(uname_m), $(findstring $(uname_m),x86_64))
     DEJAGNU_RUNTESTFLAGS = RUNTESTFLAGS="--target_board 'unix unix/-m32'"
diff -urN tmp-orig/gcc-4.0-4.0ds1/debian/control gcc-4.0-4.0ds1/debian/control
--- tmp-orig/gcc-4.0-4.0ds1/debian/control	2004-12-11 14:15:55.000000000 +0000
+++ gcc-4.0-4.0ds1/debian/control	2004-12-10 18:38:45.000000000 +0000
@@ -4,7 +4,7 @@
 Maintainer: Debian GCC maintainers <debian-gcc@lists.debian.org>
 Uploaders: Matthias Klose <doko@debian.org>
 Standards-Version: 3.6.1
-Build-Depends: libc6.1-dev (>= 2.3.2.ds1-19) [alpha ia64] | libc0.3-dev (>= 2.3.2.ds1-19) | libc0.1-dev | libc12-dev (>= 2.3.2.ds1-19) | libc6-dev (>= 2.3.2.ds1-19), libc6-dev-sparc64 [sparc], libc6-dev-s390x [s390], amd64-libs-dev [i386], ia32-libs-dev [amd64], libunwind7-dev [ia64], m4, autoconf, automake1.9, libtool, autogen, gawk, dejagnu (>= 1.4.3) [!hurd-i386], expect (>= 5.38.0) [!hurd-i386], bzip2, binutils (>= 2.15-5) | binutils-multiarch (>= 2.15-5), binutils-hppa64 [hppa], debhelper (>= 4.1), gperf (>= 2.7-3), bison (>= 1:1.875a-1), flex, gettext, texinfo (>= 4.3), zlib1g-dev, libgc-dev [!knetbsd-i386], xlibs-dev, gnat-3.3 [!arm !hppa !m68k !mips !mipsel !s390 !sparc !kfreebsd-i386 !knetbsd-i386 !netbsd-i386] | gnat-3.4 [!arm !hppa !m68k !mips !mipsel !s390 !sparc !kfreebsd-i386 !knetbsd-i386 !netbsd-i386], libncurses5-dev [!netbsd-i386], libmpfr-dev | libgmp3-dev (<< 4.1.4-3), tetex-bin [!netbsd-i386], locales [!hurd-i386 !knetbsd-i386 !netbsd-i386], procps [!darwin-i386 !freebsd-i386 !hurd-i386 !kfreebsd-i386 !knetbsd-i386 !netbsd-i386 !openbsd-i386 !darwin-powerpc], help2man [!netbsd-i386], sharutils, libgtk2.0-dev [!mips !mipsel !knetbsd-i386 !netbsd-i386], libart-2.0-dev [!mips !mipsel !knetbsd-i386 !netbsd-i386], g++-3.4, gobjc-3.4, type-handling (>= 0.2.1), realpath (>= 1.9.12), chrpath
+Build-Depends: libc6.1-dev (>= 2.3.2.ds1-19) [alpha ia64] | libc0.3-dev (>= 2.3.2.ds1-19) | libc0.1-dev | libc12-dev (>= 2.3.2.ds1-19) | libc6-dev (>= 2.3.2.ds1-19), libc6-dev-i386 [amd64], libc6-dev-powerpc [ppc64], libc6-dev-sparc64 [sparc], libc6-dev-s390x [s390], amd64-libs-dev [i386], libunwind7-dev [ia64], m4, autoconf, automake1.9, libtool, autogen, gawk, dejagnu (>= 1.4.3) [!hurd-i386], expect (>= 5.38.0) [!hurd-i386], bzip2, binutils (>= 2.15-5) | binutils-multiarch (>= 2.15-5), binutils-hppa64 [hppa], debhelper (>= 4.1), gperf (>= 2.7-3), bison (>= 1:1.875a-1), flex, gettext, texinfo (>= 4.3), zlib1g-dev, libgc-dev [!knetbsd-i386], xlibs-dev, gnat-4.0 [!arm !hppa !m68k !mips !mipsel !ppc64 !s390 !sparc !kfreebsd-i386 !knetbsd-i386 !netbsd-i386] | gnat-3.3 [!arm !hppa !m68k !mips !mipsel !ppc64 !s390 !sparc !kfreebsd-i386 !knetbsd-i386 !netbsd-i386], libncurses5-dev [!netbsd-i386], libmpfr-dev | libgmp3-dev (<< 4.1.4-3), tetex-bin [!netbsd-i386], locales [!hurd-i386 !knetbsd-i386 !netbsd-i386], procps [!darwin-i386 !freebsd-i386 !hurd-i386 !kfreebsd-i386 !knetbsd-i386 !netbsd-i386 !openbsd-i386 !darwin-powerpc], help2man [!netbsd-i386], sharutils, libgtk2.0-dev [!mips !mipsel !knetbsd-i386 !netbsd-i386], libart-2.0-dev [!mips !mipsel !knetbsd-i386 !netbsd-i386], g++-3.4, gobjc-3.4, type-handling (>= 0.2.1), realpath (>= 1.9.12), chrpath
 Build-Depends-Indep: doxygen (>= 1.3.9.1)
 
 Package: gcc-4.0-base
diff -urN tmp-orig/gcc-4.0-4.0ds1/debian/control.m4 gcc-4.0-4.0ds1/debian/control.m4
--- tmp-orig/gcc-4.0-4.0ds1/debian/control.m4	2004-12-11 14:15:55.000000000 +0000
+++ gcc-4.0-4.0ds1/debian/control.m4	2004-12-10 18:33:16.000000000 +0000
@@ -41,7 +41,7 @@
 ifdef(`TARGET',`dnl cross
 Build-Depends: LIBC_BUILD_DEP, m4, autoconf, automake1.9, libtool, autotools-dev, autogen, gawk, bzip2, dpkg-cross (>= 1.18.1), BINUTILS_BUILD_DEP, debhelper (>= 4.1), bison (>= 1:1.875a-1) | bison (<< 1:1.50), flex, realpath (>= 1.9.12), chrpath`'BD64
 ',`dnl native
-Build-Depends: LIBC_BUILD_DEP, libc6-dev-sparc64 [sparc], libc6-dev-s390x [s390], amd64-libs-dev [i386], ia32-libs-dev [amd64], libunwind7-dev [ia64], m4, autoconf, automake1.9, libtool, autogen, gawk, dejagnu (>= 1.4.3) [check_no_archs], expect (>= 5.38.0) [check_no_archs], bzip2, BINUTILS_BUILD_DEP, binutils-hppa64 [hppa], debhelper (>= 4.1), gperf (>= 2.7-3), bison (>= 1:1.875a-1), flex, gettext, texinfo (>= 4.3), zlib1g-dev, libgc-dev [libgc_no_archs], xlibs-dev, gnat-3.3 [ada_no_archs] | gnat-3.4 [ada_no_archs], libncurses5-dev [pascal_no_archs], libmpfr-dev | libgmp3-dev (<< 4.1.4-3), tetex-bin [pascal_no_archs], locales [locale_no_archs], procps [linux_gnu_archs], help2man [pascal_no_archs], sharutils, libgtk2.0-dev [java_no_archs], libart-2.0-dev [java_no_archs], g++-3.4, gobjc-3.4, type-handling (>= 0.2.1), realpath (>= 1.9.12), chrpath
+Build-Depends: LIBC_BUILD_DEP, libc6-dev-i386 [amd64], libc6-dev-powerpc [ppc64], libc6-dev-sparc64 [sparc], libc6-dev-s390x [s390], amd64-libs-dev [i386], libunwind7-dev [ia64], m4, autoconf, automake1.9, libtool, autogen, gawk, dejagnu (>= 1.4.3) [check_no_archs], expect (>= 5.38.0) [check_no_archs], bzip2, BINUTILS_BUILD_DEP, binutils-hppa64 [hppa], debhelper (>= 4.1), gperf (>= 2.7-3), bison (>= 1:1.875a-1), flex, gettext, texinfo (>= 4.3), zlib1g-dev, libgc-dev [libgc_no_archs], xlibs-dev, gnat-4.0 [ada_no_archs] | gnat-3.3 [ada_no_archs], libncurses5-dev [pascal_no_archs], libmpfr-dev | libgmp3-dev (<< 4.1.4-3), tetex-bin [pascal_no_archs], locales [locale_no_archs], procps [linux_gnu_archs], help2man [pascal_no_archs], sharutils, libgtk2.0-dev [java_no_archs], libart-2.0-dev [java_no_archs], g++-3.4, gobjc-3.4, type-handling (>= 0.2.1), realpath (>= 1.9.12), chrpath
 Build-Depends-Indep: doxygen (>= 1.3.9.1)
 ')dnl
 
@@ -117,8 +117,8 @@
 Architecture: any
 Section: libs
 Priority: optional
-Depends: ia32-libs (>= 0.7)
-Description: GCC support library (ia32)
+Depends: ${shlibs:Depends}
+Description: GCC support library (32 bit Version)
  Shared version of the support library, a library of internal subroutines
  that GCC uses to overcome shortcomings of particular machines, or
  special needs for some languages.
@@ -518,7 +518,7 @@
 Section: ifdef(`TARGET',`devel',`libs')
 Priority: ifdef(`TARGET',`extra',PRI(optional))
 Depends: gcc`'PV-base (>= CV), lib32gcc`'GCC_SO`'LS
-Description: The GNU Standard C++ Library v3 (ia32)
+Description: The GNU Standard C++ Library v3 (32 bit Version)
  This package contains an additional runtime library for C++ programs
  built with the GNU compiler.
 ifdef(`TARGET', `dnl
diff -urN tmp-orig/gcc-4.0-4.0ds1/debian/patches/amd64-biarch.dpatch gcc-4.0-4.0ds1/debian/patches/amd64-biarch.dpatch
--- tmp-orig/gcc-4.0-4.0ds1/debian/patches/amd64-biarch.dpatch	2004-12-11 14:15:55.000000000 +0000
+++ gcc-4.0-4.0ds1/debian/patches/amd64-biarch.dpatch	2004-12-07 17:02:49.000000000 +0000
@@ -86,3 +86,15 @@
  esac
  
  # Remove extraneous blanks from multidirs.
+--- linux64.h	2003-11-29 03:08:10.000000000 +0000
++++ gcc/config/i386/linux64.h	2004-10-07 17:57:27.295477928 +0000
+@@ -61,7 +61,7 @@
+     %{!static: \
+       %{rdynamic:-export-dynamic} \
+       %{m32:%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
+-      %{!m32:%{!dynamic-linker:-dynamic-linker /lib64/ld-linux-x86-64.so.2}}} \
++      %{!m32:%{!dynamic-linker:-dynamic-linker /lib/ld-linux-x86-64.so.2}}} \
+     %{static:-static}}"
+ 
+ #define MULTILIB_DEFAULTS { "m64" }
+
diff -urN tmp-orig/gcc-4.0-4.0ds1/debian/patches/ppc64-biarch.dpatch gcc-4.0-4.0ds1/debian/patches/ppc64-biarch.dpatch
--- tmp-orig/gcc-4.0-4.0ds1/debian/patches/ppc64-biarch.dpatch	1970-01-01 00:00:00.000000000 +0000
+++ gcc-4.0-4.0ds1/debian/patches/ppc64-biarch.dpatch	2004-12-12 07:14:14.000000000 +0000
@@ -0,0 +1,223 @@
+#! /bin/sh -e
+ 
+# DP: biarch patches for powerpc/ppc64
+ 
+dir=
+if [ $# -eq 3 -a "$2" = '-d' ]; then
+    pdir="-d $3"
+    dir="$3/"
+elif [ $# -ne 1 ]; then
+    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+    exit 1
+fi
+case "$1" in
+    -patch)
+        patch $pdir -f --no-backup-if-mismatch -p1 < $0
+        #cd ${dir}gcc && autoconf
+        ;;
+    -unpatch)
+        patch $pdir -f --no-backup-if-mismatch -R -p1 < $0
+        #rm ${dir}gcc/configure
+        ;;
+    *)
+        echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+        exit 1
+esac
+exit 0
+
+
+diff -urN tmp/gcc/config/rs6000/t-linux64 src/gcc/config/rs6000/t-linux64
+--- tmp/gcc/config/rs6000/t-linux64	2004-12-04 08:05:46.000000000 +0000
++++ src/gcc/config/rs6000/t-linux64	2004-12-04 08:07:52.180889736 +0000
+@@ -8,13 +8,13 @@
+ 
+ SHLIB_MAPFILES += $(srcdir)/config/rs6000/libgcc-ppc64.ver
+ 
+-MULTILIB_OPTIONS        = m64/m32 msoft-float
+-MULTILIB_DIRNAMES       = 64 32 nof
++MULTILIB_OPTIONS        = m64/m32
++MULTILIB_DIRNAMES       = 64 32
+ MULTILIB_EXTRA_OPTS     = fPIC mstrict-align
+-MULTILIB_EXCEPTIONS     = m64/msoft-float
+-MULTILIB_EXCLUSIONS     = m64/!m32/msoft-float
+-MULTILIB_OSDIRNAMES	= ../lib64 ../lib nof
+-MULTILIB_MATCHES        = $(MULTILIB_MATCHES_FLOAT)
++#MULTILIB_EXCEPTIONS     = m64/msoft-float
++#MULTILIB_EXCLUSIONS     = m64/!m32/msoft-float
++MULTILIB_OSDIRNAMES	= ../lib ../lib32
++#MULTILIB_MATCHES        = $(MULTILIB_MATCHES_FLOAT)
+ 
+ # We want fine grained libraries, so use the new code to build the
+ # floating point emulation libraries.
+diff -urN tmp/gcc/config/rs6000/linux64.h src/gcc/config/rs6000/linux64.h
+--- tmp/gcc/config/rs6000/linux64.h	2004-10-03 03:43:56.000000000 +0000
++++ src/gcc/config/rs6000/linux64.h	2004-11-22 07:54:22.832314304 +0000
+@@ -353,7 +353,7 @@
+ 
+ #define LINK_OS_LINUX_SPEC64 "-m elf64ppc %{!shared: %{!static: \
+   %{rdynamic:-export-dynamic} \
+-  %{!dynamic-linker:-dynamic-linker /lib64/ld64.so.1}}}"
++  %{!dynamic-linker:-dynamic-linker /lib/ld64.so.1}}}"
+ 
+ #undef  TOC_SECTION_ASM_OP
+ #define TOC_SECTION_ASM_OP \
+
+diff -urN tmp/config-ml.in src/config-ml.in
+--- tmp/config-ml.in	2004-11-09 08:07:29.000000000 +0000
++++ src/config-ml.in	2004-12-12 07:12:44.631147816 +0000
+@@ -400,7 +400,47 @@
+ 	  ;;
+ 	esac
+ 	;;
+-powerpc*-*-* | rs6000*-*-*)
++powerpc64-*-*)
++ 	case " $multidirs " in
++ 	*" 32 "*)
++ 	  # We will not be able to create libraries with -m32 if
++ 	  # we cannot even link a trivial program.  It usually
++ 	  # indicates the 32bit libraries are missing.
++ 	  if echo 'main() {}' > conftest.c &&
++ 	     ${CC-gcc} -m32 conftest.c -o conftest; then
++ 	   echo Enable only libstdc++.
++ 	   old_multidirs="${multidirs}"
++ 	   multidirs=""
++ 	   for x in ${old_multidirs}; do
++ 	     case "$x" in
++ 	     *32* ) case ${ml_realsrcdir} in
++ 	               *"libstdc++-v3" ) multidirs="${multidirs} ${x}" ;;
++ 	               *"libf2c" ) multidirs="${multidirs} ${x}" ;;
++ 	               *"libobjc" ) multidirs="${multidirs} ${x}" ;;
++ 	               *"libiberty" ) multidirs="${multidirs} ${x}" ;;
++ 	               *"zlib" ) multidirs="${multidirs} ${x}" ;;
++ 	               *) : ;;
++ 	            esac 
++ 	            ;;
++ 	     *) multidirs="${multidirs} ${x}" ;;
++ 	     esac
++ 	   done
++ 	  else
++ 	    echo Could not link program with -m32, disabling it.
++ 	    old_multidirs="${multidirs}"
++ 	    multidirs=""
++ 	    for x in ${old_multidirs}; do
++ 	      case "$x" in
++ 	      *m32* ) : ;;
++ 	      *) multidirs="${multidirs} ${x}" ;;
++ 	      esac
++ 	    done
++ 	  fi
++ 	  rm -f conftest.c conftest
++ 	  ;;
++ 	esac
++ 	;;
++powerpc-*-* | rs6000*-*-*)
+ 	if [ x$enable_aix64 = xno ]
+ 	then
+ 	  old_multidirs="${multidirs}"
+--- ppc64-fp.c	2004-03-11 03:14:52.000000000 +0000
++++ src/gcc/config/rs6000/ppc64-fp.c	2004-11-22 22:22:10.488086024 +0000
+@@ -33,19 +33,19 @@
+ #if defined(__powerpc64__)
+ #include "config/fp-bit.h"
+ 
+-extern DItype __fixtfdi (TFtype);
++/*extern DItype __fixtfdi (TFtype);*/
+ extern DItype __fixdfdi (DFtype);
+ extern DItype __fixsfdi (SFtype);
+ extern USItype __fixunsdfsi (DFtype);
+ extern USItype __fixunssfsi (SFtype);
+-extern TFtype __floatditf (DItype);
++/*extern TFtype __floatditf (DItype);*/
+ extern DFtype __floatdidf (DItype);
+ extern SFtype __floatdisf (DItype);
+-extern DItype __fixunstfdi (TFtype);
++/*extern DItype __fixunstfdi (TFtype);*/
+ 
+ static DItype local_fixunssfdi (SFtype);
+ static DItype local_fixunsdfdi (DFtype);
+-
++/*
+ DItype
+ __fixtfdi (TFtype a)
+ {
+@@ -53,7 +53,7 @@
+     return - __fixunstfdi (-a);
+   return __fixunstfdi (a);
+ }
+-
++*/
+ DItype
+ __fixdfdi (DFtype a)
+ {
+@@ -87,7 +87,7 @@
+                        - (- ((SItype)(((USItype)1 << ((4 * 8) - 1)) - 1)) - 1);
+   return (SItype) a;
+ }
+-
++/*
+ TFtype
+ __floatditf (DItype u)
+ {
+@@ -99,7 +99,7 @@
+ 
+   return (TFtype) dh + (TFtype) dl;
+ }
+-
++*/
+ DFtype
+ __floatdidf (DItype u)
+ {
+@@ -137,29 +137,29 @@
+   return (SFtype) f;
+ }
+ 
+-DItype
+-__fixunstfdi (TFtype a)
+-{
+-  if (a < 0)
+-    return 0;
+-
+-  /* Compute high word of result, as a flonum.  */
+-  const TFtype b = (a / (((UDItype) 1) << (sizeof (SItype) * 8)));
+-  /* Convert that to fixed (but not to DItype!),
+-     and shift it into the high word.  */
+-  UDItype v = (USItype) b;
+-  v <<= (sizeof (SItype) * 8);
+-  /* Remove high part from the TFtype, leaving the low part as flonum.  */
+-  a -= (TFtype) v;
+-  /* Convert that to fixed (but not to DItype!) and add it in.
+-     Sometimes A comes out negative.  This is significant, since
+-     A has more bits than a long int does.  */
+-  if (a < 0)
+-    v -= (USItype) (-a);
+-  else
+-    v += (USItype) a;
+-  return v;
+-}
++//DItype
++//__fixunstfdi (TFtype a)
++//{
++//  if (a < 0)
++//    return 0;
++//
++//  /* Compute high word of result, as a flonum.  */
++//  const TFtype b = (a / (((UDItype) 1) << (sizeof (SItype) * 8)));
++//  /* Convert that to fixed (but not to DItype!),
++//     and shift it into the high word.  */
++//  UDItype v = (USItype) b;
++//  v <<= (sizeof (SItype) * 8);
++//  /* Remove high part from the TFtype, leaving the low part as flonum.  */
++//  a -= (TFtype) v;
++//  /* Convert that to fixed (but not to DItype!) and add it in.
++//     Sometimes A comes out negative.  This is significant, since
++//     A has more bits than a long int does.  */
++//  if (a < 0)
++//    v -= (USItype) (-a);
++//  else
++//    v += (USItype) a;
++//  return v;
++//}
+ 
+ /* This version is needed to prevent recursion; fixunsdfdi in libgcc
+    calls fixdfdi, which in turn calls calls fixunsdfdi.  */
+
diff -urN tmp-orig/gcc-4.0-4.0ds1/debian/rules.d/binary-gcc.mk gcc-4.0-4.0ds1/debian/rules.d/binary-gcc.mk
--- tmp-orig/gcc-4.0-4.0ds1/debian/rules.d/binary-gcc.mk	2004-12-11 14:15:54.000000000 +0000
+++ gcc-4.0-4.0ds1/debian/rules.d/binary-gcc.mk	2004-12-10 18:23:05.000000000 +0000
@@ -35,7 +35,7 @@
 ifeq ($(biarch),yes)
     files_gcc += $(gcc_lib_dir)/64/{libgcc*,libgcov.a,*.o}
 endif
-ifeq ($(biarch_ia32),yes)
+ifeq ($(biarch_32),yes)
     files_gcc += $(gcc_lib_dir)/64/{libgcc*,*.o}
 endif
 
@@ -77,7 +77,7 @@
 	ln -sf /$(lib64)/libgcc_s.so.$(GCC_SONAME) $(d)/$(gcc_lib_dir)/libgcc_s_64.so
 	ln -sf /$(lib64)/libgcc_s.so.$(GCC_SONAME) $(d)/$(gcc_lib_dir)/64/libgcc_s.so
 endif
-ifeq ($(biarch_ia32),yes)
+ifeq ($(biarch_32),yes)
 	mkdir -p $(d_gcc)/$(gcc_lib_dir)
 	mv $(d)/$(gcc_lib_dir)/32 $(d_gcc)/$(gcc_lib_dir)/
 	dh_link -p$(p_gcc) \
diff -urN tmp-orig/gcc-4.0-4.0ds1/debian/rules.d/binary-libgcc-cross.mk gcc-4.0-4.0ds1/debian/rules.d/binary-libgcc-cross.mk
--- tmp-orig/gcc-4.0-4.0ds1/debian/rules.d/binary-libgcc-cross.mk	2004-12-11 14:15:54.000000000 +0000
+++ gcc-4.0-4.0ds1/debian/rules.d/binary-libgcc-cross.mk	2004-12-10 18:24:07.000000000 +0000
@@ -2,7 +2,7 @@
 ifeq ($(with_lib64gcc),yes)
   arch_binaries	:= $(arch_binaries) lib64gcc
 endif
-ifeq ($(biarch_ia32),yes)
+ifeq ($(biarch_32),yes)
   arch_binaries	:= $(arch_binaries) lib32gcc
 endif
 
diff -urN tmp-orig/gcc-4.0-4.0ds1/debian/rules.d/binary-libgcc.mk gcc-4.0-4.0ds1/debian/rules.d/binary-libgcc.mk
--- tmp-orig/gcc-4.0-4.0ds1/debian/rules.d/binary-libgcc.mk	2004-12-11 14:15:54.000000000 +0000
+++ gcc-4.0-4.0ds1/debian/rules.d/binary-libgcc.mk	2004-12-10 18:23:51.000000000 +0000
@@ -2,7 +2,7 @@
 ifeq ($(with_lib64gcc),yes)
   arch_binaries	:= $(arch_binaries) lib64gcc
 endif
-ifeq ($(biarch_ia32),yes)
+ifeq ($(biarch_32),yes)
   arch_binaries	:= $(arch_binaries) lib32gcc
 endif
 
@@ -130,11 +130,11 @@
 	rm -rf $(d_l32gcc)
 	dh_installdirs -p$(p_l32gcc) \
 		$(docdir)/$(p_l32gcc) \
-		emul/ia32-linux/usr/lib
+		usr/lib32
 
 	install -d $(d)/lib64
 	mv $(d)/$(PF)/lib32/libgcc_s.so.$(GCC_SONAME) \
-		$(d_l32gcc)/emul/ia32-linux/usr/lib/.
+		$(d_l32gcc)/usr/lib32/.
 
 	dh_installdocs -p$(p_l32gcc)
 	dh_installchangelogs -p$(p_l32gcc)
diff -urN tmp-orig/gcc-4.0-4.0ds1/debian/rules.d/binary-libstdcxx-cross.mk gcc-4.0-4.0ds1/debian/rules.d/binary-libstdcxx-cross.mk
--- tmp-orig/gcc-4.0-4.0ds1/debian/rules.d/binary-libstdcxx-cross.mk	2004-12-11 14:15:54.000000000 +0000
+++ gcc-4.0-4.0ds1/debian/rules.d/binary-libstdcxx-cross.mk	2004-12-10 18:24:59.000000000 +0000
@@ -4,7 +4,7 @@
 ifeq ($(with_lib64cxx),yes)
   arch_binaries  := $(arch_binaries) lib64stdcxx
 endif
-ifeq ($(biarch_ia32),yes)
+ifeq ($(biarch_32),yes)
   arch_binaries	:= $(arch_binaries) lib32stdcxx
 endif
 
diff -urN tmp-orig/gcc-4.0-4.0ds1/debian/rules.d/binary-libstdcxx.mk gcc-4.0-4.0ds1/debian/rules.d/binary-libstdcxx.mk
--- tmp-orig/gcc-4.0-4.0ds1/debian/rules.d/binary-libstdcxx.mk	2004-12-11 14:15:54.000000000 +0000
+++ gcc-4.0-4.0ds1/debian/rules.d/binary-libstdcxx.mk	2004-12-10 18:24:48.000000000 +0000
@@ -5,7 +5,7 @@
 ifeq ($(with_lib64cxx),yes)
   arch_binaries  := $(arch_binaries) lib64stdcxx
 endif
-ifeq ($(biarch_ia32),yes)
+ifeq ($(biarch_32),yes)
   arch_binaries	:= $(arch_binaries) lib32stdcxx
 endif
 
@@ -81,7 +81,7 @@
     dirs_pic += $(gcc_lib_dir)
     files_pic += $(gcc_lib_dir)/64/libstdc++_pic.a
 endif
-ifeq ($(biarch_ia32),yes)
+ifeq ($(biarch_32),yes)
     dirs_dev += $(gcc_lib_dir)/32/
     files_dev += $(gcc_lib_dir)/32/libstdc++.{a,so} \
         $(gcc_lib_dir)/32/libsupc++.a
@@ -228,10 +228,10 @@
 	rm -rf $(d_lib32)
 	dh_installdirs -p$(p_lib32) \
 		$(docdir)/$(p_lib32) \
-		emul/ia32-linux/usr/lib
+		usr/lib32
 
 	mv $(d)/$(PF)/lib32/libstdc++.so.* \
-		$(d_lib32)/emul/ia32-linux/usr/lib/.
+		$(d_lib32)/usr/lib32/.
 
 	dh_installdocs -p$(p_lib32)
 	echo "See /$(docdir)/$(p_base) for more information" \
@@ -287,7 +287,7 @@
 ifeq ($(with_lib64cxx),yes)
 	mv $(d)/$(PF)/lib64/lib*c++*.{a,so} $(d)/$(gcc_lib_dir)/64/.
 endif
-ifeq ($(biarch_ia32),yes)
+ifeq ($(biarch_32),yes)
 	mv $(d)/$(PF)/lib32/lib*c++*.{a,so} $(d)/$(gcc_lib_dir)/32/.
 endif
 
@@ -305,7 +305,7 @@
 		/$(PF)/lib64/libstdc++.so.$(CXX_SONAME) \
 		/$(gcc_lib_dir)/64/libstdc++.so
 endif
-ifeq ($(biarch_ia32),yes)
+ifeq ($(biarch_32),yes)
 	dh_link -p$(p_dev) \
 		/$(PF)/lib32/libstdc++.so.$(CXX_SONAME) \
 		/$(gcc_lib_dir)/32/libstdc++.so
diff -urN tmp-orig/gcc-4.0-4.0ds1/debian/rules.defs gcc-4.0-4.0ds1/debian/rules.defs
--- tmp-orig/gcc-4.0-4.0ds1/debian/rules.defs	2004-12-11 14:15:55.000000000 +0000
+++ gcc-4.0-4.0ds1/debian/rules.defs	2004-12-10 18:32:05.000000000 +0000
@@ -440,7 +440,7 @@
 endif
 
 with_libgnat := yes
-ada_no_cpus := arm m68k hppa mips mipsel s390 sparc
+ada_no_cpus := arm m68k hppa mips mipsel s390 sparc powerpc64
 ada_no_systems := hurd-i386 kfreebsd-gnu knetbsd-gnu netbsdelf-gnu
 ifneq (, $(filter $(DEB_TARGET_GNU_CPU),$(ada_no_cpus)))
   with_ada := disabled for architecure $(DEB_TARGET_GNU_CPU)
@@ -510,7 +510,7 @@
 endif
 
 # run testsuite --------------------
-with_check := yes
+with_check := no
 # If you don't want to run the gcc testsuite, set `with_check' to `no'
 #with_check := disabled by hand
 ifeq ($(with_base_only),yes)
@@ -559,11 +559,11 @@
   #with_lib64gcj	:= yes
 endif
 
-ifeq ($(DEB_TARGET_ARCH),amd64)
-  biarch_ia32 := yes
+ifeq ($(DEB_TARGET_ARCH),$(findstring $(DEB_TARGET_ARCH),amd64 ppc64))
+  biarch_32 := yes
 endif
 #ifeq ($(DEB_TARGET_ARCH),ia64)
-#  biarch_ia32 := yes
+#  biarch_32 := yes
 #endif
 
 # hppa64 build --------------------
diff -urN tmp-orig/gcc-4.0-4.0ds1/debian/rules.patch gcc-4.0-4.0ds1/debian/rules.patch
--- tmp-orig/gcc-4.0-4.0ds1/debian/rules.patch	2004-12-11 14:15:55.000000000 +0000
+++ gcc-4.0-4.0ds1/debian/rules.patch	2004-12-07 17:02:49.000000000 +0000
@@ -64,6 +64,9 @@
 ifeq ($(DEB_TARGET_ARCH),amd64)
   debian_patches += amd64-biarch # amd64-multilib
 endif
+ifeq ($(DEB_TARGET_ARCH),ppc64)
+  debian_patches += ppc64-biarch
+endif
 
 ifeq ($(DEB_TARGET_GNU_CPU),alpha)
   debian_patches += # alpha-ieee
diff -urN tmp-orig/gcc-4.0-4.0ds1/debian/rules2 gcc-4.0-4.0ds1/debian/rules2
--- tmp-orig/gcc-4.0-4.0ds1/debian/rules2	2004-12-11 14:15:55.000000000 +0000
+++ gcc-4.0-4.0ds1/debian/rules2	2004-12-11 14:22:29.000000000 +0000
@@ -44,7 +44,7 @@
 ifeq ($(with_ada),yes)
   CC		= gnatgcc $(CPPFLAGS)
 else
-  CC		= cc $(CPPFLAGS)
+  CC		= gcc-3.4 $(CPPFLAGS)
 endif
 
 ifeq ($(DEB_HOST_ARCH), $(findstring $(DEB_HOST_ARCH),m68k))

Reply to: