[aarch64] Refactor common errata work-around specs
authorRichard Earnshaw <rearnsha@arm.com>
Thu, 20 Jun 2019 17:27:06 +0000 (17:27 +0000)
committerRichard Earnshaw <rearnsha@gcc.gnu.org>
Thu, 20 Jun 2019 17:27:06 +0000 (17:27 +0000)
With the addition of the AArch64 NetBSD support code we now have four
ports all using and defining the same errata work-around headers.
That's silly and long-term becomes a maintenance burden.

This patch factors all that code into a single header to eliminate all
the duplication.

* config/aarch64/aarch64-errata.h: New file.
* config/aarch64/aarch64-elf-raw.h (CA53_ERR_835769_SPEC): Delete.
(CA53_ERR_843419_SPEC): Delete.
(LINK_SPEC): Use AARCH64_ERRATA_LINK_SPEC instead of above.
* config/aarch64/aarch64-linux.h: Likewise.
* config/aarch64/aarch64-netbsd.h: Likewise.
* config/aarch64/aarch64-freebsd.h: Likewise.

From-SVN: r272515

gcc/ChangeLog
gcc/config.gcc
gcc/config/aarch64/aarch64-elf-raw.h
gcc/config/aarch64/aarch64-errata.h [new file with mode: 0644]
gcc/config/aarch64/aarch64-freebsd.h
gcc/config/aarch64/aarch64-linux.h
gcc/config/aarch64/aarch64-netbsd.h

index 5f34d11c843536d7639fe00197c3c79b173afd6d..26ac4e70e7662d15b1e33209febd6a680abf953a 100644 (file)
@@ -1,3 +1,13 @@
+2019-06-20  Richard Earnshaw  <rearnsha@arm.com>
+
+       * config/aarch64/aarch64-errata.h: New file.
+       * config/aarch64/aarch64-elf-raw.h (CA53_ERR_835769_SPEC): Delete.
+       (CA53_ERR_843419_SPEC): Delete.
+       (LINK_SPEC): Use AARCH64_ERRATA_LINK_SPEC instead of above.
+       * config/aarch64/aarch64-linux.h: Likewise.
+       * config/aarch64/aarch64-netbsd.h: Likewise.
+       * config/aarch64/aarch64-freebsd.h: Likewise.
+
 2019-06-20  Marek Polacek  <polacek@redhat.com>
 
        * config/sh/sh.c (sh2a_function_vector_p): Use get_attribute_name.
index 7119698779fd21161bc2de4d88e8f618a73c4cee..8488ab64702f4355565e9c0b422643ff7f0da7c9 100644 (file)
@@ -980,7 +980,7 @@ esac
 case ${target} in
 aarch64*-*-elf | aarch64*-*-fuchsia* | aarch64*-*-rtems*)
        tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h"
-       tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-elf-raw.h"
+       tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-elf-raw.h"
        tmake_file="${tmake_file} aarch64/t-aarch64"
        case $target in
        aarch64-*-elf*)
@@ -1017,19 +1017,19 @@ aarch64*-*-elf | aarch64*-*-fuchsia* | aarch64*-*-rtems*)
        ;;
 aarch64*-*-freebsd*)
        tm_file="${tm_file} dbxelf.h elfos.h ${fbsd_tm_file}"
-       tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-freebsd.h"
+       tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-freebsd.h"
        tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-freebsd"
        tm_defines="${tm_defines}  TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
        ;;
 aarch64*-*-netbsd*)
        tm_file="${tm_file} dbxelf.h elfos.h ${nbsd_tm_file}"
-       tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-netbsd.h"
+       tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-netbsd.h"
        tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-netbsd"
        extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
        ;;
 aarch64*-*-linux*)
        tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h"
-       tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-linux.h"
+       tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h aarch64/aarch64-linux.h"
        tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-linux"
        tm_defines="${tm_defines}  TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1"
        case $target in
index bbebd0ef0298c1bb30529d381427ffa476fdfba9..8fe7b378360e0afd6d5c3af25e8b39af29c9c1a9 100644 (file)
   " crtend%O%s crtn%O%s " \
   "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}"
 
-#if TARGET_FIX_ERR_A53_835769_DEFAULT
-#define CA53_ERR_835769_SPEC \
-  " %{!mno-fix-cortex-a53-835769:--fix-cortex-a53-835769}"
-#else
-#define CA53_ERR_835769_SPEC \
-  " %{mfix-cortex-a53-835769:--fix-cortex-a53-835769}"
-#endif
-
-#if TARGET_FIX_ERR_A53_843419_DEFAULT
-#define CA53_ERR_843419_SPEC \
-  " %{!mno-fix-cortex-a53-843419:--fix-cortex-a53-843419}"
-#else
-#define CA53_ERR_843419_SPEC \
-  " %{mfix-cortex-a53-843419:--fix-cortex-a53-843419}"
-#endif
-
 #ifndef LINK_SPEC
 #define LINK_SPEC "%{h*}                       \
    %{static:-Bstatic}                          \
@@ -51,8 +35,7 @@
    %{!static:%{rdynamic:-export-dynamic}}      \
    %{mbig-endian:-EB} %{mlittle-endian:-EL} -X \
   -maarch64elf%{mabi=ilp32*:32}%{mbig-endian:b}" \
-  CA53_ERR_835769_SPEC \
-  CA53_ERR_843419_SPEC
+  AARCH64_ERRATA_LINK_SPEC
 #endif
 
 #endif /* GCC_AARCH64_ELF_RAW_H */
diff --git a/gcc/config/aarch64/aarch64-errata.h b/gcc/config/aarch64/aarch64-errata.h
new file mode 100644 (file)
index 0000000..8f06253
--- /dev/null
@@ -0,0 +1,44 @@
+/* Machine description for AArch64 architecture.
+   Copyright (C) 2009-2019 Free Software Foundation, Inc.
+   Contributed by ARM Ltd.
+
+   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/>.  */
+
+#ifndef GCC_AARCH64_ERRATA_H
+#define GCC_AARCH64_ERRATA_H
+
+#if TARGET_FIX_ERR_A53_835769_DEFAULT
+#define CA53_ERR_835769_SPEC \
+  " %{!mno-fix-cortex-a53-835769:--fix-cortex-a53-835769}"
+#else
+#define CA53_ERR_835769_SPEC \
+  " %{mfix-cortex-a53-835769:--fix-cortex-a53-835769}"
+#endif
+
+#if TARGET_FIX_ERR_A53_843419_DEFAULT
+#define CA53_ERR_843419_SPEC \
+  " %{!mno-fix-cortex-a53-843419:--fix-cortex-a53-843419}"
+#else
+#define CA53_ERR_843419_SPEC \
+  " %{mfix-cortex-a53-843419:--fix-cortex-a53-843419}"
+#endif
+
+#define AARCH64_ERRATA_LINK_SPEC               \
+  CA53_ERR_835769_SPEC                         \
+  CA53_ERR_843419_SPEC
+
+#endif /*  GCC_AARCH64_ERRATA_H */
index 899e6f95e34491c80f5b6be8e9b360972a80b630..7a3e89b1b0e199fe65b4a0b2e573cae3574e7bf2 100644 (file)
     -X" SUBTARGET_EXTRA_LINK_SPEC "                             \
     %{mbig-endian:-EB} %{mlittle-endian:-EL}"
 
-#if TARGET_FIX_ERR_A53_835769_DEFAULT
-#define CA53_ERR_835769_SPEC \
-  " %{!mno-fix-cortex-a53-835769:--fix-cortex-a53-835769}"
-#else
-#define CA53_ERR_835769_SPEC \
-  " %{mfix-cortex-a53-835769:--fix-cortex-a53-835769}"
-#endif
-
-#ifdef TARGET_FIX_ERR_A53_843419_DEFAULT
-#define CA53_ERR_843419_SPEC \
-  " %{!mno-fix-cortex-a53-843419:--fix-cortex-a53-843419}"
-#else
-#define CA53_ERR_843419_SPEC \
-  " %{mfix-cortex-a53-843419:--fix-cortex-a53-843419}"
-#endif
-
 #undef  LINK_SPEC
-#define LINK_SPEC FBSD_TARGET_LINK_SPEC        \
-                  CA53_ERR_835769_SPEC \
-                  CA53_ERR_843419_SPEC
+#define LINK_SPEC FBSD_TARGET_LINK_SPEC AARCH64_ERRATA_LINK_SPEC
 
 #define GNU_USER_TARGET_MATHFILE_SPEC \
   "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}"
index 5e8b34ded03c78493f868e38647bf57c2da5187c..6ff2163b633409dedbb1a8f573fee364e3657d8b 100644 (file)
    %{mbig-endian:-EB} %{mlittle-endian:-EL}     \
    -maarch64linux%{mabi=ilp32:32}%{mbig-endian:b}"
 
-#if TARGET_FIX_ERR_A53_835769_DEFAULT
-#define CA53_ERR_835769_SPEC \
-  " %{!mno-fix-cortex-a53-835769:--fix-cortex-a53-835769}"
-#else
-#define CA53_ERR_835769_SPEC \
-  " %{mfix-cortex-a53-835769:--fix-cortex-a53-835769}"
-#endif
-
-#if TARGET_FIX_ERR_A53_843419_DEFAULT
-#define CA53_ERR_843419_SPEC \
-  " %{!mno-fix-cortex-a53-843419:--fix-cortex-a53-843419}"
-#else
-#define CA53_ERR_843419_SPEC \
-  " %{mfix-cortex-a53-843419:--fix-cortex-a53-843419}"
-#endif
-
-#define LINK_SPEC LINUX_TARGET_LINK_SPEC \
-                  CA53_ERR_835769_SPEC \
-                  CA53_ERR_843419_SPEC
+
+#define LINK_SPEC LINUX_TARGET_LINK_SPEC AARCH64_ERRATA_LINK_SPEC
 
 #define GNU_USER_TARGET_MATHFILE_SPEC \
   "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}"
index 2686a1b7ae7d636b2a1bbece6d83d1364236b4fd..e6c9264bd4ae48a6403a71d568f10ee4ceea628e 100644 (file)
   "%{mlittle-endian:-EL -m " TARGET_LINKER_LITTLE_EMULATION "} "       \
   "%(netbsd_link_spec)"
 
-#if TARGET_FIX_ERR_A53_835769_DEFAULT
-#define CA53_ERR_835769_SPEC \
-  " %{!mno-fix-cortex-a53-835769:--fix-cortex-a53-835769}"
-#else
-#define CA53_ERR_835769_SPEC \
-  " %{mfix-cortex-a53-835769:--fix-cortex-a53-835769}"
-#endif
-
-#ifdef TARGET_FIX_ERR_A53_843419_DEFAULT
-#define CA53_ERR_843419_SPEC \
-  " %{!mno-fix-cortex-a53-843419:--fix-cortex-a53-843419}"
-#else
-#define CA53_ERR_843419_SPEC \
-  " %{mfix-cortex-a53-843419:--fix-cortex-a53-843419}"
-#endif
-
 #undef  LINK_SPEC
 #define LINK_SPEC NETBSD_LINK_SPEC_ELF         \
                  NETBSD_TARGET_LINK_SPEC       \
-                 CA53_ERR_835769_SPEC          \
-                 CA53_ERR_843419_SPEC
+                 AARCH64_ERRATA_LINK_SPEC
 
 #undef TARGET_OS_CPP_BUILTINS
 #define TARGET_OS_CPP_BUILTINS()               \