Sergey Bugaev <buga...@gmail.com> writes: > Coupled with a corresponding binutils patch, this produces a toolchain that > can > sucessfully build working binaries targeting aarch64-gnu. > > gcc/Changelog: > > * config.gcc: Recognize aarch64*-*-gnu* targets. > * config/aarch64/aarch64-gnu.h: New file. > > Signed-off-by: Sergey Bugaev <buga...@gmail.com> > --- > gcc/config.gcc | 6 +++ > gcc/config/aarch64/aarch64-gnu.h | 68 ++++++++++++++++++++++++++++++++ > 2 files changed, 74 insertions(+) > create mode 100644 gcc/config/aarch64/aarch64-gnu.h
I don't know if you're waiting on me, but just in case: this and patch 3 still LGTM if Thomas is OK with them. Thanks, Richard > diff --git a/gcc/config.gcc b/gcc/config.gcc > index 87a5c92b6..9d935164c 100644 > --- a/gcc/config.gcc > +++ b/gcc/config.gcc > @@ -1264,6 +1264,12 @@ aarch64*-*-linux*) > done > TM_MULTILIB_CONFIG=`echo $TM_MULTILIB_CONFIG | sed 's/^,//'` > ;; > +aarch64*-*-gnu*) > + tm_file="${tm_file} elfos.h gnu-user.h gnu.h glibc-stdint.h" > + tm_file="${tm_file} aarch64/aarch64-elf.h aarch64/aarch64-errata.h > aarch64/aarch64-gnu.h" > + tmake_file="${tmake_file} aarch64/t-aarch64" > + tm_defines="${tm_defines} TARGET_DEFAULT_ASYNC_UNWIND_TABLES=1" > + ;; > aarch64*-wrs-vxworks*) > tm_file="${tm_file} elfos.h aarch64/aarch64-elf.h" > tm_file="${tm_file} vx-common.h vxworks.h aarch64/aarch64-vxworks.h" > diff --git a/gcc/config/aarch64/aarch64-gnu.h > b/gcc/config/aarch64/aarch64-gnu.h > new file mode 100644 > index 000000000..ee5494034 > --- /dev/null > +++ b/gcc/config/aarch64/aarch64-gnu.h > @@ -0,0 +1,68 @@ > +/* Definitions for AArch64 running GNU/Hurd. > + Copyright (C) 2009-2024 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_GNU_H > +#define GCC_AARCH64_GNU_H > + > +#define GNU_USER_DYNAMIC_LINKER > "/lib/ld-aarch64%{mbig-endian:_be}%{mabi=ilp32:_ilp32}.so.1" > + > +#define CPP_SPEC "%{pthread:-D_REENTRANT}" > + > +#define GNU_TARGET_LINK_SPEC "%{h*} \ > + %{static:-Bstatic} \ > + %{shared:-shared} \ > + %{symbolic:-Bsymbolic} \ > + %{!static:%{!static-pie: \ > + %{rdynamic:-export-dynamic} \ > + %{!shared:-dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}} \ > + %{static-pie:-Bstatic -pie --no-dynamic-linker -z text} \ > + -X \ > + %{mbig-endian:-EB} %{mlittle-endian:-EL} \ > + -maarch64gnu%{mabi=ilp32:32}%{mbig-endian:b}" > + > + > +#define LINK_SPEC GNU_TARGET_LINK_SPEC AARCH64_ERRATA_LINK_SPEC > + > +#define GNU_USER_TARGET_MATHFILE_SPEC \ > + "%{Ofast|ffast-math|funsafe-math-optimizations:%{!shared:crtfastmath.o%s}}" > + > +#undef ENDFILE_SPEC > +#define ENDFILE_SPEC \ > + GNU_USER_TARGET_MATHFILE_SPEC " " \ > + GNU_USER_TARGET_ENDFILE_SPEC > + > +#define TARGET_OS_CPP_BUILTINS() \ > + do \ > + { \ > + GNU_USER_TARGET_OS_CPP_BUILTINS(); \ > + } \ > + while (0) > + > +#define TARGET_ASM_FILE_END aarch64_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 > + > +/* Define this to be nonzero if static stack checking is supported. */ > +#define STACK_CHECK_STATIC_BUILTIN 1 > + > +#endif /* GCC_AARCH64_GNU_H */