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

Bug#504487: gcc-4.3 and gcc-4.4: multilib cross fixes



Tags: patch
thanks

Hello,

Al Viro has worked out a patch[1] which fixes multilib cross compilers
on GCC 4.3 and it has been included on GCC CVS HEAD,
  http://svn.debian.org/viewsvn/gcccvs/branches/sid/gcc-4.3/debian/changelog?view=markup

This patch still needs testing for all arches and porting to GCC 4.5


diff -urN X/debian/patches/cross-biarch.patch
gcc-4.3-4.3.2/debian/patches/cross-biarch.patch
--- X/debian/patches/cross-biarch.dpatch	1969-12-31 19:00:00.000000000 -0500
+++ gcc-4.3-4.3.2/debian/patches/cross-biarch.dpatch	2010-08-24
09:19:26.000000000 -0400
@@ -0,0 +1,102 @@
+#! /bin/sh -e
+#
+# DP: Fix the location of target's libs in cross-build for biarch
+
+if [ $# -eq 3 ] && [ "$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 -p0 < $0
+        cd ${dir} && autoconf
+	;;
+    -unpatch)
+	patch $pdir -f --no-backup-if-mismatch -R -p0 < $0
+        cd ${dir} && autoconf
+	;;
+    *)
+	echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+	exit 1;;
+esac
+
+exit 0
+
+--- config-ml.in	2010-08-24 01:48:38.000000000 -0400
++++ config-ml.in	2010-08-24 03:56:12.000000000 -0400
+@@ -540,7 +540,12 @@
+ 	    else \
+ 	      if [ -d ../$${dir}/$${lib} ]; then \
+ 		flags=`echo $$i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; \
+-		if (cd ../$${dir}/$${lib}; $(MAKE) $(FLAGS_TO_PASS) \
++		libsuffix_="$${dir}"; \
++		if [ "$${dir}" = "n32" ]; then libsuffix_=32; fi; \
++		if (cd ../$${dir}/$${lib}; $(MAKE) $(subst \
++				-B$(build_tooldir)/lib/, \
++				-B$(build_tooldir)/lib$${libsuffix_}/, \
++				$(FLAGS_TO_PASS)) \
+ 				CFLAGS="$(CFLAGS) $${flags}" \
+ 				CCASFLAGS="$(CCASFLAGS) $${flags}" \
+ 				FCFLAGS="$(FCFLAGS) $${flags}" \
+@@ -791,6 +796,13 @@
+ 	GCJ_=$GCJ' '
+ 	GFORTRAN_=$GFORTRAN' '
+     else
++	if [ "${ml_dir}" = "." ]; then
++		FILTER_="s!X\\(.*\\)!\\1!p"
++	elif [ "${ml_dir}" = "n32" ]; then # mips n32 -> lib32
++		FILTER_="s!X\\(.*\\)/!\\132/!p"
++	else
++		FILTER_="s!X\\(.*\\)/!\\1${ml_dir}/!p"
++	fi
+ 	# Create a regular expression that matches any string as long
+ 	# as ML_POPDIR.
+ 	popdir_rx=`echo "${ML_POPDIR}" | sed 's,.,.,g'`
+@@ -799,6 +811,8 @@
+ 	  case $arg in
+ 	  -[BIL]"${ML_POPDIR}"/*)
+ 	    CC_="${CC_}"`echo "X${arg}" | sed -n
"s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed
-n "s/X-[BIL]${popdir_rx}\\(.*\\)/\1/p"`' ' ;;
++	  -B*/lib/)
++	    CC_="${CC_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;;
+ 	  "${ML_POPDIR}"/*)
+ 	    CC_="${CC_}"`echo "X${arg}" | sed -n
"s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n
"s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
+ 	  *)
+@@ -811,6 +825,8 @@
+ 	  case $arg in
+ 	  -[BIL]"${ML_POPDIR}"/*)
+ 	    CXX_="${CXX_}"`echo "X${arg}" | sed -n
"s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed
-n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
++	  -B*/lib/)
++	    CXX_="${CXX_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;;
+ 	  "${ML_POPDIR}"/*)
+ 	    CXX_="${CXX_}"`echo "X${arg}" | sed -n
"s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n
"s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
+ 	  *)
+@@ -823,6 +839,8 @@
+ 	  case $arg in
+ 	  -[BIL]"${ML_POPDIR}"/*)
+ 	    F77_="${F77_}"`echo "X${arg}" | sed -n
"s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed
-n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
++	  -B*/lib/)
++	    F77_="${F77_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;;
+ 	  "${ML_POPDIR}"/*)
+ 	    F77_="${F77_}"`echo "X${arg}" | sed -n
"s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n
"s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
+ 	  *)
+@@ -835,6 +853,8 @@
+ 	  case $arg in
+ 	  -[BIL]"${ML_POPDIR}"/*)
+ 	    GCJ_="${GCJ_}"`echo "X${arg}" | sed -n
"s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed
-n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
++	  -B*/lib/)
++	    GCJ_="${GCJ_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;;
+ 	  "${ML_POPDIR}"/*)
+ 	    GCJ_="${GCJ_}"`echo "X${arg}" | sed -n
"s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n
"s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
+ 	  *)
+@@ -847,6 +867,8 @@
+ 	  case $arg in
+ 	  -[BIL]"${ML_POPDIR}"/*)
+ 	    GFORTRAN_="${GFORTRAN_}"`echo "X${arg}" | sed -n
"s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed
-n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
++	  -B*/lib/)
++	    GFORTRAN_="${GFORTRAN_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;;
+ 	  "${ML_POPDIR}"/*)
+ 	    GFORTRAN_="${GFORTRAN_}"`echo "X${arg}" | sed -n
"s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n
"s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
+ 	  *)
diff -urN X/debian/rules.patch gcc-4.3-4.3.2/debian/rules.patch
--- X/debian/rules.patch	2010-08-24 01:16:53.000000000 -0400
+++ gcc-4.3-4.3.2/debian/rules.patch	2010-08-24 09:19:26.000000000 -0400
@@ -231,6 +231,9 @@
   endif
   debian_patches += config-ml

+  ifeq ($(DEB_CROSS),yes)
+    debian_patches += cross-biarch
+  endif
   ifeq ($(DEB_TARGET_ARCH),powerpc)
     debian_patches += powerpc-biarch
   endif
diff -urN X/debian/rules2 gcc-4.3-4.3.2/debian/rules2
--- X/debian/rules2	2010-08-24 01:16:53.000000000 -0400
+++ gcc-4.3-4.3.2/debian/rules2	2010-08-24 09:21:20.000000000 -0400
@@ -1719,6 +1719,10 @@
 	mkdir -p $(d)/$(PF)/s390-linux-gnu/lib64
 	cp -a $(d)/$(PF)/s390x-linux-gnu/lib64/* $(d)/$(PF)/s390-linux-gnu/lib64/
   endif
+  ifeq ($(DEB_TARGET_ARCH),powerpc)
+	: # ppc 64bit build slaps libgcc and libstdc++ to powerpc64-linux-gnu
+	cp -a $(d)/$(PF)/powerpc64-linux-gnu/lib64/*
$(d)/$(PF)/powerpc-linux-gnu/lib64/
+  endif
 endif

 	chmod 755 debian/dh_*
diff -urN X/debian/rules.conf gcc-4.3-4.3.2/debian/rules.conf
--- X/debian/rules.conf	2010-08-24 01:16:53.000000000 -0400
+++ gcc-4.3-4.3.2/debian/rules.conf	2010-08-24 14:25:39.000000000 -0400
@@ -485,7 +485,7 @@

 ifeq ($(DEB_CROSS),yes)
   languages = c c++ objc objpp
-  addons = libgcc lib64gcc lib32gcc libcxx lib32cxx lib64cxx
libn32cxx cdev c++dev libobjc objcdev objppdev gccxbase
+  addons = libgcc lib64gcc lib32gcc libn32gcc libcxx lib32cxx
lib64cxx libn32cxx cdev c++dev libobjc objcdev objppdev gccxbase
 else
   languages = ada c c++ fortran java objc objpp # pascal
   addons = gccbase cdev c++dev fdev libgcj libgcjdev gcjdoc libgnat libs \
diff -u X/debian/rules.d/binary-libstdcxx-cross.mk
gcc-4.3-4.3.2/debian/rules.d/binary-libstdcxx-cross.mk
--- X/debian/rules.d/binary-libstdcxx-cross.mk	2010-08-24
01:16:53.000000000 -0400
+++ gcc-4.3-4.3.2/debian/rules.d/binary-libstdcxx-cross.mk	2010-08-24
15:37:12.000000000 -0400
@@ -265,6 +265,57 @@

 	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)

+$(binary_stamp)-libn32stdcxx: $(install_stamp)
+	dh_testdir
+	dh_testroot
+	mv $(install_stamp) $(install_stamp)-tmp
+
+	rm -rf $(d_libn32)
+	dh_installdirs -p$(p_libn32) $(dirs_lib32)
+	DH_COMPAT=2 dh_movefiles -p$(p_libn32) $(files_lib32)
+
+	dh_installdirs -p$(p_dbgn32) \
+		$(PF)/$(DEB_TARGET_GNU_TYPE)/lib32
+	mv $(d)/$(PF)/$(DEB_TARGET_GNU_TYPE)/lib32/debug
$(d_dbgn32)/$(PF)/$(DEB_TARGET_GNU_TYPE)/lib32/.
+
+	mkdir -p $(d_dbgn32)
+	PATH=/usr/share/dpkg-cross:$$PATH dh_strip -p$(p_libn32) --keep-debug
+	# The above line puts debugging information into some strange location
+	# that is hardcoded into dh_strip. Move it from there.
+	mkdir -p $(d_libn32)/usr/$(DEB_TARGET_GNU_TYPE)/lib32/debug
+	mv $(d_libn32)/usr/lib/debug/usr/$(DEB_TARGET_GNU_TYPE)/lib32/*
$(d_libn32)/usr/$(DEB_TARGET_GNU_TYPE)/lib32/debug/
+	rm -rf $(d_libn32)/usr/lib32
+	# End workaround
+	find $(d_libn32)
+	tar -C $(d_libn32) -c -f - usr/$(DEB_TARGET_GNU_TYPE)/lib32/debug |
tar -v -C $(d_dbgn32) -x -f -
+	rm -rf $(d_libn32)/usr/$(DEB_TARGET_GNU_TYPE)/lib32/debug
+
+	dh_installdocs -p$(p_libn32)
+	echo "See /$(docdir)/$(p_base) for more information" \
+		> $(d_libn32)/$(docdir)/$(p_libn32)/README.Debian
+	dh_installchangelogs -p$(p_libn32)
+	debian/dh_doclink -p$(p_dbgn32) $(p_libn32)
+
+	debian/dh_rmemptydirs -p$(p_libn32)
+	dh_compress -p$(p_libn32)
+	dh_fixperms -p$(p_libn32)
+	dh_makeshlibs -p$(p_libn32) -V '$(p_libn32) (>= $(DEB_STDCXX_SOVERSION))' -n
+	sed s/$(cross_lib_arch)//g < debian/$(p_libn32)/DEBIAN/shlibs >
debian/$(p_libn32)/DEBIAN/shlibs.fixed
+	mv debian/$(p_libn32)/DEBIAN/shlibs.fixed debian/$(p_libn32)/DEBIAN/shlibs
+	mkdir debian/$(p_libn32)-deps
+	ln -s "`readlink -e /usr/$(DEB_TARGET_GNU_TYPE)/lib32`"
debian/$(p_libn32)-deps/lib
+	ARCH=$(DEB_TARGET_ARCH) MAKEFLAGS="CC=something" dh_shlibdeps
-p$(p_libn32) -L$(p_libn32)-deps
+	sed 's/\(lib[^ ]*\) /\1$(cross_lib_arch) /g' <
debian/$(p_libn32).substvars > debian/$(p_libn32).substvars.new
+	mv debian/$(p_libn32).substvars.new debian/$(p_libn32).substvars
+	dh_gencontrol -p$(p_libn32) -- -v$(DEB_VERSION) $(common_substvars)
+	#dh_gencontrol -p$(p_dbgn32) -- -v$(DEB_VERSION) $(common_substvars)
+
+	dh_installdeb -p$(p_libn32)
+	dh_md5sums -p$(p_libn32)
+	dh_builddeb -p$(p_libn32)
+
+	trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp)
+
 # ----------------------------------------------------------------------
 libcxxdev_deps = $(install_stamp)
 ifeq ($(with_libcxx),yes)

[1] ftp://ftp.linux.org.uk/pub/people/viro/gcc-4.3-cross-biarch


For GCC 4.4, it might be a bit early, but:

diff -urN X-gcc/debian/control.m4 gcc-4.4-4.4.4/debian/control.m4
--- X-gcc/debian/control.m4	2010-08-25 00:48:45.000000000 -0400
+++ gcc-4.4-4.4.4/debian/control.m4	2010-08-25 10:22:56.000000000 -0400
@@ -367,7 +367,7 @@

 ifdef(`TARGET', `', `
 ifenabled(`libgmath',`
-Package: libgccmath`'GCCMATH_SO
+Package: libgccmath`'GCCMATH_SO`'LS
 Architecture: i386
 Section: libs
 Priority: PRI(optional)
@@ -375,7 +375,7 @@
 Description: GCC math support library
  Support library for GCC.

-Package: lib32gccmath`'GCCMATH_SO
+Package: lib32gccmath`'GCCMATH_SO`'LS
 Architecture: amd64
 Section: libs
 Priority: PRI(optional)
@@ -383,7 +383,7 @@
 Description: GCC math support library (32bit)
  Support library for GCC.

-Package: lib64gccmath`'GCCMATH_SO
+Package: lib64gccmath`'GCCMATH_SO`'LS
 Architecture: i386
 Section: libs
 Priority: PRI(optional)
@@ -576,8 +576,8 @@
  The libmudflap libraries are used by GCC for instrumenting pointer and array
  dereferencing operations.

-Package: lib32mudflap`'MF_SO
-Architecture: biarch32_archs
+Package: lib32mudflap`'MF_SO`'LS
+Architecture: ifdef(`TARGET',`all',`biarch32_archs')
 Section: libs
 Priority: PRI(optional)
 Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
@@ -587,17 +587,17 @@
  The libmudflap libraries are used by GCC for instrumenting pointer and array
  dereferencing operations.

-Package: lib32mudflap`'MF_SO-dbg
-Architecture: biarch32_archs
+Package: lib32mudflap`'MF_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`all',`biarch32_archs')
 Section: debug
 Priority: extra
-Depends: BASEDEP, lib32mudflap`'MF_SO (= ${gcc:Version}), ${misc:Depends}
+Depends: BASEDEP, lib32mudflap`'MF_SO`'LS (= ${gcc:Version}), ${misc:Depends}
 Description: GCC mudflap shared support libraries (32 bit debug symbols)
  The libmudflap libraries are used by GCC for instrumenting pointer and array
  dereferencing operations.

-Package: lib64mudflap`'MF_SO
-Architecture: biarch64_archs
+Package: lib64mudflap`'MF_SO`'LS
+Architecture: ifdef(`TARGET',`all',`biarch64_archs')
 Section: libs
 Priority: PRI(optional)
 Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
@@ -606,17 +606,17 @@
  The libmudflap libraries are used by GCC for instrumenting pointer and array
  dereferencing operations.

-Package: lib64mudflap`'MF_SO-dbg
-Architecture: biarch64_archs
+Package: lib64mudflap`'MF_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`all',`biarch64_archs')
 Section: debug
 Priority: extra
-Depends: BASEDEP, lib64mudflap`'MF_SO (= ${gcc:Version}), ${misc:Depends}
+Depends: BASEDEP, lib64mudflap`'MF_SO`'LS (= ${gcc:Version}), ${misc:Depends}
 Description: GCC mudflap shared support libraries (64 bit debug symbols)
  The libmudflap libraries are used by GCC for instrumenting pointer and array
  dereferencing operations.

-Package: libn32mudflap`'MF_SO
-Architecture: biarchn32_archs
+Package: libn32mudflap`'MF_SO`'LS
+Architecture: ifdef(`TARGET',`all',`biarchn32_archs')
 Section: libs
 Priority: PRI(optional)
 Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
@@ -625,11 +625,11 @@
  The libmudflap libraries are used by GCC for instrumenting pointer and array
  dereferencing operations.

-Package: libn32mudflap`'MF_SO-dbg
-Architecture: biarchn32_archs
+Package: libn32mudflap`'MF_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`all',`biarchn32_archs')
 Section: debug
 Priority: extra
-Depends: BASEDEP, libn32mudflap`'MF_SO (= ${gcc:Version}), ${misc:Depends}
+Depends: BASEDEP, libn32mudflap`'MF_SO`'LS (= ${gcc:Version}), ${misc:Depends}
 Description: GCC mudflap shared support libraries (n32 debug symbols)
  The libmudflap libraries are used by GCC for instrumenting pointer and array
  dereferencing operations.
@@ -726,11 +726,11 @@
  GOMP is an implementation of OpenMP for the C, C++, and Fortran 95 compilers
  in the GNU Compiler Collection.

-Package: lib32gomp`'GOMP_SO-dbg
-Architecture: biarch32_archs
+Package: lib32gomp`'GOMP_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`all',`biarch32_archs')
 Section: debug
 Priority: extra
-Depends: BASEDEP, lib32gomp`'GOMP_SO (= ${gcc:Version}), ${misc:Depends}
+Depends: BASEDEP, lib32gomp`'GOMP_SO`'LS (= ${gcc:Version}), ${misc:Depends}
 Description: GCC OpenMP (GOMP) support library (32 bit debug symbols)
  GOMP is an implementation of OpenMP for the C, C++, and Fortran 95 compilers
  in the GNU Compiler Collection.
@@ -744,29 +744,29 @@
  GOMP is an implementation of OpenMP for the C, C++, and Fortran 95 compilers
  in the GNU Compiler Collection.

-Package: lib64gomp`'GOMP_SO-dbg
-Architecture: biarch64_archs
+Package: lib64gomp`'GOMP_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`all',`biarch64_archs')
 Section: debug
 Priority: extra
-Depends: BASEDEP, lib64gomp`'GOMP_SO (= ${gcc:Version}), ${misc:Depends}
+Depends: BASEDEP, lib64gomp`'GOMP_SO`'LS (= ${gcc:Version}), ${misc:Depends}
 Description: GCC OpenMP (GOMP) support library (64bit debug symbols)
  GOMP is an implementation of OpenMP for the C, C++, and Fortran 95 compilers
  in the GNU Compiler Collection.

 Package: libn32gomp`'GOMP_SO`'LS
 Section: ifdef(`TARGET',`devel',`libs')
-Architecture: biarchn32_archs
+Architecture: ifdef(`TARGET',`all',`biarchn32_archs')
 Priority: ifdef(`TARGET',`extra',`PRI(optional)')
 Depends: BASEDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends}
 Description: GCC OpenMP (GOMP) support library (n32)
  GOMP is an implementation of OpenMP for the C, C++, and Fortran 95 compilers
  in the GNU Compiler Collection.

-Package: libn32gomp`'GOMP_SO-dbg
-Architecture: biarchn32_archs
+Package: libn32gomp`'GOMP_SO-dbg`'LS
+Architecture: ifdef(`TARGET',`all',`biarchn32_archs')
 Section: debug
 Priority: extra
-Depends: BASEDEP, libn32gomp`'GOMP_SO (= ${gcc:Version}), ${misc:Depends}
+Depends: BASEDEP, libn32gomp`'GOMP_SO`'LS (= ${gcc:Version}), ${misc:Depends}
 Description: GCC OpenMP (GOMP) support library (n32 debug symbols)
  GOMP is an implementation of OpenMP for the C, C++, and Fortran 95 compilers

@@ -874,7 +874,7 @@
 ')`'dnl libobjc

 ifenabled(`lib64objc',`
-Package: lib64objc`'OBJC_SO
+Package: lib64objc`'OBJC_SO`'LS
 Section: ifdef(`TARGET',`devel',`libs')
 Architecture: ifdef(`TARGET',`all',`biarch64_archs')
 Priority: ifdef(`TARGET',`extra',`PRI(optional)')
@@ -884,7 +884,7 @@

 Package: lib64objc`'OBJC_SO-dbg`'LS
 Section: debug
-Architecture: biarch64_archs
+Architecture: ifdef(`TARGET',`all',`biarch64_archs')
 Priority: extra
 Depends: BASEDEP, lib64objc`'OBJC_SO`'LS (= ${gcc:Version}),
lib64gcc`'GCC_SO-dbg`'LS, ${misc:Depends}
 Description: Runtime library for GNU Objective-C applications (64 bit
debug symbols)
@@ -892,7 +892,7 @@
 ')`'dnl lib64objc

 ifenabled(`lib32objc',`
-Package: lib32objc`'OBJC_SO
+Package: lib32objc`'OBJC_SO`'LS
 Section: ifdef(`TARGET',`devel',`libs')
 Architecture: ifdef(`TARGET',`all',`biarch32_archs')
 Priority: ifdef(`TARGET',`extra',`PRI(optional)')
@@ -903,7 +903,7 @@

 Package: lib32objc`'OBJC_SO-dbg`'LS
 Section: debug
-Architecture: biarch32_archs
+Architecture: ifdef(`TARGET',`all',`biarch32_archs')
 Priority: extra
 Depends: BASEDEP, lib32objc`'OBJC_SO`'LS (= ${gcc:Version}),
lib32gcc`'GCC_SO-dbg`'LS, ${misc:Depends}
 Description: Runtime library for GNU Objective-C applications (32 bit
debug symbols)
@@ -911,7 +911,7 @@
 ')`'dnl lib32objc

 ifenabled(`libn32objc',`
-Package: libn32objc`'OBJC_SO
+Package: libn32objc`'OBJC_SO`'LS
 Section: ifdef(`TARGET',`devel',`libs')
 Architecture: ifdef(`TARGET',`all',`biarchn32_archs')
 Priority: ifdef(`TARGET',`extra',`PRI(optional)')
@@ -921,7 +921,7 @@

 Package: libn32objc`'OBJC_SO-dbg`'LS
 Section: debug
-Architecture: biarchn32_archs
+Architecture: ifdef(`TARGET',`all',`biarchn32_archs')
 Priority: extra
 Depends: BASEDEP, libn32objc`'OBJC_SO`'LS (= ${gcc:Version}),
libn32gcc`'GCC_SO-dbg`'LS, ${misc:Depends}
 Description: Runtime library for GNU Objective-C applications (n32
debug symbols)
@@ -1011,11 +1011,11 @@
  Library needed for GNU Fortran applications linked against the
  shared library.

-Package: lib64gfortran`'FORTRAN_SO-dbg
+Package: lib64gfortran`'FORTRAN_SO-dbg`'LS
 Section: debug
-Architecture: biarch64_archs
+Architecture: ifdef(`TARGET',`all',`biarch64_archs')
 Priority: extra
-Depends: BASEDEP, lib64gfortran`'FORTRAN_SO (= ${gcc:Version}), ${misc:Depends}
+Depends: BASEDEP, lib64gfortran`'FORTRAN_SO`'LS (= ${gcc:Version}),
${misc:Depends}
 Description: Runtime library for GNU Fortran applications (64bit debug symbols)
  Library needed for GNU Fortran applications linked against the
  shared library.
@@ -1032,11 +1032,11 @@
  Library needed for GNU Fortran applications linked against the
  shared library.

-Package: lib32gfortran`'FORTRAN_SO-dbg
+Package: lib32gfortran`'FORTRAN_SO-dbg`'LS
 Section: debug
-Architecture: biarch32_archs
+Architecture: ifdef(`TARGET',`all',`biarch32_archs')
 Priority: extra
-Depends: BASEDEP, lib32gfortran`'FORTRAN_SO (= ${gcc:Version}), ${misc:Depends}
+Depends: BASEDEP, lib32gfortran`'FORTRAN_SO`'LS (= ${gcc:Version}),
${misc:Depends}
 Description: Runtime library for GNU Fortran applications (32 bit
debug symbols)
  Library needed for GNU Fortran applications linked against the
  shared library.
@@ -1052,11 +1052,11 @@
  Library needed for GNU Fortran applications linked against the
  shared library.

-Package: libn32gfortran`'FORTRAN_SO-dbg
+Package: libn32gfortran`'FORTRAN_SO-dbg`'LS
 Section: debug
-Architecture: biarchn32_archs
+Architecture: ifdef(`TARGET',`all',`biarchn32_archs')
 Priority: extra
-Depends: BASEDEP, libn32gfortran`'FORTRAN_SO (= ${gcc:Version}),
${misc:Depends}
+Depends: BASEDEP, libn32gfortran`'FORTRAN_SO`'LS (= ${gcc:Version}),
${misc:Depends}
 Description: Runtime library for GNU Fortran applications (n32 debug symbols)
  Library needed for GNU Fortran applications linked against the
  shared library.
diff -urN X-gcc/debian/patches/cross-biarch.diff
gcc-4.4-4.4.4/debian/patches/cross-biarch.diff
--- X-gcc/debian/patches/cross-biarch.diff	1969-12-31 19:00:00.000000000 -0500
+++ gcc-4.4-4.4.4/debian/patches/cross-biarch.diff	2010-08-25
00:49:09.000000000 -0400
@@ -0,0 +1,79 @@
+# DP: Fix the location of target's libs in cross-build for biarch
+
+---
+
+--- a/src/config-ml.in	2010-08-24 01:48:38.000000000 -0400
++++ b/src/config-ml.in	2010-08-24 03:56:12.000000000 -0400
+@@ -540,7 +540,12 @@
+ 	    else \
+ 	      if [ -d ../$${dir}/$${lib} ]; then \
+ 		flags=`echo $$i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; \
+-		if (cd ../$${dir}/$${lib}; $(MAKE) $(FLAGS_TO_PASS) \
++		libsuffix_="$${dir}"; \
++		if [ "$${dir}" = "n32" ]; then libsuffix_=32; fi; \
++		if (cd ../$${dir}/$${lib}; $(MAKE) $(subst \
++				-B$(build_tooldir)/lib/, \
++				-B$(build_tooldir)/lib$${libsuffix_}/, \
++				$(FLAGS_TO_PASS)) \
+ 				CFLAGS="$(CFLAGS) $${flags}" \
+ 				CCASFLAGS="$(CCASFLAGS) $${flags}" \
+ 				FCFLAGS="$(FCFLAGS) $${flags}" \
+@@ -791,6 +796,13 @@
+ 	GCJ_=$GCJ' '
+ 	GFORTRAN_=$GFORTRAN' '
+     else
++	if [ "${ml_dir}" = "." ]; then
++		FILTER_="s!X\\(.*\\)!\\1!p"
++	elif [ "${ml_dir}" = "n32" ]; then # mips n32 -> lib32
++		FILTER_="s!X\\(.*\\)/!\\132/!p"
++	else
++		FILTER_="s!X\\(.*\\)/!\\1${ml_dir}/!p"
++	fi
+ 	# Create a regular expression that matches any string as long
+ 	# as ML_POPDIR.
+ 	popdir_rx=`echo "${ML_POPDIR}" | sed 's,.,.,g'`
+@@ -799,6 +811,8 @@
+ 	  case $arg in
+ 	  -[BIL]"${ML_POPDIR}"/*)
+ 	    CC_="${CC_}"`echo "X${arg}" | sed -n
"s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed
-n "s/X-[BIL]${popdir_rx}\\(.*\\)/\1/p"`' ' ;;
++	  -B*/lib/)
++	    CC_="${CC_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;;
+ 	  "${ML_POPDIR}"/*)
+ 	    CC_="${CC_}"`echo "X${arg}" | sed -n
"s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n
"s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
+ 	  *)
+@@ -811,6 +825,8 @@
+ 	  case $arg in
+ 	  -[BIL]"${ML_POPDIR}"/*)
+ 	    CXX_="${CXX_}"`echo "X${arg}" | sed -n
"s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed
-n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
++	  -B*/lib/)
++	    CXX_="${CXX_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;;
+ 	  "${ML_POPDIR}"/*)
+ 	    CXX_="${CXX_}"`echo "X${arg}" | sed -n
"s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n
"s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
+ 	  *)
+@@ -823,6 +839,8 @@
+ 	  case $arg in
+ 	  -[BIL]"${ML_POPDIR}"/*)
+ 	    F77_="${F77_}"`echo "X${arg}" | sed -n
"s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed
-n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
++	  -B*/lib/)
++	    F77_="${F77_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;;
+ 	  "${ML_POPDIR}"/*)
+ 	    F77_="${F77_}"`echo "X${arg}" | sed -n
"s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n
"s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
+ 	  *)
+@@ -835,6 +853,8 @@
+ 	  case $arg in
+ 	  -[BIL]"${ML_POPDIR}"/*)
+ 	    GCJ_="${GCJ_}"`echo "X${arg}" | sed -n
"s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed
-n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
++	  -B*/lib/)
++	    GCJ_="${GCJ_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;;
+ 	  "${ML_POPDIR}"/*)
+ 	    GCJ_="${GCJ_}"`echo "X${arg}" | sed -n
"s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n
"s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
+ 	  *)
+@@ -847,6 +867,8 @@
+ 	  case $arg in
+ 	  -[BIL]"${ML_POPDIR}"/*)
+ 	    GFORTRAN_="${GFORTRAN_}"`echo "X${arg}" | sed -n
"s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed
-n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
++	  -B*/lib/)
++	    GFORTRAN_="${GFORTRAN_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;;
+ 	  "${ML_POPDIR}"/*)
+ 	    GFORTRAN_="${GFORTRAN_}"`echo "X${arg}" | sed -n
"s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n
"s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
+ 	  *)
diff -urN X-gcc/debian/rules.d/binary-cxx.mk
gcc-4.4-4.4.4/debian/rules.d/binary-cxx.mk
--- X-gcc/debian/rules.d/binary-cxx.mk	2010-08-25 00:48:45.000000000 -0400
+++ gcc-4.4-4.4.4/debian/rules.d/binary-cxx.mk	2010-08-25
10:36:00.000000000 -0400
@@ -1,6 +1,9 @@
+# TODO: enable later (requires updating control generation)
+ifneq ($(DEB_CROSS),yes)
 ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32)))
   arch_binaries  := $(arch_binaries) cxx-multi
 endif
+endif
 arch_binaries  := $(arch_binaries) cxx

 dirs_cxx = \
diff -urN X-gcc/debian/rules.d/binary-fortran.mk
gcc-4.4-4.4.4/debian/rules.d/binary-fortran.mk
--- X-gcc/debian/rules.d/binary-fortran.mk	2010-08-25 00:48:45.000000000 -0400
+++ gcc-4.4-4.4.4/debian/rules.d/binary-fortran.mk	2010-08-25
10:51:27.000000000 -0400
@@ -12,9 +12,12 @@
 endif

 ifeq ($(with_fdev),yes)
+  # TODO: enable later (requires updating control generation)
+  ifneq ($(DEB_CROSS),yes)
   ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32)))
     arch_binaries  := $(arch_binaries) fdev-multi
   endif
+  endif
   arch_binaries  := $(arch_binaries) fdev
   ifneq ($(DEB_CROSS),yes)
     ifneq ($(GFDL_INVARIANT_FREE),yes)
@@ -31,9 +34,9 @@
 p_f64lib= lib64gfortran$(FORTRAN_SONAME)$(cross_lib_arch)
 p_fn32lib= libn32gfortran$(FORTRAN_SONAME)$(cross_lib_arch)
 p_flibdbg	= libgfortran$(FORTRAN_SONAME)-dbg$(cross_lib_arch)
-p_f32libdbg	= lib32gfortran$(FORTRAN_SONAME)-dbg
-p_f64libdbg	= lib64gfortran$(FORTRAN_SONAME)-dbg
-p_fn32libdbg	= libn32gfortran$(FORTRAN_SONAME)-dbg
+p_f32libdbg	= lib32gfortran$(FORTRAN_SONAME)-dbg$(cross_lib_arch)
+p_f64libdbg	= lib64gfortran$(FORTRAN_SONAME)-dbg$(cross_lib_arch)
+p_fn32libdbg	= libn32gfortran$(FORTRAN_SONAME)-dbg$(cross_lib_arch)

 d_g95	= debian/$(p_g95)
 d_g95_m	= debian/$(p_g95_m)
diff -urN X-gcc/debian/rules.d/binary-libgcc.mk
gcc-4.4-4.4.4/debian/rules.d/binary-libgcc.mk
--- X-gcc/debian/rules.d/binary-libgcc.mk	2010-08-25 00:48:45.000000000 -0400
+++ gcc-4.4-4.4.4/debian/rules.d/binary-libgcc.mk	2010-08-25
08:39:03.000000000 -0400
@@ -96,7 +96,7 @@
 		$(RPF)/lib64

 ifeq ($(with_shared_libgcc),yes)
-	mv $(d)/$(PF)/lib64/libgcc_s.so.$(GCC_SONAME) $(d_l64gcc)/lib64/.
+	mv $(d)/$(PFL)/lib64/libgcc_s.so.$(GCC_SONAME) $(d_l64gcc)/$(RPF)/lib64/.
 endif

 	debian/dh_doclink -p$(p_l64gcc) $(p_base)
diff -urN X-gcc/debian/rules.d/binary-libgomp.mk
gcc-4.4-4.4.4/debian/rules.d/binary-libgomp.mk
--- X-gcc/debian/rules.d/binary-libgomp.mk	2010-08-25 00:48:45.000000000 -0400
+++ gcc-4.4-4.4.4/debian/rules.d/binary-libgomp.mk	2010-08-25
09:56:37.000000000 -0400
@@ -68,9 +68,9 @@

 	rm -rf $(d_l64gomp) $(d_l64gompdbg)
 	dh_installdirs -p$(p_l64gomp) \
-		$(PF)/lib64
+		$(PFL)/lib64
 	DH_COMPAT=2 dh_movefiles -p$(p_l64gomp) \
-		$(PF)/lib64/libgomp.so.*
+		$(PFL)/lib64/libgomp.so.*

 	debian/dh_doclink -p$(p_l64gomp) $(p_base)
 	debian/dh_doclink -p$(p_l64gompdbg) $(p_base)
@@ -127,9 +127,9 @@

 	rm -rf $(d_ln32gomp) $(d_ln32gompdbg)
 	dh_installdirs -p$(p_ln32gomp) \
-		$(PF)/$(libn32)
+		$(PFL)/$(libn32)
 	DH_COMPAT=2 dh_movefiles -p$(p_ln32gomp) \
-		$(PF)/$(libn32)/libgomp.so.*
+		$(PFL)/$(libn32)/libgomp.so.*

 	debian/dh_doclink -p$(p_ln32gomp) $(p_base)
 	debian/dh_doclink -p$(p_ln32gompdbg) $(p_base)
diff -urN X-gcc/debian/rules.d/binary-libstdcxx.mk
gcc-4.4-4.4.4/debian/rules.d/binary-libstdcxx.mk
--- X-gcc/debian/rules.d/binary-libstdcxx.mk	2010-08-25 00:48:45.000000000 -0400
+++ gcc-4.4-4.4.4/debian/rules.d/binary-libstdcxx.mk	2010-08-25
10:20:02.000000000 -0400
@@ -37,9 +37,9 @@
 p_dev	= libstdc++$(CXX_SONAME)$(libstdc_ext)-dev$(cross_lib_arch)
 p_pic	= libstdc++$(CXX_SONAME)$(libstdc_ext)-pic$(cross_lib_arch)
 p_dbg	= libstdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch)
-p_dbg64	= $(p_lib64)$(libstdc_ext)-dbg$(cross_lib_arch)
-p_dbg32	= $(p_lib32)$(libstdc_ext)-dbg$(cross_lib_arch)
-p_dbgn32= $(p_libn32)$(libstdc_ext)-dbg$(cross_lib_arch)
+p_dbg64	= lib64stdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch)
+p_dbg32	= lib32stdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch)
+p_dbgn32= libn32stdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch)
 p_libd	= libstdc++$(CXX_SONAME)$(libstdc_ext)-doc

 d_lib	= debian/$(p_lib)
@@ -200,12 +200,12 @@

 	rm -rf $(d_dbg64)
 	dh_installdirs -p$(p_dbg64) \
-		$(PF)/lib64
+		$(PFL)/lib64
 ifeq ($(with_lib64cxx),yes)
-	cp -a $(d)/$(PF)/lib64/libstdc++.so.* \
-		$(d_dbg64)/$(PF)/lib64/.
+	cp -a $(d)/$(PFL)/lib64/libstdc++.so.* \
+		$(d_dbg64)/$(PFL)/lib64/.
 	dh_strip -p$(p_dbg64) --keep-debug
-	rm -f $(d_dbg64)/$(PF)/lib64/libstdc++.so.*
+	rm -f $(d_dbg64)/$(PFL)/lib64/libstdc++.so.*
   ifneq ($(with_common_libs),yes)
 	: # remove the debug symbols for libstdc++ built by a newer version of GCC
 	rm -rf $(d_dbg64)/usr/lib/debug/$(PF)
@@ -215,8 +215,8 @@
 		> debian/$(p_dbg64).substvars

 ifeq ($(with_debug),yes)
-	mv $(d)/$(PF)/lib64/debug $(d_dbg64)/$(PF)/lib64/.
-	rm -f $(d_dbg64)/$(PF)/lib64/debug/libstdc++_pic.a
+	mv $(d)/$(PFL)/lib64/debug $(d_dbg64)/$(PFL)/lib64/.
+	rm -f $(d_dbg64)/$(PFL)/lib64/debug/libstdc++_pic.a
 endif

 	debian/dh_doclink -p$(p_dbg64) $(p_base)
@@ -328,10 +328,10 @@

 	dh_installdirs -p$(p_libn32) \
 		$(docdir) \
-		$(PF)/$(libn32)
+		$(PFL)/$(libn32)

-	cp -a $(d)/$(PF)/$(libn32)/libstdc++.so.* \
-		$(d_libn32)/$(PF)/$(libn32)/.
+	cp -a $(d)/$(PFL)/$(libn32)/libstdc++.so.* \
+		$(d_libn32)/$(PFL)/$(libn32)/.

 	debian/dh_doclink -p$(p_libn32) $(p_base)
 	debian/dh_rmemptydirs -p$(p_libn32)
@@ -356,21 +356,21 @@

 	rm -rf $(d_dbgn32)
 	dh_installdirs -p$(p_dbgn32) \
-		$(PF)/$(libn32)
+		$(PFL)/$(libn32)

 ifeq ($(with_libn32cxx),yes)
-	cp -a $(d)/$(PF)/$(libn32)/libstdc++.so.* \
-		$(d_dbgn32)/$(PF)/$(libn32)/.
+	cp -a $(d)/$(PFL)/$(libn32)/libstdc++.so.* \
+		$(d_dbgn32)/$(PFL)/$(libn32)/.
 	dh_strip -p$(p_dbgn32) --keep-debug
   ifneq ($(with_common_libs),yes)
 	: # remove the debug symbols for libstdc++ built by a newer version of GCC
 	rm -rf $(d_dbgn32)/usr/lib/debug/$(PF)
   endif
-	rm -f $(d_dbgn32)/$(PF)/$(libn32)/libstdc++.so.*
+	rm -f $(d_dbgn32)/$(PFL)/$(libn32)/libstdc++.so.*
 endif

 ifeq ($(with_debug),yes)
-	mv $(d)/$(PF)/$(libn32)/debug $(d_dbgn32)/$(PF)/$(libn32)/.
+	mv $(d)/$(PFL)/$(libn32)/debug $(d_dbgn32)/$(PFL)/$(libn32)/.
 	rm -f $(d_dbgn32)/$(libn32)/debug/libstdc++_pic.a
 endif

diff -urN X-gcc/debian/rules.d/binary-objc.mk
gcc-4.4-4.4.4/debian/rules.d/binary-objc.mk
--- X-gcc/debian/rules.d/binary-objc.mk	2010-08-25 00:48:45.000000000 -0400
+++ gcc-4.4-4.4.4/debian/rules.d/binary-objc.mk	2010-08-25
10:48:40.000000000 -0400
@@ -1,6 +1,9 @@
+# TODO: enable later (requires updating control generation)
+ifneq ($(DEB_CROSS),yes)
 ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32)))
   arch_binaries  := $(arch_binaries) objc-multi
 endif
+endif
 arch_binaries := $(arch_binaries) objc

 p_objc	= gobjc$(pkg_ver)$(cross_bin_arch)
@@ -24,7 +27,7 @@
 	dh_testroot
 	mv $(install_stamp) $(install_stamp)-tmp

-	rm -f $(d)/$(PF)/$(libdir)/libobjc.{la,so}
+	rm -f $(d)/$(PFL)/$(libdir)/libobjc.{la,so}
 	mv $(d)/$(PFL)/$(libdir)/libobjc*.a $(d)/$(gcc_lib_dir)/

 	rm -rf $(d_objc)
@@ -72,14 +75,14 @@
 		$(gcc_lib_dir)/$(biarchsubdirs)

 ifeq ($(biarch64),yes)
-	rm -f $(d)/$(PF)/lib64/libobjc*.{la,so}
+	rm -f $(d)/$(PFL)/lib64/libobjc*.{la,so}
 	mkdir -p $(d_objc_m)/$(gcc_lib_dir)/$(biarch64subdir)
-	mv $(d)/$(PF)/lib64/libobjc*.a $(d_objc_m)/$(gcc_lib_dir)/$(biarch64subdir)/
+	mv $(d)/$(PFL)/lib64/libobjc*.a $(d_objc_m)/$(gcc_lib_dir)/$(biarch64subdir)/
 	dh_link -p$(p_objc_m) \
-	  /$(PF)/lib64/libobjc.so.$(OBJC_SONAME)
/$(gcc_lib_dir)/$(biarch64subdir)/libobjc.so
+	  /$(PFL)/lib64/libobjc.so.$(OBJC_SONAME)
/$(gcc_lib_dir)/$(biarch64subdir)/libobjc.so
   ifeq ($(with_objc_gc),yes)
 	dh_link -p$(p_objc_m) \
-	  /$(PF)/lib64/libobjc_gc.so.$(OBJC_SONAME)
/$(gcc_lib_dir)/$(biarch64subdir)/libobjc_gc.so
+	  /$(PFL)/lib64/libobjc_gc.so.$(OBJC_SONAME)
/$(gcc_lib_dir)/$(biarch64subdir)/libobjc_gc.so
   endif
 endif
 ifeq ($(biarch32),yes)
@@ -94,9 +97,9 @@
   endif
 endif
 ifeq ($(biarchn32),yes)
-	rm -f $(d)/$(PF)/$(libn32)/libobjc*.{la,so}
+	rm -f $(d)/$(PFL)/$(libn32)/libobjc*.{la,so}
 	mkdir -p $(d_objc_m)/$(gcc_lib_dir)/$(biarchn32subdir)
-	mv $(d)/$(PF)/$(libn32)/libobjc*.a
$(d_objc_m)/$(gcc_lib_dir)/$(biarchn32subdir)/
+	mv $(d)/$(PFL)/$(libn32)/libobjc*.a
$(d_objc_m)/$(gcc_lib_dir)/$(biarchn32subdir)/
 	dh_link -p$(p_objc_m) \
 	  /$(libn32)/libobjc.so.$(OBJC_SONAME)
/$(gcc_lib_dir)/$(biarchn32subdir)/libobjc.so
   ifeq ($(with_objc_gc),yes)
diff -urN X-gcc/debian/rules.d/binary-objcxx.mk
gcc-4.4-4.4.4/debian/rules.d/binary-objcxx.mk
--- X-gcc/debian/rules.d/binary-objcxx.mk	2010-08-25 00:48:45.000000000 -0400
+++ gcc-4.4-4.4.4/debian/rules.d/binary-objcxx.mk	2010-08-25
10:36:58.000000000 -0400
@@ -1,6 +1,9 @@
+# TODO: enable later (requires updating control generation)
+ifneq ($(DEB_CROSS),yes)
 ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32)))
   arch_binaries  := $(arch_binaries) objcxx-multi
 endif
+endif
 arch_binaries := $(arch_binaries) objcxx

 p_objcx		= gobjc++$(pkg_ver)$(cross_bin_arch)
diff -urN X-gcc/debian/rules.patch gcc-4.4-4.4.4/debian/rules.patch
--- X-gcc/debian/rules.patch	2010-08-25 00:48:45.000000000 -0400
+++ gcc-4.4-4.4.4/debian/rules.patch	2010-08-25 00:49:59.000000000 -0400
@@ -257,6 +257,9 @@
   endif
   debian_patches += config-ml

+  ifeq ($(DEB_CROSS),yes)
+    debian_patches += cross-biarch
+  endif
   ifeq ($(DEB_TARGET_ARCH),powerpc)
     debian_patches += powerpc-biarch
   endif
diff -urN X-gcc/debian/rules2 gcc-4.4-4.4.4/debian/rules2
--- X-gcc/debian/rules2	2010-08-25 00:48:45.000000000 -0400
+++ gcc-4.4-4.4.4/debian/rules2	2010-08-25 00:49:59.000000000 -0400
@@ -1921,6 +1921,10 @@
 	mkdir -p $(d)/$(PF)/s390-linux-gnu/lib64
 	cp -a $(d)/$(PF)/s390x-linux-gnu/lib64/* $(d)/$(PF)/s390-linux-gnu/lib64/
   endif
+  ifeq ($(DEB_TARGET_ARCH),powerpc)
+	: # ppc 64bit build slaps libgcc and libstdc++ to powerpc64-linux-gnu
+	cp -a $(d)/$(PF)/powerpc64-linux-gnu/lib64/*
$(d)/$(PF)/powerpc-linux-gnu/lib64/
+  endif
 endif

 	chmod 755 debian/dh_*

[2] ftp://ftp.linux.org.uk/pub/people/viro/gcc-cross-patch-4.4

-- 
 Héctor Orón

"Our Sun unleashes tremendous flares expelling hot gas into the Solar
System, which one day will disconnect us."

-- Day DVB-T stop working nicely
Video flare: http://antwrp.gsfc.nasa.gov/apod/ap100510.html



Reply to: