ARM Compiler Release Notes
(version 6.00 build 18)

Introduction

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

What's Supported in ARM Compiler 6.00?

Architecture and Processors Level of support
ARMv8-A, Cortex-A53, Cortex-A57 Supported
ARMv7-A and derived processors Alpha - will be supported in a future release. Please use ARM Compiler 5 in the meantime.
ARMv7-R, ARMv7-M, ARMv6-M and derived processors Unsupported in this release - will be supported in a future release. Please use 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.

What's New?

  • Compiler
    • armclang is the successor to armcc and is based on LLVM technology. armclang initially supports the ARMv8 architecture and is to be extended to support other ARM architectures in future releases. See the "Migration and Compatibility Guide (DUI0742A)" available in the product documentation for information about migrating from previous versions of ARM Compiler.
  • armlink, armasm, fromelf, armar
    • armlink, armasm, fromelf, and armar have been extended to support ARMv8 and behave similarly to previous version of ARM Compiler, although they might not be fully feature complete. Please see "Known Issues and Limitations" at the end of this document and the "Migration and Compatibility Guide (DUI0742A)" which is available in the product documentation.
    • 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.
  • ARM C and C++ libraries for embedded
    • The standard ARM Compiler embedded libraries have been extended to support ARMv8 and behave similarly to those found in previous versions of ARM Compiler, although they might not be fully feature complete. Please see Known Issues and Limitations at the end of this document and the "Migration and Compatibility Guide DUI0742A)" which is available in the product documentation.

Installation Instructions

The instructions below refer to standalone installation of ARM Compiler 6. If you received ARM Compiler 6 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.

Host Computer Requirements

ARM Compiler 6.00 is supported on the following host platforms:

  • Red Hat Enterprise Linux 5 64-bit
  • Red Hat Enterprise Linux 6 64-bit
  • Ubuntu Desktop Edition 12.04 LTS 64-bit
  • Windows 7 64-bit
  • Windows 8 64-bit
  • Windows 2012 Server 64-bit

Install on Linux

To install ARM Compiler 6.00 on Linux, run (not source) install_x86_64.sh and follow the on-screen instructions. The installer unpacks ARM Compiler 6.00 into your chosen directory. It is recommended that you delete any previous release of ARM Compiler 6 before installing this release. The installer guides you through this process. Alternatively you can install this release into a different directory.

Dependencies

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

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.00 on 64-bit Linux host platforms. ARM Compiler 6.00 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 ia32-libs

Install on Windows

To install ARM Compiler 6.00 on Windows, run setup.exe and follow the on-screen instructions. If you have an earlier version of ARM Compiler 6 already installed, then you can install this release on top of it and an upgrade is performed.

Post Install

ARM Compiler 6.00 is a license managed product.

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

Uninstall

To uninstall ARM Compiler 6.00 on Windows, use Programs and Features in Control Panel, select ARM Compiler 6 and click the Uninstall button.

To uninstall ARM Compiler 6.00 on Linux, delete the installation directory.

Building a Simple Program

To compile a very simple program for a bare metal AArch64 system:

(Unix)    echo "int main() {}" > simple.c
(Windows) echo  int main() {}  > simple.c
(Either)  armclang simple.c -o simple

armclang accepts the same options as the Clang compiler. For more information, please see http://clang.llvm.org/docs/UsersManual.html. For backwards compatibility with previous versions of ARM Compiler, a command-line translation tool is provided which converts a subset of armcc command-line options to armclang command-line options. See the "Migration and Compatibility (DUI0742A)" which is available in the product documentation.

Documentation

The following documentation is available for ARM Compiler 6.00:

  • Getting Started Guide (DUI0741A).
  • Migration and Compatibility Guide (DUI0742A).
  • Software Development Guide (DUI0773A).
  • armclang Reference Guide (DUI0774A).
  • armasm User Guide (DUI0801A).
  • armlink User Guide (DUI0803A).
  • ARM C and C++ Libraries and Floating-Point Support User Guide (DUI0808A).
  • armar User Guide (DUI0806A).
  • fromelf User Guide (DUI0805A).
  • armasm Reference Guide (DUI0802A).
  • armlink Reference Guide (DUI0804A).
  • ARM C and C++ Libraries and Floating-Point Support Reference Guide (DUI0809A).
  • Errors and Warnings Reference Guide (DUI0807A).

For more information, please see http://infocenter.arm.com/.

Feedback and Support

Your feedback is important to us, and you are welcome to send us bug reports and suggestions for improvement on any aspect of the product. Feedback and support issues may be emailed to support-sw@arm.com. Where appropriate, please mention the version and build of the tools, and include any source code, other files and command-lines necessary to replicate the issue. The overall build number for ARM Compiler 6.00 can be found below the title at the top of these release notes.

Known Issues and Limitations

The following known issues and limitations exist in ARM Compiler 6.00 (alphanumeric codes in square brackets are issue numbers for reference):
Copyright © 2014 ARM Limited. All rights reserved. ARM ARN 0008A
Non-Confidential ID041514