Package: gcc-4.0 Severity: wishlist Tags: patch Please add support for the ppc64 architecture to 'gcc-4.0'.
The changes from the attached patch have been used by the ppc64 archive on alioth since December 2004. The patch basically uses the same approach as the amd64 port to create a gcc with multilib support. Regards Andreas Jochens Change summary: * debian/control.m4 - Add libc6-dev-powerpc [ppc64] to the Build-Depends. - Change the Description for lib32gcc1: s/ia32/32 bit Version/ - Change the Depends for lib32gcc1 from 'ia32-libs' to '${shlibs:Depends}'. - Remove "Replaces: ia32-libs.openoffice.org (<< 1ubuntu3)" for lib32gcc1. * debian/rules.defs - Define 'biarch_ia32' for ppc64 to use the same 32 bit multilib facilities as amd64. (Probably 'biarch_ia32' should be renamed to something like 'biarch32'.) * debian/rules.d/binary-gcc.mk - Correct an error in the 'files_gcc' definition for biarch_ia32 (replace '64' by '32'). * debian/rules2 - Do not use '--disable-multilib' on powerpc64-linux. Use '--disable-nof --disable-softfloat' instead. * debian/rules.d/binary-libstdcxx.mk - Put the 32 bit libstdc++ files in '/usr/lib32'. * debian/rules.patch - Apply 'ppc64-biarch' patch on ppc64. * debian/patches/ppc64-biarch.dpatch - MULTILIB_OSDIRNAMES: Use /lib for native 64 bit libraries and /lib32 for 32 bit libraries. - Add multilib handling to src/config-ml.in (taken from amd64-biarch.dpatch). diff -urN ../tmp-orig/gcc-4.0-4.0ds8/debian/control ./debian/control --- ../tmp-orig/gcc-4.0-4.0ds8/debian/control 2005-03-24 09:28:32.245097672 +0100 +++ ./debian/control 2005-03-24 09:31:26.937816920 +0100 @@ -4,7 +4,7 @@ Maintainer: Debian GCC maintainers <debian-gcc@lists.debian.org> Uploaders: Matthias Klose <[EMAIL PROTECTED]> 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 [!alpha !arm !ia64 !m68k !kfreebsd-i386 !knetbsd-i386 !netbsd-i386] | gnat-3.4 [!alpha !arm !ia64 !m68k !kfreebsd-i386 !knetbsd-i386 !netbsd-i386], libncurses5-dev [!netbsd-i386], libmpfr-dev, tetex-bin [!netbsd-i386], locales [!hurd-i386 !knetbsd-i386 !netbsd-i386], procps [alpha arm hppa i386 ia64 m68k mips mipsel powerpc s390 s390x sh3 sh3eb sh4 sh4e b sparc sparc64 amd64], help2man [!netbsd-i386], sharutils, libgtk2.0-dev [!mips !mipsel !knetbsd-i386 !netbsd-i386], libart-2.0-dev [!mips !mipsel !knetbsd-i386 !netbsd-i386], libcairo1-dev (>= 0.3.0) [!mips !mipsel !knetbsd-i386 !netbsd-i386], realpath (>= 1.9.12), chrpath, lsb-release +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-powerpc [ppc64], 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) [!hppa !hurd-i386], expect (>= 5.38.0) [!hppa !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 [!alpha !arm !ia64 !m68k !ppc64 !kfreebsd-i386 !knetbsd-i386 !netbsd-i386] | gnat-3.4 [!alpha !arm !ia64 !m68k !ppc64 !kfreebsd-i386 !knetbsd-i386 !netbsd-i386], libncurses5-dev [!netbsd-i386], libmpfr-dev, 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], libcairo1-dev (>= 0.3.0) [!mips !mipsel !knetbsd-i386 !netbsd-i386], realpath (>= 1.9.12), chrpath, lsb-release Build-Depends-Indep: doxygen (>= 1.3.7), graphviz Package: gcc-4.0-base diff -urN ../tmp-orig/gcc-4.0-4.0ds8/debian/control.m4 ./debian/control.m4 --- ../tmp-orig/gcc-4.0-4.0ds8/debian/control.m4 2005-03-24 09:28:32.520914486 +0100 +++ ./debian/control.m4 2005-03-24 09:31:26.939815592 +0100 @@ -33,7 +33,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)`'TARGETBD ',`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, 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], libcairo1-dev (>= 0.3.0) [java_no_archs], realpath (>= 1.9.12), chrpath, lsb-release +Build-Depends: LIBC_BUILD_DEP, libc6-dev-powerpc [ppc64], 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, 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], libcairo1-dev (>= 0.3.0) [java_no_archs], realpath (>= 1.9.12), chrpath, lsb-release Build-Depends-Indep: doxygen (>= 1.3.7), graphviz ')dnl @@ -109,9 +109,8 @@ Architecture: any Section: libs Priority: optional -Depends: ia32-libs (>= 0.5ubuntu2) -Replaces: ia32-libs.openoffice.org (<< 1ubuntu3) -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. @@ -533,7 +532,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 @@ -641,7 +640,7 @@ Package: gnat`'-GNAT_V Architecture: any Priority: PRI(optional) -Depends: gcc`'PV-base (>= CV), ${shlibs:Depends}, gcc`'PV (>= CV), gcc`'PV (<< NV) +Depends: gcc`'PV-base (>= CV), ${shlibs:Depends}, libgnat`'PV (>= CV), gcc`'PV (>= CV), gcc`'PV (<< NV) Suggests: gnat`'PV-doc, ada-reference-manual Provides: ada-compiler Conflicts: gnat, gnat-3.1, gnat-3.2, gnat-3.3, gnat-3.4, gnat-3.5 diff -urN ../tmp-orig/gcc-4.0-4.0ds8/debian/rules.d/binary-gcc.mk ./debian/rules.d/binary-gcc.mk --- ../tmp-orig/gcc-4.0-4.0ds8/debian/rules.d/binary-gcc.mk 2005-03-24 09:28:32.301060504 +0100 +++ ./debian/rules.d/binary-gcc.mk 2005-03-24 09:31:26.942813601 +0100 @@ -39,7 +39,7 @@ files_gcc += $(gcc_lib_dir)/64/{libgcc*,libgcov.a,*.o} endif ifeq ($(biarch_ia32),yes) - files_gcc += $(gcc_lib_dir)/64/{libgcc*,*.o} + files_gcc += $(gcc_lib_dir)/32/{libgcc*,*.o} endif ifeq ($(DEB_HOST_ARCH),ia64) diff -urN ../tmp-orig/gcc-4.0-4.0ds8/debian/rules.defs ./debian/rules.defs --- ../tmp-orig/gcc-4.0-4.0ds8/debian/rules.defs 2005-03-24 09:28:32.470947672 +0100 +++ ./debian/rules.defs 2005-03-24 09:31:26.945811610 +0100 @@ -571,7 +571,7 @@ #with_lib64gcj := yes endif -ifeq ($(DEB_TARGET_ARCH),amd64) +ifeq ($(DEB_TARGET_ARCH),$(findstring $(DEB_TARGET_ARCH),amd64 ppc64)) biarch_ia32 := yes endif #ifeq ($(DEB_TARGET_ARCH),ia64) diff -urN ../tmp-orig/gcc-4.0-4.0ds8/debian/rules.d/binary-libstdcxx.mk ./debian/rules.d/binary-libstdcxx.mk --- ../tmp-orig/gcc-4.0-4.0ds8/debian/rules.d/binary-libstdcxx.mk 2005-03-24 09:28:32.294065150 +0100 +++ ./debian/rules.d/binary-libstdcxx.mk 2005-03-24 09:31:26.943812937 +0100 @@ -235,17 +235,10 @@ dh_installdirs -p$(p_lib32) \ $(docdir)/$(p_lib32) -ifeq ($(distribution),Debian) - dh_installdirs -p$(p_lib32) \ - emul/ia32-linux/usr/lib - mv $(d)/$(PF)/lib32/libstdc++.so.* \ - $(d_lib32)/emul/ia32-linux/usr/lib/. -else dh_installdirs -p$(p_lib32) \ usr/lib32 mv $(d)/$(PF)/lib32/libstdc++.so.* \ $(d_lib32)/usr/lib32/. -endif dh_installdocs -p$(p_lib32) echo "See /$(docdir)/$(p_base) for more information" \ diff -urN ../tmp-orig/gcc-4.0-4.0ds8/debian/rules2 ./debian/rules2 --- ../tmp-orig/gcc-4.0-4.0ds8/debian/rules2 2005-03-24 09:28:32.478942362 +0100 +++ ./debian/rules2 2005-03-24 09:32:37.046780743 +0100 @@ -146,7 +146,7 @@ ifeq ($(biarch),yes) CONFARGS += --disable-nof --disable-softfloat --with-cpu=default32 else - CONFARGS += --disable-multilib + CONFARGS += --disable-nof --disable-softfloat endif endif diff -urN ../tmp-orig/gcc-4.0-4.0ds8/debian/rules.patch ./debian/rules.patch --- ../tmp-orig/gcc-4.0-4.0ds8/debian/rules.patch 2005-03-24 09:28:32.480941034 +0100 +++ ./debian/rules.patch 2005-03-24 09:31:26.945811610 +0100 @@ -67,6 +67,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.0ds8/debian/patches/ppc64-biarch.dpatch ./debian/patches/ppc64-biarch.dpatch --- ../tmp-orig/gcc-4.0-4.0ds8/debian/patches/ppc64-biarch.dpatch 1970-01-01 01:00:00.000000000 +0100 +++ ./debian/patches/ppc64-biarch.dpatch 2005-03-24 09:31:26.941814265 +0100 @@ -0,0 +1,132 @@ +#! /bin/sh -e + +# DP: biarch patches for 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,10 @@ + + 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_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. +@@ -37,8 +34,11 @@ + mklibgcc: bispecs + + bispecs: specs +- if [ x`$(GCC_FOR_TARGET) -print-multi-os-directory` = x../lib ]; then \ ++ touch f-test.c; \ ++ $(GCC_FOR_TARGET) -c f-test.c -o f-test.o; \ ++ if [ "x`file f-test.o | grep 64-bit`" = "x" ]; then \ + sed -e '/cc1_options/{ n; s/$$/ %{m64:-mlong-double-128}/; }' < specs > $@; \ + else \ + sed -e '/cc1_options/{ n; s/$$/ %{!m32:-mlong-double-128}/; }' < specs > $@; \ +- fi ++ fi; \ ++ rm f-test.c f-test.o; +diff -urN tmp/libjava/configure.host src/libjava/configure.host +--- tmp/libjava/configure.host 25 Nov 2004 03:46:56 -0000 ++++ src/libjava/configure.host 15 Dec 2004 15:45:22 -0000 +@@ -123,10 +123,13 @@ + powerpc64*-*) + sysdeps_dir=powerpc + libgcj_interpreter=yes +- if [ x`$CC -print-multi-os-directory` = x../lib64 ]; then ++ touch f-test.c ++ $CC -c f-test.c -o f-test.o ++ if [ "x`file f-test.o | grep 32-bit`" = "x" ]; then + libgcj_flags="${libgcj_flags} -mminimal-toc" + fi + enable_hash_synchronization_default=yes + slow_pthread_self=yes ++ rm f-test.c f-test.o + ;; + powerpc*-*) +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}" -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]