Package: src:gcc-6
Version: 6.4.0-9

Please add mips r6 support to gcc-6, and it also contains a little fix
for mipsn32.

This patch also works with gcc-7 with a little modification.
I will submit for gcc-7 soon.

-- 
YunQiang Su
diff --git a/debian/libstdc++6.symbols.mips64r6 
b/debian/libstdc++6.symbols.mips64r6
new file mode 100644
index 0000000..7aa71da
--- /dev/null
+++ b/debian/libstdc++6.symbols.mips64r6
@@ -0,0 +1,7 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.64bit"
+#include "libstdc++6.symbols.128bit"
+#include "libstdc++6.symbols.excprop"
+#include "libstdc++6.symbols.money.ldbl"
+ _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1
diff --git a/debian/libstdc++6.symbols.mips64r6el 
b/debian/libstdc++6.symbols.mips64r6el
new file mode 100644
index 0000000..fcc4963
--- /dev/null
+++ b/debian/libstdc++6.symbols.mips64r6el
@@ -0,0 +1,10 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.64bit"
+#include "libstdc++6.symbols.128bit"
+#include "libstdc++6.symbols.excprop"
+#include "libstdc++6.symbols.glibcxxmath"
+#include "libstdc++6.symbols.money.ldbl"
+ _ZN9__gnu_cxx12__atomic_addEPVii@GLIBCXX_3.4 4.1.1
+ _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1.1
+ _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.9.0
+ _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.9.0
diff --git a/debian/libstdc++6.symbols.mipsr6 b/debian/libstdc++6.symbols.mipsr6
new file mode 100644
index 0000000..885c8d1
--- /dev/null
+++ b/debian/libstdc++6.symbols.mipsr6
@@ -0,0 +1,7 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.32bit"
+ __gxx_personality_v0@CXXABI_1.3 4.1.1
+#include "libstdc++6.symbols.excprop"
+#include "libstdc++6.symbols.glibcxxmath"
+ _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0
+ _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0
diff --git a/debian/libstdc++6.symbols.mipsr6el 
b/debian/libstdc++6.symbols.mipsr6el
new file mode 100644
index 0000000..70ed99b
--- /dev/null
+++ b/debian/libstdc++6.symbols.mipsr6el
@@ -0,0 +1,8 @@
+libstdc++.so.6 libstdc++6 #MINVER#
+#include "libstdc++6.symbols.32bit"
+ __gxx_personality_v0@CXXABI_1.3 4.1.1
+#include "libstdc++6.symbols.excprop"
+#include "libstdc++6.symbols.glibcxxmath"
+#include "libstdc++6.symbols.money.ldbl"
+ _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3.0
+ _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3.0
diff --git a/debian/rules.conf b/debian/rules.conf
index a34bed7..2c2c0a2 100644
--- a/debian/rules.conf
+++ b/debian/rules.conf
@@ -284,7 +284,12 @@ LIBC_DEV_DEP := $(LIBC_DEP)-dev
 # this is about Debian archs name, *NOT* GNU target triplet
 biarch_deb_map := \
        i386=amd64 amd64=i386 \
-       mips=mips64 mipsel=mips64 \
+       mips=mips64 mipsel=mips64el \
+       mipsn32=mips mipsn32el=mipsel \
+       mips64=mips mips64el=mipsel \
+       mipsr6=mips64r6 mipsr6el=mips64r6el \
+       mipsn32r6=mipsr6 mipsn32r6el=mipsr6el \
+       mips64r6=mipsr6 mips64r6el=mipsr6el \
        powerpc=ppc64 ppc64=powerpc \
        sparc=sparc64 sparc64=sparc\
        s390=s390x s390x=s390 \
@@ -312,7 +317,7 @@ ifneq (,$(findstring yes,$(biarch64) $(biarch32) 
$(biarchn32) $(biarchx32)$(biar
   endif
   endif
   # mips*
-  ifneq (,$(findstring $(DEB_TARGET_ARCH),mips mipsel mipsn32 mipsn32el mips64 
mips64el))
+  ifneq (,$(findstring $(DEB_TARGET_ARCH),mips mipsel mipsn32 mipsn32el mips64 
mips64el mipsr6 mipsr6el mipsn32r6 mipsn32r6el mips64r6 mips64r6el))
   ifeq ($(biarchn32)$(biarch32),yesyes)
       LIBC_BIARCH_DEV_DEP := libc6-dev-mips32$(LS)$(AQ) (>= $(libc_ver)), 
libc6-dev-mipsn32$(LS)$(AQ) (>= $(libc_ver))
   endif
@@ -352,7 +357,7 @@ ifneq ($(DEB_CROSS),yes)
   ifeq (,$(filter $(distrelease),lenny etch squeeze dapper hardy jaunty karmic 
lucid maverick natty oneiric))
     LIBC_BUILD_DEP += , libc6-dev (>= 2.13-31) [armel armhf]
   endif
-  LIBC_BIARCH_BUILD_DEP = libc6-dev-amd64 [i386 x32], libc6-dev-sparc64 
[sparc], libc6-dev-sparc [sparc64], libc6-dev-s390 [s390x], libc6-dev-s390x 
[s390], libc6-dev-i386 [amd64 x32], libc6-dev-powerpc [ppc64], libc6-dev-ppc64 
[powerpc], libc0.1-dev-i386 [kfreebsd-amd64], lib32gcc1 [amd64 ppc64 
kfreebsd-amd64 mipsn32 mipsn32el mips64 mips64el s390x sparc64 x32], libn32gcc1 
[mips mipsel mips64 mips64el], lib64gcc1 [i386 mips mipsel mipsn32 mipsn32el 
powerpc sparc s390 x32], libc6-dev-mips64 [mips mipsel mipsn32 mipsn32el], 
libc6-dev-mipsn32 [mips mipsel mips64 mips64el], libc6-dev-mips32 [mipsn32 
mipsn32el mips64 mips64el],
+  LIBC_BIARCH_BUILD_DEP = libc6-dev-amd64 [i386 x32], libc6-dev-sparc64 
[sparc], libc6-dev-sparc [sparc64], libc6-dev-s390 [s390x], libc6-dev-s390x 
[s390], libc6-dev-i386 [amd64 x32], libc6-dev-powerpc [ppc64], libc6-dev-ppc64 
[powerpc], libc0.1-dev-i386 [kfreebsd-amd64], lib32gcc1 [amd64 ppc64 
kfreebsd-amd64 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 
mips64r6el s390x sparc64 x32], libn32gcc1 [mips mipsel mips64 mips64el mipsr6 
mipsr6el mips64r6 mips64r6el], lib64gcc1 [i386 mips mipsel mipsn32 mipsn32el 
mipsr6 mipsr6el mipsn32r6 mipsn32r6el powerpc sparc s390 x32], libc6-dev-mips64 
[mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el], 
libc6-dev-mipsn32 [mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 
mips64r6el], libc6-dev-mips32 [mipsn32 mipsn32el mips64 mips64el mipsn32r6 
mipsn32r6el mips64r6 mips64r6el],
   ifneq (,$(findstring amd64,$(biarchx32archs)))
   LIBC_BIARCH_BUILD_DEP += libc6-dev-x32 [amd64 i386], libx32gcc1 [amd64 i386],
 endif
@@ -432,7 +437,7 @@ endif
 
 ifneq ($(DEB_CROSS),yes)
 # all archs for which to create b-d's
-any_archs = alpha amd64 armel armhf arm64 i386 mips mipsel mips64 mips64el 
powerpc ppc64 ppc64el m68k sh4 sparc64 s390x x32
+any_archs = alpha amd64 armel armhf arm64 i386 mips mipsel mips64 mips64el 
mipsn32 mipsn32el mipsr6 mipsr6el mips64r6 mips64r6el mipsn32r6 mipsn32r6el 
powerpc ppc64 ppc64el m68k sh4 sparc64 s390x x32
 arch_gnutype_map = \
        alpha=alpha-linux-gnu \
        amd64=x86-64-linux-gnu \
@@ -442,8 +447,16 @@ arch_gnutype_map = \
        i386=i686-linux-gnu \
        mips=mips-linux-gnu \
        mipsel=mipsel-linux-gnu \
+       mipsn32=mips64-linux-gnuabin32 \
+       mipsn32el=mips64el-linux-gnuabin32 \
        mips64=mips64-linux-gnuabi64 \
        mips64el=mips64el-linux-gnuabi64 \
+       mipsr6=mipsisa32r6-linux-gnu \
+       mipsr6el=mipsisa32r6el-linux-gnu \
+       mipsn32r6=mipsisa64r6-linux-gnuabin32 \
+       mipsn32r6el=mipsisa64r6el-linux-gnuabin32 \
+       mips64r6=mipsisa64r6-linux-gnuabi64 \
+       mips64r6el=mipsisa64r6el-linux-gnuabi64 \
        powerpc=powerpc-linux-gnu \
        ppc64=powerpc64-linux-gnu \
        ppc64el=powerpc64le-linux-gnu \
diff --git a/debian/rules.defs b/debian/rules.defs
index bf23bc8..e7f3e56 100644
--- a/debian/rules.defs
+++ b/debian/rules.defs
@@ -475,6 +475,12 @@ multiarch_xarch_map = \
        mipsn32el=mipsel-linux-gnu,mips64el-linux-gnuabi64 \
        mips64=mips-linux-gnu,mips64-linux-gnuabin32 \
        mips64el=mipsel-linux-gnu,mips64el-linux-gnuabin32 \
+       mipsr6=mipsisa64r6-linux-gnuabin32,mipsisa64r6-linux-gnuabi64 \
+       mipsr6el=mipsisa64r6el-linux-gnuabin32,mipsisa64r6el-linux-gnuabi64 \
+       mipsn32r6=mipsisa32r6-linux-gnu,mipsisa64r6-linux-gnuabi64 \
+       mipsn32r6el=mipsisa32r6el-linux-gnu,mipsisa64r6el-linux-gnuabi64 \
+       mips64r6=mipsisa32r6-linux-gnu,mipsisa64r6-linux-gnuabin32 \
+       mips64r6el=mipsisa32r6el-linux-gnu,mipsisa64r6el-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)=%,%, \
@@ -506,6 +512,18 @@ multilib_multiarch_map = \
        mips64/n32=mips64-linux-gnuabin32 \
        mips64el/32=mipsel-linux-gnu \
        mips64el/n32=mips64el-linux-gnuabin32 \
+       mipsr6/n32=mipsisa64r6-linux-gnuabin32 \
+       mipsr6/64=mipsisa64r6-linux-gnuabi64 \
+       mipsr6el/n32=mipsisa64r6el-linux-gnuabin32 \
+       mipsr6el/64=mipsisa64r6el-linux-gnuabi64 \
+       mipsn32r6/32=mipsisa32r6-linux-gnu \
+       mipsn32r6/64=mipsisa64r6-linux-gnuabi64 \
+       mipsn32r6el/32=mipsisa32r6el-linux-gnu \
+       mipsn32r6el/64=mipsisa64r6el-linux-gnuabi64 \
+       mips64r6/32=mipsisa32r6-linux-gnu \
+       mips64r6/n32=mipsisa64r6-linux-gnuabin32 \
+       mips64r6el/32=mipsisa32r6el-linux-gnu \
+       mips64r6el/n32=mipsisa64r6el-linux-gnuabin32 \
        x32/32=i386-linux-gnu \
        x32/64=x86_64-linux-gnu \
        kfreebsd-amd64/32=i386-kfreebsd-gnu
@@ -539,6 +557,18 @@ multilib_arch_map = \
        mips64/n32=mipsn32 \
        mips64el/32=mipsel \
        mips64el/n32=mipsn32el \
+       mipsr6/n32=mipsn32r6 \
+       mipsr6/64=mips64r6 \
+       mipsr6el/n32=mipsn32r6el \
+       mipsr6el/64=mips64r6el \
+       mipsn32r6/32=mipsr6 \
+       mipsn32r6/64=mips64r6 \
+       mipsn32r6el/32=mipsr6el \
+       mipsn32r6el/64=mips64r6el \
+       mips64r6/32=mipsr6 \
+       mips64r6/n32=mipsn32r6 \
+       mips64r6el/32=mipsr6el \
+       mips64r6el/n32=mipsn32r6el \
        x32/32=i386 \
        x32/64=amd64 \
        kfreebsd-amd64/32=kfreebsd-i386
@@ -692,8 +722,8 @@ ifneq (,$(filter $(distrelease),lucid))
 endif
 # disable building gnat cross compilers on 32bit archs targeting 64bit archs
 ifneq (,$(filter $(build_type), build-cross cross-build-cross))
-  ifneq (,$(filter $(DEB_HOST_ARCH), armhf armel i386 mips mipsel powerpc))
-    ifneq (,$(filter $(DEB_TARGET_ARCH), alpha amd64 arm64 mips64 mips64el 
ppc64 ppc64el s390x sparc64))
+  ifneq (,$(filter $(DEB_HOST_ARCH), armhf armel i386 mips mipsel mipsr6 
mipsr6el powerpc))
+    ifneq (,$(filter $(DEB_TARGET_ARCH), alpha amd64 arm64 mips64 mips64el 
mips64r6 mips64r6el ppc64 ppc64el s390x sparc64))
       with_ada := disabled on 32bit archs targeting 64bit archs
     endif
   endif
@@ -854,6 +884,7 @@ ifeq ($(with_java),yes)
   java_cpu_map = armel=arm armhf=arm arm64=aarch64 hppa=parisc \
        i686=i386 i586=i386 i486=i386 x32=x32 \
        mipsel=mips mips64=mips mips64el=mips mipsn32=mips mipsn32el=mips \
+       mipsr6el=mips mips64r6=mips mips64r6el=mips mipsn32r6=mips 
mipsn32r6el=mips \
        powerpc=ppc ppc64el=ppc64le sh4=sh x32=x32
   java_cpu = $(patsubst $(DEB_TARGET_ARCH_CPU)=%,%, \
                          $(filter $(DEB_TARGET_ARCH_CPU)=%,$(java_cpu_map)))
@@ -1032,6 +1063,7 @@ ifeq ($(with_d),yes)
 
   libphobos_no_cpus := alpha avr arm64 hppa ia64 m68k \
        mips mipsel mips64 mips64el mipsn32 mipsn32el \
+       mipsr6 mipsr6el mips64r6 mips64r6el mipsn32r6 mipsn32r6el \
        powerpc powerpcspe ppc64 s390 s390x sh4 sparc sparc64
   libphobos_no_systems := gnu kfreebsd-gnu
   ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(libphobos_no_cpus)))
@@ -1300,7 +1332,9 @@ endif
 with_pie :=
 ifeq ($(distribution),Debian)
   ifeq (,$(filter $(distrelease),wheezy squeeze jessie))
-    pie_archs = amd64 arm64 armel armhf i386 mips mipsel mips64el \
+    pie_archs = amd64 arm64 armel armhf i386 \
+               mips mipsel mips64 mips64el mipsn32 mipsn32el \
+               mipsr6 mipsr6el mips64r6 mips64r6el mipsn32r6 mipsn32r6el \
                ppc64el s390x sparc sparc64 kfreebsd-amd64 kfreebsd-i386
   endif
   ifeq (,$(filter $(distrelease),wheezy squeeze jessie stretch))
@@ -1571,7 +1605,9 @@ export debian_extra_langs
 # 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 \
-               mips64=mips mips64el=mipsel mipsn32=mips mipsn32el=mipsel
+               mips64=mips mips64el=mipsel mipsn32=mips mipsn32el=mipsel \
+               mipsr6=mips64r6 mipsr6el=mips64r6el mips64r6=mipsr6 
mips64r6el=mipsr6el \
+               mipsn32r6=mipsr6 mipsn32r6el=mipsr6el
 ifneq (,$(filter $(derivative),Ubuntu))
   ifeq (,$(filter $(distrelease),dapper hardy jaunty karmic lucid))
     biarch_map := $(subst i686=,i486=,$(biarch_map))
@@ -1721,9 +1757,9 @@ define gen_biarch
     export TARGET64_MACHINE
   endif
 endef
-biarch32archs := 
/amd64/ppc64/kfreebsd-amd64/s390x/sparc64/x32/mipsn32/mipsn32el/mips64/mips64el/
-biarch64archs := /i386/powerpc/sparc/s390/mips/mipsel/mipsn32/mipsn32el/x32/
-biarchn32archs := /mips/mipsel/mips64/mips64el/
+biarch32archs := 
/amd64/ppc64/kfreebsd-amd64/s390x/sparc64/x32/mipsn32/mipsn32el/mips64/mips64el/mipsn32r2/mipsn32r2el/mips64r2/mips64r2el/
+biarch64archs := 
/i386/powerpc/sparc/s390/mips/mipsel/mipsn32/mipsn32el/mipsr6/mipsr6el/mipsn32r6/mipsn32r6el/x32/
+biarchn32archs := 
/mips/mipsel/mips64/mips64el/mipsr6/mipsr6el/mips64r6/mips64r6el/
 ifeq ($(derivative),Ubuntu)
   ifeq (,$(filter $(distrelease),dapper hardy jaunty karmic lucid maverick 
natty))
     biarchhfarchs := /armel/
diff --git a/debian/rules2 b/debian/rules2
index 63b52f8..b67c844 100644
--- a/debian/rules2
+++ b/debian/rules2
@@ -702,6 +702,71 @@ ifneq (,$(findstring 
mips64-linux-gnuabi64,$(DEB_TARGET_GNU_TYPE)))
   endif
 endif
 
+ifneq (,$(findstring mipsisa32r6-linux,$(DEB_TARGET_GNU_TYPE)))
+  CONFARGS += --with-arch-32=mips32r6 --with-tune-32=mips32r6
+  ifeq ($(multilib),yes)
+    ifeq ($(biarchn32)-$(biarch64),yes-yes)
+      CONFARGS += --enable-targets=all
+      CONFARGS += --with-arch-64=mips64r6 --with-tune-64=mips64r6
+    endif
+  endif
+endif
+
+ifneq (,$(findstring mipsisa32r6el-linux,$(DEB_TARGET_GNU_TYPE)))
+  CONFARGS += --with-arch-32=mips32r6 --with-tune-32=mips32r6
+  ifeq ($(multilib),yes)
+    ifeq ($(biarchn32)-$(biarch64),yes-yes)
+      CONFARGS += --enable-targets=all
+      CONFARGS += --with-arch-64=mips64r6 --with-tune-64=mips64r6
+    endif
+  endif
+endif
+
+#FIXME: howto for mipsn32?
+ifneq (,$(findstring mipsisa64r6el-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=mips64r6 --with-tune-64=mips64r6
+      CONFARGS += --with-arch-32=mips32r6 --with-tune-32=mips32r6
+    endif
+  endif
+endif
+ 
+ifneq (,$(findstring mipsisa64r6-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=mips64r6 --with-tune-64=mips64r6
+      CONFARGS += --with-arch-32=mips32r6 --with-tune-32=mips32r6
+    endif
+  endif
+endif
+
+ifneq (,$(findstring mipsisa64r6el-linux-gnuabi64,$(DEB_TARGET_GNU_TYPE)))
+  CONFARGS += --with-mips-plt
+  CONFARGS += --with-arch-64=mips64r6 --with-tune-64=mips64r6
+  ifeq ($(multilib),yes)
+    ifeq ($(biarchn32)-$(biarch32),yes-yes)
+      CONFARGS += --enable-targets=all
+      CONFARGS += --with-arch-32=mips32r6 --with-tune-32=mips32r6
+    endif
+  endif
+endif
+
+ifneq (,$(findstring mipsisa64r6-linux-gnuabi64,$(DEB_TARGET_GNU_TYPE)))
+  CONFARGS += --with-mips-plt
+  CONFARGS += --with-arch-64=mips64r6 --with-tune-64=mips64r6
+  ifeq ($(multilib),yes)
+    ifeq ($(biarchn32)-$(biarch32),yes-yes)
+      CONFARGS += --enable-targets=all
+      CONFARGS += --with-arch-32=mips32r6 --with-tune-32=mips32r6
+    endif
+  endif
+endif
+
 ifneq (,$(findstring mips,$(DEB_TARGET_GNU_TYPE)))
   ifeq (,$(filter yes,$(biarch32) $(biarchn32) $(biarch64)))
       CONFARGS += --disable-multilib

Reply via email to