Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AArch64 build attributes specification #230

Open
wants to merge 6 commits into
base: main
Choose a base branch
from

Commits on Nov 14, 2024

  1. AArch64 build attributes specification

    Introduce a new specification document for AArch64 build attributes.
    
    The 32-bit ABI makes extensive use of the build attributes
    defined in addenda32. These attributes defined for relocatable
    objects are used for a number of purposes including:
    
    * Checking ABI compatibility.
    
    * Checking required processor feature compatibility.
    
    * Automatic static library selection.
    
    With AArch64's focus on software platforms, there has not been
    a strong requirement to introduce extra metadata to denote the
    requirements and optional processor features used by a
    relocatable object. Programs are expected to do runtime testing
    to check if processor features are available.
    
    With the advent of security features like PAuthABI, BTI and GCS
    we need a way to record additional metadata that a static linker
    can use to set metadata like GNU properties in a loadable-unit
    (executable or shared-library).
    
    A brief summary:
    
    * Made a generic "aeabi" prefix for Arm subsections. Including
      a header that states optionality and encoding. All ULEB or
      all NTBS.
    
    * Describes a single subsection that maps directly to the existing
      .note.gnu.properties and uses language similar to AAELF64. This
      includes the existing BTI and PAC properties.
    
    * Is accompanied by a design rationale with a suggestion for
      tool syntax.
    smithp35 committed Nov 14, 2024
    Configuration menu
    Copy the full SHA
    7fadae6 View commit details
    Browse the repository at this point in the history
  2. [BuildAttributes] Address review comments from MaskRay

    Commmit will be squashed prior to commit.
    
    - Fixed references to GNU properties which have moved to sysvabi64.rst
    - Mention in buildattr64.rst that SysVr4 platforms are recommended to
      use GNU properties in loadable units.
    - Change lattice to partial order.
    - Be more consistent with relocatable object file, rather than
      relocatable file, relocatable object or relocatable object file.
    - Rewrite example of library selection to be clearer.
    smithp35 committed Nov 14, 2024
    Configuration menu
    Copy the full SHA
    f806ccf View commit details
    Browse the repository at this point in the history
  3. [BuildAttributes] Add subsection vendor name for pauthabi

    This was unfortunately missed out in the initial commit.
    smithp35 committed Nov 14, 2024
    Configuration menu
    Copy the full SHA
    ea25344 View commit details
    Browse the repository at this point in the history
  4. [buildattr64] More review comments from MaskRay

    Make further corrections, these were all non-functional in nature.
    This commit will be squashed prior to merging.
    smithp35 committed Nov 14, 2024
    Configuration menu
    Copy the full SHA
    ede7d6d View commit details
    Browse the repository at this point in the history
  5. [buildattr64] Review comments from initial implementations

    * In assembly syntax use a comma in [,optional].
    * Change document status to Beta quality.
    * Remove superfluous Encoding from start of sentence.
    * Clarification of "optional" in public subsection header.
    * Clarification that public subsections define their own attributes.
    * Clarify static linker responsibilities with mixed build attributes.
      and .note.gnu.property sections.
    * Reformat the aeabi-pauthabi section to match aeabi-feature-and-bits.
    * Move and expand the tool interface section from the rationale to
      the specification.
    smithp35 committed Nov 14, 2024
    Configuration menu
    Copy the full SHA
    205b12b View commit details
    Browse the repository at this point in the history

Commits on Nov 26, 2024

  1. [buildattr64] Update after discussion with assembler implementers.

    * Changed assembler syntax to make parameters mandatory and to define
    human readable names.
    * Generalise mapping of aeabi-feature-and-bits to .note.gnu.property
    * Renumber aeabi-feature-and-bits tags to start from 0.
    smithp35 committed Nov 26, 2024
    Configuration menu
    Copy the full SHA
    654a64c View commit details
    Browse the repository at this point in the history