aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/vxworks.h
diff options
context:
space:
mode:
authorFrederic Konrad <konrad@adacore.com>2020-11-06 19:42:27 +0100
committerOlivier Hainque <hainque@adacore.com>2021-12-13 18:02:22 +0000
commit0515c95d5fe0a865f688f3ab89572b917e8f0185 (patch)
tree1a5442758d0231d537e89df5351e46c19872f025 /gcc/config/vxworks.h
parent0ecb48d753005405f84876ed3032c4cda789e072 (diff)
downloadgcc-0515c95d5fe0a865f688f3ab89572b917e8f0185.zip
gcc-0515c95d5fe0a865f688f3ab89572b917e8f0185.tar.gz
gcc-0515c95d5fe0a865f688f3ab89572b917e8f0185.tar.bz2
VxWorks config fixes for shared objects
This strengthens the VxWorks configuration files for the support of shared objects, which encompasses a VxWorks specific "non-static" mode for RTPs (in addition to -static and -shared). 2020-11-06 Fred Konrad <konrad@adacore.com> Olivier Hainque <hainque@adacore.com> gcc/ * config/vx-common.h: Define REAL_LIBGCC_SPEC since the '-non-static' option is not standard. * config/vxworks.h (VXWORKS_LIBGCC_SPEC): Implement the LIBGCC_SPEC since REAL_LIBGCC_SPEC is used now. (STARTFILE_PREFIX_SPEC): Use the PIC VSB when building shared libraries or non-static binaries.
Diffstat (limited to 'gcc/config/vxworks.h')
-rw-r--r--gcc/config/vxworks.h19
1 files changed, 18 insertions, 1 deletions
diff --git a/gcc/config/vxworks.h b/gcc/config/vxworks.h
index f76141f..96076e3 100644
--- a/gcc/config/vxworks.h
+++ b/gcc/config/vxworks.h
@@ -143,11 +143,21 @@ along with GCC; see the file COPYING3. If not see
tlsLib, responsible for TLS support by the OS. */
#if TARGET_VXWORKS7
+
+/* For static links, /usr/lib/common has everything. For dynamic links,
+ /usr/lib/common/PIC has the static libs and objects that might be needed
+ in the closure (e.g. crt0.o), while the shared version of standard deps
+ (e.g. libc.so) are still in /usr/lib/common. */
#undef STARTFILE_PREFIX_SPEC
-#define STARTFILE_PREFIX_SPEC "/usr/lib/common"
+#define STARTFILE_PREFIX_SPEC \
+ "%{shared|non-static:/usr/lib/common/PIC} /usr/lib/common"
+
#define TLS_SYM "-u __tls__"
+
#else
+
#define TLS_SYM ""
+
#endif
#undef VXWORKS_LIB_SPEC
@@ -177,7 +187,14 @@ along with GCC; see the file COPYING3. If not see
%{non-static:--force-dynamic --export-dynamic}}}"
#undef VXWORKS_LIBGCC_SPEC
+#if defined(ENABLE_SHARED_LIBGCC)
+#define VXWORKS_LIBGCC_SPEC \
+"%{!mrtp:-lgcc -lgcc_eh} \
+ %{mrtp:%{!static-libgcc:%{shared|non-static:-lgcc_s;:-lgcc -lgcc_eh}} \
+ %{static-libgcc:-lgcc -lgcc_eh}}"
+#else
#define VXWORKS_LIBGCC_SPEC "-lgcc"
+#endif
/* Setup the crtstuff begin/end we might need for dwarf EH registration. */