abi-aa icon indicating copy to clipboard operation
abi-aa copied to clipboard

AArch64 build attributes specification

Open smithp35 opened this issue 1 year ago • 3 comments

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 avatar Nov 03 '23 14:11 smithp35