Arm Architecture Application Binary Interface (ABI) Specifications

repository·main·Indexed 23 days ago

https://github.com/arm-software/abi-aa

Official source for the Application Binary Interface (ABI) specifications for the Arm Architecture. It includes documentation for 32-bit (AArch32) and 64-bit (AArch64) architectures, covering the Procedure Call Standard (PCS), ELF and DWARF formats, C/C++ ABIs, and extensions such as SVE, PAuth, Memtag, and Morello.

Tokens
154.3K
Snippets
148
Records
695
Agent score
79%

What's inside arm-software-abi-aa

  1. Overview of the C Library ABI for the Arm Architecture

    main

    This project defines the ANSI C (C89) run-time library Application Binary Interface (ABI) for software targeting the Arm architecture. It provides the specification required for programs written in:

    • Arm and Thumb assembly language
    • C
    • Standalone C++
  2. Overview of the Vector Function ABI for AArch64

    main

    The Vector Function Application Binary Interface Specification for AArch64 defines the rules for how caller and callee functions must interact when processing vector data through SIMD registers on the Arm 64-bit architecture.

    This specification is primarily designed for compilers implementing the OpenMP #pragma omp declare simd directive. It ensures that vector versions of functions can be correctly generated, used in vectorized loops, and interfaced with libraries via proper function declarations.

  3. Overview of ELF for the Arm® Architecture

    main
    This repository contains documentation regarding the use of the ELF (Executable and Linkable Format) binary file format within the Application Binary Interface (ABI) for the Arm 32-bit architecture. Detailed specifications for the 32-bit implementation can be found in the aaelf32.rst document.
  4. Overview of Morello extensions to ELF for AArch64

    main
    This project defines the Morello extensions to the ELF (Executable and Linkable Format) binary file format specifically for the Arm 64-bit architecture (AArch64) within the Application Binary Interface (ABI). These extensions are designed to support the Morello architecture's requirements.
  5. Overview of the Base Platform ABI for Arm Architecture

    main

    The Base Platform Application Binary Interface (ABI) for the Arm architecture defines the standard interface between executable files (such as dynamic shared objects (DSOs) and dynamic link libraries (DLLs)) and the systems that execute them. It covers essential aspects of the executable lifecycle, including:

    • Executable file format and contents
    • Dynamic shared object (DSO) and dynamic link library (DLL) structures
    • Executable file loading
    • Dynamic linking processes
  6. Overview of the AArch64 DWARF ABI

    main

    The ABI for the Arm 64-bit architecture uses the DWARF 3.0 standard as its baseline. It extends the base standard with Arm-specific rules and extensions, specifically covering:

    • DWARF register names: Enumeration of DWARF register numbers for use in .debug_frame and .debug_info sections.
    • Canonical Frame Address (CFA): The specific definition of CFA used by this ABI.
    • Common Information Entries (CIE): The definition of CIE used by this ABI.
    • Call Frame Instructions (CFI): The definition of CFI used by this ABI.
    • DWARF Expression Operations: The specific operations used by this ABI.
  7. Overview of Memtag ABI Extension to ELF for AArch64

    main

    The Memtag ABI (MemtagABI) Extension to ELF for the Arm 64-bit architecture (AArch64) defines how memory tagging information is encoded within ELF files. This extension allows high-level languages to apply memory tags to specific memory regions, such as globals and the stack, which may not be possible using the base standard alone.

    This document is currently at Alpha release quality, meaning the content is a draft and subject to significant incompatible changes.

  8. Overview of PAuth Extension to ELF for AArch64

    main
    The PAuth Extension to ELF for the Arm 64-bit Architecture (AArch64) provides specifications for Pointer Authentication (PAUTH) extensions within the ELF format. These extensions allow high-level languages to utilize pointer authentication more extensively than the base standard permits.
  9. Overview of AArch64 ELF Conventions for Binary Analysis

    main
    This specification defines code patterns and ELF (Executable and Linkable Format) conventions specifically for AArch64 binaries. The primary goal is to provide a standardized set of conventions that allow Binary Analysis tools to recognize and interpret AArch64 binaries more effectively and accurately.
  10. Overview of the Procedure Call Standard for AArch32

    main
    This repository contains the documentation for the Procedure Call Standard used by the Application Binary Interface (ABI) for the Arm 32-bit architecture (AArch32). Developers working on low-level software, compilers, or assembly for AArch32 systems should refer to this standard to ensure binary compatibility and correct calling conventions.