[PATCH v9 00/19] AArch64 AEABI build attributes (a.k.a. object attributes v2)
Matthieu Longo
matthieu.longo@arm.com
Tue Sep 16 10:52:38 GMT 2025
On 2025-09-01 17:56, Matthieu Longo wrote:
> This patch series introduces support for AArch64 AEABI build attributes (that I will refer as Object Attributes V2). Build attributes are metadata embedded in ELF object files, and binaries (executables, and shared linkable libraries) to provide ABI and compatibility information. These attributes help linkers to diagnose incompatibilities and enforce compatibility between the input object files at link time. Additionally, they can offer insights into the targeted processor, or architecture for an object file, or features used in it. More details can be found in [1] and Section 4 of [2].
> This enhancement aligns with the ongoing efforts to improve compatibility and interoperability within the ELF ecosystem for AArch64.
>
> ## Diff against previous revisions
>
> ### Revision 8 -> 9:
> Patch series v8: https://inbox.sourceware.org/binutils/20250715113924.57896-1-matthieu.longo@arm.com/
> Diff: addressed comments from Jan in revision 8.
>
> ### Revision 7 -> 8:
>
> Patch series v7: https://inbox.sourceware.org/binutils/20250714165851.1580881-1-matthieu.longo@arm.com/
> Diff: addressed comments from Jan in revision 7.
> - Remove OBJ_ELF from tc-<arch>.h where <arch> is ELF only.
>
> ### Revision 6 -> 7:
>
> Patch series v6: https://inbox.sourceware.org/binutils/20250711112913.2453285-1-matthieu.longo@arm.com/
> Diff: addressed comments from Jan in revision 6.
>
> ### Revision 5 -> 6:
>
> Patch series v5: https://inbox.sourceware.org/binutils/20250707164941.1983927-1-matthieu.longo@arm.com/
> Diff: addressed comments from Richard Earnshaw and Jan Beulich. Major ones are:
> - the enabling/disabling of the code for OAv1 and OAv2 in tc-<arch>.h.
> - patch 3 from v5 was merged into GCC, and then libiberty was synced into binutils, so this patch is now in binutils's master branch.
>
> ### Revision 4 -> 5:
> Patch series v4: https://inbox.sourceware.org/binutils/20250703162732.1048182-1-matthieu.longo@arm.com/
> Diff:
> - Address Jan Beulich's comments from revision 4.
>
> ### Revision 3 -> 4:
> Patch series v3: https://inbox.sourceware.org/binutils/20250509151319.88725-1-matthieu.longo@arm.com/
> Diff:
> - Moved patch 5 to its own mail thread: https://inbox.sourceware.org/binutils/20250620154353.3139154-1-matthieu.longo@arm.com/
> - Addressed comments from Richard Earnshaw in revision 3.
> - Add ifdefery to enable/disable OA code from Gas.
> - Improve documentation in code.
> - Update Gas documentation.
>
> ### Revision 2 -> 3:
> Patch series v2: https://inbox.sourceware.org/binutils/20250502103305.3153170-1-matthieu.longo@arm.com/
> Diff:
> - Addressed comments from Jan Beulich.
> - fix memory issue in readelf (patch 5/28 in v2).
> - rewrote the description of patch (8/28 in v2) after explanations from Jan and Michael Matz.
> - merge patches 23,24,26/28 in v2 into one patch. Added macros to enable/disable the GNU attributes directives in function of TC_<arch>.
> - improve tests for GNU attributes directives.
>
> ### Revision 1 -> 2:
> Patch series v1: https://inbox.sourceware.org/binutils/20250321171449.132324-1-matthieu.longo@arm.com/
> Diff:
> - Addressed comments from Jan Beulich. The most important ones are:
> - deserialize heterogeneous set of input objects (=mix of OAv1 and OAv2).
> - serialize the output object to the default version set by the backend.
> - move the parsing code of object attributes from obj-elf.c to obj-attr.c
> - refactor the parsing code to handle both OAv1 and OAv2. (tested on all the platforms supporting OAv1)
> - extend the support of OAv2 to gnu directives to add platform-independent tests: gnu_attribute and gnu_subsection.
> - improve commit message regarding using SEC_HAS_CONTENTS in gas/write.c
> - elimination of the nested functions across the patch series.
>
> ### Revision 0 -> 1:
> Patch series v0: https://inbox.sourceware.org/binutils/20250310175131.1217374-1-matthieu.longo@arm.com/
> Diff:
> - Addressed comments from Jan Beulich and Richard Ball.
> - Added detection of unsupported PAuthABI signing scheme + tests. (Note: [6] was updated at the beginning of this week with some changes in this area)
>
> ## Background and Motivation
>
> The initial implementation of build attributes (that I will refer as Object Attributes V1) dates back to 2005 ([3]) and is specified in [4]. It stores attributes in a vendor-specific section ".ARM.attribute" using a complex format based on <tag, value> pairs and sub-subsections, where the key determines whether the attributes is mandatory or optional, and whether the type of the value is an integer encoded as ULEB128 (Unsigned Little Endian Base 128) or a string encoded as NTBS (Null-Terminated Byte String). While widely adopted since 2007 ([5]), Object Attributes V1's complexity makes parsing and skipping subsections or attributes challenging, especially for the main consumers, the linkers, which are responsible to merge them, and enforce compatibility.
>
> To address these limitations, a new specification for AArch64 build attributes (Object Attributes V2) was proposed ([1], [2]). Key design goals include:
> - Retaining successful aspects of Object Attributes V1.
> - Defining the relationship between build attributes and the existing GNU program properties.
> - Separating architectural requirements from software ABI requirements.
> - Simplifying the format to allow consumers to skip a subsection or attribute that it does not understand without giving a warning message.
>
> The specification is available in [2], and a pull request for discussion is open at [6].
>
> Example of the new AArch64 assembly directives to declare subsections and attributes:
> ```
> .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
> .aeabi_attribute Tag_Feature_BTI, 1
> .aeabi_attribute Tag_Feature_GCS, 1
> ```
>
> Output of readelf:
> ```
> Displaying notes found in: .note.gnu.property
> Owner Data size Description
> GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
> Properties: AArch64 feature: BTI, GCS
> Subsections:
> - Name: aeabi_feature_and_bits
> Scope: public
> Length: 33
> Optional: True
> Encoding: ULEB128
> Values:
> Tag_Feature_BTI: 1 (0x1)
> Tag_Feature_GCS: 1 (0x1)
> ```
>
> ## Disclaimer
>
> Ideally, the architecture should look like a "sandwich" composed of:
> - a deserialization layer toward a generic abstraction covering OAv1, OAv2(, and even GNU properties because it is basically the same thing).
> - a generic middle end merging the attributes.
> - a serialization layer toward the latest version of OA + GNU properties as we cannot really switch to all-OA because of performance concerns in the runtime linker.
>
> This would require a middle-end abstraction agnostic of V1 or V2, a translation layer in the deserializer to convert the attributes to the internal data format, and one in the serializer to convert the internal data to the targeted format(s) (add an 's' if you include GNU properties in the picture). Unfortunately building this middle end is a lot of work, and I currently don't have the allocated time for it.
>
> This current implementation should be able to handle a set of heterogeneous input objects (=an input object might contain OAv1, OAv2, or nothing). Since AArch64 does not have such a need for now, the current implementation does not implement any handler for the translation to the internal format. The OAv2 code is added to architecture-independent files, so this code will be unused for the vast majority of architectures. If others architectures want to adopt this model, it is very likely that they might need to support an heterogeneous set of object files with both OAv1 and OAv2 data, and so might need to add a backend-dependent translation layer right after the deserialization.
>
> Please, if any of those points is a blocker, feel free to include any maintainers or developers that you think relevant to the discussion.
>
> ## Patch Series Overview
>
> This series consists of 19 patches:
> 1. Patch 1 is a minor refactoring of the object attributes parsing code.
> 2. Patch 2 is moved the code to parse the BAs into gas/config/obj-elf-attr.c, and disable the code of BAs on non-BA targets.
> 3. Patches 3-8 add serialization support in gas, and dumping capabilities in readelf:
> * 2 new assembly directives for AArch64: ".aeabi_subsection" and ".aeabi_attribute".
> * convertion from assembly to internal abstractions.
> * serialization in bfd.
> * dumping support in readelf.
> * tests for serialization and dumping.
> 4. Patches 9-11 implement deserialization, copy support for objcopy, and add tests for copying.
> 5. Patch 12 implements the generic framework so that the linker can convert GNU properties to object attributes V2, merge them, and re-convert them to GNU properties. Patch 13 adds the corresponding generic tests.
> 6. Patch 14 implements the support for AArch64 AEABI build attributes and BTI, PAC and GCS tagging similar to what currently exists with the GNU properties. Patch 15 adds the corresponding AArch64-specific tests.
> 7. Patch 16 to 19 adds GNU aliases for those AEABI directives, in order to 1) facilitate the testing of the generic code on all architectures, and 2) the adoption of OAv2 by others platforms if they find it useful.
>
>
> ## Question
>
> Regarding the patches 16 to 29, it introduces the support for GNU attributes directives and its associated tests.
> Tests are splitted in the following categories:
> - parsing of OAv2 directives (parsing of OAv1 is out of scope, but is tested throught the backend tests).
> - negative tests for OAv1 and OAv2 support (=failure to parse the directives).
> - merging of OAv2 (merging of OAv1 is out of scope, but is tested throught the backend tests).
> One caveat of the current implementation of the tests is their exclusivity. If a platform decides to migrate to OAv2, it will have to support both OAv1 and OAv2 for some transition period. However, today gas does not have a way to know what version of the attributes is expected inside a file so it fails when the declaration of the attributes in a file doesn't match the default version (usually the latest).
> Should we add an option to gas (--obj-attr=[OAv1|OAv2], default value=default version set by the backend) to define which version of the attributes is expected inside the file ?
> Since today no plaform supports more than one version of the object attributes, it might make sense to postpone the implementation of such a command-line option to when the issue will be real.
>
> ## Testing
>
> Regression testing on:
> - aarch64-unknown-linux-gnu,
> - arm-unknown-linux-gnu
> - aarch64-none-pe
> - x86_64-linux-gnu
> showed no failure.
> Additionally, parsing and merging of OAv1 was tested on S390, ARC, CSky, m68k, msp430, PowerPC, TI C6X, RISC-V, MIPS, SPARC. The failures (if any) were not related to the object attributes.
>
> Feedback, questions, and change proposals are welcome.
>
> Regards,
> Matthieu.
>
> ## References
>
> [1]: [Design Rationale for Build Attributes for the Arm 64-bit Architecture (AARCH64)](https://github.com/ARM-software/abi-aa/blob/eec881270d5e3b23e58a6250640d06ff545ec1fc/design-documents/buildattr64-rationale.rst)
> [2]: [Build Attributes for the Arm® 64-bit Architecture (AArch64)](https://github.com/ARM-software/abi-aa/blob/eec881270d5e3b23e58a6250640d06ff545ec1fc/buildattr64/buildattr64.rst)
> [3]: [\[patch\] Arm EABI object attributes, by Paul Brook - September 2005](https://sourceware.org/pipermail/binutils/2005-September/044310.html)
> [4]: [Addenda to, and Errata in, the ABI for the ARM Architecture (AArch32) - Chapter 3 - ADDENDUM: Build Attributes](https://github.com/ARM-software/abi-aa/blob/a82eef0433556b30539c0d4463768d9feb8cfd0b/addenda32/addenda32.rst#addendum-build-attributes)
> [5]: [Object attribute tagging, by Joseph S. Myers - June 2007](https://gcc.gnu.org/legacy-ml/gcc/2007-06/msg00654.html)
> [6]: [PR #230: AArch64 build attributes specification](https://github.com/ARM-software/abi-aa/pull/230)
> [7]: [Removing nested function from elfxx-aarch64.c](https://inbox.sourceware.org/binutils/98c5819b-d197-4fdb-aa7f-9fd52801cad8@redhat.com/)
> [8]: https://inbox.sourceware.org/gcc-patches/20250703105942.732907-1-matthieu.longo@arm.com/
>
>
> Matthieu Longo (14):
> bfd: rename parsing methods of object attribute v1 API
> gas: move code for object attribute parsing into obj-elf-attr.c
> gas: use common code for object attribute v1 & v2 parsing
> bfd: parse Object Attributes v2's section in input object files
> bfd: add support for copying Object Attributes v2
> objcopy tests for Object Attributes v2
> Merge of Object Attributes v2 during linkage (generic logic)
> ld tests for generic merge coverage of Object Attributes v2
> aarch64: merge of Object Attributes v2 during linkage
> ld tests for AArch64-specific merge coverage for AEABI Build Attributes
> gnu directives: add support for gnu_attribute and gnu_subsection in OAv2 context
> gnu directives: gas/readelf tests for gnu attributes v2
> gnu directives: bfd: generic tests for objcopy of gnu attributes v2
> gnu directives: bfd: generic tests for merge of gnu attributes v2
>
> Richard Ball (5):
> Object Attributes v2: new abstractions for subsections and attributes
> gas: implement parsing of object attributes v2
> bfd: write Object Attributes v2
> readelf: dump Object Attributes v2
> Serialization and dumping tests of Object Attributes v2
>
> bfd/Makefile.am | 2 +-
> bfd/Makefile.in | 2 +-
> bfd/elf-attrs.c | 2583 ++++++++++++++++-
> bfd/elf-attrs.h | 214 ++
> bfd/elf-bfd.h | 109 +-
> bfd/elf-properties.c | 4 +-
> bfd/elf32-arc.c | 2 +-
> bfd/elf32-arm.c | 2 +-
> bfd/elf32-csky.c | 2 +-
> bfd/elf32-msp430.c | 2 +-
> bfd/elf32-tic6x.c | 2 +-
> bfd/elfnn-aarch64.c | 111 +-
> bfd/elfnn-riscv.c | 2 +-
> bfd/elfxx-aarch64.c | 468 ++-
> bfd/elfxx-aarch64.h | 41 +
> bfd/elfxx-target.h | 48 +-
> bfd/po/SRC-POTFILES.in | 1 +
> binutils/readelf.c | 329 ++-
> .../binutils-all/aarch64/build-attributes.d | 52 +
> .../binutils-all/aarch64/build-attributes.s | 31 +
> binutils/testsuite/binutils-all/objcopy.exp | 1 +
> .../testsuite/binutils-all/object-attr-v2.d | 53 +
> .../testsuite/binutils-all/object-attr-v2.s | 31 +
> binutils/testsuite/lib/binutils-common.exp | 26 +
> gas/Makefile.am | 2 +
> gas/Makefile.in | 5 +
> gas/config/obj-elf-attr.c | 1178 ++++++++
> gas/config/obj-elf-attr.h | 54 +
> gas/config/obj-elf.c | 241 +-
> gas/config/obj-elf.h | 4 +-
> gas/config/tc-aarch64.c | 16 +
> gas/config/tc-aarch64.h | 5 +
> gas/config/tc-arc.c | 6 +-
> gas/config/tc-arc.h | 3 +
> gas/config/tc-arm.c | 8 +-
> gas/config/tc-arm.h | 5 +
> gas/config/tc-csky.h | 3 +
> gas/config/tc-m68k.c | 2 +-
> gas/config/tc-m68k.h | 3 +
> gas/config/tc-mips.c | 2 +-
> gas/config/tc-mips.h | 3 +
> gas/config/tc-msp430.h | 3 +
> gas/config/tc-ppc.c | 2 +-
> gas/config/tc-ppc.h | 5 +
> gas/config/tc-riscv.c | 4 +-
> gas/config/tc-riscv.h | 3 +
> gas/config/tc-s390.h | 3 +
> gas/config/tc-sparc.h | 3 +
> gas/config/tc-tic6x.c | 6 +-
> gas/config/tc-tic6x.h | 3 +
> gas/configure | 13 +
> gas/configure.ac | 13 +
> gas/doc/as.texi | 72 +-
> gas/doc/c-aarch64.texi | 33 +
> gas/po/POTFILES.in | 2 +
> .../aarch64-build-attributes.exp | 23 +
> .../gas/aarch64/build-attributes/ba-1.d | 53 +
> .../gas/aarch64/build-attributes/ba-1.s | 32 +
> .../aarch64/build-attributes/ba-failures-1.d | 32 +
> .../aarch64/build-attributes/ba-failures-1.s | 62 +
> .../ba-interleaved-subsections.d | 35 +
> .../ba-interleaved-subsections.s | 32 +
> .../build-attributes/ba-subsection-parsing.d | 75 +
> .../build-attributes/ba-subsection-parsing.s | 37 +
> gas/testsuite/gas/arm/attr-syntax.d | 6 +-
> .../gas/gnu-attributes/gnu-attributes.exp | 25 +
> .../oa-gnu-attribute-directive.d | 6 +
> .../oa-gnu-attribute-directive.s | 1 +
> .../oa-gnu-subsection-directive.d | 6 +
> .../oa-gnu-subsection-directive.s | 1 +
> .../gas/gnu-attributes/oav2-failures-1.d | 33 +
> .../gas/gnu-attributes/oav2-failures-1.s | 64 +
> .../oav2-interleaved-subsections.d | 36 +
> .../oav2-interleaved-subsections.s | 32 +
> .../gnu-attributes/oav2-subsection-parsing.d | 76 +
> .../gnu-attributes/oav2-subsection-parsing.s | 37 +
> .../gas/gnu-attributes/oav2-success-1.d | 54 +
> .../gas/gnu-attributes/oav2-success-1.s | 32 +
> gas/write.c | 2 +
> include/elf/aarch64.h | 17 +
> ld/ldelf.c | 1 +
> .../aarch64-build-attributes.exp | 34 +
> .../build-attributes/ba-1-all-optional-1.s | 15 +
> .../build-attributes/ba-1-all-optional-2.s | 15 +
> ...ismatch-subsec-props-with-all-optional-1.d | 7 +
> ...ismatch-subsec-props-with-all-optional-1.s | 2 +
> .../build-attributes/ba-1-one-file.d | 42 +
> ...-1-two-files-all-optional-1more-1missing.d | 52 +
> ...nknown-and-known-attr-known-subsection-1.s | 11 +
> ...nknown-and-known-attr-known-subsection-2.s | 11 +
> ...-unknown-and-known-attr-known-subsection.d | 25 +
> ...ba-2-mix-unknown-and-known-subsections-1.s | 19 +
> ...ba-2-mix-unknown-and-known-subsections-2.s | 19 +
> .../ba-2-mix-unknown-and-known-subsections.d | 25 +
> .../ba-2-required-subsec-A-1.s | 3 +
> .../ba-2-required-subsec-A-2.s | 3 +
> .../build-attributes/ba-2-required-subsec-B.s | 3 +
> .../ba-2-required-subsec-nok.d | 7 +
> .../ba-2-required-subsec-ok.d | 16 +
> .../build-attributes/ba-aarch64-1-bti-1.s | 9 +
> .../build-attributes/ba-aarch64-1-bti-2.s | 14 +
> ...a-aarch64-1-bti-explicit-ok-objdump-dump.d | 53 +
> ...a-aarch64-1-bti-explicit-ok-readelf-dump.d | 24 +
> ...t-only-one-input-without-ba-or-gnu-props.d | 19 +
> ...-gnu-props-only-implicit-ok-readelf-dump.d | 20 +
> ...-aarch64-1-bti-implicit-nok-objdump-dump.d | 45 +
> ...-aarch64-1-bti-implicit-nok-readelf-dump.d | 16 +
> ...a-aarch64-1-bti-implicit-ok-objdump-dump.d | 38 +
> ...a-aarch64-1-bti-implicit-ok-readelf-dump.d | 19 +
> .../ba-aarch64-1-bti-via-gnu-props.s | 11 +
> ...u-props-and-bas-implicit-ok-readelf-dump.d | 22 +
> .../build-attributes/ba-aarch64-1-gcs-1.s | 9 +
> .../build-attributes/ba-aarch64-1-gcs-2.s | 14 +
> ...a-aarch64-1-gcs-explicit-ok-readelf-dump.d | 24 +
> ...-gnu-props-only-implicit-ok-readelf-dump.d | 20 +
> ...-aarch64-1-gcs-implicit-nok-readelf-dump.d | 16 +
> ...a-aarch64-1-gcs-implicit-ok-readelf-dump.d | 19 +
> .../ba-aarch64-1-gcs-via-gnu-props.s | 11 +
> .../build-attributes/ba-aarch64-1-no-bti.s | 2 +
> .../build-attributes/ba-aarch64-1-no-gcs.s | 2 +
> .../build-attributes/ba-aarch64-1-pac-1.s | 9 +
> .../build-attributes/ba-aarch64-1-pac-2.s | 14 +
> ...rch64-1-pac-ba-with-pac-plt-objdump-dump.d | 44 +
> ...rch64-1-pac-ba-with-pac-plt-readelf-dump.d | 21 +
> ...64-1-pac-ba-without-pac-plt-objdump-dump.d | 38 +
> ...64-1-pac-ba-without-pac-plt-readelf-dump.d | 21 +
> ...h64-1-pac-plt-but-no-pac-ba-objdump-dump.d | 53 +
> ...h64-1-pac-plt-but-no-pac-ba-readelf-dump.d | 18 +
> .../ba-aarch64-1-pac-via-gnu-props.s | 11 +
> .../ba-aarch64-1-required-subsection-1.s | 7 +
> .../ba-aarch64-1-required-subsection-2.s | 7 +
> .../ba-aarch64-1-required-subsection-3.s | 7 +
> .../ba-aarch64-1-required-subsection-4.s | 7 +
> ...aarch64-1-required-subsection-mismatch-1.s | 7 +
> ...aarch64-1-required-subsection-mismatch-2.s | 7 +
> .../ba-aarch64-1-required-subsection-nok-1.d | 8 +
> .../ba-aarch64-1-required-subsection-nok-2.d | 9 +
> .../ba-aarch64-1-required-subsection-ok-1.d | 25 +
> .../ba-aarch64-1-required-subsection-ok-2.d | 25 +
> .../ba-aarch64-1-unknown-tag.d | 20 +
> .../ba-aarch64-1-unknown-tag.s | 3 +
> .../build-attributes/ba-aarch64-1-void.s | 5 +
> .../ld-aarch64/build-attributes/bti-plt.ld | 27 +
> .../gnu-note-properties-maskable-merged.inc | 32 +
> .../gnu-note-properties-maskable-split.inc | 72 +
> .../gnu-note-properties-selectable-merged.inc | 32 +
> .../gnu-note-properties-selectable-split.inc | 72 +
> .../ld-aarch64/lib/aarch64-elf-lib.exp | 2 +-
> ld/testsuite/ld-attributes/ld-attributes.exp | 41 +
> .../ld-attributes/oav2-1-all-optional-1.s | 15 +
> .../ld-attributes/oav2-1-all-optional-2.s | 15 +
> ...ismatch-subsec-props-with-all-optional-1.d | 8 +
> ...ismatch-subsec-props-with-all-optional-1.s | 2 +
> ld/testsuite/ld-attributes/oav2-1-one-file.d | 43 +
> ...-1-two-files-all-optional-1more-1missing.d | 54 +
> ...nknown-and-known-attr-known-subsection-1.s | 11 +
> ...nknown-and-known-attr-known-subsection-2.s | 11 +
> ...-unknown-and-known-attr-known-subsection.d | 26 +
> ...v2-2-mix-unknown-and-known-subsections-1.s | 19 +
> ...v2-2-mix-unknown-and-known-subsections-2.s | 19 +
> ...oav2-2-mix-unknown-and-known-subsections.d | 27 +
> .../oav2-2-required-subsec-A-1.s | 3 +
> .../oav2-2-required-subsec-A-2.s | 3 +
> .../ld-attributes/oav2-2-required-subsec-B.s | 3 +
> .../oav2-2-required-subsec-nok.d | 8 +
> .../ld-attributes/oav2-2-required-subsec-ok.d | 17 +
> 166 files changed, 7913 insertions(+), 364 deletions(-)
> create mode 100644 bfd/elf-attrs.h
> create mode 100644 binutils/testsuite/binutils-all/aarch64/build-attributes.d
> create mode 100644 binutils/testsuite/binutils-all/aarch64/build-attributes.s
> create mode 100644 binutils/testsuite/binutils-all/object-attr-v2.d
> create mode 100644 binutils/testsuite/binutils-all/object-attr-v2.s
> create mode 100644 gas/config/obj-elf-attr.c
> create mode 100644 gas/config/obj-elf-attr.h
> create mode 100644 gas/testsuite/gas/aarch64/build-attributes/aarch64-build-attributes.exp
> create mode 100644 gas/testsuite/gas/aarch64/build-attributes/ba-1.d
> create mode 100644 gas/testsuite/gas/aarch64/build-attributes/ba-1.s
> create mode 100644 gas/testsuite/gas/aarch64/build-attributes/ba-failures-1.d
> create mode 100644 gas/testsuite/gas/aarch64/build-attributes/ba-failures-1.s
> create mode 100644 gas/testsuite/gas/aarch64/build-attributes/ba-interleaved-subsections.d
> create mode 100644 gas/testsuite/gas/aarch64/build-attributes/ba-interleaved-subsections.s
> create mode 100644 gas/testsuite/gas/aarch64/build-attributes/ba-subsection-parsing.d
> create mode 100644 gas/testsuite/gas/aarch64/build-attributes/ba-subsection-parsing.s
> create mode 100644 gas/testsuite/gas/gnu-attributes/gnu-attributes.exp
> create mode 100644 gas/testsuite/gas/gnu-attributes/oa-gnu-attribute-directive.d
> create mode 100644 gas/testsuite/gas/gnu-attributes/oa-gnu-attribute-directive.s
> create mode 100644 gas/testsuite/gas/gnu-attributes/oa-gnu-subsection-directive.d
> create mode 100644 gas/testsuite/gas/gnu-attributes/oa-gnu-subsection-directive.s
> create mode 100644 gas/testsuite/gas/gnu-attributes/oav2-failures-1.d
> create mode 100644 gas/testsuite/gas/gnu-attributes/oav2-failures-1.s
> create mode 100644 gas/testsuite/gas/gnu-attributes/oav2-interleaved-subsections.d
> create mode 100644 gas/testsuite/gas/gnu-attributes/oav2-interleaved-subsections.s
> create mode 100644 gas/testsuite/gas/gnu-attributes/oav2-subsection-parsing.d
> create mode 100644 gas/testsuite/gas/gnu-attributes/oav2-subsection-parsing.s
> create mode 100644 gas/testsuite/gas/gnu-attributes/oav2-success-1.d
> create mode 100644 gas/testsuite/gas/gnu-attributes/oav2-success-1.s
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/aarch64-build-attributes.exp
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-1-all-optional-1.s
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-1-all-optional-2.s
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-1-mismatch-subsec-props-with-all-optional-1.d
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-1-mismatch-subsec-props-with-all-optional-1.s
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-1-one-file.d
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-1-two-files-all-optional-1more-1missing.d
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-2-mix-unknown-and-known-attr-known-subsection-1.s
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-2-mix-unknown-and-known-attr-known-subsection-2.s
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-2-mix-unknown-and-known-attr-known-subsection.d
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-2-mix-unknown-and-known-subsections-1.s
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-2-mix-unknown-and-known-subsections-2.s
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-2-mix-unknown-and-known-subsections.d
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-2-required-subsec-A-1.s
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-2-required-subsec-A-2.s
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-2-required-subsec-B.s
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-2-required-subsec-nok.d
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-2-required-subsec-ok.d
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-bti-1.s
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-bti-2.s
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-bti-explicit-ok-objdump-dump.d
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-bti-explicit-ok-readelf-dump.d
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-bti-explicit-only-one-input-without-ba-or-gnu-props.d
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-bti-gnu-props-only-implicit-ok-readelf-dump.d
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-bti-implicit-nok-objdump-dump.d
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-bti-implicit-nok-readelf-dump.d
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-bti-implicit-ok-objdump-dump.d
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-bti-implicit-ok-readelf-dump.d
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-bti-via-gnu-props.s
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-bti-with-mix-gnu-props-and-bas-implicit-ok-readelf-dump.d
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-gcs-1.s
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-gcs-2.s
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-gcs-explicit-ok-readelf-dump.d
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-gcs-gnu-props-only-implicit-ok-readelf-dump.d
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-gcs-implicit-nok-readelf-dump.d
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-gcs-implicit-ok-readelf-dump.d
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-gcs-via-gnu-props.s
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-no-bti.s
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-no-gcs.s
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-pac-1.s
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-pac-2.s
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-pac-ba-with-pac-plt-objdump-dump.d
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-pac-ba-with-pac-plt-readelf-dump.d
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-pac-ba-without-pac-plt-objdump-dump.d
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-pac-ba-without-pac-plt-readelf-dump.d
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-pac-plt-but-no-pac-ba-objdump-dump.d
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-pac-plt-but-no-pac-ba-readelf-dump.d
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-pac-via-gnu-props.s
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-required-subsection-1.s
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-required-subsection-2.s
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-required-subsection-3.s
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-required-subsection-4.s
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-required-subsection-mismatch-1.s
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-required-subsection-mismatch-2.s
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-required-subsection-nok-1.d
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-required-subsection-nok-2.d
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-required-subsection-ok-1.d
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-required-subsection-ok-2.d
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-unknown-tag.d
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-unknown-tag.s
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/ba-aarch64-1-void.s
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/bti-plt.ld
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/gnu-note-properties-maskable-merged.inc
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/gnu-note-properties-maskable-split.inc
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/gnu-note-properties-selectable-merged.inc
> create mode 100644 ld/testsuite/ld-aarch64/build-attributes/gnu-note-properties-selectable-split.inc
> create mode 100644 ld/testsuite/ld-attributes/ld-attributes.exp
> create mode 100644 ld/testsuite/ld-attributes/oav2-1-all-optional-1.s
> create mode 100644 ld/testsuite/ld-attributes/oav2-1-all-optional-2.s
> create mode 100644 ld/testsuite/ld-attributes/oav2-1-mismatch-subsec-props-with-all-optional-1.d
> create mode 100644 ld/testsuite/ld-attributes/oav2-1-mismatch-subsec-props-with-all-optional-1.s
> create mode 100644 ld/testsuite/ld-attributes/oav2-1-one-file.d
> create mode 100644 ld/testsuite/ld-attributes/oav2-1-two-files-all-optional-1more-1missing.d
> create mode 100644 ld/testsuite/ld-attributes/oav2-2-mix-unknown-and-known-attr-known-subsection-1.s
> create mode 100644 ld/testsuite/ld-attributes/oav2-2-mix-unknown-and-known-attr-known-subsection-2.s
> create mode 100644 ld/testsuite/ld-attributes/oav2-2-mix-unknown-and-known-attr-known-subsection.d
> create mode 100644 ld/testsuite/ld-attributes/oav2-2-mix-unknown-and-known-subsections-1.s
> create mode 100644 ld/testsuite/ld-attributes/oav2-2-mix-unknown-and-known-subsections-2.s
> create mode 100644 ld/testsuite/ld-attributes/oav2-2-mix-unknown-and-known-subsections.d
> create mode 100644 ld/testsuite/ld-attributes/oav2-2-required-subsec-A-1.s
> create mode 100644 ld/testsuite/ld-attributes/oav2-2-required-subsec-A-2.s
> create mode 100644 ld/testsuite/ld-attributes/oav2-2-required-subsec-B.s
> create mode 100644 ld/testsuite/ld-attributes/oav2-2-required-subsec-nok.d
> create mode 100644 ld/testsuite/ld-attributes/oav2-2-required-subsec-ok.d
>
Hi Jan,
Have you had any chance to have a look at this last revision ?
Regards,
Matthieu
More information about the Binutils
mailing list