On 21/12/17 08:15, Chris Johns wrote:
On 21/12/17 5:47 pm, Sebastian Huber wrote:
Hello,
we should try to understand better why the things are how they are currently.
Agreed.
In Newlib we have this ctr0.c:
https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;a=blob;f=newlib/libc/sys/rtems/crt0.c;h=9778b985a180ba68990b40b6e4423aa970ca5ec7;hb=HEAD
This is the default start file for the RTEMS GCC:
https://gcc.gnu.org/viewcvs/gcc/trunk/gcc/config/rtems.h?view=markup
/*
* Dummy start/end specification to let linker work as
* needed by autoconf scripts using this compiler.
*/
#undef STARTFILE_SPEC
#define STARTFILE_SPEC "crt0.o%s"
We use the bsp_specs to override this (we could also use -nostartfiles at the
command line):
%rename startfile old_startfile
*startfile:
%{!qrtems: %(old_startfile)} \
%{!nostdlib: %{qrtems: crti.o%s crtbegin.o%s}}
Why do we define a STARTFILE_SPEC in GCC which we don't use for real
applications?
I good question. The gcc defaults should be focused on a user and the closer
this is to other platforms the better.
The purpose of the ctr0.o seems to be to make the Autoconf stuff happy during
GCC build, e.g. for libstdc++.
Do other build system tests, ie autoconf, require an installed BSP?
If you do link-time checks then we support currently two variants.
1. Via the Newlib ctr0.o which promises that a BSP will provide a proper
implementation eventually (using other compiler/linker options).
2. You provide all options to link against the real BSP libraries.
The support for 1. is actually quite nice. You can build libraries per
multilib with it.
One option would be to do this:
1. Change STARTFILE_SPEC:
#undef STARTFILE_SPEC
#define STARTFILE_SPEC "start.o%s crti.o%s crtbegin.o"
What does a list mean?
Several startfiles. We also have endfiles.
2. Rename Newlib ctr0.o into start.o and do NOT install it. This way it is used
only during GCC build to make the GCC Autoconf happy.
OK.
3. Provide start.o in all BSPs.
How do we deal with other Autoconf (or other link-time feature detection) stuff?
This change could break all the third party library build scripts.
I do not think this can be avoided or we can never change what we have. I do not
like the use of -B on the gcc command line.
I think the -B switch is the only way to add search paths at the command
line for startfiles, see "add_prefix.*startfile" in gcc/gcc.c.
--
Sebastian Huber, embedded brains GmbH
Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone : +49 89 189 47 41-16
Fax : +49 89 189 47 41-09
E-Mail : sebastian.hu...@embedded-brains.de
PGP : Public key available on request.
Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel