1.1.1. Components of RVCT

For information about RVCT see:

Development tools

The following development tools are provided when you install RVCT:

armcc

The ARM and Thumb® C and C++ compiler. It compiles either:

  • ISO C:1990 source

  • ISO C++:1998 source

into:

  • 32-bit ARM code

  • 16-bit Thumb code

  • 16/32-bit Thumb-2 code.

Introduced in RVCT v2.2, the Thumb-2 instruction set includes older 16-bit Thumb instructions as a subset. Thumb-2 introduces many new 32-bit instructions and some new 16-bit instructions. On those processors that support it, Thumb-2 gives near ARM performance together with code size that is the same as older versions of Thumb.

armasm

The ARM and Thumb assembler. This assembles ARM assembly language and Thumb/Thumb-2 assembly language source.

armlink

The ARM linker. This combines the contents of one or more object files with selected parts of one or more object libraries to produce an executable program. The ARM linker creates ELF executable images.

Rogue Wave C++ library

The Rogue Wave library provides an implementation of the standard C++ library as defined in the ISO/IEC 14822:1998 International Standard for C++. For more information on the Rogue Wave library, see the HTML documentation on the CD ROM.

C++ runtime libraries

The ARM C++ runtime libraries enable support for core C++ language features, as provided in the C++ header files new, typeinfo, and exception in install_directory\RVCT\Data\...\include\....

C library

The ARM C library provides an implementation of the library features as defined in the ISO/IEC 9899:1990, C Standard and the Normative Addendum 1 from 1994 (with the exception of file I/O).

fromelf

The ARM image conversion utility. This accepts ELF format input files and converts them to a variety of output formats, including:

  • plain binary

  • Motorola 32-bit S-record format

  • Intel Hex 32 format

  • Verilog-like hex format.

fromelf can also generate text information about the input image, such as disassembly and its code and data size.

armar

The ARM librarian enables sets of ELF format object files to be collected together and maintained in libraries. You can pass such a library to the linker in place of several ELF files.

Note

All RVCT tools are 32-bit applications and, therefore, have an address (memory accessed) limit of 4GB. Sun Solaris machines are all 64-bit but they will hit memory problems when building large images that extend over the 4GB boundary. This generates a warning message (L6000U) to indicate that there is not enough memory. This might cause confusion since sufficient memory is available but the application cannot access it.

Standards compliance

RVCT conforms to the following standards. In each case, the level of compliance is noted:

ar

armar produces, and armlink consumes, UNIX-style object code archives. armar can list and extract most ar-format object code archives, and armlink can use an ar-format archive created by another archive utility provided that it contains a symbol table member.

DWARF2

DWARF2 debug tables are supported by all the tools in the RVCT suite, and by ELF/DWARF2 compatible debuggers from ARM, for example, RealView Debugger and ARM eXtended Debugger (AXD).

Note

The DWARF2 standard is ambiguous in some areas (such as debug frame data) so there is no guarantee that third-party debuggers can consume the DWARF2 produced by ARM or that ARM debuggers can consume the DWARF2 produced by third-party tools.

DWARF3

Initial support for DWARF3 (Draft Standard 9) debug tables is provided by all the tools in the RVCT suite, and by RealView Debugger v1.8 (and above).

ISO C

The ARM compiler accepts ISO/IEC 9899:1990 C, including the Normative Addendum 1 from 1994 (except file I/O), as input. The option --strict can be used to enforce strict ISO compliance.

C++

The ARM compiler supports the full ISO/IEC 14822:1998 C++ language, with the exception of the export keyword.

ELF

The ARM tools produce relocatable and executable files in ELF format. The fromelf utility can translate ELF files into other formats.

Compliance with the ABI for the ARM Architecture (base standard)

The Application Binary Interface (ABI) for the ARM Architecture is a collection of standards, some open and some specific to the ARM architecture, that regulate the inter-operation of binary code and development tools in ARM-based execution environments ranging from bare metal to major operating systems such as ARM Linux.

By conforming to this standard, ARM and Thumb objects and libraries from different producers can work together.

The ABI for the ARM Architecture (base standard) [BSABI] consists of a family of specifications including:

AAPCS

Procedure Call Standard for the ARM Architecture. Governs the exchange of control and data between functions at runtime. There is a variant of the AAPCS for each of the major execution environment types supported by RVCT.

CPPABI

C++ ABI for the ARM Architecture. Builds on the generic C++ ABI (originally developed for IA-64) to govern interworking between independent C++ compilers.

EHABI

Exception Handling ABI for the ARM Architecture. Defines both the language-independent and C++-specific aspects of how exceptions are thrown and handled.

AAELF

ELF for the ARM Architecture. Builds on the generic ELF standard to govern the exchange of linkable and executable files between producers and consumers.

AADWARF

DWARF for the ARM Architecture. This ABI uses DWARF 3.0 to govern the exchange of debugging data between object producers and debuggers.

RTABI

Runtime ABI for the ARM Architecture. Governs what independently produced objects can assume of their execution environments by way of floating-point and compiler helper function support.

CLIBABI

C Library ABI for the ARM Architecture. Defines an ABI to the ISO C:1990 library.

BPABI

Base Platform ABI for the ARM Architecture. Governs the format and content of executable and shared object files generated by static linkers. Supports platform-specific executable files using post linking. Provides a base standard that is used to derive a platform ABI.

For more information on the base standard, software interfaces, and standards supported by ARM, see install_directory\Documentation\Specifications\....

For details of the latest published versions, see http://www.arm.com.

If you are upgrading to the latest release of RVCT from a previous release, ensure that you are using the most recent versions of the ARM specifications.

Supporting software

To debug your programs under simulation, or on hardware that is based on an ARM core, use a suitable debugger, for example, ARM RealView Debugger v1.8 (compatible with ELF, DWARF2, or DWARF3 as produced by GCC 3.4 or RVCT v2.2) or AXD (ELF/DWARF2).

To debug your programs under simulation, use the RealView ARMulator® ISS (RVISS) supporting software. RVISS is an Instruction Set Simulator (ISS) that is supplied with RealView Developer Suite. It communicates with a debugger, for example, ARM RealView Debugger, and can run on the same host computer or on a system remote from that running the debugger. For more details, see RealView ARMulator ISS User Guide.

Code examples

This book references examples provided with RealView Developer Suite in the main examples directory install_directory\RVDS\Examples. See RealView Developer Suite Getting Started Guide for a summary of the examples provided.

Copyright © 2002-2005 ARM Limited. All rights reserved.ARM DUI 0202F
Non-Confidential