diff options
author | Frederic Konrad <konrad@adacore.com> | 2020-11-06 19:42:27 +0100 |
---|---|---|
committer | Olivier Hainque <hainque@adacore.com> | 2021-12-13 18:02:22 +0000 |
commit | 0515c95d5fe0a865f688f3ab89572b917e8f0185 (patch) | |
tree | 1a5442758d0231d537e89df5351e46c19872f025 /gcc/config/vxworks.h | |
parent | 0ecb48d753005405f84876ed3032c4cda789e072 (diff) | |
download | gcc-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.h | 19 |
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. */ |