Package: src:binutils
Version: 2.25.90.20151125-2
Control: block -1 by 807340
This patch enable building n32 and {32r6,n32r6,64r6} for mips.
Please add it when dpkg patch is merged.
--
YunQiang Su
diff --git a/debian/control b/debian/control
index fede768..9e749ab 100644
--- a/debian/control
+++ b/debian/control
@@ -325,3 +325,107 @@ Description: GNU binary utilities, for sparc64-linux-gnu
target
.
You don't need this package unless you plan to cross-compile programs
for sparc64-linux-gnu.
+
+Package: binutils-mips64-linux-gnuabin32
+Architecture: amd64 i386 x32
+Depends: binutils (= ${binary:Version}), ${shlibs:Depends}
+Suggests: binutils-doc (= ${source:Version})
+Provides:
+Priority: extra
+Description: GNU binary utilities, for mips64-linux-gnuabin32 target
+ This package provides GNU assembler, linker and binary utilities
+ for mips64-linux-gnuabin32 target, for use in a cross-compilation environment.
+ .
+ You don't need this package unless you plan to cross-compile programs
+ for mips64-linux-gnuabin32.
+
+Package: binutils-mips64el-linux-gnuabin32
+Architecture: amd64 i386 x32
+Depends: binutils (= ${binary:Version}), ${shlibs:Depends}
+Suggests: binutils-doc (= ${source:Version})
+Provides:
+Priority: extra
+Description: GNU binary utilities, for mips64el-linux-gnuabin32 target
+ This package provides GNU assembler, linker and binary utilities
+ for mips64el-linux-gnuabin32 target, for use in a cross-compilation
environment.
+ .
+ You don't need this package unless you plan to cross-compile programs
+ for mips64el-linux-gnuabin32.
+
+Package: binutils-mipsisa32r6-linux-gnu
+Architecture: amd64 i386 x32
+Depends: binutils (= ${binary:Version}), ${shlibs:Depends}
+Suggests: binutils-doc (= ${source:Version})
+Provides:
+Priority: extra
+Description: GNU binary utilities, for mipsisa32r6-linux-gnu target
+ This package provides GNU assembler, linker and binary utilities
+ for mipsisa32r6-linux-gnu target, for use in a cross-compilation environment.
+ .
+ You don't need this package unless you plan to cross-compile programs
+ for mipsisa32r6-linux-gnu.
+
+Package: binutils-mipsisa32r6el-linux-gnu
+Architecture: amd64 i386 x32
+Depends: binutils (= ${binary:Version}), ${shlibs:Depends}
+Suggests: binutils-doc (= ${source:Version})
+Provides:
+Priority: extra
+Description: GNU binary utilities, for mipsisa32r6el-linux-gnu target
+ This package provides GNU assembler, linker and binary utilities
+ for mipsisa32r6el-linux-gnu target, for use in a cross-compilation
environment.
+ .
+ You don't need this package unless you plan to cross-compile programs
+ for mipsisa32r6el-linux-gnu.
+
+Package: binutils-mipsisa64r6-linux-gnuabin32
+Architecture: amd64 i386 x32
+Depends: binutils (= ${binary:Version}), ${shlibs:Depends}
+Suggests: binutils-doc (= ${source:Version})
+Provides:
+Priority: extra
+Description: GNU binary utilities, for mipsisa64r6-linux-gnuabin32 target
+ This package provides GNU assembler, linker and binary utilities
+ for mipsisa64r6-linux-gnuabin32 target, for use in a cross-compilation
environment.
+ .
+ You don't need this package unless you plan to cross-compile programs
+ for mipsisa64r6-linux-gnuabin32.
+
+Package: binutils-mipsisa64r6el-linux-gnuabin32
+Architecture: amd64 i386 x32
+Depends: binutils (= ${binary:Version}), ${shlibs:Depends}
+Suggests: binutils-doc (= ${source:Version})
+Provides:
+Priority: extra
+Description: GNU binary utilities, for mipsisa64r6el-linux-gnuabin32 target
+ This package provides GNU assembler, linker and binary utilities
+ for mipsisa64r6el-linux-gnuabin32 target, for use in a cross-compilation
environment.
+ .
+ You don't need this package unless you plan to cross-compile programs
+ for mipsisa64r6el-linux-gnuabin32.
+
+Package: binutils-mipsisa64r6-linux-gnuabi64
+Architecture: amd64 i386 x32
+Depends: binutils (= ${binary:Version}), ${shlibs:Depends}
+Suggests: binutils-doc (= ${source:Version})
+Provides:
+Priority: extra
+Description: GNU binary utilities, for mipsisa64r6-linux-gnuabi64 target
+ This package provides GNU assembler, linker and binary utilities
+ for mipsisa64r6-linux-gnuabi64 target, for use in a cross-compilation
environment.
+ .
+ You don't need this package unless you plan to cross-compile programs
+ for mipsisa64r6-linux-gnuabi64.
+
+Package: binutils-mipsisa64r6el-linux-gnuabi64
+Architecture: amd64 i386 x32
+Depends: binutils (= ${binary:Version}), ${shlibs:Depends}
+Suggests: binutils-doc (= ${source:Version})
+Provides:
+Priority: extra
+Description: GNU binary utilities, for mipsisa64r6el-linux-gnuabi64 target
+ This package provides GNU assembler, linker and binary utilities
+ for mipsisa64r6el-linux-gnuabi64 target, for use in a cross-compilation
environment.
+ .
+ You don't need this package unless you plan to cross-compile programs
+ for mipsisa64r6el-linux-gnuabi64.
diff --git a/debian/patches/mips64-default-n64.diff
b/debian/patches/mips64-default-n64.diff
index 7377ac1..eff6ac4 100644
--- a/debian/patches/mips64-default-n64.diff
+++ b/debian/patches/mips64-default-n64.diff
@@ -1,66 +1,79 @@
Index: b/bfd/config.bfd
===================================================================
---- a/bfd/config.bfd
-+++ b/bfd/config.bfd
-@@ -1081,6 +1081,16 @@ case "${targ}" in
+--- a/bfd/config.bfd 2015-12-07 17:21:30.660851798 +0000
++++ b/bfd/config.bfd 2015-12-07 17:25:05.324220591 +0000
+@@ -1086,11 +1086,21 @@
targ_defvec=mips_elf32_be_vec
targ_selvecs="mips_elf32_le_vec mips_elf64_be_vec mips_elf64_le_vec
mips_ecoff_be_vec mips_ecoff_le_vec"
;;
-+ mips64*el-*-linux*-gnuabi64)
+- mips64*el-*-linux*)
++ mips*64*el-*-linux*-gnuabi64)
+ targ_defvec=mips_elf64_trad_le_vec
+ targ_selvecs="mips_elf32_ntrad_be_vec mips_elf32_ntrad_le_vec
mips_elf32_trad_be_vec mips_elf32_trad_le_vec mips_elf64_trad_be_vec"
+ want64=true
+ ;;
-+ mips64*-*-linux*-gnuabi64)
++ mips*64*-*-linux*-gnuabi64)
+ targ_defvec=mips_elf64_trad_be_vec
+ targ_selvecs="mips_elf32_ntrad_be_vec mips_elf32_ntrad_le_vec
mips_elf32_trad_be_vec mips_elf32_trad_le_vec mips_elf64_trad_le_vec"
+ want64=true
+ ;;
- mips64*el-*-linux*)
++ mips*64*el-*-linux*)
targ_defvec=mips_elf32_ntrad_le_vec
targ_selvecs="mips_elf32_ntrad_be_vec mips_elf32_trad_le_vec
mips_elf32_trad_be_vec mips_elf64_trad_le_vec mips_elf64_trad_be_vec"
+ ;;
+- mips64*-*-linux*)
++ mips*64*-*-linux*)
+ targ_defvec=mips_elf32_ntrad_be_vec
+ targ_selvecs="mips_elf32_ntrad_le_vec mips_elf32_trad_be_vec
mips_elf32_trad_le_vec mips_elf64_trad_be_vec mips_elf64_trad_le_vec"
+ ;;
Index: b/gas/configure.ac
===================================================================
---- a/gas/configure.ac
-+++ b/gas/configure.ac
-@@ -300,6 +300,9 @@ changequote([,])dnl
+--- a/gas/configure.ac 2015-12-07 17:21:30.660851798 +0000
++++ b/gas/configure.ac 2015-12-07 17:26:47.251926290 +0000
+@@ -300,7 +300,10 @@
esac
# Decide which ABI to target by default.
case ${target} in
-+ mips64*-linux-gnuabi64)
+- mips64*-linux* | mips-sgi-irix6* | mips64*-freebsd* |
mips64*-kfreebsd*-gnu)
++ mips*64*-linux-gnuabi64)
+ mips_default_abi=N64_ABI
+ ;;
- mips64*-linux* | mips-sgi-irix6* | mips64*-freebsd* |
mips64*-kfreebsd*-gnu)
++ mips*64*-linux* | mips-sgi-irix6* | mips64*-freebsd* |
mips64*-kfreebsd*-gnu)
mips_default_abi=N32_ABI
;;
+ mips*-linux* | mips*-freebsd* | mips*-kfreebsd*-gnu)
Index: b/ld/configure.tgt
===================================================================
---- a/ld/configure.tgt
-+++ b/ld/configure.tgt
-@@ -507,6 +507,12 @@ mips*el-*-vxworks*) targ_emul=elf32elmip
+--- a/ld/configure.tgt 2015-12-07 17:21:30.660851798 +0000
++++ b/ld/configure.tgt 2015-12-07 17:28:17.971666593 +0000
+@@ -509,7 +509,13 @@
mips*-*-vxworks*) targ_emul=elf32ebmipvxworks
targ_extra_emuls="elf32elmipvxworks" ;;
mips*-*-windiss) targ_emul=elf32mipswindiss ;;
-+mips64*el-*-linux-gnuabi64) targ_emul=elf64ltsmip
+-mips64*el-*-linux-*) targ_emul=elf32ltsmipn32
++mips*64*el-*-linux-gnuabi64) targ_emul=elf64ltsmip
+ targ_extra_emuls="elf32btsmipn32 elf32ltsmip
elf32btsmip elf32ltsmipn32 elf64btsmip"
+ targ_extra_libpath=$targ_extra_emuls ;;
-+mips64*-*-linux-gnuabi64) targ_emul=elf64btsmip
++mips*64*-*-linux-gnuabi64) targ_emul=elf64btsmip
+ targ_extra_emuls="elf32ltsmipn32 elf32btsmip
elf32ltsmip elf32btsmipn32 elf64ltsmip"
+ targ_extra_libpath=$targ_extra_emuls ;;
- mips64*el-*-linux-*) targ_emul=elf32ltsmipn32
++mips*64*el-*-linux-*) targ_emul=elf32ltsmipn32
targ_extra_emuls="elf32btsmipn32 elf32ltsmip
elf32btsmip elf64ltsmip elf64btsmip"
targ_extra_libpath=$targ_extra_emuls ;;
+ mips64*-*-linux-*) targ_emul=elf32btsmipn32
Index: b/gas/configure
===================================================================
---- a/gas/configure
-+++ b/gas/configure
-@@ -12215,6 +12215,9 @@ _ACEOF
+--- a/gas/configure 2015-12-07 17:21:30.660851798 +0000
++++ b/gas/configure 2015-12-07 17:28:39.327605738 +0000
+@@ -12215,7 +12215,10 @@
esac
# Decide which ABI to target by default.
case ${target} in
-+ mips64*-linux-gnuabi64)
+- mips64*-linux* | mips-sgi-irix6* | mips64*-freebsd* |
mips64*-kfreebsd*-gnu)
++ mips*64*-linux-gnuabi64)
+ mips_default_abi=N64_ABI
+ ;;
- mips64*-linux* | mips-sgi-irix6* | mips64*-freebsd* |
mips64*-kfreebsd*-gnu)
++ mips*64*-linux* | mips-sgi-irix6* | mips64*-freebsd* |
mips64*-kfreebsd*-gnu)
mips_default_abi=N32_ABI
;;
+ mips*-linux* | mips*-freebsd* | mips*-kfreebsd*-gnu)
diff --git a/debian/rules b/debian/rules
index b2a6533..c7b1623 100755
--- a/debian/rules
+++ b/debian/rules
@@ -84,6 +84,8 @@ ifeq ($(src_name),binutils)
same_source = yes
CROSS_ARCHS ?= s390x ppc64el powerpc arm64 armhf armel mips mipsel
CROSS_ARCHS += alpha hppa m68k mips64 mips64el powerpcspe ppc64 sh4 sparc64
+ CROSS_ARCHS += mipsn32 mipsn32el
+ CROSS_ARCHS += mips32r6 mips32r6el mipsn32r6 mipsn32r6el mips64r6 mips64r6el
#CROSS_ARCHS += kfreebsd-amd64 kfreebsd-i386 hurd-i386
else
# binutils-ports ...
@@ -114,6 +116,16 @@ HOST_ARCHS_ppc64 = amd64 i386 x32 ppc64el
HOST_ARCHS_sh4 = amd64 i386 x32
HOST_ARCHS_sparc64 = amd64 i386 x32
+HOST_ARCHS_mipsn32 = amd64 i386 x32
+HOST_ARCHS_mipsn32el = amd64 i386 x32
+
+HOST_ARCHS_mips32r6 = amd64 i386 x32
+HOST_ARCHS_mips32r6el = amd64 i386 x32
+HOST_ARCHS_mipsn32r6 = amd64 i386 x32
+HOST_ARCHS_mipsn32r6el = amd64 i386 x32
+HOST_ARCHS_mips64r6 = amd64 i386 x32
+HOST_ARCHS_mips64r6el = amd64 i386 x32
+
HOST_ARCHS_kfreebsd-amd64 = amd64 i386 x32
HOST_ARCHS_kfreebsd-i386 = amd64 i386 x32
HOST_ARCHS_hurd-i386 = amd64 i386 x32
@@ -179,6 +191,7 @@ SHELL = /bin/bash
gold_targets = \
amd64 arm64 armel armhf i386 \
mips mipsel mipsn32 mipsn32el mips64 mips64el \
+ mips32r6 mips32r6el mipsn32r6 mipsn32r6el mips64r6 mips64r6el \
powerpc powerpcspe ppc64 ppc64el \
x32 kfreebsd-amd64 kfreebsd-i386 hurd-i386
@@ -340,7 +353,25 @@ DEB_TARGET_MULTIARCH32_mips64 = mips-linux-gnu
DEB_TARGET_MULTIARCHN32_mips64 = mips64-linux-gnuabin32
DEB_TARGET_MULTIARCH32_mips64el = mipsel-linux-gnu
-DEB_TARGET_MULTIARCHN32_mipselel = mips64el-linux-gnuabin32
+DEB_TARGET_MULTIARCHN32_mips64el = mips64el-linux-gnuabin32
+
+DEB_TARGET_MULTIARCH64_mips32r6 = mipsisa64r6-linux-gnuabi64
+DEB_TARGET_MULTIARCHN32_mips32r6 = mipsisa64r6-linux-gnuabin32
+
+DEB_TARGET_MULTIARCH64_mips32r6el = mipsisa64r6el-linux-gnuabi64
+DEB_TARGET_MULTIARCHN32_mips32r6el = mipsisa64r6el-linux-gnuabin32
+
+DEB_TARGET_MULTIARCH64_mipsn32r6 = mipsisa64r6-linux-gnuabi64
+DEB_TARGET_MULTIARCH32_mipsn32r6 = mipsisa32r6-linux-gnu
+
+DEB_TARGET_MULTIARCH64_mipsn32r6el = mipsisa64r6el-linux-gnuabi64
+DEB_TARGET_MULTIARCH32_mipsn32r6el = mipsisa32r6el-linux-gnu
+
+DEB_TARGET_MULTIARCH32_mips64r6 = mipsisa32r6-linux-gnu
+DEB_TARGET_MULTIARCHN32_mips64r6 = mipsisa64r6-linux-gnuabin32
+
+DEB_TARGET_MULTIARCH32_mips64r6el = mipsisa32r6el-linux-gnu
+DEB_TARGET_MULTIARCHN32_mips64r6el = mipsisa64r6el-linux-gnuabin32
DEB_TARGET_MULTIARCH32_arm64 = aarch64_ilp32-linux-gnu
@@ -391,6 +422,18 @@ CONFARGS_TARGET_mips64 =
--enable-targets=mips64-linux-gnuabin32,mips-linux-gnu
CONFARGS_TARGET_mips64el =
--enable-targets=mips64el-linux-gnuabin32,mipsel-linux-gnu
+CONFARGS_TARGET_mips32r6 =
--enable-targets=mipsisa64r6-linux-gnuabi64,mipsisa64r6-linux-gnuabin32
+
+CONFARGS_TARGET_mips32r6el =
--enable-targets=mipsisa64r6el-linux-gnuabi64,mipsisa64r6el-linux-gnuabin32
+
+CONFARGS_TARGET_mipsn32r6 =
--enable-targets=mipsisa64r6-linux-gnuabi64,mipsisa32r6-linux-gnu
+
+CONFARGS_TARGET_mipsn32r6el =
--enable-targets=mipsisa64r6el-linux-gnuabi64,mipsisa32r6el-linux-gnu
+
+CONFARGS_TARGET_mips64r6 =
--enable-targets=mipsisa64r6-linux-gnuabin32,mipsisa32r6-linux-gnu
+
+CONFARGS_TARGET_mips64r6el =
--enable-targets=mipsisa64r6el-linux-gnuabin32,mipsisa32r6el-linux-gnu
+
CONFARGS_TARGET_aarch64 = --enable-targets=aarch64_be-linux-gnu
with_check := yes
@@ -585,8 +628,16 @@ multiarch_targets = \
m68k-rtems \
mips-linux-gnu \
mipsel-linux-gnu \
+ mips64-linux-gnuabin32 \
+ mips64el-linux-gnuabin32 \
mips64-linux-gnu \
mips64el-linux-gnu \
+ mipsisa32r6-linux-gnu \
+ mipsisa32r6el-linux-gnu \
+ mipsisa64r6-linux-gnuabin32 \
+ mipsisa64r6el-linux-gnuabin32 \
+ mipsisa64r6-linux-gnuabi64 \
+ mipsisa64r6el-linux-gnuabi64 \
powerpc-linux-gnu \
powerpc64-linux-gnu \
powerpc64le-linux-gnu \