[arm] Rework multilib support
authorRichard Earnshaw <rearnsha@arm.com>
Fri, 16 Jun 2017 21:06:14 +0000 (21:06 +0000)
committerRichard Earnshaw <rearnsha@gcc.gnu.org>
Fri, 16 Jun 2017 21:06:14 +0000 (21:06 +0000)
It looks like the fuchsia port relied on inheriting the multilib rules from
the bare-metal port (the t-arm-elf makefile fragment), but that has now been
rewritten on the assuption that the base architecture is ARMv4t; fuchsia
has a base architecture of ARMv7-a.

To account for this, I've cloned the original t-arm-elf rules into a
new makefile fragment t-fuchsia and arranged for that to be used when
targetting this system.

* config/arm/t-fuchsia: New file.
* config.gcc (arm*-*-fuchsia*): Use it.

From-SVN: r249305

gcc/ChangeLog
gcc/config.gcc
gcc/config/arm/t-fuchsia [new file with mode: 0644]

index 6f73286654a9aeb8cf0854cbc26c3d60d7f88ab4..342458179e99896304c77bf508472acc8262dcde 100644 (file)
@@ -1,3 +1,8 @@
+2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
+
+       * config/arm/t-fuchsia: New file.
+       * config.gcc (arm*-*-fuchsia*): Use it.
+
 2017-06-16  Richard Earnshaw  <rearnsha@arm.com>
 
        * config/arm/t-symbian: Rewrite for new option infrastructure.
index 94a281d2fb958ae1cabf57a6c0705e0f6d4e9b4d..0518cb7b099824c226a8018e4bd24d45e982abcd 100644 (file)
@@ -1160,7 +1160,7 @@ arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems* | arm*-*-fuchsia*)
          ;;
        arm*-*-fuchsia*)
          tm_file="${tm_file} fuchsia.h arm/fuchsia-elf.h glibc-stdint.h"
-         tmake_file="${tmake_file} arm/t-bpabi"
+         tmake_file="${tmake_file} arm/t-bpabi arm/t-fuchsia"
          target_cpu_cname="generic-armv7-a"
          ;;
        arm*-*-rtems*)
diff --git a/gcc/config/arm/t-fuchsia b/gcc/config/arm/t-fuchsia
new file mode 100644 (file)
index 0000000..18fc518
--- /dev/null
@@ -0,0 +1,33 @@
+# Copyright (C) 2017 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/>.
+
+# Reset all the multilib variables.
+MULTILIB_OPTIONS       =
+MULTILIB_DIRNAMES      =
+MULTILIB_EXCEPTIONS    =
+MULTILIB_REUSE         =
+MULTILIB_MATCHES       =
+MULTILIB_REQUIRED      =
+
+# For compatibility with gcc-7 we build the following multilibs
+MULTILIB_OPTIONS       += marm/mthumb
+MULTILIB_DIRNAMES      += arm thumb
+
+MULTILIB_OPTIONS       += mfloat-abi=hard
+MULTILIB_DIRNAMES      += fpu
+MULTILIB_EXCEPTIONS    += *mthumb/*mfloat-abi=hard*