Arm Compiler 6 Downloads

This is the right place to find and download recent feature releases of the latest and most efficient Arm C/C++ compilation toolchain, Arm Compiler 6.

Arm Compiler 6 can be used as a standalone tool (command line) or integrated into Arm Development Studio (installation instructions) or Keil MDK tool (Windows 32-bit variant only: installation instructions) suites, depending on your license. 

Haven’t got an Arm Compiler license?

Evaluate Arm Compiler in Development Studio
Buy Development Studio Buy Keil MDK

For other versions and legacy releases, visit Arm Compiler 5 Downloads and legacy compiler releases.

For license server management software visit the FlexNet Publisher downloads page.

 

Downloads

Version 6.7.1

Released: May 31, 2017

Windows 64-bit
File: DS500-BN-00024-r5p0-09rel0.zip (214.58 MB)
Windows 32-bit
File: DS500-BN-00025-r5p0-09rel0.zip (202.27 MB)
Linux 64-bit
File: DS500-BN-00026-r5p0-09rel0.tar.gz (291.78 MB)

Release Note for Arm Compiler 6 Downloads 6.7.1

ARM Logo

Release notes for ARM Compiler 6.7.1

1. Introduction

ARM Compiler 6.7.1 is an update release to ARM Compiler 6.7 and is intended for use:

  • In conjunction with DS-5 Professional Edition or DS-5 Ultimate Edition to build and debug executable code for the supported architectures.
  • In conjunction with MDK-ARM.
  • As a standalone toolchain installation.

A suitable license from one of these products must be available. Contact your sales representative or visit https://developer.arm.com/products/buy-arm-products to enquire about a license.

If you are using a floating license, your license server must be running armlmd and lmgrd version 11.14.1.0 or later. ARM recommends that you always use the latest version of the license server software that is available from https://developer.arm.com/products/software-development-tools/license-management/downloads.

1.1 ARM Compiler 6 Configuration

ARM Compiler 6 is the successor to ARM Compiler 5 and includes the components listed below. See the Migration and Compatibility Guide in the product documentation for more information on migrating projects from previous versions.

  • armclang
    • armclang is the successor to armcc and is based on LLVM technology.
  • armlink, armasm, fromelf, armar
    • armlink, armasm, fromelf, and armar have been extended to support ARMv8 and behave similarly to ARM Compiler 5.
  • ARM C and C++ libraries for embedded systems
    • The standard ARM Compiler embedded libraries have been extended to support ARMv8 and behave similarly to those found in ARM Compiler 5, although they might not be fully feature complete.
    • ARM Compiler 6 includes the libc++ library as the C++ Standard Template Library.

Note regarding assemblers:

  • ARM Compiler 6 adopts the LLVM integrated assembler as default because it aligns more closely with GNU assembler syntax, improving portability between GNU and ARM Compiler toolchains. The LLVM integrated assembler is called by default by armclang. A side effect is that ARM Compiler 6 will not compile C/C++ source files which contain legacy armcc inline or embedded assembler.
  • Although armasm is not called by default, it is included in ARM Compiler 6 for assembling assembler files written in legacy armasm syntax.

1.2 What's Supported in ARM Compiler 6.7.1?

Architecture and Processors Support Level
ARMv8-A (including update releases) and ARMv7-A and derived processors Product feature.
ARMv8-R, ARMv7-R and derived processors Product feature.
ARMv8-M, ARMv7-M, ARMv6-M and derived processors Product feature.
ARM Architectures earlier than ARMv6-M Unsupported. Please use ARM Compiler 5.
Non ARM architectures Unsupported.
Support Level Description
Product features Production quality. Highest support priority.
Beta product features Implementation complete, but not thoroughly tested. User experimentation and feedback is welcomed.
Alpha product features Implementation is not complete and not thoroughly tested. User experimentation and feedback is welcomed.
Community features Additional features that are available in the open-source technology ARM Compiler 6 is built on. ARM makes no claims about the quality level or the degree of functionality of these features. User experimentation and feedback is welcomed.
Unsupported features Features that are either not present in the toolchain or have been deprecated. These features are completely untested. Use entirely at your own risk.

For more information on the supported features and level of support for features, see the product documentation.

2. Installation Instructions

If you received ARM Compiler 6.7.1 as part of a toolkit, for example DS-5, the toolkit installer takes care of the installation process. Please refer to the installation instructions for the toolkit in such cases.

For all other cases, you must select an appropriate installation location depending on how you intend to use ARM Compiler 6.7.1:

  • Integrated into DS-5 5.20 or later.
  • Integrated into MDK-ARM 5.22 or later.
  • As a standalone product.

2.1. Integration into DS-5 5.20 or later

ARM Compiler 6.7.1 can be installed in any location, including the default location, providing this is outside of a DS-5 product installation.

After it is installed, you can integrate the toolchain with DS-5 5.20 or later by following the instructions in the tutorial available at https://developer.arm.com/products/software-development-tools/ds-5-development-studio/resources/tutorials/adding-new-compiler-toolchains-to-ds-5.

ARM recommends using ARM Compiler 6.7.1 from the DS-5 Eclipse IDE or DS-5 Command Prompt. When using the toolchain outside these environments, you might need to configure the following environment variables:

  • Set ARM_PRODUCT_PATH to the path to the sw/mappings directory within your DS-5 installation.
  • Set ARM_TOOL_VARIANT=ult if you are using the toolchain with DS-5 Ultimate Edition.

2.2. Integration into MDK-ARM 5.22 or later

ARM Compiler 6.7.1 must be installed underneath the ARM subdirectory of the Keil MDK installation. For example, if your Keil MDK installation is in C:\Keil_v5 the recommended installation path is C:\Keil_v5\ARM\ARMCompiler6.7.1.

After it is installed, you can integrate the toolchain into an MDK project by following the instructions in the tutorial available at http://www.keil.com/support/man/docs/uv4/uv4_armcompilers.htm.

When ARM Compiler 6.7.1 is imported into a MDK-ARM installation and used with a Keil MDK node-locked or floating license, the tools incorrectly report:

error: Failed to check out a license.Keil Licensing
error: No TOOLS.ini file found

To avoid this issue, modify your install directory by copying all the *.exe files from the lib\tt_default\bin folder into the bin folder. For example, copy: C:\Keil_v5\ARM\ARMCompiler6.7.1\lib\tt_default\bin\*.exe to: C:\Keil_v5\ARM\ARMCompiler6.7.1\bin. For more information, see http://www.keil.com/support/docs/3961.htm.

2.3. Use as a standalone product

ARM Compiler 6.7.1 can be installed in any location, including the default location, providing this is outside of a DS-5 product installation.

Ensure that the ARMLMD_LICENSE_FILE environment variable is pointing to your license file or license server. Please note this path must not contain double quotes on Windows. A path that contains spaces will still work without the quotes.

2.4. Installation on Linux

ARM Compiler 6.7.1 has been tested on the following supported platforms:

  • Red Hat Enterprise Linux 6 Workstation, 64-bit only.
  • Red Hat Enterprise Linux 7 Workstation, 64-bit only.
  • Ubuntu Desktop Edition 14.04 LTS, 64-bit only.

ARM Compiler 6.7.1 is not expected to work on older platforms.

To install ARM Compiler 6.7.1, run (not source) install_x86_64.sh and follow the on-screen instructions. The installer unpacks ARM Compiler 6.7.1 into your chosen directory.

The armclang binary is dynamically linked to a copy of libstdc++ installed under your chosen directory as part of ARM Compiler 6.7.1.

Some of the installed tools have dependencies on 32-bit system libraries. You must ensure that 32-bit compatibility libraries are installed when using ARM Compiler 6.7.1 on 64-bit Linux host platforms. ARM Compiler 6.7.1 tools might fail to run or report errors about missing libraries if 32-bit compatibility libraries are not installed. To install the required libraries, run the appropriate command for your platform with root privileges:

Red Hat
yum install glibc.i686
Ubuntu
apt-get install lib32stdc++6

2.5. Installation on Windows

ARM Compiler 6.7.1 has been tested on the following supported platforms:

  • Windows Server 2012, 64-bit only.
  • Windows 7 Enterprise SP1.
  • Windows 7 Professional SP1.
  • Windows 8.1 Enterprise, 64-bit only.
  • Windows 8.1 Professional, 64-bit only.
  • Windows 10 Enterprise, 64-bit only.
  • Windows 10 Professional, 64-bit only.

ARM Compiler 6.7.1 is not expected to work on older platforms.

To install ARM Compiler 6.7.1, run win-x86_64\setup.exe on a 64-bit Windows host platform or win-x86_32\setup.exe on a 32-bit Windows host platform and follow the on-screen instructions. If you have an earlier version of ARM Compiler 6 installed and you wish to perform an upgrade, it is recommended that you uninstall the previous version before installing the new version of ARM Compiler 6.

ARM Compiler 6 requires the Microsoft Visual Studio 2015 runtime libraries to be installed. If you use the product installer, or the toolchain is installed as part of DS-5, the runtime libraries are installed with the product. If you later copy or move the installation to another host you will need to ensure that the runtime libraries are also available on that host.

3. Uninstall

On Linux, delete the ARM Compiler 6.7.1 installation directory.

On Windows, use Programs and Features in Control Panel, select ARM Compiler 6.7.1, and click the Uninstall button.

4. Documentation

The following documentation is available for ARM Compiler 6.7.1:

  • User Guide.
  • armar User Guide.
  • armasm User Guide.
  • armclang Reference Guide.
  • armlink User Guide.
  • fromelf User Guide.
  • ARM C and C++ Libraries and Floating-Point Support User Guide.
  • Migration and Compatibility Guide.
  • Software Development Guide.
  • Errors and Warnings Reference Guide.
  • Scalable Vector Extension User Guide.

For more information, please see ARM Compiler 6 documentation in developer.arm.com.

5. Feedback and Support

Your feedback is important to us, and you are welcome to send us defect reports and suggestions for improvement on any aspect of the product. Contact your supplier or visit https://developer.arm.com/support and open a case with feedback or support issues. Where appropriate, please provide the --vsn output from the tool, the complete content of any error message that the tools produce, and include any source code, other files, and command-lines necessary to reproduce the issue.

6. Release History and Changes

The following are the releases to date of the ARM Compiler 6.7 series:

  • 6.7.1 (released May 2017)
  • 6.7 (released March 2017)

Below is a summary of the changes in each release, including new features and defect fixes. Changes are listed since the previous release in each case unless otherwise specified. Each itemized change is accompanied by a unique SDCOMP-<NNNNN> identifier. If you need to contact ARM about a specific issue within these release notes, please quote the appropriate identifier.

Changes in ARM Compiler 6.7.1

General changes in ARM Compiler 6.7.1

  • [SDCOMP-48303]  Support has been added for the Cortex-A75 and Cortex-A55 processors.

    To target Cortex-A75, select from the following options:

    armclang:

    • --target=aarch64-arm-none-eabi -mcpu=cortex-a75 for AArch64 state.
    • --target=arm-arm-none-eabi -mcpu=cortex-a75 for AArch32 state.

    armasm, armlink, and fromelf:

    • --cpu=8.2-A.64 for AArch64 state.
    • --cpu=8.2-A.32 for AArch32 state.

    To target Cortex-A55, select from the following options:

    armclang:

    • --target=aarch64-arm-none-eabi -mcpu=cortex-a55 for AArch64 state.
    • --target=arm-arm-none-eabi -mcpu=cortex-a55 for AArch32 state.

    armasm, armlink, and fromelf:

    • --cpu=8.2-A.64 for AArch64 state.
    • --cpu=8.2-A.32 for AArch32 state.

Known issues in ARM Compiler 6.7.1

  • [SDCOMP-47949]  When compiling code that includes the arm_sve.h header file, the compiler incorrectly reports fatal error: 'arm_sve.h' file not found. A workaround for this issue is to compile with -I <install_dir>/lib/tt_sve/lib/clang/5.0.0/include.

  • [SDCOMP-47864]  Link time optimization (LTO) is not supported when compiling with -march=name+sve for a target that supports the Scalable Vector Extension (SVE). To avoid the use of LTO:

    • Do not compile with -flto option and do not link with --lto.
    • When compiling at -Omax, also compile with -fno-lto and link with --no_lto.

  • [SDCOMP-47620]  In certain circumstances, when compiling with -mexecute-only for a target with hardware floating-point linkage, the compiler can incorrectly generate a literal pool within execute-only code. This results in the linker reporting Error: L6837E: Illegal data mapping symbol found in execute-only section <object>(<section>) at offset <offset>. A workaround for this issue is to compile with -mfloat-abi=soft.

  • [SDCOMP-28016]  long double is not supported for AArch64 state.

  • [SDCOMP-26080]  Complex numbers are not supported.

Changes in ARM Compiler 6.7

Changes are listed since the previous feature release, ARM Compiler 6.6.

General changes in ARM Compiler 6.7

  • [SDCOMP-47776]  ARMv8-M targets are now supported when using a DS-5 Professional license.

  • [SDCOMP-46101]  ARM Compiler 6.7 includes FlexNet Publisher 11.14.1.0 client libraries. This version of the license client is not compatible with previous versions of the FlexNet Publisher license server software. When used with a license server running an armlmd or lmgrd version earlier than 11.14.1.0, ARM Compiler 6.7 can report any of the following:

    • Failed to check out a license.Bad message command.
    • Failed to check out a license.Version of vendor daemon is too old.
    • Flex error code: -83.
    • Flex error code: -140.

    A license server running armlmd and lmgrd version 11.14.1.0 (or later) is compatible with ARM Compiler 6.7 and all previous releases of ARM tools.

    ARM recommends that you always use the latest version of the license server software that is available from https://developer.arm.com/products/software-development-tools/license-management/downloads.

  • [SDCOMP-22268]  Previously, when generating execute-only sections, the tools set the ELF section header flag to SHF_ARM_NOREAD. For compliance with forthcoming changes to the Application Binary Interface (ABI) for the ARM Architecture, this behavior has been changed. For execute-only sections, the tools now set the ELF section header flag to SHF_ARM_PURECODE.

Enhancements in ARM Compiler 6.7

Compiler and integrated assembler (armclang)
  • [SDCOMP-47906]  Support has been added for the -ffp-mode=model option which can be used to specify the level of floating-point standard compliance:

    • -ffp-mode=std selects the default compiler behavior.
    • -ffp-mode=fast is equivalent to -ffast-math.
    • -ffp-mode=full is equivalent to -fno-fast-math.

    ARM recommends using -ffp-mode rather than -ffast-math or -fno-fast-math.

    For more information about this option, refer to the armclang Reference Guide.

  • [SDCOMP-46994]  Support for the __attribute__((value_in_regs)) function attribute has been extended to improve compatibility with the equivalent ARM Compiler 5 feature.

    For more information, refer to the __attribute__((value_in_regs)) function attribute section of the armclang Reference Guide.

  • [SDCOMP-45510]  Support has been added for the generation of implicit IT blocks when assembling for T32 state. To specify the behavior of the inline assembler and integrated assembler if there are conditional instructions outside IT blocks, use the following option:

    • -mimplicit-it=name

    For more information about this option, refer to the armclang Reference Guide.

  • [SDCOMP-32841]  Previously, when compiling at -Os, the compiler could over-align literal pools generated during vectorization to a 128-bit boundary. This behavior has been changed. The compiler now avoids adding excessive padding.

Linker (armlink)
  • [SDCOMP-45933]  Support has been added for __at sections that are named .bss.ARM.__at_<address>. The linker will place the associated ZI data at the specified address.

Defect fixes in ARM Compiler 6.7

Compiler and integrated assembler (armclang)
  • [SDCOMP-47946]  The integrated assembler would incorrectly allow a symbol and a section to be defined with the same name, resulting in an incorrect symbol table entry for that section. This has been fixed. The integrated assembler now reports error: invalid symbol redefinition.

  • [SDCOMP-47603]  The inline assembler and integrated assembler would incorrectly accept invalid special register masks for the MSR instruction, and then generate an instruction with all of the mask bits set. This has been fixed. The inline assembler and integrated assembler now report error: invalid operand for instruction.

  • [SDCOMP-47531]  When assembling for T32 state, the inline assembler and integrated assembler incorrectly failed to diagnose an instruction that writes to the PC inside an IT block but is not the last instruction in an IT block as UNPREDICTABLE. This has been fixed. The inline assembler and integrated assembler now report error: instruction must be outside of IT block or the last instruction in an IT block.

  • [SDCOMP-47098]  When compiling a function that is annotated with __attribute__((value_in_regs)) and has an incomplete return type, the compiler would incorrectly report Segmentation fault (core dumped). This has been fixed. The compiler now reports error: cannot qualify incomplete type <type> for 'value_in_regs' calling convention.

  • [SDCOMP-47039]  When compiling for an M-profile target, the compiler would incorrectly generate an UNDEFINED instruction for an __arm_wsr intrinsic that accesses a system register other than xPSR. This has been fixed.

  • [SDCOMP-47031]  In certain circumstances, when compiling at any optimization level except -O0, the compiler could generate incorrect code for a function that contains at least two calls to the __builtin_arm_get_fpscr intrinsic. This has been fixed.

  • [SDCOMP-46934]  When assembling for T32 state, the inline assembler and integrated assembler would report only error: invalid instruction for source containing a flag-preserving variant of an instruction that is only available as a flag-setting variant. This has been fixed. The inline assembler and integrated assembler now report error: no flag-preserving variant of this instruction available.

  • [SDCOMP-46899]  In certain circumstances, when compiling for T32 state, the compiler could incorrectly generate an A32 encoding for a conditional coprocessor instruction. This has been fixed.

  • [SDCOMP-46865]  In rare circumstances, the compiler could generate incorrect code for an expression of the form <condition> ? <expression1> : <expression2> where <expression1> or <expression2> contains a bit shift operation. This has been fixed.

  • [SDCOMP-46731]  When assembling for T32 state, the inline assembler and integrated assembler would incorrectly report error: instruction requires: arm-mode for 16-bit LDR instructions that modify the PC. This has been fixed.

  • [SDCOMP-46697]  In rare circumstances, when compiling at -O2 or above or at -Os, the compiler could generate incorrect code for data accesses that use indexes which can be evaluated at compile time. This has been fixed.

  • [SDCOMP-46600]  In rare circumstances, when compiling at -O0 for an ARMv6-M target or an ARMv8-M target without the Main Extension, the compiler could generate incorrect code for a sequence of arithmetic operations. This has been fixed.

  • [SDCOMP-46445]  In rare circumstances, when compiling a constant expression, the compiler could incorrectly report fatal error: error in backend: expected relocatable expression. This has been fixed.

  • [SDCOMP-46415]  In rare circumstances, when compiling at -O0 for an ARMv6-M target or an ARMv8-M target without the Main Extension, the compiler could generate incorrect code which caused the stack pointer to be corrupted when returning from a large function. This has been fixed.

  • [SDCOMP-46399]  When assembling with -march=armv8.3-a+nofp, the inline assembler and integrated assembler would incorrectly accept the FJCVTZS instruction. This has been fixed. The inline assembler and integrated assembler now report error: instruction requires: fp-armv8.

  • [SDCOMP-46397]  When assembling for an ARMv8.3-A target and AArch64 state, the inline assembler and integrated assembler would incorrectly reject MSR instructions that write to the pointer signing key registers. This has been fixed.

  • [SDCOMP-45722]  When assembling with -march=armv8-m.main+dsp, the inline assembler and integrated assembler would incorrectly report error: instruction requires: arm-mode for UXTB16 and SXTB16 instructions. This has been fixed.

  • [SDCOMP-32908]  In certain circumstances, when assembling an LSL instruction that has an immediate shift of #0 and is contained in an IT block, the inline assembler and integrated assembler could incorrectly generate a MOV instruction that has UNPREDICTABLE behavior. This has been fixed.

  • [SDCOMP-29396]  When assembling a file that includes another assembly file containing a .equ directive that cannot be evaluated at compile-time, the integrated assembler would report only <unknown>:0: error: expression could not be evaluated. This has been fixed. The integrated assembler now also reports the relevant file names, line numbers, and line of source.

Legacy assembler (armasm)
  • [SDCOMP-47141]  The assembler would incorrectly accept floating-point literals that are greater than 1.79769313486231571e+308 but less than 1.0e+309, and then represent them as the floating-point value -0.0. This has been fixed. The assembler now reports Error: A1407E: Overlarge floating point value.

  • [SDCOMP-46908]  In certain circumstances, when assembling a VMOV instruction that has a .32, .I32, .S32, or .U32 suffix, the assembler could incorrectly report Error: A1887E: Specified source data type not allowed; must be one of: F32. This has been fixed.

  • [SDCOMP-46661]  In certain circumstances, when assembling with --cpu=8-M.Main.dsp, the assembler could generate objects containing build attributes that would not result in the linker selecting the most optimal libraries. This has been fixed.

Linker (armlink)
  • [SDCOMP-47040]  In rare circumstances, when linking code containing at least one C++ object with static storage duration, the linker could incorrectly fail to include the __cpp_initialize__aeabi_() library function. This would prevent the static C++ object from being correctly initialized. This has been fixed.

  • [SDCOMP-46703]  In certain circumstances, when linking for AArch32 state with --paged or linking for AArch64 state, and using a scatter file where a ZI section has a higher alignment requirement than an RW section in the same execution region, the linker could incorrectly generate an image containing overlapping output sections. This could result in data being initialized to an incorrect value. This has been fixed.

  • [SDCOMP-46598]  In certain circumstances, the linker could resolve references to symbols incorrectly when the program contains __at sections. This could result in an affected program accessing an incorrect memory location, or executing code at an unexpected address. This has been fixed.

  • [SDCOMP-46588]  When linking with a --cpu=name option that has no floating-point support, for example --cpu=Cortex-M4.no_fp, --cpu=Cortex-M7.no_fp, or --cpu=Cortex-R5.no_vfp, the linker incorrectly allowed objects containing floating-point instructions to be linked. This has been fixed.

  • [SDCOMP-45626]  When linking an object that defines the symbol __use_no_semihosting with the libc++ libraries supplied with ARM Compiler, the linker would incorrectly report Error: L6915E: Library reports error: __use_no_semihosting_swi was requested, but _sys_open was referenced unless a re-implementation of __sys_open() without semihosting was provided. This has been fixed.

  • [SDCOMP-30185]  In certain circumstances, when linking objects built with C++ exceptions enabled, the linker could select library code that permits unaligned accesses. This could result in a Data Abort when unaligned data accesses have been disabled or the target does not support unaligned data accesses. This has been fixed.

  • [SDCOMP-22630]  In certain circumstances, when two or more __at sections containing read-write data are placed within an execution region that also contains at least one read-only section, the linker could report Internal fault: [0xc0fbf2:<ver>]. This has been fixed.

Libraries and system headers
  • [SDCOMP-47541]  The ARM Compiler library implementation of expf() could return a result that was inaccurate by almost one unit of least precision (ULP) when the input argument is between -0x1p-24 and -0x1p-25. This has been fixed. The return value is now close to exact.

  • [SDCOMP-47475]  The microlib library incorrectly did not contain a variant of semihosted functions that use the HLT instruction. Consequently, when linking an input object that defines the symbol __use_full_stdio with microlib, the linker would select semihosted library functions containing the SVC instruction. This could result in the generated image aborting on a target that supports HLT and not SVC. This has been fixed.

  • [SDCOMP-47275]  In certain circumstances, when compiling code containing a call to the assert() macro with an expression that has side-effects, the compiler could incorrectly report warning: the argument to '__builtin_assume' has side effects that will be discarded [-Wassume]. This has been fixed.

  • [SDCOMP-47150]  In certain circumstances, the ARM Compiler library implementations of strtod() and wcstod() could incorrectly return -0.0 instead of inf when the input string represents a number that lies in the range (1.79769313486231571e+308, 1.0e+309). This has been fixed.

  • [SDCOMP-47048]  In rare circumstances, the ARM Compiler library implementation of expm1f() could return a result that was inaccurate by more than one unit of least precision (ULP) when the input argument is between 0.8110728 and 0.8231074. This has been fixed.

  • [SDCOMP-46050]  In certain circumstances, when the program is built for full IEEE 754 floating-point standard conformance, the ARM Compiler library implementations of the following string to floating-point conversion functions could behave incorrectly:

    • atof().
    • strtod().
    • strtof().
    • strtold().
    • The scanf() family of functions when using a floating-point conversion specifier.

    The affected functions could:

    • Incorrectly fail to set the IEEE inexact, overflow, or underflow exception flags.
    • Incorrectly round the result to -0, 0, -inf, or inf.
    • Set errno to 0 when ERANGE is expected.

    This has been fixed.

  • [SDCOMP-45329]  In rare circumstances, the microlib implementation of the printf() family of functions could incorrectly write %% instead of % when processing the format conversion specification %%. This has been fixed.

  • [SDCOMP-30369]  The ARM Compiler library implementation of strtof() incorrectly failed to set errno to ERANGE when the number represented by its input string is within range for double but not for float. This has been fixed.

  • [SDCOMP-29945]  The ARM Compiler library implementation of setlocale() would incorrectly accept locale strings that begin with the * character but have an invalid format, and update the internal locale state of the C library to contain invalid pointers. This could result in unpredictable behavior. This has been fixed.

Other issues
  • [SDCOMP-29403]  In certain circumstances, when using a Linux host platform and a filesystem that has 64-bit inodes enabled, the tools could report either of the following:

    • Error: #5: cannot open <entity> input file "<filename>": Value too large for defined data type.
    • Error: #2918: cannot open <entity> file "<entity>": not a regular file.

    This has been fixed.

Known issues in ARM Compiler 6.7

  • [SDCOMP-47949]  When compiling code that includes the arm_sve.h header file, the compiler incorrectly reports fatal error: 'arm_sve.h' file not found. A workaround for this issue is to compile with -I <install_dir>/lib/tt_sve/lib/clang/5.0.0/include.

  • [SDCOMP-47864]  Link time optimization (LTO) is not supported when compiling with -march=name+sve for a target that supports the Scalable Vector Extension (SVE). To avoid the use of LTO:

    • Do not compile with -flto option and do not link with --lto.
    • When compiling at -Omax, also compile with -fno-lto and link with --no_lto.

  • [SDCOMP-47620]  In certain circumstances, when compiling with -mexecute-only for a target with hardware floating-point linkage, the compiler can incorrectly generate a literal pool within execute-only code. This results in the linker reporting Error: L6837E: Illegal data mapping symbol found in execute-only section <object>(<section>) at offset <offset>. A workaround for this issue is to compile with -mfloat-abi=soft.

  • [SDCOMP-28016]  long double is not supported for AArch64 state.

  • [SDCOMP-26080]  Complex numbers are not supported.