Hello,

As mentioned in the thread rooted at
https://gcc.gnu.org/ml/gcc-patches/2017-07/msg00720.html,

the arm-vxworks port needs refreshing. As mentioned earlier in other vxworks
related threads, it was on my list of things to do and this patch implements
a first batch of changes to this effect.

It both cleans-up the original "arm-wrs-vxworks" configuration for VxWorks 6
and 5 essentially, and introduces support for VxWorks 7, with a significant
change of ABI (moving from the old ARM ABI to BPABI, from DWARF2 to ARM EH).

Apart from the Vx6/Vx7 differences, a significant change is the removal
of old specs introduced long ago to mimic the command line interface of another
family of compilers, introduced for several targets at the time and removed
in at least a few since then.

One effect is the removal of a harcoded default -march, so better integration
with the existing mechanisms allowing the selection of such defaults at
configure time. We leverage this immediately by adjusting target_cpu_name
providing the default CPU from config.gcc, to arm8 so it is at least archv4.

We also adjust TARGET_OS_CPP_BUILTIN to handle the more recent versions of
architectures known to be supported by current versions of VxWorks.

Tested by verifying success of an in-house build and proper execution of ACATS
tests with a gcc-7 based compiler for arm-vxworks and arm-vxworks7, and checking
that a build for arm-wrs-vxworks proceeds to completion on mainline.

With Kind Regards,

Olivier

2017-08-01  Jerome Lambourg  <lambo...@adacore.com>
            Doug Rupp  <r...@adacore.com>
            Olivier Hainque  <hain...@adacore.com>

        gcc/
        * config.gcc (arm-wrs-vxworks*): Rework to handle arm-wrs-vxworks7 as
        well as arm-wrs-vxworks. Update target_cpu_name from arm6 (arch v3) to
        arm8 (arch v4).
        * config/arm/vxworks.h (MAYBE_TARGET_BPABI_CPP_BUILTINS): New, helper
        for TARGET_OS_CPP_BUILTIN.
        (TARGET_OS_CPP_BUILTIN): Invoke MAYBE_TARGET_BPABI_CPP_BUILTINS(),
        refine CPU definitions for arm_arch5 and add those for arm_arch6 and
        arm_arch7.
        (MAYBE_ASM_ABI_SPEC): New, helper for SUBTARGET_EXTRA_ASM_SPEC,
        passing required abi options to the assembler for EABI configurations.
        (EXTRA_CC1_SPEC): New macro, to help prevent the implicit production
        of .text.hot and .text.unlikely sections for kernel modules when
        using ARM style exceptions.
        (CC1_SPEC): Remove obsolete attempt at mimicking Diab toolchain
        options. Add EXTRA_CC1_SPEC.
        (VXWORKS_ENDIAN_SPEC): Adjust comment and remove handling of Diab
        toolchain options.
        (DWARF2_UNWIND_INFO): Redefine to handle the pre/post VxWorks 7
        transition.
        (ARM_TARGET2_DWARF_FORMAT): Define.
        * config/arm/t-vxworks: Adjust multilib control to removal of the
        Diab command line options.
    
        libgcc/
        * config.host (arm-wrs-vxworks*): Rework to handle arm-wrs-vxworks7
        as well as arm-wrs-vxworks.
        * config/arm/t-vxworks7: New file.  Add unwind-arm-vxworks.c to
        LIB2ADDEH.
        * config/arm/unwind-arm-vxworks.c: New file. Provide dummy
        __exidx_start and __exidx_end for downloadable modules.
  

Attachment: 0003-Improved-support-for-arm-vxworks-and-arm-vxworks7.patch
Description: Binary data


Reply via email to