aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Tobler <andreast@gcc.gnu.org>2016-10-10 23:31:17 +0200
committerAndreas Tobler <andreast@gcc.gnu.org>2016-10-10 23:31:17 +0200
commitb20e75328b83d1c67f354996cd6b744ae5cfc91d (patch)
treeadc1d6350482b057f631371e0513adca88cd7812
parentb7beb16ac139b766a3b6adcae15ae5a358c0b83c (diff)
downloadgcc-b20e75328b83d1c67f354996cd6b744ae5cfc91d.zip
gcc-b20e75328b83d1c67f354996cd6b744ae5cfc91d.tar.gz
gcc-b20e75328b83d1c67f354996cd6b744ae5cfc91d.tar.bz2
configure.ac: Add aarch64-*-freebsd*.
toplevel: 2016-10-10 Andreas Tobler <andreast@gcc.gnu.org> * configure.ac: Add aarch64-*-freebsd*. * configure: Regenerate. gcc: 2016-10-10 Andreas Tobler <andreast@gcc.gnu.org> * config.gcc: Add aarch64-*-freebsd* support. * config.host: Likewise. * config/aarch64/aarch64-freebsd.h: New file. * config/aarch64/t-aarch64-freebsd: Ditto. libgcc: 2016-10-10 Andreas Tobler <andreast@gcc.gnu.org> * config.host: Add support for aarch64-*-freebsd*. From-SVN: r240949
-rw-r--r--ChangeLog5
-rwxr-xr-xconfigure3
-rw-r--r--configure.ac3
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config.gcc5
-rw-r--r--gcc/config.host2
-rw-r--r--gcc/config/aarch64/aarch64-freebsd.h94
-rw-r--r--gcc/config/aarch64/t-aarch64-freebsd21
-rw-r--r--libgcc/ChangeLog4
-rw-r--r--libgcc/config.host5
10 files changed, 148 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 4e97477..82d068e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2016-10-10 Andreas Tobler <andreast@gcc.gnu.org>
+
+ * configure.ac: Add aarch64-*-freebsd*.
+ * configure: Regenerate.
+
2016-10-05 Steve Ellcey <sellcey@caviumnetworks.com>
* MAINTAINERS: Update email address after it got reverted.
diff --git a/configure b/configure
index f9650c9..0da041a 100755
--- a/configure
+++ b/configure
@@ -3385,6 +3385,9 @@ case "${target}" in
*-*-vxworks*)
noconfigdirs="$noconfigdirs target-libffi"
;;
+ aarch64*-*-freebsd*)
+ noconfigdirs="$noconfigdirs target-libffi"
+ ;;
alpha*-*-*vms*)
noconfigdirs="$noconfigdirs target-libffi"
;;
diff --git a/configure.ac b/configure.ac
index aec703a..9fe987a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -727,6 +727,9 @@ case "${target}" in
*-*-vxworks*)
noconfigdirs="$noconfigdirs target-libffi"
;;
+ aarch64*-*-freebsd*)
+ noconfigdirs="$noconfigdirs target-libffi"
+ ;;
alpha*-*-*vms*)
noconfigdirs="$noconfigdirs target-libffi"
;;
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 16e25bf..d5de3c3 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2016-10-10 Andreas Tobler <andreast@gcc.gnu.org>
+
+ * config.gcc: Add aarch64-*-freebsd* support.
+ * config.host: Likewise.
+ * config/aarch64/aarch64-freebsd.h: New file.
+ * config/aarch64/t-aarch64-freebsd: Ditto.
+
2016-10-10 Jeff Law <law@redhat.com>
PR tree-optimization/71947
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 8fd07c5..7bbf546 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -937,6 +937,11 @@ aarch64*-*-elf | aarch64*-*-rtems*)
done
TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'`
;;
+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"
+ tmake_file="${tmake_file} aarch64/t-aarch64 aarch64/t-aarch64-freebsd"
+ ;;
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"
diff --git a/gcc/config.host b/gcc/config.host
index 44f2f56..5b3c757 100644
--- a/gcc/config.host
+++ b/gcc/config.host
@@ -99,7 +99,7 @@ case ${host} in
esac
case ${host} in
- aarch64*-*-linux*)
+ aarch64*-*-freebsd* | aarch64*-*-linux*)
case ${target} in
aarch64*-*-*)
host_extra_gcc_objs="driver-aarch64.o"
diff --git a/gcc/config/aarch64/aarch64-freebsd.h b/gcc/config/aarch64/aarch64-freebsd.h
new file mode 100644
index 0000000..6b2a908
--- /dev/null
+++ b/gcc/config/aarch64/aarch64-freebsd.h
@@ -0,0 +1,94 @@
+/* Definitions for AArch64 running FreeBSD
+ Copyright (C) 2016 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/>. */
+
+#ifndef GCC_AARCH64_FREEBSD_H
+#define GCC_AARCH64_FREEBSD_H
+
+#undef SUBTARGET_CPP_SPEC
+#define SUBTARGET_CPP_SPEC FBSD_CPP_SPEC
+
+#if TARGET_BIG_ENDIAN_DEFAULT
+#define TARGET_LINKER_EMULATION "aarch64fbsdb"
+#else
+#define TARGET_LINKER_EMULATION "aarch64fbsd"
+#endif
+
+#undef SUBTARGET_EXTRA_LINK_SPEC
+#define SUBTARGET_EXTRA_LINK_SPEC " -m" TARGET_LINKER_EMULATION
+
+#undef FBSD_TARGET_LINK_SPEC
+#define FBSD_TARGET_LINK_SPEC " \
+ %{p:%nconsider using `-pg' instead of `-p' with gprof (1) } \
+ %{v:-V} \
+ %{assert*} %{R*} %{rpath*} %{defsym*} \
+ %{shared:-Bshareable %{h*} %{soname*}} \
+ %{symbolic:-Bsymbolic} \
+ %{static:-Bstatic} \
+ %{!static: \
+ %{rdynamic:-export-dynamic} \
+ %{!shared:-dynamic-linker " FBSD_DYNAMIC_LINKER " }} \
+ -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 GNU_USER_TARGET_MATHFILE_SPEC \
+ "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}"
+
+#undef ENDFILE_SPEC
+#define ENDFILE_SPEC \
+ GNU_USER_TARGET_MATHFILE_SPEC " " \
+ FBSD_ENDFILE_SPEC
+
+#undef TARGET_OS_CPP_BUILTINS
+#define TARGET_OS_CPP_BUILTINS() \
+ do \
+ { \
+ FBSD_TARGET_OS_CPP_BUILTINS (); \
+ } \
+ while (false)
+
+#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
+
+/* Uninitialized common symbols in non-PIE executables, even with
+ strong definitions in dependent shared libraries, will resolve
+ to COPY relocated symbol in the executable. See PR65780. */
+#undef TARGET_BINDS_LOCAL_P
+#define TARGET_BINDS_LOCAL_P default_binds_local_p_2
+
+#endif /* GCC_AARCH64_FREEBSD_H */
diff --git a/gcc/config/aarch64/t-aarch64-freebsd b/gcc/config/aarch64/t-aarch64-freebsd
new file mode 100644
index 0000000..84b4a75
--- /dev/null
+++ b/gcc/config/aarch64/t-aarch64-freebsd
@@ -0,0 +1,21 @@
+# Machine description for AArch64 architecture.
+# Copyright (C) 2016 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/>.
+
+LIB1ASMSRC = aarch64/lib1funcs.asm
+LIB1ASMFUNCS = _aarch64_sync_cache_range
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index ce5a250..f627591 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,7 @@
+2016-10-10 Andreas Tobler <andreast@gcc.gnu.org>
+
+ * config.host: Add support for aarch64-*-freebsd*.
+
2016-10-05 Andreas Schwab <schwab@suse.de>
* config/ia64/crtbegin.S (__do_jv_register_classes): Remove.
diff --git a/libgcc/config.host b/libgcc/config.host
index 002f650..1c90e23 100644
--- a/libgcc/config.host
+++ b/libgcc/config.host
@@ -331,6 +331,11 @@ aarch64*-*-elf | aarch64*-*-rtems*)
tmake_file="${tmake_file} ${cpu_type}/t-aarch64"
tmake_file="${tmake_file} ${cpu_type}/t-softfp t-softfp t-crtfm"
;;
+aarch64*-*-freebsd*)
+ extra_parts="$extra_parts crtfastmath.o"
+ tmake_file="${tmake_file} ${cpu_type}/t-aarch64"
+ tmake_file="${tmake_file} ${cpu_type}/t-softfp t-softfp t-crtfm"
+ ;;
aarch64*-*-linux*)
extra_parts="$extra_parts crtfastmath.o"
md_unwind_header=aarch64/linux-unwind.h