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

Bug#881729: gcc-7: add mips r6 support



Package: src:gcc-7
Version: 7.2.0-14

Please add mips r6 support to gcc-7.
This single patch should be OK: with the previous typo fixed.

-- 
YunQiang Su
diff --git a/debian/libstdc++6.symbols.mips64r6 b/debian/libstdc++6.symbols.mips64r6
new file mode 100644
index 0000000..c499e58
--- /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
+ _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1
diff --git a/debian/libstdc++6.symbols.mips64r6el b/debian/libstdc++6.symbols.mips64r6el
new file mode 100644
index 0000000..83716a3
--- /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
+ _ZN9__gnu_cxx18__exchange_and_addEPVii@GLIBCXX_3.4 4.1
+ _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.9
+ _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.9
diff --git a/debian/libstdc++6.symbols.mipsr6 b/debian/libstdc++6.symbols.mipsr6
new file mode 100644
index 0000000..33a3d58
--- /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
+#include "libstdc++6.symbols.excprop"
+#include "libstdc++6.symbols.glibcxxmath"
+ _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3
+ _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3
diff --git a/debian/libstdc++6.symbols.mipsr6el b/debian/libstdc++6.symbols.mipsr6el
new file mode 100644
index 0000000..a0ed1ab
--- /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
+#include "libstdc++6.symbols.excprop"
+#include "libstdc++6.symbols.glibcxxmath"
+#include "libstdc++6.symbols.money.ldbl"
+ _ZNKSt3tr14hashIeEclEe@GLIBCXX_3.4.10 4.3
+ _ZNKSt4hashIeEclEe@GLIBCXX_3.4.10 4.3
diff --git a/debian/rules.conf b/debian/rules.conf
index c6c52df..803899c 100644
--- a/debian/rules.conf
+++ b/debian/rules.conf
@@ -280,7 +280,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 \
@@ -308,7 +313,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
@@ -349,7 +354,10 @@ ifneq ($(DEB_CROSS),yes)
     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],
-  ifneq (,$(findstring amd64,$(biarchx32archs)))
+  ifeq (yes,$(MIPS_R6_ENABLED))
+    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],
+  endif
+ifneq (,$(findstring amd64,$(biarchx32archs)))
   LIBC_BIARCH_BUILD_DEP += libc6-dev-x32 [amd64 i386], libx32gcc1 [amd64 i386],
 endif
 ifneq (,$(findstring armel,$(biarchhfarchs)))
@@ -431,7 +439,10 @@ 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 powerpcspe ppc64 ppc64el m68k sh4 sparc64 s390x x32
+any_archs = alpha amd64 armel armhf arm64 i386 mips mipsel mips64 mips64el mipsn32 powerpc powerpcspe ppc64 ppc64el m68k sh4 sparc64 s390x x32
+ifeq (yes,$(MIPS_R6_ENABLED))
+  any_archs +=  mipsn32el mipsr6 mipsr6el mips64r6 mips64r6el mipsn32r6 mipsn32r6el
+endif
 arch_gnutype_map = \
 	alpha=alpha-linux-gnu \
 	amd64=x86-64-linux-gnu \
@@ -441,8 +452,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 \
 	powerpcspe=powerpc-linux-gnuspe \
 	ppc64=powerpc64-linux-gnu \
diff --git a/debian/rules.defs b/debian/rules.defs
index e651d56..24e913a 100644
--- a/debian/rules.defs
+++ b/debian/rules.defs
@@ -456,6 +456,11 @@ ifeq (,$(filter $(distrelease),lenny etch squeeze dapper hardy jaunty karmic luc
   multiarch_stage1 := yes
 endif
 
+MIPS_R6_ENABLED = no
+ifeq (,$(filter $(distrelease),lenny etch squeeze wheezy jessie dapper hardy jaunty karmic lucid maverick natty oneiric precise quantal raring saucy trusty utopic vivid wily xenial yakkety zesty artful))
+  MIPS_R6_ENABLED = yes
+endif
+
 # mapping for the non-default biarch multilib / multiarch names
 multiarch_xarch_map = \
 	amd64=i386-linux-gnu,x86_64-linux-gnux32 \
@@ -474,6 +479,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)=%,%, \
@@ -505,6 +516,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
@@ -538,6 +561,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
@@ -912,6 +947,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)))
@@ -1179,7 +1215,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))
@@ -1443,7 +1481,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))
@@ -1600,8 +1640,14 @@ define gen_biarch
   endif
 endef
 biarch32archs := /amd64/ppc64/kfreebsd-amd64/s390x/sparc64/x32/mipsn32/mipsn32el/mips64/mips64el/
-biarch64archs := /i386/powerpc/sparc/s390/mips/mipsel/mipsn32/mipsn32el/x32/
+biarch64archs := /i386/powerpc/sparc/s390/mips/mipsel/mipsn32/mipsn32el/
 biarchn32archs := /mips/mipsel/mips64/mips64el/
+ifeq (yes,$(MIPS_R6_ENABLED))
+  biarch32archs += mipsn32r6/mipsn32r6el/mips64r6/mips64r6el/
+  biarch64archs += mipsr6/mipsr6el/mipsn32r6/mipsn32r6el/x32/
+  biarchn32archs += mipsr6/mipsr6el/mips64r6/mips64r6el/
+endif
+
 ifeq ($(derivative),Ubuntu)
   ifeq (,$(filter $(distrelease),dapper hardy jaunty karmic lucid maverick natty))
     biarchhfarchs := /armel/
diff --git a/debian/rules2 b/debian/rules2
index 2b2fad2..00fb2a7 100644
--- a/debian/rules2
+++ b/debian/rules2
@@ -630,6 +630,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 to: