Release notes for ARM Compiler 6.01 (build 22)

Introduction

ARM Compiler 6.01 provides architectural support for ARMv8-A and ARMv7-A and can be used in conjunction with DS-5 to build and debug ARMv8-A or ARMv7-A executable code. This release contains everything you need to build an ARMv8-A or ARMv7-A executable binary for bare metal applications targeting AArch32 or AArch64.

ARM Compiler 6.01 adds support for the ARMv7-A architecture and the Cortex-A family of processors. New features in this release include support for Position Independent Executables, support for building the UEFI code base and initial support for Link Time Optimization. ARM Compiler 6.01 also adds alpha support for the ARMv7-R, ARMv7-M and ARM v6-M architectures.

What's Supported in ARM Compiler 6.01?

Architecture and Processors Level of support
ARMv8-A and derived processors Supported
ARMv7-A and derived processors Supported
ARMv7-R, ARMv7-M, ARMv6-M and derived processors Alpha - will be supported in a future release. Consider using ARM Compiler 5 in the meantime.
ARM Architectures earlier than ARMv6-M Unsupported. Please use ARM Compiler 5
Non ARM architectures Unsupported
Level of support Description
Supported Production quality. Highest support priority.
Beta Implementation complete, but not thoroughly tested. User experimentation and feedback is welcomed.
Alpha Implementation is not complete and not thoroughly tested. User experimentation and feedback is welcomed.
Unsupported Features that are either not present in the toolchain or have been deprecated. These features are completely untested. Use entirely at your own risk.

General changes in ARM Compiler 6.01

Enhancements in ARM Compiler 6.01

Compiler and integrated assembler (armclang)

Linker (armlink)

Fromelf

Corrections in ARM Compiler 6.01

Compiler and integrated assembler (armclang)

Legacy assembler (armasm)

Linker (armlink)

Libraries and system headers

Other issues

Known issues in ARM Compiler 6.01

  • [SDCOMP-28246]  On Red Hat Enterprise Linux, the link time optimization feature causes the 32-bit version of the linker to exit with ARM Linker: Execution interrupted due to an illegal storage access.

  • [SDCOMP-26574]  The -mcpu=name compiler option does not support the following values:

    • cortex-m0plus
    • cortex-m1
    • cortex-r7
    • cortex-sc000
    • cortex-sc300

  • [SDCOMP-26563]  When compiling using the --target=armv7r-arm-none-eabi option, either with -mcpu=cortex-r4 or without any -mcpu option, the compiler reports 'cortex-r4' is not a recognized processor for this target (ignoring processor) and does not generate code specific to the ARMv7-R architecture. Additionally, the resulting objects do not cause the linker to select a library by default. A workaround for this issue is to compile using -mcpu=cortex-r5.

  • [SDCOMP-25973]  When linking using the --cpu=cortex-a5 option, the linker can report Error: L6366E: <object> attributes are not compatible with the provided cpu and fpu attributes. Compiling with the --target=armv7-arm-none-eabi -mcpu=cortex-a5 options generates objects for a CPU with VFPv4 and NEON, whereas the linker option --cpu=cortex-a5 assumes a CPU without VFP and NEON. A workaround for this issue is to link using --cpu=cortex-a5.neon.

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

  • [SDCOMP-25970]  When linking using either --cpu=cortex-a53 or --cpu=cortex-a57, the linker incorrectly reports Fatal error: L3903U: Argument '<feature_name>' not permitted for option 'cpu'. A workaround for this issue is to link without the --cpu option.

  • [SDCOMP-25969]  Objects generated by the compiler never include Lib$$Request symbols. This means that instead of automatically linking with the ARM libraries, the linker may report Warning: L6665: Neither Lib$$Request$$armlib Lib$$Request$$cpplib defined, not searching ARM libraries and Error: L6411E: No compatible library exists with a definition of startup symbol <name>. To link with the ARM libraries, use the --force_scanlib linker option.

  • [SDCOMP-25968]  C++ exceptions are not supported. C++ code must be compiled using the -fno-exceptions option.

  • [SDCOMP-25967]  The __fp16 half-precision floating-point data type is not supported.

  • [SDCOMP-25966]  fromelf --fieldoffsets --expandarrays is expected to print information about each element of an array. For objects that have been compiled using armclang, information is only currently printed about the first element of an array.

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

Copyright © 2015 ARM Limited. All rights reserved. ARM ARN 0008D
Non-Confidential ID010715