aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/vxworks.h
diff options
context:
space:
mode:
authorOlivier Hainque <hainque@adacore.com>2018-09-21 13:05:19 +0000
committerOlivier Hainque <hainque@gcc.gnu.org>2018-09-21 13:05:19 +0000
commit8d0ef282099ee0681222631bfb6421e28a177906 (patch)
tree208493162c1d1aeebae86e96c7188872471f884e /gcc/config/vxworks.h
parentf509691b96daa3f7d28a1feefb2f5db982b44972 (diff)
downloadgcc-8d0ef282099ee0681222631bfb6421e28a177906.zip
gcc-8d0ef282099ee0681222631bfb6421e28a177906.tar.gz
gcc-8d0ef282099ee0681222631bfb6421e28a177906.tar.bz2
Cleanup handling of libgcc and libc_internal for VxWorks
2018-09-21 Olivier Hainque <hainque@adacore.com> * config/vxworks.h (VXWORKS_LIBGCC_SPEC): Remove -lc_internal. Merge block comment with the one ahead of VXWORKS_LIBS_RTP. Then: (VXWORKS_LIBS_RTP): Minor reordering. From-SVN: r264477
Diffstat (limited to 'gcc/config/vxworks.h')
-rw-r--r--gcc/config/vxworks.h18
1 files changed, 8 insertions, 10 deletions
diff --git a/gcc/config/vxworks.h b/gcc/config/vxworks.h
index bbe0a7c..214c616 100644
--- a/gcc/config/vxworks.h
+++ b/gcc/config/vxworks.h
@@ -65,14 +65,17 @@ along with GCC; see the file COPYING3. If not see
#endif
-/* The references to __init and __fini will be satisfied by
- libc_internal.a, and some versions of VxWorks rely on explicit
- extra libraries for system calls. */
+/* For VxWorks static rtps, the system provides libc_internal.a, a superset of
+ libgcc.a that we need to use e.g. to satisfy references to __init and
+ __fini. We still want our libgcc to prevail for symbols it would provide
+ (e.g. register save entry points), so re-place it here between libraries
+ that might reference it and libc_internal. Also, some versions of VxWorks
+ rely on explicit extra libraries for system calls. */
#define VXWORKS_SYSCALL_LIBS_RTP
#define VXWORKS_LIBS_RTP \
- VXWORKS_SYSCALL_LIBS_RTP " -lc -lgcc -lc_internal -lnet -ldsi"
+ VXWORKS_SYSCALL_LIBS_RTP " -lnet -ldsi -lc -lgcc -lc_internal"
/* On Vx6 and previous, the libraries to pick up depends on the architecture,
so cannot be defined for all archs at once. On Vx7, a VSB is always needed
@@ -118,13 +121,8 @@ along with GCC; see the file COPYING3. If not see
%{mrtp:%{!shared:%{!non-static:-static} \
%{non-static:--force-dynamic --export-dynamic}}}"
-/* For VxWorks static rtps, the system provides libc_internal.a, a superset
- of libgcc.a that we want to use. Make sure not to dynamically export any
- of its symbols, though, and always look for libgcc.a first so that we get
- the latest versions of the GNU intrinsics during our builds. */
#undef VXWORKS_LIBGCC_SPEC
-#define VXWORKS_LIBGCC_SPEC \
- "-lgcc %{mrtp:%{!shared:--exclude-libs=libc_internal,libgcc -lc_internal}}"
+#define VXWORKS_LIBGCC_SPEC "-lgcc"
#undef VXWORKS_STARTFILE_SPEC
#define VXWORKS_STARTFILE_SPEC "%{mrtp:%{!shared:-l:crt0.o}}"