To make my previous email clearer, here's what I meant with the "minimal" GCC patch required (attached).
To manually test, you can place gcc-STARTFILE_SPEC.patch in $RSB/rtems/patches/ and then "git apply rsb-startfile.diff" to the RSB repo. Then build GCC and confirm that "x86_64-rtems5-gcc -dumpspecs" includes crti and crtbegin in the startfile susbtitution. Let me know if we aim to have this GCC work done before merging the x86_64 BSP (see https://lists.rtems.org/pipermail/devel/2018-July/022388.html) so I can leave bsp_specs in or clear it out accordingly? For now, I'm going to leave it in. On Fri, Jul 6, 2018 at 10:46 AM, Amaan Cheval <amaan.che...@gmail.com> wrote: > Hey, Joel! > > The x86_64 BSP currently uses an empty bsp_specs file contingent on > (at least the x86-64 parts of) this email thread's patch making it > upstream to GCC, and making their way into the RSB. > > 2 options: > - 1. Make the upstream GCC commit (at least the parts adding > rtemself64.h, editing config.gcc, and "#if 0"ing out > gcc/config/rtems.h) > - 2. Use a bsp_specs in the new BSP for the merge now, and empty it out later > > I can test and send you an x86_64 specific patch for GCC if you'd > like. Or if you prefer to have all the work together, we can go with > #2. > > Let me know! > > On Sat, May 19, 2018 at 3:17 AM, Joel Sherrill <j...@rtems.org> wrote: >> Thanks. I will try to deal with this Monday. >> >> My specs patches are not ready to push to gcc so I need to focus on >> just the parts to make x86_64 right. >> >> On Fri, May 18, 2018 at 3:41 PM, Amaan Cheval <amaan.che...@gmail.com> >> wrote: >>> >>> To be clear, I applied this patch (with my fixes) on the 7.3 release >>> through the RSB to test, not on GCC's master branch. >>> >>> > to add i386/rtemself64.h >>> >>> What you sent in this email thread adds rtemself64.h already. Do you >>> mean you'd like to split the commits up or something? >>> >>> The only changes I made on top of yours were: >>> >>> - Readd "rtems.h" to config.gcc >>> - Fix comments >>> >>> I've attached the patch file I used within the RSB here (sorry if you >>> meant a patch of _just_ the fixes I made on top of yours, this is just >>> the cumulative diff I used to patch GCC 7.3 to test). >>> >>> Regards, >>> >>> On Fri, May 18, 2018 at 7:00 PM, Joel Sherrill <j...@rtems.org> wrote: >>> > >>> > >>> > >>> > On Fri, May 18, 2018 at 1:38 AM, Amaan Cheval <amaan.che...@gmail.com> >>> > wrote: >>> >> >>> >> I just compiled my local fixed copy (adding rtems.h back in) and >>> >> there's good news! With the patch, the x86_64 compile stub works with >>> >> a blank bsp_specs file! >>> > >>> > >>> > Awesome! >>> > >>> > Can you send me your changes as a patch? I am thinking I need to make >>> > sure we agree on what the gcc master for x86_64-rtems looks like. >>> > >>> > Apparently I owe committing a patch to add i386/rtemself64.h since it is >>> > missing on the master. And the comment is wrong. What else? >>> > >>> >> On Fri, May 18, 2018 at 12:59 AM, Amaan Cheval <amaan.che...@gmail.com> >>> >> wrote: >>> >> > Hey! >>> >> > >>> >> > Thanks so much for sharing this, it's quite useful to put your >>> >> > earlier >>> >> > email[1] about minimzing the bsp_specs in context. >>> >> > >>> >> > From looking ahead a bit without testing (still compiling), the patch >>> >> > may need an ENDFILE_SPEC definition as well for "crtend.o" (it >>> >> > defines >>> >> > __TMC_END__ which crtbegin.o has left undefined for eg.) and possibly >>> >> > "crtn.o", at least to eliminate the x86_64 port's bsp_specs entirely >>> >> > (see here[2]). >>> >> >>> >> Just noticed that ENDFILE_SPEC already includes crtend in i386elf.h, >>> >> so there's no need for this change. >>> >> >>> >> > >>> >> > I've also left some comments inline below. >>> >> > >>> >> > +1 on upstreaming this into GCC (making sure it also backports to 7.3 >>> >> > for simplicity, so we don't need to write a 7.3-specific patch for >>> >> > the >>> >> > RSB as well) with a few additons (at least for the x86_64 target, to >>> >> > try to have an empty bsp_specs to begin with). >>> >> > >>> >> > [1] https://lists.rtems.org/pipermail/devel/2018-May/021430.html >>> >> > [2] >>> >> > >>> >> > https://github.com/AmaanC/rtems-gsoc18/blob/ac/daily-01-compile-stub/bsps/x86_64/amd64/start/bsp_specs >>> >> > >>> >> > On Wed, May 16, 2018 at 8:46 PM, Joel Sherrill <j...@rtems.org> >>> >> > wrote: >>> >> >> --- >>> >> >> gcc/config.gcc | 2 +- >>> >> >> gcc/config/arm/rtems.h | 4 ++++ >>> >> >> gcc/config/bfin/rtems.h | 4 ++++ >>> >> >> gcc/config/i386/rtemself.h | 6 +++++- >>> >> >> gcc/config/i386/rtemself64.h | 39 >>> >> >> +++++++++++++++++++++++++++++++++++++++ >>> >> >> gcc/config/m68k/rtemself.h | 4 ++++ >>> >> >> gcc/config/microblaze/rtems.h | 4 ++++ >>> >> >> gcc/config/mips/rtems.h | 4 ++++ >>> >> >> gcc/config/moxie/rtems.h | 4 ++++ >>> >> >> gcc/config/nios2/rtems.h | 4 ++++ >>> >> >> gcc/config/riscv/rtems.h | 4 ++++ >>> >> >> gcc/config/rs6000/rtems.h | 5 +++++ >>> >> >> gcc/config/rtems.h | 6 +++++- >>> >> >> gcc/config/sh/rtems.h | 4 ++++ >>> >> >> gcc/config/sh/rtemself.h | 4 ++++ >>> >> >> gcc/config/sparc/rtemself.h | 4 ++++ >>> >> >> gcc/config/v850/rtems.h | 4 ++++ >>> >> >> 17 files changed, 103 insertions(+), 3 deletions(-) >>> >> >> create mode 100644 gcc/config/i386/rtemself64.h >>> >> >> >>> >> >> diff --git a/gcc/config.gcc b/gcc/config.gcc >>> >> >> index d509800..de27e5c 100644 >>> >> >> --- a/gcc/config.gcc >>> >> >> +++ b/gcc/config.gcc >>> >> >> @@ -1499,7 +1499,7 @@ x86_64-*-elf*) >>> >> >> tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h >>> >> >> newlib-stdint.h i386/i386elf.h i386/x86-64.h" >>> >> >> ;; >>> >> >> x86_64-*-rtems*) >>> >> >> - tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h >>> >> >> newlib-stdint.h i386/i386elf.h i386/x86-64.h i386/rtemself.h >>> >> >> rtems.h" >>> >> >> + tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h >>> >> >> newlib-stdint.h i386/i386elf.h i386/x86-64.h i386/rtemself64.h" >>> >> > >>> >> > In rebasing with upstream, this commit must have silently mistakenly >>> >> > also dropped rtems.h (which my patch earlier added to support the >>> >> > -qrtems, -qnolinkcmds, etc. flags). >>> >> > >>> >> >> ;; >>> >> >> i[34567]86-*-rdos*) >>> >> >> tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h >>> >> >> newlib-stdint.h i386/i386elf.h i386/rdos.h" >>> >> >> diff --git a/gcc/config/arm/rtems.h b/gcc/config/arm/rtems.h >>> >> >> index 1123f4a..e79ce90 100644 >>> >> >> --- a/gcc/config/arm/rtems.h >>> >> >> +++ b/gcc/config/arm/rtems.h >>> >> >> @@ -34,3 +34,7 @@ >>> >> >> } while (0) >>> >> >> >>> >> >> #define ARM_DEFAULT_SHORT_ENUMS false >>> >> >> + >>> >> >> +#undef STARTFILE_SPEC >>> >> >> +#define STARTFILE_SPEC "\ >>> >> >> +%{!nostdlib: %{!qrtems: crt0.o%s} crti.o%s crtbegin.o%s}" >>> >> >> diff --git a/gcc/config/bfin/rtems.h b/gcc/config/bfin/rtems.h >>> >> >> index 6a9a41f..28a69b9 100644 >>> >> >> --- a/gcc/config/bfin/rtems.h >>> >> >> +++ b/gcc/config/bfin/rtems.h >>> >> >> @@ -31,3 +31,7 @@ >>> >> >> builtin_assert ("system=rtems"); \ >>> >> >> } \ >>> >> >> while (0) >>> >> >> + >>> >> >> +#undef STARTFILE_SPEC >>> >> >> +#define STARTFILE_SPEC "\ >>> >> >> +%{!nostdlib: %{!qrtems: crt0.o%s} crti.o%s crtbegin.o%s}" >>> >> >> diff --git a/gcc/config/i386/rtemself.h b/gcc/config/i386/rtemself.h >>> >> >> index 65e8dad..3a09354 100644 >>> >> >> --- a/gcc/config/i386/rtemself.h >>> >> >> +++ b/gcc/config/i386/rtemself.h >>> >> >> @@ -1,4 +1,4 @@ >>> >> >> -/* Definitions for rtems targeting an ix86 using ELF. >>> >> >> +/* Definitions for rtems targeting an x86_64 using ELF. >>> >> > >>> >> > I think you meant to have this comment in rtemself64.h, which says >>> >> > ix86 currently? >>> >> > >>> >> >> Copyright (C) 1996-2018 Free Software Foundation, Inc. >>> >> >> Contributed by Joel Sherrill (j...@oarcorp.com). >>> >> >> >>> >> >> @@ -33,3 +33,7 @@ >>> >> >> builtin_assert ("system=rtems"); \ >>> >> >> } \ >>> >> >> while (0) >>> >> >> + >>> >> >> +#undef STARTFILE_SPEC >>> >> >> +#define STARTFILE_SPEC "\ >>> >> >> +%{!nostdlib: %{!qrtems: crt0.o%s} crtbegin.o%s}" >>> >> >> diff --git a/gcc/config/i386/rtemself64.h >>> >> >> b/gcc/config/i386/rtemself64.h >>> >> >> new file mode 100644 >>> >> >> index 0000000..34e5937 >>> >> >> --- /dev/null >>> >> >> +++ b/gcc/config/i386/rtemself64.h >>> >> >> @@ -0,0 +1,39 @@ >>> >> >> +/* Definitions for rtems targeting an ix86 using ELF. >>> >> > >>> >> > See above. >>> >> > >>> >> >> + Copyright (C) 1996-2018 Free Software Foundation, Inc. >>> >> >> + Contributed by Joel Sherrill (j...@oarcorp.com). >>> >> >> + >>> >> >> + 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. >>> >> >> + >>> >> >> + Under Section 7 of GPL version 3, you are granted additional >>> >> >> + permissions described in the GCC Runtime Library Exception, >>> >> >> version >>> >> >> + 3.1, as published by the Free Software Foundation. >>> >> >> + >>> >> >> + You should have received a copy of the GNU General Public >>> >> >> License >>> >> >> and >>> >> >> + a copy of the GCC Runtime Library Exception along with this >>> >> >> program; >>> >> >> + see the files COPYING3 and COPYING.RUNTIME respectively. If >>> >> >> not, >>> >> >> see >>> >> >> + <http://www.gnu.org/licenses/>. */ >>> >> >> + >>> >> >> +/* Specify predefined symbols in preprocessor. */ >>> >> >> + >>> >> >> +#define TARGET_OS_CPP_BUILTINS() \ >>> >> >> + do \ >>> >> >> + { \ >>> >> >> + builtin_define ("__rtems__"); \ >>> >> >> + builtin_define ("__USE_INIT_FINI__"); \ >>> >> >> + builtin_assert ("system=rtems"); \ >>> >> >> + } \ >>> >> >> + while (0) >>> >> >> + >>> >> >> +#undef STARTFILE_SPEC >>> >> >> +#define STARTFILE_SPEC "\ >>> >> >> +%{!nostdlib: %{!qrtems: crt0.o%s} crti.o%s crtbegin.o%s}" >>> >> >> diff --git a/gcc/config/m68k/rtemself.h b/gcc/config/m68k/rtemself.h >>> >> >> index e18a06e..6f31aa5 100644 >>> >> >> --- a/gcc/config/m68k/rtemself.h >>> >> >> +++ b/gcc/config/m68k/rtemself.h >>> >> >> @@ -36,3 +36,7 @@ >>> >> >> builtin_assert ("system=rtems"); \ >>> >> >> } \ >>> >> >> while (0) >>> >> >> + >>> >> >> +#undef STARTFILE_SPEC >>> >> >> +#define STARTFILE_SPEC "\ >>> >> >> +%{!nostdlib: %{!qrtems: crt0.o%s} crti.o%s crtbegin.o%s}" >>> >> >> diff --git a/gcc/config/microblaze/rtems.h >>> >> >> b/gcc/config/microblaze/rtems.h >>> >> >> index 5f23321..fc8914c 100644 >>> >> >> --- a/gcc/config/microblaze/rtems.h >>> >> >> +++ b/gcc/config/microblaze/rtems.h >>> >> >> @@ -35,3 +35,7 @@ >>> >> >> %{mbig-endian:-EB --oformat=elf32-microblaze} \ >>> >> >> %{mlittle-endian:-EL --oformat=elf32-microblazeel} \ >>> >> >> %{mxl-gp-opt:%{G*}} %{!mxl-gp-opt: -G 0}" >>> >> >> + >>> >> >> +#undef STARTFILE_SPEC >>> >> >> +#define STARTFILE_SPEC "\ >>> >> >> +%{!nostdlib: %{!qrtems: crt0.o%s} crti.o%s crtbegin.o%s}" >>> >> >> diff --git a/gcc/config/mips/rtems.h b/gcc/config/mips/rtems.h >>> >> >> index 66e00bf..6e96853 100644 >>> >> >> --- a/gcc/config/mips/rtems.h >>> >> >> +++ b/gcc/config/mips/rtems.h >>> >> >> @@ -37,3 +37,7 @@ do { \ >>> >> >> */ >>> >> >> #undef MIPS_DEFAULT_GVALUE >>> >> >> #define MIPS_DEFAULT_GVALUE 0 >>> >> >> + >>> >> >> +#undef STARTFILE_SPEC >>> >> >> +#define STARTFILE_SPEC "\ >>> >> >> +%{!nostdlib: %{!qrtems: crt0.o%s} crti.o%s crtbegin.o%s}" >>> >> >> diff --git a/gcc/config/moxie/rtems.h b/gcc/config/moxie/rtems.h >>> >> >> index bc28d6e..6c79063 100644 >>> >> >> --- a/gcc/config/moxie/rtems.h >>> >> >> +++ b/gcc/config/moxie/rtems.h >>> >> >> @@ -38,3 +38,7 @@ >>> >> >> #undef PTRDIFF_TYPE >>> >> >> #undef WCHAR_TYPE >>> >> >> #undef WCHAR_TYPE_SIZE >>> >> >> + >>> >> >> +#undef STARTFILE_SPEC >>> >> >> +#define STARTFILE_SPEC "\ >>> >> >> +%{!nostdlib: %{!qrtems: crt0.o%s} crti.o%s crtbegin.o%s}" >>> >> >> diff --git a/gcc/config/nios2/rtems.h b/gcc/config/nios2/rtems.h >>> >> >> index b4a6082..f6eedf6 100644 >>> >> >> --- a/gcc/config/nios2/rtems.h >>> >> >> +++ b/gcc/config/nios2/rtems.h >>> >> >> @@ -37,3 +37,7 @@ do { \ >>> >> >> >>> >> >> This is done so RTEMS targets have Thread Local Storage like >>> >> >> Linux. >>> >> >> */ >>> >> >> #define TARGET_LINUX_ABI 1 >>> >> >> + >>> >> >> +#undef STARTFILE_SPEC >>> >> >> +#define STARTFILE_SPEC "\ >>> >> >> +%{!nostdlib: %{!qrtems: crt0.o%s} crti.o%s crtbegin.o%s}" >>> >> >> diff --git a/gcc/config/riscv/rtems.h b/gcc/config/riscv/rtems.h >>> >> >> index 231b6a0..a9d1e01 100644 >>> >> >> --- a/gcc/config/riscv/rtems.h >>> >> >> +++ b/gcc/config/riscv/rtems.h >>> >> >> @@ -29,3 +29,7 @@ >>> >> >> builtin_define ("__USE_INIT_FINI__"); \ >>> >> >> builtin_assert ("system=rtems"); \ >>> >> >> } while (0) >>> >> >> + >>> >> >> +#undef STARTFILE_SPEC >>> >> >> +#define STARTFILE_SPEC "\ >>> >> >> +%{!nostdlib: %{!qrtems: crt0.o%s} crti.o%s crtbegin.o%s}" >>> >> >> diff --git a/gcc/config/rs6000/rtems.h b/gcc/config/rs6000/rtems.h >>> >> >> index 54ddcb4..20a4ffa 100644 >>> >> >> --- a/gcc/config/rs6000/rtems.h >>> >> >> +++ b/gcc/config/rs6000/rtems.h >>> >> >> @@ -72,6 +72,11 @@ >>> >> >> } \ >>> >> >> while (0) >>> >> >> >>> >> >> + >>> >> >> +#undef STARTFILE_SPEC >>> >> >> +#define STARTFILE_SPEC "\ >>> >> >> +%{!nostdlib: %{!qrtems: crt0.o%s} ecrti.o%s crtbegin.o%s}" >>> >> >> + >>> >> >> /* Copy and paste from linux64.h and freebsd64.h */ >>> >> >> #undef RELOCATABLE_NEEDS_FIXUP >>> >> >> #define RELOCATABLE_NEEDS_FIXUP \ >>> >> >> diff --git a/gcc/config/rtems.h b/gcc/config/rtems.h >>> >> >> index dcea95c..9a0619c 100644 >>> >> >> --- a/gcc/config/rtems.h >>> >> >> +++ b/gcc/config/rtems.h >>> >> >> @@ -30,11 +30,15 @@ >>> >> >> * Dummy start/end specification to let linker work as >>> >> >> * needed by autoconf scripts using this compiler. >>> >> >> */ >>> >> >> +#if 0 >>> >> >> #undef STARTFILE_SPEC >>> >> >> -#define STARTFILE_SPEC "crt0.o%s" >>> >> >> +#define STARTFILE_SPEC "%{!qrtems: crt0.o%s}" >>> >> >> +#endif >>> >> >> >>> >> >> +#if 0 >>> >> >> #undef ENDFILE_SPEC >>> >> >> #define ENDFILE_SPEC "" >>> >> >> +#endif >>> >> >> >>> >> >> /* >>> >> >> * Some targets do not set up LIB_SPECS, override it, here. >>> >> >> diff --git a/gcc/config/sh/rtems.h b/gcc/config/sh/rtems.h >>> >> >> index d2f2b2a..f699151 100644 >>> >> >> --- a/gcc/config/sh/rtems.h >>> >> >> +++ b/gcc/config/sh/rtems.h >>> >> >> @@ -29,3 +29,7 @@ >>> >> >> builtin_define( "__rtems__" ); \ >>> >> >> builtin_assert( "system=rtems" ); \ >>> >> >> } while (0) >>> >> >> + >>> >> >> +#undef STARTFILE_SPEC >>> >> >> +#define STARTFILE_SPEC "\ >>> >> >> +%{!nostdlib: %{!qrtems: crt0.o%s} crti.o%s crtbegin.o%s}" >>> >> >> diff --git a/gcc/config/sh/rtemself.h b/gcc/config/sh/rtemself.h >>> >> >> index 6a67b49..85f26b0 100644 >>> >> >> --- a/gcc/config/sh/rtemself.h >>> >> >> +++ b/gcc/config/sh/rtemself.h >>> >> >> @@ -29,3 +29,7 @@ >>> >> >> builtin_define( "__rtems__" ); \ >>> >> >> builtin_assert( "system=rtems" ); \ >>> >> >> } while (0) >>> >> >> + >>> >> >> +#undef STARTFILE_SPEC >>> >> >> +#define STARTFILE_SPEC "\ >>> >> >> +%{!nostdlib: %{!qrtems: crt0.o%s} crti.o%s crtbegin.o%s}" >>> >> >> diff --git a/gcc/config/sparc/rtemself.h >>> >> >> b/gcc/config/sparc/rtemself.h >>> >> >> index e4b52d8..7c5bf43 100644 >>> >> >> --- a/gcc/config/sparc/rtemself.h >>> >> >> +++ b/gcc/config/sparc/rtemself.h >>> >> >> @@ -38,3 +38,7 @@ >>> >> >> >>> >> >> /* Use the default */ >>> >> >> #undef LINK_GCC_C_SEQUENCE_SPEC >>> >> >> + >>> >> >> +#undef STARTFILE_SPEC >>> >> >> +#define STARTFILE_SPEC "\ >>> >> >> +%{!nostdlib: %{!qrtems: crt0.o%s} crti.o%s crtbegin.o%s}" >>> >> >> diff --git a/gcc/config/v850/rtems.h b/gcc/config/v850/rtems.h >>> >> >> index b20b2c3..1b56649 100644 >>> >> >> --- a/gcc/config/v850/rtems.h >>> >> >> +++ b/gcc/config/v850/rtems.h >>> >> >> @@ -39,3 +39,7 @@ >>> >> >> %{!mv850es:%{!mv850e1:%{mv*:-mv%*}} \ >>> >> >> %{m8byte-align:-m8byte-align} \ >>> >> >> %{mgcc-abi:-mgcc-abi}}" >>> >> >> + >>> >> >> +#undef STARTFILE_SPEC >>> >> >> +#define STARTFILE_SPEC "\ >>> >> >> +%{!nostdlib: %{!qrtems: crt0.o%s} crti.o%s crtbegin.o%s}" >>> >> >> -- >>> >> >> 1.8.3.1 >>> >> >> >>> >> >> _______________________________________________ >>> >> >> devel mailing list >>> >> >> devel@rtems.org >>> >> >> http://lists.rtems.org/mailman/listinfo/devel >>> > >>> > >> >>
diff --git a/gcc/config.gcc b/gcc/config.gcc index 99c7ae16793..aa136177c26 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -1496,7 +1496,7 @@ x86_64-*-elf*) tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h" ;; x86_64-*-rtems*) - tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h i386/rtemself.h rtems.h" + tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h i386/rtemself64.h rtems.h" ;; i[34567]86-*-rdos*) tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h i386/rdos.h" diff --git a/gcc/config/i386/rtemself64.h b/gcc/config/i386/rtemself64.h new file mode 100644 index 00000000000..cb26c3eb0cc --- /dev/null +++ b/gcc/config/i386/rtemself64.h @@ -0,0 +1,39 @@ +/* Definitions for rtems targeting an x86_64 using ELF. + Copyright (C) 1996-2018 Free Software Foundation, Inc. + Contributed by Joel Sherrill (j...@oarcorp.com). + + 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. + + Under Section 7 of GPL version 3, you are granted additional + permissions described in the GCC Runtime Library Exception, version + 3.1, as published by the Free Software Foundation. + + You should have received a copy of the GNU General Public License and + a copy of the GCC Runtime Library Exception along with this program; + see the files COPYING3 and COPYING.RUNTIME respectively. If not, see + <http://www.gnu.org/licenses/>. */ + +/* Specify predefined symbols in preprocessor. */ + +#define TARGET_OS_CPP_BUILTINS() \ + do \ + { \ + builtin_define ("__rtems__"); \ + builtin_define ("__USE_INIT_FINI__"); \ + builtin_assert ("system=rtems"); \ + } \ + while (0) + +#undef STARTFILE_SPEC +#define STARTFILE_SPEC "\ +%{!nostdlib: %{!qrtems: crt0.o%s} crti.o%s crtbegin.o%s}" diff --git a/gcc/config/rtems.h b/gcc/config/rtems.h index dcea95cddad..9a0619cb383 100644 --- a/gcc/config/rtems.h +++ b/gcc/config/rtems.h @@ -30,11 +30,15 @@ * Dummy start/end specification to let linker work as * needed by autoconf scripts using this compiler. */ +#if 0 #undef STARTFILE_SPEC -#define STARTFILE_SPEC "crt0.o%s" +#define STARTFILE_SPEC "%{!qrtems: crt0.o%s}" +#endif +#if 0 #undef ENDFILE_SPEC #define ENDFILE_SPEC "" +#endif /* * Some targets do not set up LIB_SPECS, override it, here.
diff --git a/rtems/config/5/rtems-x86_64.bset b/rtems/config/5/rtems-x86_64.bset index 6041971..17cf0fc 100644 --- a/rtems/config/5/rtems-x86_64.bset +++ b/rtems/config/5/rtems-x86_64.bset @@ -14,6 +14,12 @@ %patch add gcc --rsb-file=gcc-f8fd78279d353f6959e75ac25571c1b7b2dec110.patch https://gcc.gnu.org/git/?p=gcc.git;a=blobdiff_plain;f=libgcc/config.host;h=f8fd78279d353f6959e75ac25571c1b7b2dec110;hp=11b4acaff55e00ee6bd3c182e9da5dc597ac57c4;hb=ab55f7db3694293e4799d58f7e1a556c0eae863a;hpb=344c180cca810c50f38fd545bb9a102fb39306b7 %hash sha512 gcc-f8fd78279d353f6959e75ac25571c1b7b2dec110.patch aef76f9d45a53096a021521375fc302a907f78545cc57683a7a00ec61608b8818115720f605a6b1746f479c8568963b380138520e259cbb9e8951882c2f1567f +# +# Have gcc use crti.o and crtbegin.o for startfile (allowing minimal bsp_specs file) +# +%patch add gcc --rsb-file=gcc-STARTFILE_SPEC.patch https://example.com +%hash sha512 gcc-STARTFILE_SPEC.patch 92e8fd08773f41fb3ff9d71d5cd980e7c9de740cbf288eea04d25e07519f421356f390898197958f40d0e0936506b901899fb0053bd162f454d41e08bc0fd3e5 + # # Binutils PEI target for UEFI support #
_______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel