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