Hello,

This change introduces configury infrastructure allowing the
production of shared libraries for VxWorks, amenable to use with
non-static rtps (linked with "-non-static").

The ability to produce PIC code is not a given on all VxWorks
configurations, so activating this has to be explicitly requested
by configuring with  --enable-shared
(https://gcc.gnu.org/pipermail/gcc-patches/2022-September/602523.html).

This requirement is then leveraged to factorize the configuration
processing in a mostly cpu independant manner, which makes maintenance
a lot easier.

When activated, shared libs are built for the rtp mode only
(the only kind of entity for which they are supported by the
VxWorks environment), for code model != large at this stage as
large and PIC still don't play well together.

We have been using this for about a year with gcc-11 based toolchains,
with support activated for aarch64, x86_64 and ppc64-vxworks7r2, and
not activated for the corresponding 32bit variants (arm, i686, ppc).
Aarch64 proved an interesting challenge with the gcc/gcc_eh split
for lse features.

I obtained good test results with a gcc-12 based compiler for ppc64
and could get a successful sanity check build with mainline for that
cpu as well.

Will commit to mainline shortly.

Cheers,

Olivier

2022-10-09  Olivier Hainque  <hain...@adacore.com>
    
gcc/
        * config.gcc (*vxworks*): Add t-slibgcc fragment
        if enable_shared.
    
libgcc/
        * config.host (*vxworks*): When enable_shared, add
        libgcc and crtstuff "shared" fragments for rtp except
        large code model.
        (aarch64*-wrs-vxworks7*): Remove t-slibgcc-libgcc from
        the list of fragments.
    
toplevel/
        * libtool.m4 (*vxworks*): When enable_shared, set dynamic_linker
        and friends for rtp !large. Assume the linker has the required
        abilities and set lt_cv_deplibs_check_method.


Then, regenerating configure scripts to reflect the libtool.m4 update.

2022-10-09  Olivier Hainque  <hain...@adacore.com>
    
gcc/
        * configure: Regenerate.

libatomic/
        * configure: Regenerate.
 
libbacktrace/
        * configure: Regenerate.
    
libcc1/
        * configure: Regenerate.
    
libffi/
        * configure: Regenerate.
  
libgfortran/
        * configure: Regenerate.
    
libgomp/
        * configure: Regenerate.
 
libitm/
        * configure: Regenerate.
    
libobjc/
        * configure: Regenerate.
   
liboffloadmic/
        * configure: Regenerate.
   
liboffloadmic/
        * plugin/configure: Regenerate.
   
libphobos/
        * configure: Regenerate.
    
libquadmath/
        * configure: Regenerate.
    
libsanitizer/
        * configure: Regenerate.
    
libssp/
        * configure: Regenerate.
    
libstdc++-v3/
        * configure: Regenerate.

libvtv/
        * configure: Regenerate.
    
lto-plugin/
        * configure: Regenerate.
    
zlib/
        * configure: Regenerate.

Attachment: 0002-Generic-configury-support-for-shared-libs-on-VxWorks.patch
Description: Binary data



Reply via email to