Patchwork [mips] Update multilibs for mips-mti-* targets

login
register
mail settings
Submitter Steve Ellcey
Date May 28, 2013, 11:03 p.m.
Message ID <4f8c9b7b-e489-435b-a4fc-fb66d78b261e@BAMAIL02.ba.imgtec.org>
Download mbox | patch
Permalink /patch/247054/
State New
Headers show

Comments

Steve Ellcey - May 28, 2013, 11:03 p.m.
Richard,

This patch adds the micromips multilib to the mips-mti-elf and mips-mti-linux
targets.  It also adds mips16 multilib to mips-mti-linux.  I hadn't added
that earlier because I was waiting for the mips16 changes to get checked in
to glibc and they are in now.  It shouldn't affect any other mips targets,
OK to checkin?

Steve Ellcey
sellcey@imgtec.com


2013-05-28  Steve Ellcey  <sellcey@imgtec.com>

	* config/mips/mti-linux.h (SYSROOT_SUFFIX_SPEC): Add micromips
	and mips16 directories.
	* config/mips/t-mti-linux (MULTILIB_OPTIONS): Add micromips and
	mips16.
	(MULTILIB_DIRNAMES): Ditto.
	(MULTILIB_EXCEPTIONS): Add new exceptions.
	* config/mips/t-mti-elf (MULTILIB_OPTIONS): Add micromips.
	(MULTILIB_DIRNAMES): Ditto.
	(MULTILIB_EXCEPTIONS): Add new exceptions.
Richard Sandiford - May 29, 2013, 7:08 a.m.
"Steve Ellcey " <sellcey@imgtec.com> writes:
> 2013-05-28  Steve Ellcey  <sellcey@imgtec.com>
>
> 	* config/mips/mti-linux.h (SYSROOT_SUFFIX_SPEC): Add micromips
> 	and mips16 directories.
> 	* config/mips/t-mti-linux (MULTILIB_OPTIONS): Add micromips and
> 	mips16.
> 	(MULTILIB_DIRNAMES): Ditto.
> 	(MULTILIB_EXCEPTIONS): Add new exceptions.
> 	* config/mips/t-mti-elf (MULTILIB_OPTIONS): Add micromips.
> 	(MULTILIB_DIRNAMES): Ditto.
> 	(MULTILIB_EXCEPTIONS): Add new exceptions.

OK, thanks.  Just one minor suggestion:

> @@ -32,4 +32,11 @@ MULTILIB_EXCEPTIONS += *mips32*/*mabi=64*
>  # or mips64r2 but does specify mabi=64 is not allowed because that
>  # would be defaulting to the mips32r2 architecture.
>  MULTILIB_EXCEPTIONS += mabi=64*
> -MULTILIB_EXCEPTIONS += mips16/mabi=64*
> +MULTILIB_EXCEPTIONS += *mips16/mabi=64*
> +MULTILIB_EXCEPTIONS += *mmicromips/mabi=64*

The new lines here and:

>  # 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.
> +# the exception so we check for mabi=64 with no specific mips
> +# architecture flag instead.
>  MULTILIB_EXCEPTIONS += mabi=64*
> +MULTILIB_EXCEPTIONS += *mips16/mabi=64*
> +MULTILIB_EXCEPTIONS += *mmicromips/mabi=64*

here aren't really doing what the comment says.  The "*" at the beginning
allows any intervening flags, including -mips64 and -mips64r2.  The lines
are correct for a different reason: we're excluding all 64-bit MIPS16
and microMIPS multilibs, even when a correct -mips option is present.
I think it would be clearer if you put these lines in the "restrict
MIPS16 to 32-bit targets" and "restrict microMIPS to mips32r2" blocks
instead.  Changing the order like that shouldn't need a full retest.

Richard

Patch

diff --git a/gcc/config/mips/mti-linux.h b/gcc/config/mips/mti-linux.h
index a3fb489..45bc0b8 100644
--- a/gcc/config/mips/mti-linux.h
+++ b/gcc/config/mips/mti-linux.h
@@ -20,7 +20,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}%{mabi=64:/64}%{mel|EL:/el}%{msoft-float:/sof}"
+    "%{mips32:/mips32}%{mips64:/mips64}%{mips64r2:/mips64r2}%{mips16:/mips16}%{mmicromips:/micromips}%{mabi=64:/64}%{mel|EL:/el}%{msoft-float:/sof}"
 
 #undef DRIVER_SELF_SPECS
 #define DRIVER_SELF_SPECS						\
diff --git a/gcc/config/mips/t-mti-elf b/gcc/config/mips/t-mti-elf
index 3f0868f..66b6cbd 100644
--- a/gcc/config/mips/t-mti-elf
+++ b/gcc/config/mips/t-mti-elf
@@ -16,8 +16,8 @@ 
 # along with GCC; see the file COPYING3.  If not see
 # <http://www.gnu.org/licenses/>.
 
-MULTILIB_OPTIONS = mips32/mips64/mips64r2 mips16 mabi=64 EL msoft-float
-MULTILIB_DIRNAMES = mips32 mips64 mips64r2 mips16 64 el sof
+MULTILIB_OPTIONS = mips32/mips64/mips64r2 mips16 mmicromips mabi=64 EL msoft-float
+MULTILIB_DIRNAMES = mips32 mips64 mips64r2 mips16 micromips 64 el sof
 MULTILIB_MATCHES = EL=mel EB=meb
 
 # We do not want to build mips16 versions of mips64* architectures.
@@ -32,4 +32,11 @@  MULTILIB_EXCEPTIONS += *mips32*/*mabi=64*
 # or mips64r2 but does specify mabi=64 is not allowed because that
 # would be defaulting to the mips32r2 architecture.
 MULTILIB_EXCEPTIONS += mabi=64*
-MULTILIB_EXCEPTIONS += mips16/mabi=64*
+MULTILIB_EXCEPTIONS += *mips16/mabi=64*
+MULTILIB_EXCEPTIONS += *mmicromips/mabi=64*
+
+# We only want micromips for mips32r2 architecture and we do not want
+# it used in conjunction with -mips16.
+MULTILIB_EXCEPTIONS += *mips16/mmicromips*
+MULTILIB_EXCEPTIONS += *mips64*/mmicromips*
+MULTILIB_EXCEPTIONS += *mips32/mmicromips*
diff --git a/gcc/config/mips/t-mti-linux b/gcc/config/mips/t-mti-linux
index 775a68d..3d99e25 100644
--- a/gcc/config/mips/t-mti-linux
+++ b/gcc/config/mips/t-mti-linux
@@ -19,15 +19,26 @@ 
 # The default build is mips32r2, hard-float big-endian.  Add mips32,
 # soft-float, and little-endian variations.
 
-MULTILIB_OPTIONS = mips32/mips64/mips64r2 mabi=64 EL msoft-float
-MULTILIB_DIRNAMES = mips32 mips64 mips64r2 64 el sof
+MULTILIB_OPTIONS = mips32/mips64/mips64r2 mips16 mmicromips mabi=64 EL msoft-float
+MULTILIB_DIRNAMES = mips32 mips64 mips64r2 mips16 micromips 64 el sof
 MULTILIB_MATCHES = EL=mel EB=meb
 
+# We do not want to build mips16 versions of mips64* architectures.
+MULTILIB_EXCEPTIONS += *mips64*/*mips16*
+
 # 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.
+# the exception so we check for mabi=64 with no specific mips
+# architecture flag instead.
 MULTILIB_EXCEPTIONS += mabi=64*
+MULTILIB_EXCEPTIONS += *mips16/mabi=64*
+MULTILIB_EXCEPTIONS += *mmicromips/mabi=64*
+
+# We only want micromips for mips32r2 architecture and we do not want
+# it used in conjunction with -mips16.
+MULTILIB_EXCEPTIONS += *mips16/mmicromips*
+MULTILIB_EXCEPTIONS += *mips64*/mmicromips*
+MULTILIB_EXCEPTIONS += *mips32/mmicromips*