diff mbox

aarch64-*-freebsd* support for gcc.

Message ID dd3089f7-4afd-de71-3869-a1791d87e2df@fgznet.ch
State New
Headers show

Commit Message

Andreas Tobler Oct. 10, 2016, 9:07 p.m. UTC
Hi all,

the attached patch brings support for the aarch64-*-freebsd* target.

Bootstraped and tested, results on the list. Not that many results due 
to board instabilities.... I lack a cavium ;)

Ok for main? And if yes, how far can I backport? Down to 5.4?

TIA,
Andreas

libgcc:

2016-10-10  Andreas Tobler  <andreast@gcc.gnu.org>

	* config.host: Add support for aarch64-*-freebsd*.

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.

toplevel:

2016-10-10  Andreas Tobler <andreast@gcc.gnu.org>

	* configure.ac: Add aarch64-*-freebsd*.
	* configure: Regenerate.

Comments

Jeff Law Oct. 10, 2016, 9:10 p.m. UTC | #1
On 10/10/2016 03:07 PM, Andreas Tobler wrote:
> Hi all,
>
> the attached patch brings support for the aarch64-*-freebsd* target.
>
> Bootstraped and tested, results on the list. Not that many results due
> to board instabilities.... I lack a cavium ;)
>
> Ok for main? And if yes, how far can I backport? Down to 5.4?
>
> TIA,
> Andreas
>
> libgcc:
>
> 2016-10-10  Andreas Tobler  <andreast@gcc.gnu.org>
>
>     * config.host: Add support for aarch64-*-freebsd*.
>
> 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.
>
> toplevel:
>
> 2016-10-10  Andreas Tobler <andreast@gcc.gnu.org>
>
>     * configure.ac: Add aarch64-*-freebsd*.
>     * configure: Regenerate.
Certainly OK for the trunk.  Jakub, Richi & Joseph make the rules for 
the release branches.

jeff
Andreas Tobler Oct. 10, 2016, 9:36 p.m. UTC | #2
On 10.10.16 23:10, Jeff Law wrote:
> On 10/10/2016 03:07 PM, Andreas Tobler wrote:
>> Hi all,
>>
>> the attached patch brings support for the aarch64-*-freebsd* target.
>>
>> Bootstraped and tested, results on the list. Not that many results due
>> to board instabilities.... I lack a cavium ;)
>>
>> Ok for main? And if yes, how far can I backport? Down to 5.4?
>>
>> TIA,
>> Andreas
>>
>> libgcc:
>>
>> 2016-10-10  Andreas Tobler  <andreast@gcc.gnu.org>
>>
>>     * config.host: Add support for aarch64-*-freebsd*.
>>
>> 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.
>>
>> toplevel:
>>
>> 2016-10-10  Andreas Tobler <andreast@gcc.gnu.org>
>>
>>     * configure.ac: Add aarch64-*-freebsd*.
>>     * configure: Regenerate.
> Certainly OK for the trunk.  Jakub, Richi & Joseph make the rules for
> the release branches.

Thank you again Jeff.

Committed to trunk with r240949.

Andreas
Andreas Tobler Oct. 12, 2016, 7:43 p.m. UTC | #3
Hi Jeff,

On 10.10.16 23:10, Jeff Law wrote:
> On 10/10/2016 03:07 PM, Andreas Tobler wrote:
>> Hi all,
>>
>> the attached patch brings support for the aarch64-*-freebsd* target.
>>
>> Bootstraped and tested, results on the list. Not that many results due
>> to board instabilities.... I lack a cavium ;)
>>
>> Ok for main? And if yes, how far can I backport? Down to 5.4?
>>
>> TIA,
>> Andreas
>>
>> libgcc:
>>
>> 2016-10-10  Andreas Tobler  <andreast@gcc.gnu.org>
>>
>>     * config.host: Add support for aarch64-*-freebsd*.
>>
>> 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.
>>
>> toplevel:
>>
>> 2016-10-10  Andreas Tobler <andreast@gcc.gnu.org>
>>
>>     * configure.ac: Add aarch64-*-freebsd*.
>>     * configure: Regenerate.
> Certainly OK for the trunk.  Jakub, Richi & Joseph make the rules for
> the release branches.

I had a chat with Jakub and I learned as long as there is no branch 
freeze or such, every global reviewer can approve such a patch backport. 
So may I ask you, would you mind approving this patch for 6.x and 5.x?

TIA,
Andreas
Jeff Law Oct. 13, 2016, 3:14 p.m. UTC | #4
On 10/12/2016 01:43 PM, Andreas Tobler wrote:
>>>
>>> libgcc:
>>>
>>> 2016-10-10  Andreas Tobler  <andreast@gcc.gnu.org>
>>>
>>>     * config.host: Add support for aarch64-*-freebsd*.
>>>
>>> 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.
>>>
>>> toplevel:
>>>
>>> 2016-10-10  Andreas Tobler <andreast@gcc.gnu.org>
>>>
>>>     * configure.ac: Add aarch64-*-freebsd*.
>>>     * configure: Regenerate.
>> Certainly OK for the trunk.  Jakub, Richi & Joseph make the rules for
>> the release branches.
>
> I had a chat with Jakub and I learned as long as there is no branch
> freeze or such, every global reviewer can approve such a patch backport.
> So may I ask you, would you mind approving this patch for 6.x and 5.x?
Yes.  Approved for 5.x and 6.x.

jeff
Andreas Tobler Jan. 9, 2017, 9:09 p.m. UTC | #5
On 13.10.16 17:14, Jeff Law wrote:
> On 10/12/2016 01:43 PM, Andreas Tobler wrote:
>>>>
>>>> libgcc:
>>>>
>>>> 2016-10-10  Andreas Tobler  <andreast@gcc.gnu.org>
>>>>
>>>>     * config.host: Add support for aarch64-*-freebsd*.
>>>>
>>>> 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.
>>>>
>>>> toplevel:
>>>>
>>>> 2016-10-10  Andreas Tobler <andreast@gcc.gnu.org>
>>>>
>>>>     * configure.ac: Add aarch64-*-freebsd*.
>>>>     * configure: Regenerate.
>>> Certainly OK for the trunk.  Jakub, Richi & Joseph make the rules for
>>> the release branches.
>>
>> I had a chat with Jakub and I learned as long as there is no branch
>> freeze or such, every global reviewer can approve such a patch backport.
>> So may I ask you, would you mind approving this patch for 6.x and 5.x?
> Yes.  Approved for 5.x and 6.x.

After fixing a bootstrap comparison failure on 6.x finally committed to 
6.x (244242) and 5.x (244243)

Thanks,
Andreas
diff mbox

Patch

Index: configure.ac
===================================================================
--- configure.ac	(revision 240948)
+++ configure.ac	(working copy)
@@ -727,6 +727,9 @@ 
   *-*-vxworks*)
     noconfigdirs="$noconfigdirs target-libffi"
     ;;
+  aarch64*-*-freebsd*)
+    noconfigdirs="$noconfigdirs target-libffi"
+    ;;
   alpha*-*-*vms*)
     noconfigdirs="$noconfigdirs target-libffi"
     ;;
Index: gcc/config.gcc
===================================================================
--- gcc/config.gcc	(revision 240948)
+++ gcc/config.gcc	(working copy)
@@ -937,6 +937,11 @@ 
 	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"
Index: gcc/config.host
===================================================================
--- gcc/config.host	(revision 240948)
+++ gcc/config.host	(working copy)
@@ -99,7 +99,7 @@ 
 esac
 
 case ${host} in
-  aarch64*-*-linux*)
+  aarch64*-*-freebsd* | aarch64*-*-linux*)
     case ${target} in
       aarch64*-*-*)
 	host_extra_gcc_objs="driver-aarch64.o"
Index: gcc/config/aarch64/aarch64-freebsd.h
===================================================================
--- gcc/config/aarch64/aarch64-freebsd.h	(nonexistent)
+++ gcc/config/aarch64/aarch64-freebsd.h	(working copy)
@@ -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 */
Index: gcc/config/aarch64/t-aarch64-freebsd
===================================================================
--- gcc/config/aarch64/t-aarch64-freebsd	(nonexistent)
+++ gcc/config/aarch64/t-aarch64-freebsd	(working copy)
@@ -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
Index: libgcc/config.host
===================================================================
--- libgcc/config.host	(revision 240948)
+++ libgcc/config.host	(working copy)
@@ -331,6 +331,11 @@ 
 	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