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: