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

Bug#742860: mips64(el) and mipsn32(el) support with multilib



Package: gcc-4.7
Version: 4.7.3-12

Hi, this the patch of mips64(el) and mipsn32(el) support with multilib
for gcc-4.7.

I also disable define TARGET when with_deps_on_target_arch_pkgs=yes is used.

I do this is because the kernel for Loongson 3 built with gcc-4.8 and
gcc-4.9 cannot boot at all.
So I have to built this kernel with gcc-4.7.
Maybe this is the problem of gcc-4.{8,9} or Loongson's kernel patch.

-- 
Yunqiang Su
diff -urN gcc-4.7-4.7.3/debian/lib32gfortran3.symbols.mips64 gcc-4.7-4.7.3-new/debian/lib32gfortran3.symbols.mips64
--- gcc-4.7-4.7.3/debian/lib32gfortran3.symbols.mips64	1970-01-01 00:00:00.000000000 +0000
+++ gcc-4.7-4.7.3-new/debian/lib32gfortran3.symbols.mips64	2014-03-28 05:09:43.944673467 +0000
@@ -0,0 +1,2 @@
+libgfortran.so.3 lib32gfortran3 #MINVER#
+#include "libgfortran3.symbols.common"
diff -urN gcc-4.7-4.7.3/debian/lib32gfortran3.symbols.mips64el gcc-4.7-4.7.3-new/debian/lib32gfortran3.symbols.mips64el
--- gcc-4.7-4.7.3/debian/lib32gfortran3.symbols.mips64el	1970-01-01 00:00:00.000000000 +0000
+++ gcc-4.7-4.7.3-new/debian/lib32gfortran3.symbols.mips64el	2014-03-28 05:09:43.944673467 +0000
@@ -0,0 +1,2 @@
+libgfortran.so.3 lib32gfortran3 #MINVER#
+#include "libgfortran3.symbols.common"
diff -urN gcc-4.7-4.7.3/debian/lib32gfortran3.symbols.mipsn32 gcc-4.7-4.7.3-new/debian/lib32gfortran3.symbols.mipsn32
--- gcc-4.7-4.7.3/debian/lib32gfortran3.symbols.mipsn32	1970-01-01 00:00:00.000000000 +0000
+++ gcc-4.7-4.7.3-new/debian/lib32gfortran3.symbols.mipsn32	2014-03-28 05:09:43.944673467 +0000
@@ -0,0 +1,2 @@
+libgfortran.so.3 lib32gfortran3 #MINVER#
+#include "libgfortran3.symbols.common"
diff -urN gcc-4.7-4.7.3/debian/lib32gfortran3.symbols.mipsn32el gcc-4.7-4.7.3-new/debian/lib32gfortran3.symbols.mipsn32el
--- gcc-4.7-4.7.3/debian/lib32gfortran3.symbols.mipsn32el	1970-01-01 00:00:00.000000000 +0000
+++ gcc-4.7-4.7.3-new/debian/lib32gfortran3.symbols.mipsn32el	2014-03-28 05:09:43.944673467 +0000
@@ -0,0 +1,2 @@
+libgfortran.so.3 lib32gfortran3 #MINVER#
+#include "libgfortran3.symbols.common"
diff -urN gcc-4.7-4.7.3/debian/patches/gcc-multilib-multiarch.diff gcc-4.7-4.7.3-new/debian/patches/gcc-multilib-multiarch.diff
--- gcc-4.7-4.7.3/debian/patches/gcc-multilib-multiarch.diff	2014-03-28 07:09:40.000000000 +0000
+++ gcc-4.7-4.7.3-new/debian/patches/gcc-multilib-multiarch.diff	2014-03-28 05:50:46.414311111 +0000
@@ -1,9 +1,9 @@
 # DP: Don't auto-detect multilib osdirnames.
 
-Index: b/src/gcc/config/sparc/t-linux64
+Index: gcc-4.7-4.7.3/src/gcc/config/sparc/t-linux64
 ===================================================================
---- a/src/gcc/config/sparc/t-linux64
-+++ b/src/gcc/config/sparc/t-linux64
+--- gcc-4.7-4.7.3.orig/src/gcc/config/sparc/t-linux64	2014-03-28 05:47:03.464352040 +0000
++++ gcc-4.7-4.7.3/src/gcc/config/sparc/t-linux64	2014-03-28 05:47:03.460352005 +0000
 @@ -26,7 +26,12 @@
  
  MULTILIB_OPTIONS = m64/m32
@@ -18,10 +18,10 @@
 +endif
  
  MULTIARCH_DIRNAME = $(call if_multiarch,sparc$(if $(findstring 64,$(target)),64)-linux-gnu)
-Index: b/src/gcc/config/s390/t-linux64
+Index: gcc-4.7-4.7.3/src/gcc/config/s390/t-linux64
 ===================================================================
---- a/src/gcc/config/s390/t-linux64
-+++ b/src/gcc/config/s390/t-linux64
+--- gcc-4.7-4.7.3.orig/src/gcc/config/s390/t-linux64	2014-03-28 05:47:03.464352040 +0000
++++ gcc-4.7-4.7.3/src/gcc/config/s390/t-linux64	2014-03-28 05:47:03.460352005 +0000
 @@ -7,7 +7,12 @@
  
  MULTILIB_OPTIONS = m64/m31
@@ -36,10 +36,10 @@
 +endif
  
  MULTIARCH_DIRNAME = $(call if_multiarch,s390$(if $(findstring s390x,$(target)),x)-linux-gnu)
-Index: b/src/gcc/config/rs6000/t-linux64
+Index: gcc-4.7-4.7.3/src/gcc/config/rs6000/t-linux64
 ===================================================================
---- a/src/gcc/config/rs6000/t-linux64
-+++ b/src/gcc/config/rs6000/t-linux64
+--- gcc-4.7-4.7.3.orig/src/gcc/config/rs6000/t-linux64	2014-03-28 05:47:03.464352040 +0000
++++ gcc-4.7-4.7.3/src/gcc/config/rs6000/t-linux64	2014-03-28 05:47:03.460352005 +0000
 @@ -31,8 +31,13 @@
  MULTILIB_EXTRA_OPTS     = fPIC mstrict-align
  MULTILIB_EXCEPTIONS     =
@@ -55,10 +55,10 @@
  MULTILIB_MATCHES        =
  
  MULTIARCH_DIRNAME = $(call if_multiarch,powerpc$(if $(findstring 64,$(target)),64)-linux-gnu)
-Index: b/src/gcc/config/i386/t-linux64
+Index: gcc-4.7-4.7.3/src/gcc/config/i386/t-linux64
 ===================================================================
---- a/src/gcc/config/i386/t-linux64
-+++ b/src/gcc/config/i386/t-linux64
+--- gcc-4.7-4.7.3.orig/src/gcc/config/i386/t-linux64	2014-03-28 05:47:03.464352040 +0000
++++ gcc-4.7-4.7.3/src/gcc/config/i386/t-linux64	2014-03-28 05:47:03.460352005 +0000
 @@ -34,9 +34,19 @@
  comma=,
  MULTILIB_OPTIONS    = $(subst $(comma),/,$(TM_MULTILIB_CONFIG))
@@ -80,3 +80,48 @@
  
  ifneq (,$(findstring x86_64,$(target)))
    ifneq (,$(findstring biarchx32.h,$(tm_include_list)))
+Index: gcc-4.7-4.7.3/src/gcc/config/mips/t-linux64
+===================================================================
+--- gcc-4.7-4.7.3.orig/src/gcc/config/mips/t-linux64	2014-03-28 05:47:03.464352040 +0000
++++ gcc-4.7-4.7.3/src/gcc/config/mips/t-linux64	2014-03-28 05:47:03.460352005 +0000
+@@ -25,6 +25,23 @@
+ 	../lib$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \
+ 	../lib64$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))
+ 
++ifneq (,$(findstring gnuabi64,$(target)))
++MULTILIB_OSDIRNAMES = \
++        ../lib32$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \
++        ../libo32$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \
++        ../lib$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))
++else ifneq (,$(findstring gnuabin32,$(target)))
++MULTILIB_OSDIRNAMES = \
++        ../lib$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \
++        ../libo32$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \
++        ../lib64$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))
++else
++MULTILIB_OSDIRNAMES = \
++        ../lib32$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \
++        ../lib$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \
++        ../lib64$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))
++endif
++
+ ifneq (,$(findstring abin32,$(target)))
+ MULTIARCH_DIRNAME = $(call if_multiarch,mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT))
+ else
+Index: gcc-4.7-4.7.3/src/gcc/config.gcc
+===================================================================
+--- gcc-4.7-4.7.3.orig/src/gcc/config.gcc	2014-03-28 05:47:03.324350810 +0000
++++ gcc-4.7-4.7.3/src/gcc/config.gcc	2014-03-28 05:50:37.446232990 +0000
+@@ -1807,6 +1807,12 @@
+ 	tmake_file="${tmake_file} mips/t-linux64"
+ 	tm_defines="${tm_defines} MIPS_ABI_DEFAULT=ABI_N32"
+ 	case ${target} in
++		*abi64*)
++			tm_defines=$(echo ${tm_defines}| sed 's/MIPS_ABI_DEFAULT=ABI_N32/MIPS_ABI_DEFAULT=ABI_64/g')
++			;;
++	esac
++
++	case ${target} in
+ 		mips64el-st-linux-gnu)
+ 			tm_file="${tm_file} mips/st.h"
+ 			tmake_file="${tmake_file} mips/t-st"
diff -urN gcc-4.7-4.7.3/debian/rules2 gcc-4.7-4.7.3-new/debian/rules2
--- gcc-4.7-4.7.3/debian/rules2	2014-03-28 07:09:40.000000000 +0000
+++ gcc-4.7-4.7.3-new/debian/rules2	2014-03-28 05:27:11.401877334 +0000
@@ -520,6 +520,51 @@
   endif
 endif
 
+#FIXME: howto for mipsn32?
+ifneq (,$(findstring mips64el-linux-gnuabin32,$(DEB_TARGET_GNU_TYPE)))
+  CONFARGS += --with-mips-plt
+  ifeq ($(multilib),yes)
+    ifeq ($(biarchn32)-$(biarch32),yes-yes)
+      CONFARGS += --enable-targets=all
+      CONFARGS += --with-arch-64=mips64r2 --with-tune-64=loongson3a
+      CONFARGS += --with-arch-32=mips32 --with-tune-32=mips32r2
+    endif
+  endif
+endif
+
+ifneq (,$(findstring mips64-linux-gnuabin32,$(DEB_TARGET_GNU_TYPE)))
+  CONFARGS += --with-mips-plt
+  ifeq ($(multilib),yes)
+    ifeq ($(biarchn32)-$(biarch32),yes-yes)
+      CONFARGS += --enable-targets=all
+      CONFARGS += --with-arch-64=mips64r2 --with-tune-64=octeon+
+      CONFARGS += --with-arch-32=mips32 --with-tune-32=mips32r2
+    endif
+  endif
+endif
+
+ifneq (,$(findstring mips64el-linux-gnuabi64,$(DEB_TARGET_GNU_TYPE)))
+  CONFARGS += --with-mips-plt
+  CONFARGS += --with-arch-64=mips64r2 --with-tune-64=loongson3a
+  ifeq ($(multilib),yes)
+    ifeq ($(biarchn32)-$(biarch32),yes-yes)
+      CONFARGS += --enable-targets=all
+      CONFARGS += --with-arch-32=mips2 --with-tune-32=mips32
+    endif
+  endif
+endif
+
+ifneq (,$(findstring mips64-linux-gnuabi64,$(DEB_TARGET_GNU_TYPE)))
+  CONFARGS += --with-mips-plt
+  CONFARGS += --with-arch-64=mips64r2 --with-tune-64=octeon+
+  ifeq ($(multilib),yes)
+    ifeq ($(biarchn32)-$(biarch32),yes-yes)
+      CONFARGS += --enable-targets=all
+      CONFARGS += --with-arch-32=mips2 --with-tune-32=mips32
+    endif
+  endif
+endif
+
 ifneq (,$(findstring hppa-linux,$(DEB_TARGET_GNU_TYPE)))
   CONFARGS += --disable-libstdcxx-pch
 endif
@@ -747,10 +792,14 @@
 gcc_spu_lib_dir	= $(PF)/spu/lib/$(gcc_spu_subdir_name)/spu/$(versiondir)
 gcc_spu_lexec_dir	= $(spulibexecdir)/$(gcc_spu_subdir_name)/spu/$(versiondir)
 
-lib32		= $(PF)/lib32
-lib64		= lib64
-libn32		= lib32
-libx32		= libx32
+lib32loc   = lib32
+ifneq (,$(findstring mips,$(DEB_TARGET_GNU_TYPE)))
+lib32loc   = lib
+endif
+lib32      = $(PF)/$(lib32loc)
+lib64           = lib64
+libn32          = lib32
+libx32          = libx32
 
 p_l= $(1)$(cross_lib_arch)
 p_d= $(1)-dbg$(cross_lib_arch)
@@ -771,7 +820,7 @@
 else
   usr_lib = $(PFL)/$(libdir)
 endif
-usr_lib32 = $(PFL)/lib32
+usr_lib32 = $(PFL)/$(lib32loc)
 usr_libn32 = $(PFL)/lib32
 usr_libx32 = $(PFL)/libx32
 usr_lib64 = $(PFL)/lib64
@@ -793,7 +842,7 @@
 
 libgcc_dir = $(RPF)/$(libdir)
 # yes, really; lib32gcc_s ends up in usr
-libgcc_dir32 = $(PFL)/lib32
+libgcc_dir32 = $(PFL)/$(lib32loc)
 libgcc_dirn32 = $(RPF)/lib32
 # libx32gcc_s also ends up in usr
 libgcc_dirx32 = $(PFL)/libx32
@@ -882,6 +931,8 @@
 	@echo "Install prefix: /$(PF)"
 ifeq ($(biarchn32)-$(biarch64),yes-yes)
 	@echo "Will build the triarch compilers (o32/n32/64, defaulting to o32)"
+else ifeq ($(biarchn32)-$(biarch32),yes-yes)
+	@echo "Will build the triarch compilers (o32/n32/64, defaulting to 64)"
 else ifeq ($(biarch64)-$(biarch32),yes-yes)
 	@echo "Will build the triarch compilers (x32/64/32, defaulting to x32)"
 else ifeq ($(biarch64)-$(biarchx32),yes-yes)
@@ -1917,7 +1968,7 @@
 	    esac; \
 	  done
 endif
-
+	
 	: # Work around PR lto/41569
 	ln -sf gcc $(builddir)/prev-gcc
 	ln -sf $(DEB_TARGET_GNU_TYPE) $(builddir)/prev-$(DEB_TARGET_GNU_TYPE)
@@ -1950,13 +2001,6 @@
 	    esac; \
 	  done
 
-ifneq ($(configured_libdir),$(libdir))
-	for i in debug go pkgconfig '*.so' '*.so.*' '*.a' '*.la' '*.py' '*.spec'; do \
-	  mv $(d)/$(PF)/$(configured_libdir)/$$i \
-		$(d)/$(PF)/$(libdir)/. || true; \
-	done
-endif
-
 # FIXME: libjava/classpath not correctly patched
 ifeq ($(with_java),yes)
 	-if [ -d $(d)/$(PF)/lib/gcj-$(GCC_VERSION)-$(GCJ_SONAME) ]; then \
@@ -2009,7 +2053,7 @@
 	rm -rf $(d)
 	mkdir -p $(d)/$(libdir) $(d)/$(PF) $(d)/$(PF)/$(libdir)/debug
 ifeq ($(biarch32),yes)
-	mkdir -p $(d)/$(PF)/lib32/debug
+	mkdir -p $(d)/$(PF)/$(lib32loc)/debug
 endif
 ifeq ($(biarch64),yes)
 	mkdir -p $(d)/$(PF)/lib64/debug
@@ -2055,6 +2099,8 @@
 	for i in debug go pkgconfig '*.so' '*.so.*' '*.a' '*.la' '*.py' '*.spec'; do \
 	  mv $(d)/$(PF)/$(configured_libdir)/$$i \
 		$(d)/$(PF)/$(libdir)/. || true; \
+	  mv $(d)/$(PF)/libo32/$$i \
+		$(d)/$(PF)/lib/. || true; \
 	done
 endif
 
diff -urN gcc-4.7-4.7.3/debian/rules.conf gcc-4.7-4.7.3-new/debian/rules.conf
--- gcc-4.7-4.7.3/debian/rules.conf	2014-03-28 07:09:40.000000000 +0000
+++ gcc-4.7-4.7.3-new/debian/rules.conf	2014-03-28 05:29:53.063297068 +0000
@@ -260,6 +260,8 @@
 ifneq (,$(findstring yes,$(biarch64) $(biarch32) $(biarchn32) $(biarchx32)$(biarchhf)$(biarchsf)))
   LIBC_BIARCH_DEP := $${shlibs:Depends}
   LIBC_BIARCH_DEV_DEP := $(LIBC_DEV_DEP)-$(biarch_deb_arch)$(LS)$(AQ) (>= $(libc_ver))
+  # x86_64, x32, i386
+  ifneq (,$(findstring $(DEB_TARGET_ARCH),x86_64 x32 i386))
   ifeq ($(biarch64)$(biarch32),yesyes)
     LIBC_BIARCH_DEV_DEP := $(LIBC_DEV_DEP)-amd64$(LS)$(AQ) (>= $(libc_ver)), $(LIBC_DEV_DEP)-i386$(LS)$(AQ) (>= $(libc_ver))
   endif
@@ -269,15 +271,22 @@
   ifeq ($(biarch32)$(biarchx32),yesyes)
     LIBC_BIARCH_DEV_DEP := $(LIBC_DEV_DEP)-i386$(LS)$(AQ) (>= $(libc_ver)), $(LIBC_DEV_DEP)-x32$(LS)$(AQ) (>= $(libc_ver))
   endif
-  ifeq ($(biarchn32),yes)
-    ifneq (,$(findstring $(DEB_TARGET_ARCH),mips mipsel))
-      triarch :=
-      ifeq ($(biarch64),yes)
-        triarch := $(COMMA)$(SPACE)
-      endif
-      LIBC_BIARCH_DEV_DEP += $(triarch)libc6-dev-mipsn32$(LS)$(AQ) (>= $(libc_ver))
-    endif
   endif
+  # mips*
+  ifneq (,$(findstring $(DEB_TARGET_ARCH),mips mipsel mipsn32 mipsn32el mips64 mips64el))
+  ifeq ($(biarchn32)$(biarch32),yesyes)
+      LIBC_BIARCH_DEV_DEP := libc6-dev-mips32$(LS)$(AQ) (>= $(libc_ver)), libc6-dev-mipsn32$(LS)$(AQ) (>= $(libc_ver))
+  endif
+  ifeq ($(biarch64)$(biarch32),yesyes)
+      triarch := $(COMMA)$(SPACE)
+      LIBC_BIARCH_DEV_DEP := libc6-dev-mips32$(LS)$(AQ) (>= $(libc_ver)), libc6-dev-mips64$(LS)$(AQ) (>= $(libc_ver))
+  endif
+  ifeq ($(biarchn32)$(biarch64),yesyes)
+      triarch := $(COMMA)$(SPACE)
+      LIBC_BIARCH_DEV_DEP := libc6-dev-mips64$(LS)$(AQ) (>= $(libc_ver)), libc6-dev-mipsn32$(LS)$(AQ) (>= $(libc_ver))
+  endif
+  endif
+
   ifeq ($(biarchhf),yes)
     LIBC_BIARCH_DEP := $(LIBC_DEP)-$(biarch_deb_arch)$(LS)$(AQ) (>= $(libc_ver))
     LIBC_BIARCH_DEP += | $(LIBC_DEP)-$(biarch_deb_arch)$(LS)$(AQ)
@@ -602,11 +611,12 @@
 
 ifeq ($(DEB_CROSS),yes)
   ctrl_flags += \
-	-DTARGET=$(DEB_TARGET_ARCH) \
 	-DLIBUNWIND_BUILD_DEP="$(LIBUNWIND_BUILD_DEP)" \
 	-DLIBATOMIC_OPS_BUILD_DEP="$(LIBATOMIC_OPS_BUILD_DEP)"
   ifeq ($(with_deps_on_target_arch_pkgs),yes)
     ctrl_flags += -DCROSS_ARCH=$(DEB_TARGET_ARCH)
+  else
+    ctrl_flags += -DTARGET=$(DEB_TARGET_ARCH)
   endif
 else
   # add '-DPRI=optional' to ctrl_flags if this is not the default compiler
diff -urN gcc-4.7-4.7.3/debian/rules.d/binary-go.mk gcc-4.7-4.7.3-new/debian/rules.d/binary-go.mk
--- gcc-4.7-4.7.3/debian/rules.d/binary-go.mk	2014-03-28 07:09:40.000000000 +0000
+++ gcc-4.7-4.7.3-new/debian/rules.d/binary-go.mk	2014-03-28 06:54:19.811819390 +0000
@@ -173,6 +173,10 @@
 		$(d)/$(gcc_lib_dir)/n32/; \
 	  fi; \
 	fi
+	if [ -f $(d)/$(usr_libn32)/libgobegin.a ]; then \
+            mv $(d)/$(usr_libn32)/libgobegin.a \
+                $(d)/$(gcc_lib_dir)/n32/; \
+        fi
 	if [ -f $(d)/$(usr_libx32)/libgobegin.a ]; then \
 	    mv $(d)/$(usr_libx32)/libgobegin.a \
 		$(d)/$(gcc_lib_dir)/x32/; \
diff -urN gcc-4.7-4.7.3/debian/rules.d/binary-libstdcxx.mk gcc-4.7-4.7.3-new/debian/rules.d/binary-libstdcxx.mk
--- gcc-4.7-4.7.3/debian/rules.d/binary-libstdcxx.mk	2014-03-28 07:09:40.000000000 +0000
+++ gcc-4.7-4.7.3-new/debian/rules.d/binary-libstdcxx.mk	2014-03-28 06:39:16.931885860 +0000
@@ -238,7 +238,8 @@
 	)
 
 	$(if $(filter yes,$(with_debug)),
-		mv $(d)/$(usr_lib$(2))/debug $(d_d)/$(usr_lib$(2))/.;
+		mkdir -p $(d_d)/$(usr_lib$(2))/debug;
+                mv $(d)/$(usr_lib$(2))/debug/libstdc++* $(d_d)/$(usr_lib$(2))/debug;
 		rm -f $(d_d)/$(usr_lib$(2))/debug/libstdc++_pic.a
 	)
 
@@ -285,7 +286,7 @@
 	dh_compress -p$(p_l)
 	dh_fixperms -p$(p_l)
 	dh_shlibdeps -p$(p_l)
-	dh_gencontrol -p$(p_l) -- -v$(DEB_VERSION) $(common_substvars)
+	$(cross_gencontrol) dh_gencontrol -p$(p_l) -- -v$(DEB_VERSION) $(common_substvars)
 	dh_installdeb -p$(p_l)
 	dh_md5sums -p$(p_l)
 	dh_builddeb -p$(p_l)
@@ -520,7 +521,7 @@
 
 	dh_compress -p$(p_libd) -Xhtml/17_intro -X.txt -X.tag -X.map
 	dh_fixperms -p$(p_libd)
-	dh_gencontrol -p$(p_libd) -- -v$(DEB_VERSION) $(common_substvars)
+	$(cross_gencontrol) dh_gencontrol -p$(p_libd) -- -v$(DEB_VERSION) $(common_substvars)
 
 	dh_installdeb -p$(p_libd)
 	dh_md5sums -p$(p_libd)
diff -urN gcc-4.7-4.7.3/debian/rules.defs gcc-4.7-4.7.3-new/debian/rules.defs
--- gcc-4.7-4.7.3/debian/rules.defs	2014-03-28 07:09:40.000000000 +0000
+++ gcc-4.7-4.7.3-new/debian/rules.defs	2014-03-28 05:20:05.858138064 +0000
@@ -383,6 +383,10 @@
 	s390x=s390-linux-gnu \
 	mips=mips64-linux-gnuabin32,mips64-linux-gnuabi64 \
 	mipsel=mips64el-linux-gnuabin32,mips64el-linux-gnuabi64 \
+	mipsn32=mips-linux-gnu,mips64-linux-gnuabi64 \
+	mipsn32el=mipsel-linux-gnu,mips64el-linux-gnuabi64 \
+	mips64=mips-linux-gnu,mips64-linux-gnuabin32 \
+	mips64el=mipsel-linux-gnu,mips64el-linux-gnuabin32 \
 	x32=x86_64-linux-gnu,i386-linux-gnu \
 	kfreebsd-amd64=i386-kfreebsd-gnu
 xarch_multiarch_names = $(subst $(COMMA),$(SPACE),$(patsubst $(DEB_TARGET_ARCH)=%,%, \
@@ -406,6 +410,14 @@
 	mips/64=mips64-linux-gnuabi64 \
 	mipsel/n32=mips64el-linux-gnuabin32 \
 	mipsel/64=mips64el-linux-gnuabi64 \
+	mipsn32/32=mips-linux-gnu \
+	mipsn32/64=mips64-linux-gnuabi64 \
+	mipsn32el/32=mipsel-linux-gnu \
+	mipsn32el/64=mips64el-linux-gnuabi64 \
+	mips64/32=mips-linux-gnu \
+	mips64/n32=mips64-linux-gnuabin32 \
+	mips64el/32=mipsel-linux-gnu \
+	mips64el/n32=mips64el-linux-gnuabin32 \
 	x32/32=i386-linux-gnu \
 	x32/64=x86_64-linux-gnu \
 	kfreebsd-amd64/32=i386-kfreebsd-gnu
@@ -633,7 +645,7 @@
 
 ifeq ($(with_java),yes)
   # use the same names as OpenJDK
-  java_cpu_map = armel=arm armhf=arm hppa=parisc i686=i386 i586=i386 i486=i386 mipsel=mips powerpc=ppc sh4=sh
+  java_cpu_map = armel=arm armhf=arm hppa=parisc i686=i386 i586=i386 i486=i386 mipsel=mips mips64=mips mips64el=mips mipsn32=mips mipsn32el=mips powerpc=ppc sh4=sh
   java_cpu = $(patsubst $(DEB_TARGET_ARCH_CPU)=%,%, \
                          $(filter $(DEB_TARGET_ARCH_CPU)=%,$(java_cpu_map)))
   ifeq (,$(java_cpu))
@@ -776,7 +788,7 @@
 
   with_libphobos := yes
 
-  libphobos_no_cpus := alpha avr arm hppa ia64 m68k mips mipsel powerpc powerpcspe ppc64 s390 s390x sh4 sparc sparc64
+  libphobos_no_cpus := alpha avr arm hppa ia64 m68k mips mipsel mipsn32 mipsn32el mips64 mips64el powerpc powerpcspe ppc64 s390 s390x sh4 sparc sparc64
   libphobos_no_systems := gnu
   ifneq (,$(findstring $(DEB_TARGET_ARCH_CPU),$(libphobos_no_cpus)))
     with_libphobos := disabled for cpu $(DEB_TARGET_ARCH_CPU)
@@ -1113,6 +1125,9 @@
 with_check := yes
 # if you don't want to run the gcc testsuite, uncomment the next line
 #with_check := disabled by hand
+ifneq (,$(findstring nocheck,$(DEB_BUILD_OPTIONS)))
+  with_check := disabled by DEB_BUILD_OPTIONS
+endif
 ifeq ($(with_base_only),yes)
   with_check := no
 endif
@@ -1160,7 +1175,7 @@
 
 # multilib
 biarch_map := i686=x86_64 powerpc=powerpc64 sparc=sparc64 sparc64=sparc s390=s390x s390x=s390 \
-		x86_64=i686 powerpc64=powerpc mips=mips64 mipsel=mips64el
+		x86_64=i686 powerpc64=powerpc mips=mips64 mipsel=mips64el mips64=mips mips64el=mipsel mipsn32=mips mipsn32el=mipsel
 ifeq (,$(filter $(distrelease),lenny etch squeeze wheezy jessie sid dapper hardy jaunty karmic lucid))
   biarch_map := $(subst i686=,i486=,$(biarch_map))
 endif
@@ -1268,9 +1283,9 @@
     export TARGET64_MACHINE
   endif
 endef
-biarch32archs := /amd64/ppc64/kfreebsd-amd64/s390x/sparc64/x32/
-biarch64archs := /i386/powerpc/sparc/s390/mips/mipsel/x32/
-biarchn32archs := /mips/mipsel/
+biarch32archs := /amd64/ppc64/kfreebsd-amd64/s390x/sparc64/x32/mipsn32/mipsn32el/mips64/mips64el/
+biarch64archs := /i386/powerpc/sparc/s390/mips/mipsel/x32/mipsn32/mipsn32el/
+biarchn32archs := /mips/mipsel/mips64/mips64el/
 ifeq ($(distribution),Ubuntu)
   ifeq (,$(filter $(distrelease),dapper hardy jaunty karmic lucid maverick natty))
     biarchhfarchs := /armel/
@@ -1620,7 +1635,7 @@
 
 # native ... 
 
-ifneq (,$(filter $(DEB_TARGET_ARCH), mips mipsel))
+ifneq (,$(filter $(DEB_TARGET_ARCH), mips mipsel mips64 mips64el mipsn32 mipsn32el))
   ifneq ($(with_deps_on_target_arch_pkgs),yes)
     define cross_mangle_control
 	$(if $(findstring 64,$(1)),sed -i -r '/^(Dep|Rec|Sug)/s/[a-z0-9-]+32[^$(COMMA)]+($(COMMA) *|$$)//g;/^(Dep|Rec|Sug)/s/$(p_lgcc)/$(p_l64gcc)/;/^(Dep|Rec|Sug)/s/ *$(COMMA) *$$//' debian/$(1)/DEBIAN/control,@:)

Reply to: