MIPSR6: mips-img-elf mips-img-linux-gnu triplets and vendor updates
authorMatthew Fortune <matthew.fortune@imgtec.com>
Fri, 19 Dec 2014 20:18:08 +0000 (20:18 +0000)
committerMatthew Fortune <mpf@gcc.gnu.org>
Fri, 19 Dec 2014 20:18:08 +0000 (20:18 +0000)
gcc/

* config.gcc: Support mips*-img-linux* and mips*-img-elf*.
* config/mips/mti-linux.h: Support mips32r6 as being the default arch.
* config/mips/t-img-elf: New.
* config/mips/t-img-linux: New.

gcc/testsuite/

* gcc.target/mips/pr37362.c: Skip for mips-img-elf.

From-SVN: r218975

gcc/ChangeLog
gcc/config.gcc
gcc/config/mips/mti-linux.h
gcc/config/mips/t-img-elf [new file with mode: 0644]
gcc/config/mips/t-img-linux [new file with mode: 0644]
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/mips/pr37362.c

index 9dce19b0d811257d5335d7ae2c25186b1e88b3a4..05374e1cbf9bdfc1735603f69cfd8fc35875bc90 100644 (file)
@@ -1,3 +1,10 @@
+2014-12-19  Matthew Fortune  <matthew.fortune@imgtec.com>
+
+       * config.gcc: Support mips*-img-linux* and mips*-img-elf*.
+       * config/mips/mti-linux.h: Support mips32r6 as being the default arch.
+       * config/mips/t-img-elf: New.
+       * config/mips/t-img-linux: New.
+
 2014-12-19  Matthew Fortune  <matthew.fortune@imgtec.com>
 
        * config.gcc: Add mipsisa64r6 and mipsisa32r6 cpu support.
index 259f63b30fbd4e6323679e4db8ac93f52289ac46..c5d9ff83f2a8671696e780195ff709f6b04560fc 100644 (file)
@@ -1961,6 +1961,14 @@ mips*-*-netbsd*)                 # NetBSD/mips, either endian.
        tm_file="elfos.h ${tm_file} mips/elf.h netbsd.h netbsd-elf.h mips/netbsd.h"
        extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
        ;;
+mips*-img-linux*)
+       tm_file="dbxelf.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h ${tm_file} mips/gnu-user.h mips/linux.h mips/linux-common.h mips/mti-linux.h"
+       extra_options="${extra_options} linux-android.opt"
+       tmake_file="${tmake_file} mips/t-img-linux"
+       tm_defines="${tm_defines} MIPS_ISA_DEFAULT=37 MIPS_ABI_DEFAULT=ABI_32"
+       gnu_ld=yes
+       gas=yes
+       ;;
 mips*-mti-linux*)
        tm_file="dbxelf.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h ${tm_file} mips/gnu-user.h mips/linux.h mips/linux-common.h mips/mti-linux.h"
        extra_options="${extra_options} linux-android.opt"
@@ -2021,6 +2029,11 @@ mips*-mti-elf*)
        tmake_file="mips/t-mti-elf"
        tm_defines="${tm_defines} MIPS_ISA_DEFAULT=33 MIPS_ABI_DEFAULT=ABI_32"
        ;;
+mips*-img-elf*)
+       tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h mips/mti-elf.h"
+       tmake_file="mips/t-img-elf"
+       tm_defines="${tm_defines} MIPS_ISA_DEFAULT=37 MIPS_ABI_DEFAULT=ABI_32"
+       ;;
 mips*-sde-elf*)
        tm_file="elfos.h newlib-stdint.h ${tm_file} mips/elf.h mips/n32-elf.h mips/sde.h"
        tmake_file="mips/t-sde"
index 98d6582b1984c0c71037166f3b3b33bfbda04052..5761ab749c4333ae3f6299160f3f6ebb78f4434c 100644 (file)
@@ -19,8 +19,15 @@ along with GCC; see the file COPYING3.  If not see
 
 /* This target is a multilib target, specify the sysroot paths.  */
 #undef SYSROOT_SUFFIX_SPEC
+#if MIPS_ISA_DEFAULT == 33 /* mips32r2 is the default */
 #define SYSROOT_SUFFIX_SPEC \
-    "%{mips32:/mips32}%{mips64:/mips64}%{mips64r2:/mips64r2}%{mips16:/mips16}%{mmicromips:/micromips}%{mabi=64:/64}%{mel|EL:/el}%{msoft-float:/sof}%{mnan=2008:/nan2008}"
+    "%{mips32:/mips32}%{mips64:/mips64}%{mips64r2:/mips64r2}%{mips32r6:/mips32r6}%{mips64r6:/mips64r6}%{mips16:/mips16}%{mmicromips:/micromips}%{mabi=64:/64}%{mel|EL:/el}%{msoft-float:/sof}%{!mips32r6:%{!mips64r6:%{mnan=2008:/nan2008}}}"
+#elif MIPS_ISA_DEFAULT == 37 /* mips32r6 is the default */
+#define SYSROOT_SUFFIX_SPEC \
+    "%{mips32:/mips32}%{mips64:/mips64}%{mips32r2:/mips32r2}%{mips64r2:/mips64r2}%{mips64r6:/mips64r6}%{mips16:/mips16}%{mmicromips:/micromips}%{mabi=64:/64}%{mel|EL:/el}%{msoft-float:/sof}%{!mips32r6:%{!mips64r6:%{mnan=2008:/nan2008}}}"
+#else /* Unexpected default ISA.  */
+#error No SYSROOT_SUFFIX_SPEC exists for this default ISA
+#endif
 
 #undef DRIVER_SELF_SPECS
 #define DRIVER_SELF_SPECS                                              \
diff --git a/gcc/config/mips/t-img-elf b/gcc/config/mips/t-img-elf
new file mode 100644 (file)
index 0000000..cc5dabb
--- /dev/null
@@ -0,0 +1,38 @@
+# Copyright (C) 2014 Free Software Foundation, Inc.
+#
+# This file is part of GCC.
+#
+# GCC is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GCC is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3.  If not see
+# <http://www.gnu.org/licenses/>.
+
+# The default build is mips32r6, hard-float big-endian.
+# A multilib for mips32r6+LE
+# A multilib for mips64r6
+# A multilib for mips64r6+LE
+# A multilib for mips32r6+LE+singlefloat+shortdouble
+
+MULTILIB_OPTIONS = mips64r6 mabi=64 EL msoft-float/msingle-float fshort-double
+MULTILIB_DIRNAMES = mips64r6 64 el sof sgl short
+MULTILIB_MATCHES = EL=mel EB=meb
+
+# Don't build 64r6 with single-float
+MULTILIB_EXCEPTIONS += mips64r6/*msingle-float*
+MULTILIB_EXCEPTIONS += mips64r6/*fshort-double*
+
+MULTILIB_EXCEPTIONS += mabi=64*
+MULTILIB_EXCEPTIONS += msingle-float*
+MULTILIB_EXCEPTIONS += *msingle-float
+MULTILIB_EXCEPTIONS += fshort-double
+MULTILIB_EXCEPTIONS += EL/fshort-double
+MULTILIB_EXCEPTIONS += *msoft-float/fshort-double
diff --git a/gcc/config/mips/t-img-linux b/gcc/config/mips/t-img-linux
new file mode 100644 (file)
index 0000000..5dbfbe4
--- /dev/null
@@ -0,0 +1,30 @@
+# Copyright (C) 2014 Free Software Foundation, Inc.
+#
+# This file is part of GCC.
+#
+# GCC is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GCC is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3.  If not see
+# <http://www.gnu.org/licenses/>.
+
+# The default build is mips32r6, hard-float big-endian.  Add mips64r6,
+# 64-bit ABI and little-endian variations.
+
+MULTILIB_OPTIONS = mips64r6 mabi=64 EL
+MULTILIB_DIRNAMES = mips64r6 64 el
+MULTILIB_MATCHES = EL=mel EB=meb
+
+# The 64 bit ABI is not supported on the mips32r6 architecture.
+# Because mips32r6 is the default we can't use that flag to trigger
+# the exception so we check for mabi=64 with no specific mips
+# architecture flag instead.
+MULTILIB_EXCEPTIONS += mabi=64*
index 8d2f41ca05fd7076a3ad5835421d6d14e12964aa..d00b5d772f57a1a2c0e281cc5516f4eafc772dea 100644 (file)
@@ -1,3 +1,7 @@
+2014-12-19  Matthew Fortune  <matthew.fortune@imgtec.com>
+
+       * gcc.target/mips/pr37362.c: Skip for mips-img-elf.
+
 2014-12-19  Matthew Fortune  <matthew.fortune@imgtec.com>
            Steve Ellcey  <sellcey@imgtec.com>
 
index 848d879d3254eec55edccf1db77f2bf353b4b544..2ad4e8dbc17e969d914d6f15def7a5f2e18c7646 100644 (file)
@@ -1,5 +1,5 @@
 /* mips*-sde-elf doesn't have 128-bit long doubles.  */
-/* { dg-do compile { target { ! { mips*-sde-elf mips*-mti-elf } } } } */
+/* { dg-do compile { target { ! { mips*-sde-elf mips*-mti-elf mips*-img-elf } } } } */
 /* { dg-options "-march=mips64r2 -mabi=n32" } */
 
 typedef float TFtype __attribute__((mode(TF)));