Hello,

This is the first of a series of patches evolving the VxWorks
support in the compiler.

This particular change prepares the grounds for an evolution of the
VxWorks 7 support towards the more recent major upgrade of the base OS,
from the SR5xx to the SR6xx series in vendor parlance.

The OS updgrade introduces major novelties (additional target platforms,
init/fini array and TLS support everywhere) and was rolled out pretty fast
after the previous SR5xx series.

The general trend is to get the system environment and toolchains as
similar as possible to the Linux environment.

As this is a fast moving target in the process of converging, we
simply map upstream GCC "vxworks7" to the more recent environment. There's
no real point in setting up intricate internal parametarizations to
account for all intermediate releases on mainline.

We know of uses of different triplet names to denote the more recent
release, still, (<cpu>-wrs-vxworks7r2 for SR6xx, for example), so will
arrange to recognize the new triplets and let the more generic -vxworks7
one behave as a synonym.

After this change will come a few others,

- some implementing port specific adaptations for existing
  ports, with cleanups along the way,

- some introducing new ports (aarch64 in particular),

- some improving common functionalities such as gthreads
  or crtstuff files for table based unwinding, which we
  will leverage to strengthen the c++ support afterwards.

A number of people contributed to all this, listed as
authors in ChangeLog entries (Jerome Lambourg, Corentin Gay,
Pat Bernardi and Doug Rupp to name a few here).

This was first tested by our internal QA, doing builds and
running a variety of testsuites for powerpc-vxworks6, arm-vxworks7
and aarch64-vxworks7, both for kernel modules and RTPs.

The patches essentially all apply unchanged on mainline, and
I checked that I could build a powerpc-vxworks6 compiler from there.

I will apply to mainline shortly.

With Kind Regards,

Olivier

--

2019-11-06  Pat Bernardi  <berna...@adacore.com>
            Jerome Lambourg  <lambo...@adacore.com>
            Olivier Hainque  <hain...@adacore.com>

        * config.gcc: Add comment to introduce the TARGET_VXWORKS
        commong macro definitions, conveying VXWORKS7 or 64bit general
        variations.  Add a block to set gcc_cv_initfini_array
        unconditionally to "yes" for VxWorks7.
        config/vx-common.h (VXWORKS_CC1_SPEC): New macro, empty string
        by default.  Update some comments.
        config/vxworks.h (VXWORKS_EXTRA_LIBS_RTP): New macro, empty by
        default, to be added the end of VXWORKS_LIBS_RTP.
        (VXWORKS_LIBS_RTP): Replace hardcoded part by VXWORKS_BASE_LIBS_RTP
        and append VXWORKS_EXTRA_LIBS_RTP, both of which specific ports may
        redefine.
        (VXWORKS_NET_LIBS_RTP): Account for VxWorks7 specificities.
        (VXWORKS_CC1_SPEC): Common base definition, with VxWorks7 variation
        to account for the now available TLS abilities.
        (TARGET_LIBC_HAS_FUNCTION): Account for VxWorks7 abilities.
        (VXWORKS_HAVE_TLS): Likewise.


Attachment: 0001-Common-ground-work-for-vxworks7-ports-updates.patch
Description: Binary data

Reply via email to