Message ID | 198a8ba4-7b93-7d28-1533-694ff87b2940@google.com |
---|---|
State | New |
Headers | show |
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. >
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. >> >
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" >
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" >>
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"