On 12/12/16 21:31, Josh Conner via gcc-patches wrote: > On 12/10/16 3:26 AM, Richard Earnshaw wrote: >> On 08/12/16 22:55, Josh Conner wrote: >>> + arm*-*-fuchsia*) >>> + tm_file="${tm_file} fuchsia.h arm/fuchsia-elf.h glibc-stdint.h" >>> + tmake_file="${tmake_file} arm/t-bpabi" >>> + ;; >> >> This will leave the default cpu as arm7tdmi. Is that what you want? >> It's fine if it is, but if not, you should consider setting >> target_cpu_cname here as well. > > Mmm, probably not. Thanks for pointing that out. > I've attached an updated patch addressing all of the concerns so far. > > OK for mainline? > > Thanks - > > Josh > > > 2016-12-08 Joshua Conner<joshcon...@google.com>
Two spaces between your name and email address. > > * config/arm/fuchsia-elf.h: New file. > * config/fuchsia.h: New file. > * config.gcc (*-*-fuchsia*): Set native_system_header_dir. > (aarch64*-*-fuchsia*, arm*-*-fuchsia*, x86_64-*-fuchsia*): Add to > targets. > * config.host: (aarch64*-*-fuchsia*, arm*-*-fuchsia*): Add to hosts. > This is OK, but please update the copyright years on the new files to include 2017. R. > > gcc-fuchsia-support-v2.patch > > > Index: config/arm/fuchsia-elf.h > =================================================================== > --- config/arm/fuchsia-elf.h (revision 0) > +++ config/arm/fuchsia-elf.h (working copy) > @@ -0,0 +1,31 @@ > +/* Configuration file for ARM Fuchsia ELF targets. > + Copyright (C) 2016 Free Software Foundation, Inc. > + Contributed by Google. > + > + 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/>. */ > + > +/* Use the BPABI builtins and the generic OS builtins. */ > +#undef TARGET_SUB_OS_CPP_BUILTINS > +#define TARGET_SUB_OS_CPP_BUILTINS() \ > + TARGET_BPABI_CPP_BUILTINS() > + > +/* Use the AAPCS ABI by default. */ > +#undef ARM_DEFAULT_ABI > +#define ARM_DEFAULT_ABI ARM_ABI_AAPCS > + > +#define ARM_TARGET2_DWARF_FORMAT (DW_EH_PE_pcrel | DW_EH_PE_indirect) > + > Index: config/fuchsia.h > =================================================================== > --- config/fuchsia.h (revision 0) > +++ config/fuchsia.h (working copy) > @@ -0,0 +1,68 @@ > +/* Base configuration file for all Fuchsia targets. > + Copyright (C) 2016 Free Software Foundation, Inc. > + Contributed by Google. > + > +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/>. */ > + > +/* Common Fuchsia configuration. */ > + > +#undef STARTFILE_SPEC > +#define STARTFILE_SPEC "%{!shared: crt1%O%s} crtbegin%O%s" > + > +#undef ENDFILE_SPEC > +#define ENDFILE_SPEC "crtend%O%s" > + > +/* When neither pic nor pie has been specified, use PIE. */ > +#undef CC1_SPEC > +#define CC1_SPEC "%{!fno-pic:%{!fno-PIC:%{!fpic:%{!fPIC:" \ > + "%{!fno-pie:%{!fno-PIE:%{!fpie:%{!fPIE: -fPIE}}}}}}}}" > + > +#undef LIB_SPEC > +#define LIB_SPEC "--start-group" \ > + " -lmxio -lmagenta -lc -llaunchpad" \ > + "%{!static: -lgcc_s}" \ > + " --end-group" > + > +#undef LINK_SPEC > +#define LINK_SPEC "-z max-page-size=4096" \ > + " -z combreloc" \ > + " -z relro" \ > + " -z now" \ > + " -z text" \ > + "%{!hash-style: --hash-style=gnu}" \ > + "%{!no-eh-frame-hdr: --eh-frame-hdr}" \ > + "%{!no-build-id: --build-id}" \ > + "%{shared: -shared}" \ > + "%{!shared:%{!static:%{!dynamic-linker: > -dynamic-linker=ld.so.1}}}" > + > +/* We are using MUSL as our libc. */ > +#undef OPTION_MUSL > +#define OPTION_MUSL 1 > + > +#ifndef TARGET_SUB_OS_CPP_BUILTINS > +#define TARGET_SUB_OS_CPP_BUILTINS() > +#endif > + > +#undef TARGET_OS_CPP_BUILTINS > +#define TARGET_OS_CPP_BUILTINS() \ > + do \ > + { \ > + builtin_define ("__fuchsia__"); \ > + TARGET_SUB_OS_CPP_BUILTINS(); \ > + } \ > + while (false) > + > Index: config.gcc > =================================================================== > --- config.gcc (revision 243566) > +++ config.gcc (working copy) > @@ -706,6 +706,9 @@ > esac > use_gcc_stdint=wrap > ;; > +*-*-fuchsia*) > + native_system_header_dir=/include > + ;; > *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-gnu* | > *-*-kopensolaris*-gnu) > extra_options="$extra_options gnu-user.opt" > gas=yes > @@ -908,7 +911,7 @@ > esac > > case ${target} in > -aarch64*-*-elf | aarch64*-*-rtems*) > +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" > tmake_file="${tmake_file} aarch64/t-aarch64" > @@ -916,6 +919,9 @@ > aarch64-*-elf*) > use_gcc_stdint=wrap > ;; > + aarch64-*-fuchsia*) > + tm_file="${tm_file} fuchsia.h" > + ;; > aarch64-*-rtems*) > tm_file="${tm_file} rtems.h aarch64/rtems.h" > ;; > @@ -1119,7 +1125,7 @@ > tmake_file="${tmake_file} arm/t-arm arm/t-bpabi arm/t-phoenix" > target_cpu_cname="arm7tdmi" > ;; > -arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems*) > +arm*-*-eabi* | arm*-*-symbianelf* | arm*-*-rtems* | arm*-*-fuchsia*) > case ${target} in > arm*eb-*-eabi*) > tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1" > @@ -1134,6 +1140,11 @@ > tmake_file="${tmake_file} arm/t-bpabi" > use_gcc_stdint=wrap > ;; > + arm*-*-fuchsia*) > + tm_file="${tm_file} fuchsia.h arm/fuchsia-elf.h glibc-stdint.h" > + tmake_file="${tmake_file} arm/t-bpabi" > + target_cpu_cname="genericv7a" > + ;; > arm*-*-rtems*) > tm_file="${tm_file} rtems.h arm/rtems.h newlib-stdint.h" > tmake_file="${tmake_file} arm/t-bpabi arm/t-rtems" > @@ -1777,6 +1788,10 @@ > ;; > esac > ;; > +x86_64-*-fuchsia*) > + tmake_file="${tmake_file} i386/t-x86_64-elf" > + tm_file="${tm_file} i386/unix.h i386/att.h elfos.h newlib-stdint.h > i386/i386elf.h i386/x86-64.h fuchsia.h" > + ;; > ia64*-*-elf*) > tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h ia64/sysv4.h > ia64/elf.h" > tmake_file="ia64/t-ia64" > Index: config.host > =================================================================== > --- config.host (revision 243566) > +++ config.host (working copy) > @@ -99,7 +99,7 @@ > esac > > case ${host} in > - aarch64*-*-freebsd* | aarch64*-*-linux*) > + aarch64*-*-freebsd* | aarch64*-*-linux* | aarch64*-*-fuchsia*) > case ${target} in > aarch64*-*-*) > host_extra_gcc_objs="driver-aarch64.o" > @@ -107,7 +107,7 @@ > ;; > esac > ;; > - arm*-*-freebsd* | arm*-*-linux*) > + arm*-*-freebsd* | arm*-*-linux* | arm*-*-fuchsia*) > case ${target} in > arm*-*-*) > host_extra_gcc_objs="driver-arm.o" >