diff mbox

[PATCHv2,MIPS,2/2] Add new triplets for vendor 'img'

Message ID 6D39441BF12EF246A7ABCE6654B0235320F70BB4@LEMAIL01.le.imgtec.org
State New
Headers show

Commit Message

Matthew Fortune Nov. 14, 2014, 11:19 p.m. UTC
This patch adds new triplets: mips*-img-linux* and mips*-img-elf*

The purpose of these triplets is essentially to provide a clear separation
between tools which support mips32r5 and below and tools which support
mips32r6 and above.

Thanks,
Matthew

/
	* configure.ac: Add mips-img-elf triplet.

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.
---
 configure                               |  4 ++--
 configure.ac                            |  4 ++--
 gcc/config.gcc                          | 13 +++++++++++
 gcc/config/mips/mti-linux.h             |  9 +++++++-
 gcc/config/mips/t-img-elf               | 38 +++++++++++++++++++++++++++++++++
 gcc/config/mips/t-img-linux             | 30 ++++++++++++++++++++++++++
 gcc/testsuite/gcc.target/mips/pr37362.c |  2 +-
 7 files changed, 94 insertions(+), 6 deletions(-)
 create mode 100644 gcc/config/mips/t-img-elf
 create mode 100644 gcc/config/mips/t-img-linux

Comments

Moore, Catherine Dec. 12, 2014, 9:56 p.m. UTC | #1
> -----Original Message-----
> From: Matthew Fortune [mailto:Matthew.Fortune@imgtec.com]
> Sent: Friday, November 14, 2014 6:20 PM
> To: 'gcc-patches@gcc.gnu.org' (gcc-patches@gcc.gnu.org)
> Cc: Moore, Catherine; Rich Fuhler; Steve Ellcey; Richard Sandiford
> Subject: [PATCHv2,MIPS 2/2] Add new triplets for vendor 'img'
> 
> This patch adds new triplets: mips*-img-linux* and mips*-img-elf*
> 
> The purpose of these triplets is essentially to provide a clear separation
> between tools which support mips32r5 and below and tools which support
> mips32r6 and above.
> 
> Thanks,
> Matthew
> 
> /
> 	* configure.ac: Add mips-img-elf triplet.
> 
> 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.
> 

This patch is OK to commit.
Thanks,
Catherine
Matthew Fortune Dec. 19, 2014, 8:20 p.m. UTC | #2
> > 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.
> >
> 
> This patch is OK to commit.

Committed as r218975

Thanks,
Matthew
diff mbox

Patch

diff --git a/configure b/configure
index 7213c1b..786bbcd 100755
--- a/configure
+++ b/configure
@@ -3740,7 +3740,7 @@  case "${target}" in
   microblaze*)
     noconfigdirs="$noconfigdirs gprof"
     ;;
-  mips*-sde-elf* | mips*-mti-elf*)
+  mips*-sde-elf* | mips*-mti-elf* | mips*-img-elf*)
     if test x$with_newlib = xyes; then
       noconfigdirs="$noconfigdirs gprof"
     fi
@@ -6710,7 +6710,7 @@  case "${target}" in
   spu-*-*)
     target_makefile_frag="config/mt-spu"
     ;;
-  mips*-sde-elf* | mips*-mti-elf*)
+  mips*-sde-elf* | mips*-mti-elf* | mips*-img-elf*)
     target_makefile_frag="config/mt-sde"
     ;;
   mipsisa*-*-elfoabi*)
diff --git a/configure.ac b/configure.ac
index 2c958a2..2db94f7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1114,7 +1114,7 @@  case "${target}" in
   microblaze*)
     noconfigdirs="$noconfigdirs gprof"
     ;;
-  mips*-sde-elf* | mips*-mti-elf*)
+  mips*-sde-elf* | mips*-mti-elf* | mips*-img-elf*)
     if test x$with_newlib = xyes; then
       noconfigdirs="$noconfigdirs gprof"
     fi
@@ -2383,7 +2383,7 @@  case "${target}" in
   spu-*-*)
     target_makefile_frag="config/mt-spu"
     ;;
-  mips*-sde-elf* | mips*-mti-elf*)
+  mips*-sde-elf* | mips*-mti-elf* | mips*-img-elf*)
     target_makefile_frag="config/mt-sde"
     ;;
   mipsisa*-*-elfoabi*)
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 73f0e63..d346a91 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -1943,6 +1943,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"
@@ -2003,6 +2011,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"
diff --git a/gcc/config/mips/mti-linux.h b/gcc/config/mips/mti-linux.h
index 98d6582..5761ab7 100644
--- a/gcc/config/mips/mti-linux.h
+++ b/gcc/config/mips/mti-linux.h
@@ -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
index 0000000..cc5dabb
--- /dev/null
+++ b/gcc/config/mips/t-img-elf
@@ -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
index 0000000..5dbfbe4
--- /dev/null
+++ b/gcc/config/mips/t-img-linux
@@ -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*
diff --git a/gcc/testsuite/gcc.target/mips/pr37362.c b/gcc/testsuite/gcc.target/mips/pr37362.c
index 848d879..2ad4e8d 100644
--- a/gcc/testsuite/gcc.target/mips/pr37362.c
+++ b/gcc/testsuite/gcc.target/mips/pr37362.c
@@ -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)));