From: Frederic Konrad Date: Fri, 6 Nov 2020 18:42:27 +0000 (+0100) Subject: VxWorks config fixes for shared objects X-Git-Tag: upstream/12.2.0~2759 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0515c95d5fe0a865f688f3ab89572b917e8f0185;p=platform%2Fupstream%2Fgcc.git 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 Olivier Hainque 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. --- diff --git a/gcc/config/vx-common.h b/gcc/config/vx-common.h index a436bf1..efa5d5f 100644 --- a/gcc/config/vx-common.h +++ b/gcc/config/vx-common.h @@ -23,8 +23,11 @@ along with GCC; see the file COPYING3. If not see /* Most of these will probably be overridden by subsequent headers. We undefine them here just in case, and define VXWORKS_ versions of each, to be used in port-specific vxworks.h. */ -#undef LIBGCC_SPEC -#define LIBGCC_SPEC VXWORKS_LIBGCC_SPEC + +/* REAL_LIBGCC_SPEC needs to be used since the non-static option is not + handled in gcc.c. */ +#undef REAL_LIBGCC_SPEC +#define REAL_LIBGCC_SPEC VXWORKS_LIBGCC_SPEC #undef STARTFILE_SPEC #undef ENDFILE_SPEC 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. */