Rework VXWORKS_LINK_SPEC for shared objects support
authorDouglas B Rupp <rupp@adacore.com>
Thu, 8 Apr 2021 18:03:19 +0000 (11:03 -0700)
committerOlivier Hainque <hainque@adacore.com>
Mon, 13 Dec 2021 18:03:26 +0000 (18:03 +0000)
commitfc4a93eb41243babe3f2ef3a3c6171b48e503138
treef54ff6c731e8ca60d78b354bb08f6c6ba000a7ef
parent04577ac0843d7a4961d992e678db3e4a85275825
Rework VXWORKS_LINK_SPEC for shared objects support

Split LINK_SPEC as BASE_LINK_SPEC + EXTRA_LINK_SPEC,
with an overridable LINK_OS component that cpu ports may
redefine.

Leverage the latter on powerpc for VxWorks 7, where we incorporate
our specific bits in the linux os configuration as the system compiler
is now very close to a standard linux one.

The split allows supporting shared objects (shared libs and
non-static rtps) on recent versions of VxWorks while retaining
compatibility with older VxWorks targets which could link with
shared libraries but not build them.

2021-12-07  Doug Rupp  <rupp@adacore.com>
    Olivier Hainque  <hainque@adacore.com>

gcc/
* config/vxworks.h (VXWORKS_LINK_OS_SPEC): New spec.
(VXWORKS_BASE_LINK_SPEC): New spec, using the former.
(VXWORKS_EXTRA_LINK_SPEC): New spec for old and new VxWorks.
(VXWORKS_LINK_SPEC): Combo of BASE and EXTRA specs.
* config/rs6000/vxworks.h (VXWORKS_LINK_OS_SPEC): Empty.
(LINK_OS_EXTRA_SPEC32): Use VXWORKS_LINK_SPEC.
(LINK_OS_EXTRA_SPEC64): Likewise.
gcc/config/rs6000/vxworks.h
gcc/config/vxworks.h