Message ID | f777ac28-36e1-ebe9-9900-c4a95e9541a5@google.com |
---|---|
State | New |
Headers | show |
On Thu, Dec 8, 2016 at 2:55 PM, Josh Conner <joshconner@google.com> wrote: > This patch adds support to gcc for the Fuchsia OS > (https://fuchsia.googlesource.com/). > > OK for mainline? A few comments: > +/* Build with PIC by default. */ > +#undef CC1_SPEC > +#define CC1_SPEC "%{!fno-pic:%{!fno-PIC:%{!fpic:%{!fPIC: -fPIC}}}}" Is it PIC by default or really PIE by default? Also how does this interact with the -fpie/-fPIE options? Thanks, Andrew > > 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/9/16 12:26 AM, Andrew Pinski wrote: > On Thu, Dec 8, 2016 at 2:55 PM, Josh Conner <joshconner@google.com> wrote: >> This patch adds support to gcc for the Fuchsia OS >> (https://fuchsia.googlesource.com/). >> >> OK for mainline? > A few comments: >> +/* Build with PIC by default. */ >> +#undef CC1_SPEC >> +#define CC1_SPEC "%{!fno-pic:%{!fno-PIC:%{!fpic:%{!fPIC: -fPIC}}}}" > Is it PIC by default or really PIE by default? > Also how does this interact with the -fpie/-fPIE options? The intent was to make it PIE by default - I was mistakenly under the impression that this meant building with -fpic/PIC, a la the android builds. Does this seem more reasonable: #define CC1_SPEC "%{!fno-pic:%{!fno-PIC:%{!fpic:%{!fPIC:" \ "%{!fno-pie:%{!fno-PIE:%{!fpie:%{!fPIE: -fPIC}}}}}}}}" ? Thanks - Josh > Thanks, > Andrew > > >> 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. >> >>
Sorry, that should have been: #define CC1_SPEC "%{!fno-pic:%{!fno-PIC:%{!fpic:%{!fPIC:" \ "%{!fno-pie:%{!fno-PIE:%{!fpie:%{!fPIE: -fPIE}}}}}}}}" (default to PIE, not PIC) On Fri, Dec 9, 2016 at 11:33 AM, Josh Conner <joshconner@google.com> wrote: > On 12/9/16 12:26 AM, Andrew Pinski wrote: >> >> On Thu, Dec 8, 2016 at 2:55 PM, Josh Conner <joshconner@google.com> wrote: >>> >>> This patch adds support to gcc for the Fuchsia OS >>> (https://fuchsia.googlesource.com/). >>> >>> OK for mainline? >> >> A few comments: >>> >>> +/* Build with PIC by default. */ >>> +#undef CC1_SPEC >>> +#define CC1_SPEC "%{!fno-pic:%{!fno-PIC:%{!fpic:%{!fPIC: -fPIC}}}}" >> >> Is it PIC by default or really PIE by default? >> Also how does this interact with the -fpie/-fPIE options? > > > The intent was to make it PIE by default - I was mistakenly under the > impression that this meant > building with -fpic/PIC, a la the android builds. Does this seem more > reasonable: > > #define CC1_SPEC "%{!fno-pic:%{!fno-PIC:%{!fpic:%{!fPIC:" \ > "%{!fno-pie:%{!fno-PIE:%{!fpie:%{!fPIE: -fPIC}}}}}}}}" > > ? > > Thanks - > > Josh > > > >> Thanks, >> Andrew >> >> >>> 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 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. R.
On Thu, 8 Dec 2016, Josh Conner wrote: > This patch adds support to gcc for the Fuchsia OS > (https://fuchsia.googlesource.com/). Once this is in, can you please suggest a news item for our main page? (You could cook a patch following https://gcc.gnu.org/about.html or suggest wording or an HTML snippet, and I'll take it from there.) Similarly, would be good to add this to gcc-7/changes.html. Gerald
On 12/11/16 7:24 AM, Gerald Pfeifer wrote: > On Thu, 8 Dec 2016, Josh Conner wrote: >> This patch adds support to gcc for the Fuchsia OS >> (https://fuchsia.googlesource.com/). > > Once this is in, can you please suggest a news item for our > main page? > > (You could cook a patch following https://gcc.gnu.org/about.html > or suggest wording or an HTML snippet, and I'll take it from there.) > > Similarly, would be good to add this to gcc-7/changes.html. Sure thing -- I'll submit patches for wwwdocs once my gcc changes go in. - Josh
Gerald - Attached is my recommended patch for changes to the web docs describing Fuchsia support. Please let me know if there's anything else I can do. Thanks! - Josh On 12/11/16 7:24 AM, Gerald Pfeifer wrote: > On Thu, 8 Dec 2016, Josh Conner wrote: >> This patch adds support to gcc for the Fuchsia OS >> (https://fuchsia.googlesource.com/). > Once this is in, can you please suggest a news item for our > main page? > (You could cook a patch following https://gcc.gnu.org/about.html > or suggest wording or an HTML snippet, and I'll take it from there.) > Similarly, would be good to add this to gcc-7/changes.html. > Gerald > Index: index.html =================================================================== RCS file: /cvs/gcc/wwwdocs/htdocs/index.html,v retrieving revision 1.1037 diff -r1.1037 index.html 48a49,53 > <dt><span>Fuchsia OS support</span> > <span class="date">[2017-10-01]</span></dt> > <dd><a href="https://fuchsia.googlesource.com/"> Fuchsia OS</a> > support was added to GCC, contributed by Google.</dd> > Index: gcc-7/changes.html =================================================================== RCS file: /cvs/gcc/wwwdocs/htdocs/gcc-7/changes.html,v retrieving revision 1.39 diff -r1.39 changes.html 533a534,539 > <h3 id="fuchsia">Fuchsia</h3> > <ul> > <li>Support has been added for the > <a href="https://fuchsia.googlesource.com/"> Fuchsia OS</a>.</li> > </ul> >
On Tue, 17 Jan 2017, Josh Conner via gcc-patches wrote: > Attached is my recommended patch for changes to the web docs describing > Fuchsia support. Please let me know if there's anything else I can do. This looks fine (just remove the blank before "Fuchsia"); and sorry for the delay getting back to this! Gerald
On 2/1/17 3:29 PM, Gerald Pfeifer wrote: > On Tue, 17 Jan 2017, Josh Conner via gcc-patches wrote: >> Attached is my recommended patch for changes to the web docs describing >> Fuchsia support. Please let me know if there's anything else I can do. > This looks fine (just remove the blank before "Fuchsia"); and > sorry for the delay getting back to this! Done. Thanks! - Josh
Index: gcc/config/arm/fuchsia-elf.h =================================================================== --- gcc/config/arm/fuchsia-elf.h (revision 0) +++ gcc/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: gcc/config/fuchsia.h =================================================================== --- gcc/config/fuchsia.h (revision 0) +++ gcc/config/fuchsia.h (working copy) @@ -0,0 +1,64 @@ +/* Base configuration file for all Fuchsia targets. + Copyright (C) 2016 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/>. */ + +/* 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" + +/* Build with PIC by default. */ +#undef CC1_SPEC +#define CC1_SPEC "%{!fno-pic:%{!fno-PIC:%{!fpic:%{!fPIC: -fPIC}}}}" + +#undef LIB_SPEC +#define LIB_SPEC "-lmxio -lmagenta -lc -llaunchpad" \ + "%{!static: -lgcc_s}" + +#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: gcc/config.gcc =================================================================== --- gcc/config.gcc (revision 243452) +++ gcc/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,10 @@ 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" + ;; 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 +1787,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: gcc/config.host =================================================================== --- gcc/config.host (revision 243452) +++ gcc/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"