Commit 0eb6021c by Sebastian Huber

RTEMS: Improve GCC specification

Add a start/end file specification if the -qrtems option is present.
Allow targets to customize it.

Support the standard -nodefaultlibs option.

gcc/

	* config/rtems.h (RTEMS_STARTFILE_SPEC): Define if undefined.
	(RTEMS_ENDFILE_SPEC): Likewise.
	(STARTFILE_SPEC): Update comment.  Add RTEMS_STARTFILE_SPEC.
	(ENDFILE_SPEC): Add RTEMS_ENDFILE_SPEC.
	(LIB_SPECS): Support -nodefaultlibs option.
	* config/or1k/rtems.h (RTEMS_STARTFILE_SPEC): Define.
	(RTEMS_ENDFILE_SPEC): Likewise.
	* config/rs6000/rtems.h (RTEMS_STARTFILE_SPEC): Likewise.
	(RTEMS_ENDFILE_SPEC): Likewise.
	* config/v850/rtems.h (RTEMS_STARTFILE_SPEC): Likewise.
	(RTEMS_ENDFILE_SPEC): Likewise.
parent 340c711b
2020-05-11 Sebastian Huber <sebastian.huber@embedded-brains.de>
Backport from mainline
2020-05-05 Sebastian Huber <sebastian.huber@embedded-brains.de>
* config/rtems.h (RTEMS_STARTFILE_SPEC): Define if undefined.
(RTEMS_ENDFILE_SPEC): Likewise.
(STARTFILE_SPEC): Update comment. Add RTEMS_STARTFILE_SPEC.
(ENDFILE_SPEC): Add RTEMS_ENDFILE_SPEC.
(LIB_SPECS): Support -nodefaultlibs option.
* config/or1k/rtems.h (RTEMS_STARTFILE_SPEC): Define.
(RTEMS_ENDFILE_SPEC): Likewise.
* config/rs6000/rtems.h (RTEMS_STARTFILE_SPEC): Likewise.
(RTEMS_ENDFILE_SPEC): Likewise.
* config/v850/rtems.h (RTEMS_STARTFILE_SPEC): Likewise.
(RTEMS_ENDFILE_SPEC): Likewise.
2020-05-11 Martin Liska <mliska@suse.cz> 2020-05-11 Martin Liska <mliska@suse.cz>
Backport from mainline Backport from mainline
......
...@@ -28,3 +28,6 @@ ...@@ -28,3 +28,6 @@
builtin_assert ("system=rtems"); \ builtin_assert ("system=rtems"); \
} \ } \
while (0) while (0)
#define RTEMS_STARTFILE_SPEC "crtbegin%O%s"
#define RTEMS_ENDFILE_SPEC "crtend%O%s"
...@@ -292,3 +292,6 @@ ...@@ -292,3 +292,6 @@
"%{mads|myellowknife|mmvme|msim:%G %L %G;" \ "%{mads|myellowknife|mmvme|msim:%G %L %G;" \
"!mcall-*|mcall-linux:" GNU_USER_TARGET_LINK_GCC_C_SEQUENCE_SPEC ";" \ "!mcall-*|mcall-linux:" GNU_USER_TARGET_LINK_GCC_C_SEQUENCE_SPEC ";" \
":%G %L %G}" ":%G %L %G}"
#define RTEMS_STARTFILE_SPEC "ecrti%O%s rtems_crti%O%s crtbegin%O%s"
#define RTEMS_ENDFILE_SPEC "crtend%O%s rtems_crtn%O%s ecrtn%O%s"
...@@ -22,15 +22,25 @@ ...@@ -22,15 +22,25 @@
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
<http://www.gnu.org/licenses/>. */ <http://www.gnu.org/licenses/>. */
#ifndef RTEMS_STARTFILE_SPEC
#define RTEMS_STARTFILE_SPEC "crti%O%s crtbegin%O%s"
#endif
#ifndef RTEMS_ENDFILE_SPEC
#define RTEMS_ENDFILE_SPEC "crtend%O%s crtn%O%s"
#endif
/* /*
* Dummy start/end specification to let linker work as * The crt0.o is a dummy start file to let the linker work as needed by
* needed by autoconf scripts using this compiler. * autoconf scripts using this compiler.
*/ */
#undef STARTFILE_SPEC #undef STARTFILE_SPEC
#define STARTFILE_SPEC "crt0.o%s" #define STARTFILE_SPEC "%{!qrtems:crt0%O%s} " \
"%{qrtems:%{!nostdlib:%{!nostartfiles:" RTEMS_STARTFILE_SPEC "}}}"
#undef ENDFILE_SPEC #undef ENDFILE_SPEC
#define ENDFILE_SPEC "" #define ENDFILE_SPEC \
"%{qrtems:%{!nostdlib:%{!nostartfiles:" RTEMS_ENDFILE_SPEC "}}}"
/* /*
* Some targets do not set up LIB_SPECS, override it, here. * Some targets do not set up LIB_SPECS, override it, here.
...@@ -38,10 +48,10 @@ ...@@ -38,10 +48,10 @@
#define STD_LIB_SPEC "%{!shared:%{g*:-lg} %{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p}}" #define STD_LIB_SPEC "%{!shared:%{g*:-lg} %{!p:%{!pg:-lc}}%{p:-lc_p}%{pg:-lc_p}}"
#undef LIB_SPEC #undef LIB_SPEC
#define LIB_SPEC "%{!qrtems: " STD_LIB_SPEC "} " \ #define LIB_SPEC "%{!qrtems:" STD_LIB_SPEC "} " \
"%{!nostdlib: %{qrtems: --start-group \ "%{qrtems:%{!nostdlib:%{!nodefaultlibs:" \
-lrtemsbsp -lrtemscpu \ "--start-group -lrtemsbsp -lrtemscpu -latomic -lc -lgcc --end-group} " \
-latomic -lc -lgcc --end-group %{!qnolinkcmds: -T linkcmds%s}}}" "%{!qnolinkcmds:-T linkcmds%s}}}"
#define TARGET_POSIX_IO #define TARGET_POSIX_IO
......
...@@ -39,3 +39,6 @@ ...@@ -39,3 +39,6 @@
%{!mv850es:%{!mv850e1:%{mv*:-mv%*}} \ %{!mv850es:%{!mv850e1:%{mv*:-mv%*}} \
%{m8byte-align:-m8byte-align} \ %{m8byte-align:-m8byte-align} \
%{mgcc-abi:-mgcc-abi}}" %{mgcc-abi:-mgcc-abi}}"
#define RTEMS_STARTFILE_SPEC ""
#define RTEMS_ENDFILE_SPEC ""
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment