Patchwork [mips] Modify mips-mti-linux-gnu build

login
register
mail settings
Submitter Steve Ellcey
Date Oct. 30, 2012, 8:42 p.m.
Message ID <67e709af-3479-4e74-8ef5-cadda370b148@EXCHHUB01.MIPS.com>
Download mbox | patch
Permalink /patch/195620/
State New
Headers show

Comments

Steve Ellcey - Oct. 30, 2012, 8:42 p.m.
This patch makes a few changes to the work I have been doing on the
mips-mti-linux-gnu target that I recently added.  It adds an -mabi=64 build
to MULTILIBS and changes the order of MULTILIB_OPTIONS to be consistent with
the mips-mti-elf target.

It also makes the N32 ABI the default when compiling for mips64* targets,
this is also to be consistent with the mips-mti-elf target.

Tested with a cross-build and running the GCC testsuite using qemu.

OK to checkin?

Steve Ellcey
sellcey@mips.com



2012-10-30  Steve Ellcey  <sellcey@mips.com>

	* config/mips/mti-linux.h (SYSROOT_SUFFIX_SPEC): Change order
	and add mabi=64.
	(DRIVER_SELF_SPECS): Make -n32 the default on mips64* archs.
	* config/mips/t-mti-linux (MULTILIB_OPTIONS): Change order.
	(MULTILIB_DIRNAMES): Ditto.
	(MULTILIB_EXCEPTIONS): New.
Richard Sandiford - Oct. 30, 2012, 9:06 p.m.
"Steve Ellcey " <sellcey@mips.com> writes:
> 2012-10-30  Steve Ellcey  <sellcey@mips.com>
>
> 	* config/mips/mti-linux.h (SYSROOT_SUFFIX_SPEC): Change order
> 	and add mabi=64.
> 	(DRIVER_SELF_SPECS): Make -n32 the default on mips64* archs.
> 	* config/mips/t-mti-linux (MULTILIB_OPTIONS): Change order.
> 	(MULTILIB_DIRNAMES): Ditto.
> 	(MULTILIB_EXCEPTIONS): New.

OK, thanks.

Richard

Patch

diff --git a/gcc/config/mips/mti-linux.h b/gcc/config/mips/mti-linux.h
index 36c003c..cda9bdc 100644
--- a/gcc/config/mips/mti-linux.h
+++ b/gcc/config/mips/mti-linux.h
@@ -21,7 +21,7 @@  along with GCC; see the file COPYING3.  If not see
 /* This target is a multilib target, specify the sysroot paths.  */
 #undef SYSROOT_SUFFIX_SPEC
 #define SYSROOT_SUFFIX_SPEC \
-    "%{mips32:/mips32}%{mips64:/mips64}%{mips64r2:/mips64r2}%{msoft-float:/sof}%{mel|EL:/el}%{mabi=64:/64}%{mabi=n32:/n32}"
+    "%{mips32:/mips32}%{mips64:/mips64}%{mips64r2:/mips64r2}%{mabi=64:/64}%{mel|EL:/el}%{msoft-float:/sof}"
 
 #undef DRIVER_SELF_SPECS
 #define DRIVER_SELF_SPECS						\
@@ -36,6 +36,10 @@  along with GCC; see the file COPYING3.  If not see
   /* Infer the -msynci setting from -march if not explicitly set.  */	\
   MIPS_ISA_SYNCI_SPEC,							\
 									\
+  /* If no ABI option is specified, infer one from the ISA level	\
+     or -mgp setting.  */						\
+  "%{!mabi=*: %{" MIPS_32BIT_OPTION_SPEC ": -mabi=32;: -mabi=n32}}",	\
+									\
   /* Base SPECs.  */							\
   BASE_DRIVER_SELF_SPECS						\
 									\
diff --git a/gcc/config/mips/t-mti-linux b/gcc/config/mips/t-mti-linux
index ba11706..6d280cd 100644
--- a/gcc/config/mips/t-mti-linux
+++ b/gcc/config/mips/t-mti-linux
@@ -19,6 +19,15 @@ 
 # The default build is mips32r2, hard-float big-endian.  Add mips32,
 # soft-float, and little-endian variations.
 
-MULTILIB_OPTIONS = mips32/mips64/mips64r2 msoft-float EL
-MULTILIB_DIRNAMES = mips32 mips64 mips64r2 sof el
+MULTILIB_OPTIONS = mips32/mips64/mips64r2 mabi=64 EL msoft-float
+MULTILIB_DIRNAMES = mips32 mips64 mips64r2 64 el sof
 MULTILIB_MATCHES = EL=mel EB=meb
+
+# The 64 bit ABI is not supported on the mips32 architecture.
+MULTILIB_EXCEPTIONS += *mips32*/*mabi=64*
+
+# The 64 bit ABI is not supported on the mips32r2 architecture.
+# Because mips32r2 is the default we can't use that flag to trigger
+# the exception so we check for mabi=64 with no specific mips flag
+# instead.
+MULTILIB_EXCEPTIONS += mabi=64*