[PATCH v2 00/28] AArch64 AEABI build attributes (a.k.a. object attributes v2)

Matthieu Longo matthieu.longo@arm.com
Fri May 2 10:32:32 GMT 2025


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 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 section was not updated. The content will be updated later.

This series consists of 28 patches, structured in 5 blocks as follows:
1. Patches 1 to 8 are clean-ups, bug fixes, and minor refactorings of the object attributes parsing code.
2. Patch 9 introduces a "generic" doubly linked list implementation in libiberty, used in the following patches to manage subsections and their attributes. On the recommandation of Jan Beulich, I am going to send this patch to GCC mailing list but will keep it here for completeness of the code until this patch is merged (hopefully).
3. Patches 10-15 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 16-18 implement deserialization, copy support for objcopy, and add tests for copying.
5. Patch 19 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 20 adds the corresponding generic tests.
6. Patch 21 implements the support for AArch64 AEABI build attributes and BTI, PAC and GCS tagging similar to what currently exists with the GNU properties. Patch 22 adds the corresponding AArch64-specific tests.
7. Patch 23 to 28 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 23 to 28, the tests are only run for AArch64 for now even if they use the aliases for OAv2. The reason for this is that gas does not have a way to know what version of the attributes is expected inside a file. 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 ?

## Testing

Regression testing on aarch64-unknown-linux-gnu and arm-unknown-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/)

Matthieu Longo (23):
  Remove annoying space from gas/config/obj-elf.c
  Remove annoying spaces from bfd/elfxx-aarch64.c
  Remove annoying spaces from objcopy.exp
  bfd/elf-attrs.c: use ASCII character '(0x27) for single quote
  readelf: last tag as empty string triggers corrupt string data incorrectly
  bfd: rename parsing methods of object attribute v1 API
  gas: move code for object attribute parsing into obj-attr.c
  gas/write.c: add missing flag SEC_HAS_CONTENT on object attributes section
  libiberty: add common methods for type-sensitive doubly linked lists
  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: parse gnu_attribute and gnu_subsection in BAv2 context
  gnu directives: readelf detects "gnu" as public subsection
  gnu directives: gas tests: add generic tests for gnu attributes v2
  gnu directives: bfd: detect "gnu" namespace as a public subsection
  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                               | 2275 ++++++++++++++++-
 bfd/elf-attrs.h                               |  252 ++
 bfd/elf-bfd.h                                 |   99 +-
 bfd/elf.c                                     |   15 +-
 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                           |  122 +-
 bfd/elfnn-riscv.c                             |    2 +-
 bfd/elfxx-aarch64.c                           |  415 ++-
 bfd/elfxx-aarch64.h                           |   42 +
 bfd/elfxx-target.h                            |   48 +-
 bfd/po/SRC-POTFILES.in                        |    1 +
 binutils/readelf.c                            |  322 ++-
 .../binutils-all/aarch64/build-attributes.d   |   52 +
 .../binutils-all/aarch64/build-attributes.s   |   31 +
 binutils/testsuite/binutils-all/objcopy.exp   |    9 +-
 .../testsuite/binutils-all/object-attr-v2.d   |   53 +
 .../testsuite/binutils-all/object-attr-v2.s   |   31 +
 gas/Makefile.am                               |    2 +
 gas/Makefile.in                               |   13 +-
 gas/config/obj-elf.c                          |  207 +-
 gas/config/obj-elf.h                          |    5 +-
 gas/config/tc-aarch64.c                       |   18 +-
 gas/config/tc-arc.c                           |    2 +-
 gas/config/tc-arm.c                           |    4 +-
 gas/config/tc-m68k.c                          |    2 +-
 gas/config/tc-mips.c                          |    2 +-
 gas/config/tc-ppc.c                           |    2 +-
 gas/config/tc-riscv.c                         |    2 +-
 gas/config/tc-tic6x.c                         |    2 +-
 gas/obj-attr.c                                |  986 +++++++
 gas/obj-attr.h                                |   38 +
 gas/output-file.c                             |    2 +
 gas/po/POTFILES.in                            |    2 +
 .../aarch64-build-attributes.exp              |   23 +
 .../gas/aarch64/build-attributes/ba-1.d       |   52 +
 .../gas/aarch64/build-attributes/ba-1.s       |   31 +
 .../aarch64/build-attributes/ba-failures-1.d  |   29 +
 .../aarch64/build-attributes/ba-failures-1.s  |   55 +
 .../ba-interleaved-subsections.d              |   35 +
 .../ba-interleaved-subsections.s              |   32 +
 .../build-attributes/ba-subsection-parsing.d  |   75 +
 .../build-attributes/ba-subsection-parsing.s  |   21 +
 gas/testsuite/gas/all/gnu-attributes/ba-1.d   |   52 +
 gas/testsuite/gas/all/gnu-attributes/ba-1.s   |   31 +
 .../gas/all/gnu-attributes/ba-failures-1.d    |   29 +
 .../gas/all/gnu-attributes/ba-failures-1.s    |   55 +
 .../ba-interleaved-subsections.d              |   35 +
 .../ba-interleaved-subsections.s              |   32 +
 .../gnu-attributes/ba-subsection-parsing.d    |   75 +
 .../gnu-attributes/ba-subsection-parsing.s    |   21 +
 .../gas/all/gnu-attributes/gnu-attributes.exp |   24 +
 gas/testsuite/gas/arm/attr-syntax.d           |    6 +-
 gas/write.c                                   |    4 +-
 include/doubly-linked-list.h                  |  355 +++
 include/elf/aarch64.h                         |   13 +
 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    |   14 +
 .../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-attributes/ba-1-all-optional-1.s       |   15 +
 .../ld-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 +
 ld/testsuite/ld-attributes/ba-1-one-file.d    |   42 +
 ...-1-two-files-all-optional-1more-1missing.d |   53 +
 ...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  |   26 +
 .../ld-attributes/ba-2-required-subsec-A-1.s  |    3 +
 .../ld-attributes/ba-2-required-subsec-A-2.s  |    3 +
 .../ld-attributes/ba-2-required-subsec-B.s    |    3 +
 .../ld-attributes/ba-2-required-subsec-nok.d  |    7 +
 .../ld-attributes/ba-2-required-subsec-ok.d   |   16 +
 ld/testsuite/ld-attributes/ld-attributes.exp  |   42 +
 libiberty/Makefile.in                         |    1 +
 libiberty/testsuite/Makefile.in               |   12 +-
 libiberty/testsuite/test-doubly-linked-list.c |  250 ++
 150 files changed, 7680 insertions(+), 366 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/obj-attr.c
 create mode 100644 gas/obj-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/all/gnu-attributes/ba-1.d
 create mode 100644 gas/testsuite/gas/all/gnu-attributes/ba-1.s
 create mode 100644 gas/testsuite/gas/all/gnu-attributes/ba-failures-1.d
 create mode 100644 gas/testsuite/gas/all/gnu-attributes/ba-failures-1.s
 create mode 100644 gas/testsuite/gas/all/gnu-attributes/ba-interleaved-subsections.d
 create mode 100644 gas/testsuite/gas/all/gnu-attributes/ba-interleaved-subsections.s
 create mode 100644 gas/testsuite/gas/all/gnu-attributes/ba-subsection-parsing.d
 create mode 100644 gas/testsuite/gas/all/gnu-attributes/ba-subsection-parsing.s
 create mode 100644 gas/testsuite/gas/all/gnu-attributes/gnu-attributes.exp
 create mode 100644 include/doubly-linked-list.h
 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/ba-1-all-optional-1.s
 create mode 100644 ld/testsuite/ld-attributes/ba-1-all-optional-2.s
 create mode 100644 ld/testsuite/ld-attributes/ba-1-mismatch-subsec-props-with-all-optional-1.d
 create mode 100644 ld/testsuite/ld-attributes/ba-1-mismatch-subsec-props-with-all-optional-1.s
 create mode 100644 ld/testsuite/ld-attributes/ba-1-one-file.d
 create mode 100644 ld/testsuite/ld-attributes/ba-1-two-files-all-optional-1more-1missing.d
 create mode 100644 ld/testsuite/ld-attributes/ba-2-mix-unknown-and-known-attr-known-subsection-1.s
 create mode 100644 ld/testsuite/ld-attributes/ba-2-mix-unknown-and-known-attr-known-subsection-2.s
 create mode 100644 ld/testsuite/ld-attributes/ba-2-mix-unknown-and-known-attr-known-subsection.d
 create mode 100644 ld/testsuite/ld-attributes/ba-2-mix-unknown-and-known-subsections-1.s
 create mode 100644 ld/testsuite/ld-attributes/ba-2-mix-unknown-and-known-subsections-2.s
 create mode 100644 ld/testsuite/ld-attributes/ba-2-mix-unknown-and-known-subsections.d
 create mode 100644 ld/testsuite/ld-attributes/ba-2-required-subsec-A-1.s
 create mode 100644 ld/testsuite/ld-attributes/ba-2-required-subsec-A-2.s
 create mode 100644 ld/testsuite/ld-attributes/ba-2-required-subsec-B.s
 create mode 100644 ld/testsuite/ld-attributes/ba-2-required-subsec-nok.d
 create mode 100644 ld/testsuite/ld-attributes/ba-2-required-subsec-ok.d
 create mode 100644 ld/testsuite/ld-attributes/ld-attributes.exp
 create mode 100644 libiberty/testsuite/test-doubly-linked-list.c

-- 
2.49.0



More information about the Binutils mailing list