aboutsummaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorJerome Lambourg <lambourg@adacore.com>2019-11-14 16:11:30 +0000
committerOlivier Hainque <hainque@gcc.gnu.org>2019-11-14 16:11:30 +0000
commit27204060db51ed0637e394dff387c66c6b944726 (patch)
treeed26512bbc98d251f21922b5a76f51784fd65d14 /gcc/config
parent071ef254a8a9ad947e72b37cd4aa695b57e5b031 (diff)
downloadgcc-27204060db51ed0637e394dff387c66c6b944726.zip
gcc-27204060db51ed0637e394dff387c66c6b944726.tar.gz
gcc-27204060db51ed0637e394dff387c66c6b944726.tar.bz2
Update the arm-*-vxworks* support
2019-11-13 Jerome Lambourg <lambourg@adacore.com> Doug Rupp <rupp@adacore.com> Olivier Hainque <hainque@adacore.com> gcc/ * config.gcc: Collapse the arm-vxworks entries into a single arm-wrs-vxworks7* one, bpabi based. Update the default cpu from arm8 to armv7-a * config/arm/vxworks.h (CC1_SPEC): Simplify, knowing that we always use ARM_UNWIND_INFO. (DWARF2_UNWIND_INFO): Remove redefinition. (ARM_TARGET2_DWARF_FORMAT): Likewise. (VXWORKS_PERSONALITY): Define, to "llvm". (VXWORKS_EXTRA_LIBS_RTP): Define, to "-lllvm". libgcc/ * config.host: Collapse the arm-vxworks entries into a single arm-wrs-vxworks7* one. * config/arm/unwind-arm-vxworks.c: Update comments. Provide __gnu_Unwind_Find_exidx and a weak dummy __cxa_type_match for kernel modules, to be overriden by libstdc++ when we link with it. Rely on externally provided __exidx_start/end. Co-Authored-By: Doug Rupp <rupp@adacore.com> Co-Authored-By: Olivier Hainque <hainque@adacore.com> From-SVN: r278253
Diffstat (limited to 'gcc/config')
-rw-r--r--gcc/config/arm/t-vxworks7
-rw-r--r--gcc/config/arm/vxworks.h26
2 files changed, 14 insertions, 19 deletions
diff --git a/gcc/config/arm/t-vxworks b/gcc/config/arm/t-vxworks
index 504d5cc..865eabc 100644
--- a/gcc/config/arm/t-vxworks
+++ b/gcc/config/arm/t-vxworks
@@ -16,7 +16,8 @@
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
-MULTILIB_OPTIONS = mrtp fPIC
+# Multilibs for ARM VxWorks. With the move to VxWorks 7, we only
+# support -mrtp variation on top of the default settings at this
+# stage, without PIC.
-# -fPIC alone is not supported, only together with -mrtp
-MULTILIB_EXCEPTIONS = fPIC
+MULTILIB_OPTIONS = mrtp
diff --git a/gcc/config/arm/vxworks.h b/gcc/config/arm/vxworks.h
index f03b19a..8118e6e 100644
--- a/gcc/config/arm/vxworks.h
+++ b/gcc/config/arm/vxworks.h
@@ -84,15 +84,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
/* .text.hot and .text.unlikely sections are badly handled by the
VxWorks kernel mode loader for ARM style exceptions. */
-
-#if ARM_UNWIND_INFO
-#define EXTRA_CC1_SPEC "%{!mrtp:-fno-reorder-functions}"
-#else
-#define EXTRA_CC1_SPEC
-#endif
-
#undef CC1_SPEC
-#define CC1_SPEC "" EXTRA_CC1_SPEC
+#define CC1_SPEC VXWORKS_CC1_SPEC " %{!mrtp:-fno-reorder-functions}"
/* Translate an explicit -mbig-endian as an explicit -EB to assembler
and linker, and pass abi options matching the target expectations
@@ -121,14 +114,6 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
#undef ENDFILE_SPEC
#define ENDFILE_SPEC VXWORKS_ENDFILE_SPEC
-/* For exceptions, pre VX7 uses DWARF2 info, VX7 uses ARM unwinding. */
-#undef DWARF2_UNWIND_INFO
-#define DWARF2_UNWIND_INFO (!TARGET_VXWORKS7)
-
-#undef ARM_TARGET2_DWARF_FORMAT
-#define ARM_TARGET2_DWARF_FORMAT \
- (TARGET_VXWORKS_RTP ? (DW_EH_PE_pcrel | DW_EH_PE_indirect) : DW_EH_PE_absptr)
-
/* There is no default multilib. */
#undef MULTILIB_DEFAULTS
@@ -160,3 +145,12 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
/* Unless overridded by the target options, the default is little-endian. */
#define TARGET_ENDIAN_DEFAULT 0
+
+/* The VxWorks environment on ARM is llvm based and we need to link
+ against libllvm.a to resolve __aeabi_memcpy4. */
+
+#undef VXWORKS_PERSONALITY
+#define VXWORKS_PERSONALITY "llvm"
+
+#undef VXWORKS_EXTRA_LIBS_RTP
+#define VXWORKS_EXTRA_LIBS_RTP "-lllvm"