diff mbox

Add support for Fuchsia (OS)

Message ID 198a8ba4-7b93-7d28-1533-694ff87b2940@google.com
State New
Headers show

Commit Message

Li, Pan2 via Gcc-patches Dec. 12, 2016, 9:31 p.m. UTC
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<joshconner@google.com>

	* 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.

Comments

Li, Pan2 via Gcc-patches Dec. 19, 2016, 6:05 p.m. UTC | #1
Ping?


On 12/12/16 1:31 PM, Josh Conner 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<joshconner@google.com>
>
>     * 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.
>
Li, Pan2 via Gcc-patches Dec. 27, 2016, 8:43 p.m. UTC | #2
Ping^2?


On 12/19/16 10:05 AM, Josh Conner wrote:
> Ping?
>
>
> On 12/12/16 1:31 PM, Josh Conner 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<joshconner@google.com>
>>
>>     * 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.
>>
>
Richard Earnshaw (lists) Jan. 10, 2017, 3:54 p.m. UTC | #3
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<joshconner@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"
>
Li, Pan2 via Gcc-patches Jan. 10, 2017, 6:02 p.m. UTC | #4
On 1/10/17 7:54 AM, Richard Earnshaw (lists) wrote:
> 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<joshconner@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.

Applied with those changes, thanks.

- Josh
>
> 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"
>>
diff mbox

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"