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 <[email protected]> wrote:
>
>
>
> On Fri, May 18, 2018 at 1:38 AM, Amaan Cheval <[email protected]>
> 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 <[email protected]>
>> 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 <[email protected]> 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 ([email protected]).
>> >>
>> >> @@ -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 ([email protected]).
>> >> +
>> >> + 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
>> >> [email protected]
>> >> 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/arm/rtems.h b/gcc/config/arm/rtems.h
index 1123f4af392..e79ce90616e 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 6a9a41facdf..28a69b943da 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 65e8dad0016..54adafec7b1 100644
--- a/gcc/config/i386/rtemself.h
+++ b/gcc/config/i386/rtemself.h
@@ -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 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 ([email protected]).
+
+ 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 e18a06e31a6..6f31aa58795 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 5f233212273..fc8914cc279 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 66e00bf8757..6e968531e21 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 bc28d6e342e..6c79063382a 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 b4a6082f41e..f6eedf6b113 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 231b6a082ed..a9d1e01f732 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 54ddcb4b552..20a4ffaeddf 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 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/gcc/config/sh/rtems.h b/gcc/config/sh/rtems.h
index d2f2b2a6354..f69915112dc 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 6a67b496c4c..85f26b0eb8d 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 e4b52d86dac..7c5bf431dda 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 b20b2c3c382..1b56649484b 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}"
_______________________________________________
devel mailing list
[email protected]
http://lists.rtems.org/mailman/listinfo/devel