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<[email protected]>
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"
>