[llvm] [AArch64][Build Attributes] Improve Parsing and Formatting (PR #126530)
via llvm-commits
llvm-commits at lists.llvm.org
Thu Feb 20 02:39:42 PST 2025
https://github.com/sivan-shani updated https://github.com/llvm/llvm-project/pull/126530
>From 512784fb28c46c818e8714759d4b1e597d58320b Mon Sep 17 00:00:00 2001
From: Sivan Shani <sivan.shani at arm.com>
Date: Mon, 17 Feb 2025 10:58:15 +0000
Subject: [PATCH 01/11] [AArch64][Build Attributes] Improve testing (delete
previous tests files)
This commit deletes previous tests files, following commits adding new test files.
---
.../aarch64-build-attributes-asm-all.s | 25 -------
.../aarch64-build-attributes-asm-bti.s | 18 -----
.../aarch64-build-attributes-asm-err-attrs.s | 70 -------------------
...aarch64-build-attributes-asm-err-headers.s | 61 ----------------
.../aarch64-build-attributes-asm-gcs.s | 18 -----
.../aarch64-build-attributes-asm-none.s | 25 -------
...ch64-build-attributes-asm-numerical-tags.s | 39 -----------
...arch64-build-attributes-asm-out-of-order.s | 48 -------------
.../aarch64-build-attributes-asm-pac.s | 18 -----
...d-attributes-asm-private-subsections-err.s | 28 --------
...build-attributes-asm-private-subsections.s | 51 --------------
11 files changed, 401 deletions(-)
delete mode 100644 llvm/test/MC/AArch64/aarch64-build-attributes-asm-all.s
delete mode 100644 llvm/test/MC/AArch64/aarch64-build-attributes-asm-bti.s
delete mode 100644 llvm/test/MC/AArch64/aarch64-build-attributes-asm-err-attrs.s
delete mode 100644 llvm/test/MC/AArch64/aarch64-build-attributes-asm-err-headers.s
delete mode 100644 llvm/test/MC/AArch64/aarch64-build-attributes-asm-gcs.s
delete mode 100644 llvm/test/MC/AArch64/aarch64-build-attributes-asm-none.s
delete mode 100644 llvm/test/MC/AArch64/aarch64-build-attributes-asm-numerical-tags.s
delete mode 100644 llvm/test/MC/AArch64/aarch64-build-attributes-asm-out-of-order.s
delete mode 100644 llvm/test/MC/AArch64/aarch64-build-attributes-asm-pac.s
delete mode 100644 llvm/test/MC/AArch64/aarch64-build-attributes-asm-private-subsections-err.s
delete mode 100644 llvm/test/MC/AArch64/aarch64-build-attributes-asm-private-subsections.s
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-all.s b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-all.s
deleted file mode 100644
index acbd0101e13fa..0000000000000
--- a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-all.s
+++ /dev/null
@@ -1,25 +0,0 @@
-// RUN: llvm-mc -triple=aarch64 %s -o - | FileCheck %s --check-prefix=ASM
-// RUN: llvm-mc -triple=aarch64 -filetype=obj %s -o - | llvm-readelf --hex-dump=.ARM.attributes - | FileCheck %s --check-prefix=ELF
-
-// ASM: .aeabi_subsection aeabi_pauthabi, required, uleb128
-// ASM: .aeabi_attribute Tag_PAuth_Platform, 1
-// ASM: .aeabi_attribute Tag_PAuth_Schema, 1
-// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-// ASM: .aeabi_attribute Tag_Feature_BTI, 1
-// ASM: .aeabi_attribute Tag_Feature_PAC, 1
-// ASM: .aeabi_attribute Tag_Feature_GCS, 1
-
-// ELF: Hex dump of section '.ARM.attributes':
-// ELF-NEXT: 0x00000000 41190000 00616561 62695f70 61757468 A....aeabi_pauth
-// ELF-NEXT: 0x00000010 61626900 00000101 02012300 00006165 abi.......#...ae
-// ELF-NEXT: 0x00000020 6162695f 66656174 7572655f 616e645f abi_feature_and_
-// ELF-NEXT: 0x00000030 62697473 00010000 01010102 01
-
-
-.aeabi_subsection aeabi_pauthabi, required, uleb128
-.aeabi_attribute Tag_PAuth_Platform, 1
-.aeabi_attribute Tag_PAuth_Schema, 1
-.aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-.aeabi_attribute Tag_Feature_BTI, 1
-.aeabi_attribute Tag_Feature_PAC, 1
-.aeabi_attribute Tag_Feature_GCS, 1
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-bti.s b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-bti.s
deleted file mode 100644
index 3897fee99c3ee..0000000000000
--- a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-bti.s
+++ /dev/null
@@ -1,18 +0,0 @@
-// RUN: llvm-mc -triple=aarch64 %s -o - | FileCheck %s --check-prefix=ASM
-// RUN: llvm-mc -triple=aarch64 -filetype=obj %s -o - | llvm-readelf --hex-dump=.ARM.attributes - | FileCheck %s --check-prefix=ELF
-
-// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-// ASM: .aeabi_attribute Tag_Feature_BTI, 1
-// ASM: .aeabi_attribute Tag_Feature_PAC, 0
-// ASM: .aeabi_attribute Tag_Feature_GCS, 0
-
-// ELF: Hex dump of section '.ARM.attributes':
-// ELF-NEXT: 0x00000000 41230000 00616561 62695f66 65617475 A#...aeabi_featu
-// ELF-NEXT: 0x00000010 72655f61 6e645f62 69747300 01000001 re_and_bits.....
-// ELF-NEXT: 0x00000020 01000200
-
-
-.aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-.aeabi_attribute Tag_Feature_BTI, 1
-.aeabi_attribute Tag_Feature_PAC, 0
-.aeabi_attribute Tag_Feature_GCS, 0
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-err-attrs.s b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-err-attrs.s
deleted file mode 100644
index ddf8feb9428d2..0000000000000
--- a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-err-attrs.s
+++ /dev/null
@@ -1,70 +0,0 @@
-// RUN: not llvm-mc -triple=aarch64 %s 2>&1 | FileCheck --check-prefix=ERR %s
-
-.aeabi_attribute Tag_Feature_BTI, 1
-// ERR: error: no active subsection, build attribute can not be added
-// ERR-NEXT: .aeabi_attribute Tag_Feature_BTI, 1
-
-.aeabi_subsection aeabi_pauthabi, required, uleb128
-.aeabi_attribute Tag_Feature_BTI, 1
-// ERR: error: unknown AArch64 build attribute 'Tag_Feature_BTI' for subsection 'aeabi_pauthabi'
-// ERR-NEXT: .aeabi_attribute Tag_Feature_BTI, 1
-
-.aeabi_attribute Tag_PAuth_Platform, 4
-// ERR: error: unknown AArch64 build attributes Value for Tag 'Tag_PAuth_Platform' options are 0|1
-// ERR-NEXT: .aeabi_attribute Tag_PAuth_Platform, 4
-
-.aeabi_attribute a, 1
-// ERR: error: unknown AArch64 build attribute 'a' for subsection 'aeabi_pauthabi'
-// ERR-NEXT: .aeabi_attribute a, 1
-
-.aeabi_attribute Tag_PAuth_Platform, Tag_PAuth_Platform
-// ERR: error: active subsection type is ULEB128 (unsigned), found NTBS (string)
-// ERR-NEXT: .aeabi_attribute Tag_PAuth_Platform, Tag_PAuth_Platform
-
-.aeabi_attribute Tag_PAuth_Platform, a
-// ERR: error: active subsection type is ULEB128 (unsigned), found NTBS (string)
-// ERR-NEXT: .aeabi_attribute Tag_PAuth_Platform, a
-
-.aeabi_attribute Tag_PAuth_Platform,
-// ERR: error: AArch64 build attributes value not found
-// ERR-NEXT: .aeabi_attribute Tag_PAuth_Platform,
-
-.aeabi_attribute Tag_PAuth_Platform
-// ERR: error: expected comma
-// ERR-NEXT: .aeabi_attribute Tag_PAuth_Platform
-
-.aeabi_attribute
-// ERR: error: AArch64 build attributes tag not found
-// ERR-NEXT: .aeabi_attribute
-
-.aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-.aeabi_attribute Tag_PAuth_Platform, 1
-// ERR: unknown AArch64 build attribute 'Tag_PAuth_Platform' for subsection 'aeabi_feature_and_bits'
-
-.aeabi_attribute a, 1
-// ERR: error: unknown AArch64 build attribute 'a' for subsection 'aeabi_feature_and_bits'
-
-.aeabi_attribute Tag_Feature_BTI, Tag_Feature_BTI
-// ERR: error: active subsection type is ULEB128 (unsigned), found NTBS (string)
-// ERR-NEXT: .aeabi_attribute Tag_Feature_BTI, Tag_Feature_BTI
-
-.aeabi_attribute Tag_Feature_BTI, a
-// ERR: error: active subsection type is ULEB128 (unsigned), found NTBS (string)
-// ERR-NEXT: .aeabi_attribute Tag_Feature_BTI, a
-
-.aeabi_attribute Tag_Feature_BTI,
-// ERR: error: AArch64 build attributes value not found
-// ERR-NEXT: .aeabi_attribute Tag_Feature_BTI,
-
-.aeabi_attribute Tag_Feature_BTI
-// ERR: error: expected comma
-// ERR-NEXT: .aeabi_attribute Tag_Feature_BTI
-
-.aeabi_attribute
-// ERR: error: AArch64 build attributes tag not found
-// ERR-NEXT: .aeabi_attribute
-
-.aeabi_subsection aeabi_pauthabi, required, uleb128
-.aeabi_attribute Tag_PAuth_Platform, 1 some_text
-// ERR: error: unexpected token for AArch64 build attributes tag and value attribute directive
-// ERR-NEXT: .aeabi_attribute Tag_PAuth_Platform, 1 some_text
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-err-headers.s b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-err-headers.s
deleted file mode 100644
index 9e6dca341e9f8..0000000000000
--- a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-err-headers.s
+++ /dev/null
@@ -1,61 +0,0 @@
-// RUN: not llvm-mc -triple=aarch64 %s 2>&1 | FileCheck --check-prefix=ERR %s
-
-.aeabi_subsection aeabi_pauthabi, optional, uleb128
-// ERR: error: aeabi_pauthabi must be marked as required
-// ERR-NEXT: .aeabi_subsection aeabi_pauthabi, optional, uleb128
-
-.aeabi_subsection aeabi_pauthabi, required, ntbs
-// ERR: error: aeabi_pauthabi must be marked as ULEB128
-// ERR-NEXT: .aeabi_subsection aeabi_pauthabi, required, ntbs
-
-.aeabi_subsection aeabi_feature_and_bits, required, uleb128
-// ERR: error: aeabi_feature_and_bits must be marked as optional
-// ERR-NEXT: .aeabi_subsection aeabi_feature_and_bits, required, uleb128
-
-.aeabi_subsection aeabi_feature_and_bits, optional, ntbs
-// ERR: error: aeabi_feature_and_bits must be marked as ULEB128
-// ERR-NEXT: .aeabi_subsection aeabi_feature_and_bits, optional, ntbs
-
-.aeabi_subsection 1, required, uleb128
-// ERR: error: subsection name not found
-// ERR-NEXT: .aeabi_subsection 1, required, uleb128
-
-.aeabi_subsection , required, uleb128
-// ERR: error: subsection name not found
-// ERR-NEXT: .aeabi_subsection , required, uleb128
-
-.aeabi_subsection aeabi_pauthabi, a, uleb128
-// ERR: error: unknown AArch64 build attributes optionality, expected required|optional: a
-// ERR-NEXT: .aeabi_subsection aeabi_pauthabi, a, uleb128
-
-.aeabi_subsection aeabi_pauthabi, a, uleb128
-// ERR: error: unknown AArch64 build attributes optionality, expected required|optional: a
-// ERR-NEXT: .aeabi_subsection aeabi_pauthabi, a, uleb128
-
-.aeabi_subsection aeabi_pauthabi, 1, uleb128
-// ERR: error: optionality parameter not found, expected required|optional
-// ERR-NEXT: .aeabi_subsection aeabi_pauthabi, 1, uleb128
-
-.aeabi_subsection aeabi_pauthabi, ,uleb128
-// ERR: error: optionality parameter not found, expected required|optional
-// ERR-NEXT: .aeabi_subsection aeabi_pauthabi, ,uleb128
-
-.aeabi_subsection aeabi_pauthabi,uleb128
-// ERR: error: unknown AArch64 build attributes optionality, expected required|optional: uleb128
-// ERR-NEXT: .aeabi_subsection aeabi_pauthabi,uleb128
-
-.aeabi_subsection aeabi_pauthabi uleb128
-// ERR: expected comma
-// ERR-NEXT: .aeabi_subsection aeabi_pauthabi uleb128
-
-.aeabi_subsection aeabi_pauthabi, required
-// ERR: error: expected comma
-// ERR-NEXT: .aeabi_subsection aeabi_pauthabi, required
-
-.aeabi_subsection aeabi_pauthabi, required,
-// ERR: error: type parameter not found, expected uleb128|ntbs
-// ERR-NEXT: .aeabi_subsection aeabi_pauthabi, required,
-
-.aeabi_subsection aeabi_pauthabi, required, a
-// ERR: error: unknown AArch64 build attributes type, expected uleb128|ntbs: a
-// ERR-NEXT: .aeabi_subsection aeabi_pauthabi, required, a
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-gcs.s b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-gcs.s
deleted file mode 100644
index 5cb7e6835e5c1..0000000000000
--- a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-gcs.s
+++ /dev/null
@@ -1,18 +0,0 @@
-// RUN: llvm-mc -triple=aarch64 %s -o - | FileCheck %s --check-prefix=ASM
-// RUN: llvm-mc -triple=aarch64 -filetype=obj %s -o - | llvm-readelf --hex-dump=.ARM.attributes - | FileCheck %s --check-prefix=ELF
-
-// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-// ASM: .aeabi_attribute Tag_Feature_BTI, 0
-// ASM: .aeabi_attribute Tag_Feature_PAC, 0
-// ASM: .aeabi_attribute Tag_Feature_GCS, 1
-
-// ELF: Hex dump of section '.ARM.attributes':
-// ELF-NEXT: 0x00000000 41230000 00616561 62695f66 65617475 A#...aeabi_featu
-// ELF-NEXT: 0x00000010 72655f61 6e645f62 69747300 01000000 re_and_bits.....
-// ELF-NEXT: 0x00000020 01000201
-
-
-.aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-.aeabi_attribute Tag_Feature_BTI, 0
-.aeabi_attribute Tag_Feature_PAC, 0
-.aeabi_attribute Tag_Feature_GCS, 1
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-none.s b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-none.s
deleted file mode 100644
index a3cbbe270dffe..0000000000000
--- a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-none.s
+++ /dev/null
@@ -1,25 +0,0 @@
-// RUN: llvm-mc -triple=aarch64 %s -o - | FileCheck %s --check-prefix=ASM
-// RUN: llvm-mc -triple=aarch64 -filetype=obj %s -o - | llvm-readelf --hex-dump=.ARM.attributes - | FileCheck %s --check-prefix=ELF
-
-// ASM: .aeabi_subsection aeabi_pauthabi, required, uleb128
-// ASM: .aeabi_attribute Tag_PAuth_Platform, 0
-// ASM: .aeabi_attribute Tag_PAuth_Schema, 0
-// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-// ASM: .aeabi_attribute Tag_Feature_BTI, 0
-// ASM: .aeabi_attribute Tag_Feature_PAC, 0
-// ASM: .aeabi_attribute Tag_Feature_GCS, 0
-
-// ELF: Hex dump of section '.ARM.attributes':
-// ELF-NEXT: 0x00000000 41190000 00616561 62695f70 61757468 A....aeabi_pauth
-// ELF-NEXT: 0x00000010 61626900 00000100 02002300 00006165 abi.......#...ae
-// ELF-NEXT: 0x00000020 6162695f 66656174 7572655f 616e645f abi_feature_and_
-// ELF-NEXT: 0x00000030 62697473 00010000 00010002 00
-
-
-.aeabi_subsection aeabi_pauthabi, required, uleb128
-.aeabi_attribute Tag_PAuth_Platform, 0
-.aeabi_attribute Tag_PAuth_Schema, 0
-.aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-.aeabi_attribute Tag_Feature_BTI, 0
-.aeabi_attribute Tag_Feature_PAC, 0
-.aeabi_attribute Tag_Feature_GCS, 0
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-numerical-tags.s b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-numerical-tags.s
deleted file mode 100644
index 047939d2efd6c..0000000000000
--- a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-numerical-tags.s
+++ /dev/null
@@ -1,39 +0,0 @@
-// RUN: llvm-mc -triple=aarch64 %s -o - | FileCheck %s --check-prefix=ASM
-
-// ASM: .aeabi_subsection aeabi_pauthabi, required, uleb128
-// ASM: .aeabi_attribute 0, 1
-// ASM: .aeabi_attribute Tag_PAuth_Platform, 1
-// ASM: .aeabi_attribute Tag_PAuth_Schema, 1
-// ASM: .aeabi_attribute 3, 1
-// ASM: .aeabi_attribute 4, 1
-// ASM: .aeabi_attribute 5, 1
-// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-// ASM: .aeabi_attribute Tag_Feature_BTI, 1
-// ASM: .aeabi_attribute Tag_Feature_PAC, 1
-// ASM: .aeabi_attribute Tag_Feature_GCS, 1
-// ASM: .aeabi_attribute 3, 1
-// ASM: .aeabi_attribute 4, 1
-// ASM: .aeabi_attribute 5, 1
-
-// ELF: Hex dump of section '.ARM.attributes':
-// ELF-NEXT: 0x00000000 41210000 00616561 62695f70 61757468 A!...aeabi_pauth
-// ELF-NEXT: 0x00000010 61626900 00000001 01010201 03010401 abi.............
-// ELF-NEXT: 0x00000020 05012900 00006165 6162695f 66656174 ..)...aeabi_feat
-// ELF-NEXT: 0x00000030 7572655f 616e645f 62697473 00010000 ure_and_bits....
-// ELF-NEXT: 0x00000040 01010102 01030104 010501
-
-
-.aeabi_subsection aeabi_pauthabi, required, uleb128
-.aeabi_attribute 0, 1
-.aeabi_attribute 1, 1
-.aeabi_attribute 2, 1
-.aeabi_attribute 3, 1
-.aeabi_attribute 4, 1
-.aeabi_attribute 5, 1
-.aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-.aeabi_attribute 0, 1
-.aeabi_attribute 1, 1
-.aeabi_attribute 2, 1
-.aeabi_attribute 3, 1
-.aeabi_attribute 4, 1
-.aeabi_attribute 5, 1
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-out-of-order.s b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-out-of-order.s
deleted file mode 100644
index 2d5d42561aa6f..0000000000000
--- a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-out-of-order.s
+++ /dev/null
@@ -1,48 +0,0 @@
-// RUN: llvm-mc -triple=aarch64 %s -o - | FileCheck %s --check-prefix=ASM
-// RUN: llvm-mc -triple=aarch64 -filetype=obj %s -o - | llvm-readelf --hex-dump=.ARM.attributes - | FileCheck %s --check-prefix=ELF
-
-// ASM: .aeabi_subsection aeabi_pauthabi, required, uleb128
-// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-// ASM: .aeabi_attribute Tag_Feature_BTI, 1
-// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-// ASM: .aeabi_subsection aeabi_pauthabi, required, uleb128
-// ASM: .aeabi_attribute Tag_PAuth_Schema, 1
-// ASM: .aeabi_subsection aeabi_pauthabi, required, uleb128
-// ASM: .aeabi_attribute Tag_PAuth_Platform, 1
-// ASM: .aeabi_subsection aeabi_pauthabi, required, uleb128
-// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-// ASM: .aeabi_attribute Tag_Feature_GCS, 1
-// ASM: .aeabi_subsection aeabi_pauthabi, required, uleb128
-// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-// ASM: .aeabi_attribute Tag_Feature_PAC, 0
-// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-// ASM: .aeabi_attribute 7, 1
-// ASM: .aeabi_subsection aeabi_pauthabi, required, uleb128
-// ASM: .aeabi_attribute 7, 0
-
-// ELF: Hex dump of section '.ARM.attributes':
-// ELF-NEXT: 0x00000000 411b0000 00616561 62695f70 61757468 A....aeabi_pauth
-// ELF-NEXT: 0x00000010 61626900 00000201 01010700 25000000 abi.........%...
-// ELF-NEXT: 0x00000020 61656162 695f6665 61747572 655f616e aeabi_feature_an
-// ELF-NEXT: 0x00000030 645f6269 74730001 00000102 01010007 d_bits..........
-// ELF-NEXT: 0x00000040 01
-
-
-.aeabi_subsection aeabi_pauthabi, required, uleb128
-.aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-.aeabi_attribute Tag_Feature_BTI, 1
-.aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-.aeabi_subsection aeabi_pauthabi, required, uleb128
-.aeabi_attribute Tag_PAuth_Schema, 1
-.aeabi_subsection aeabi_pauthabi, required, uleb128
-.aeabi_attribute Tag_PAuth_Platform, 1
-.aeabi_subsection aeabi_pauthabi, required, uleb128
-.aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-.aeabi_attribute Tag_Feature_GCS, 1
-.aeabi_subsection aeabi_pauthabi, required, uleb128
-.aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-.aeabi_attribute Tag_Feature_PAC, 0
-.aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-.aeabi_attribute 7, 1
-.aeabi_subsection aeabi_pauthabi, required, uleb128
-.aeabi_attribute 7, 0
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-pac.s b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-pac.s
deleted file mode 100644
index e3191acf31141..0000000000000
--- a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-pac.s
+++ /dev/null
@@ -1,18 +0,0 @@
-// RUN: llvm-mc -triple=aarch64 %s -o - | FileCheck %s --check-prefix=ASM
-// RUN: llvm-mc -triple=aarch64 -filetype=obj %s -o - | llvm-readelf --hex-dump=.ARM.attributes - | FileCheck %s --check-prefix=ELF
-
-// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-// ASM: .aeabi_attribute Tag_Feature_BTI, 0
-// ASM: .aeabi_attribute Tag_Feature_PAC, 1
-// ASM: .aeabi_attribute Tag_Feature_GCS, 0
-
-// ELF: Hex dump of section '.ARM.attributes':
-// ELF-NEXT: 0x00000000 41230000 00616561 62695f66 65617475 A#...aeabi_featu
-// ELF-NEXT: 0x00000010 72655f61 6e645f62 69747300 01000000 re_and_bits.....
-// ELF-NEXT: 0x00000020 01010200
-
-
-.aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-.aeabi_attribute Tag_Feature_BTI, 0
-.aeabi_attribute Tag_Feature_PAC, 1
-.aeabi_attribute Tag_Feature_GCS, 0
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-private-subsections-err.s b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-private-subsections-err.s
deleted file mode 100644
index 5884a74f989cc..0000000000000
--- a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-private-subsections-err.s
+++ /dev/null
@@ -1,28 +0,0 @@
-// RUN: not llvm-mc -triple=aarch64 %s 2>&1 | FileCheck --check-prefix=ERR %s
-
-.aeabi_subsection private_subsection, optional, uleb128
-
-.aeabi_subsection private_subsection, required, uleb128
-// ERR: error: optionality mismatch! subsection 'private_subsection' already exists with optionality defined as 'optional' and not 'required'
-// ERR-NEXT: .aeabi_subsection private_subsection, required, uleb128
-
-.aeabi_subsection private_subsection, optional, ntbs
-// ERR: error: type mismatch! subsection 'private_subsection' already exists with type defined as 'uleb128' and not 'ntbs'
-// ERR-NEXT: .aeabi_subsection private_subsection, optional, ntbs
-
-.aeabi_subsection private_subsection_1, optional, ntbs
-.aeabi_attribute 324, 1
-// ERR: error: active subsection type is NTBS (string), found ULEB128 (unsigned)
-// ERR-NEXT: .aeabi_attribute 324, 1
-
-.aeabi_subsection foo, optional, uleb128
-.aeabi_subsection bar, optional, uleb128
-.aeabi_subsection foo, required, uleb128
-// ERR: error: optionality mismatch! subsection 'foo' already exists with optionality defined as 'optional' and not 'required'
-// ERR-NEXT: .aeabi_subsection foo, required, uleb128
-
-.aeabi_subsection goo, optional, ntbs
-.aeabi_subsection zar, optional, ntbs
-.aeabi_subsection goo, optional, uleb128
-// ERR: error: type mismatch! subsection 'goo' already exists with type defined as 'ntbs' and not 'uleb128'
-// ERR-NEXT: .aeabi_subsection goo, optional, uleb128
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-private-subsections.s b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-private-subsections.s
deleted file mode 100644
index 229033a9f6b70..0000000000000
--- a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-private-subsections.s
+++ /dev/null
@@ -1,51 +0,0 @@
-// RUN: llvm-mc -triple=aarch64 %s -o - | FileCheck %s --check-prefix=ASM
-// RUN: llvm-mc -triple=aarch64 -filetype=obj %s -o - | llvm-readelf --hex-dump=.ARM.attributes - | FileCheck %s --check-prefix=ELF
-
-// ASM: .aeabi_subsection private_subsection_1, optional, uleb128
-// ASM: .aeabi_attribute 12, 257
-// ASM: .aeabi_subsection private_subsection_2, required, uleb128
-// ASM: .aeabi_attribute 76, 257
-// ASM: .aeabi_subsection private_subsection_3, optional, ntbs
-// ASM: .aeabi_attribute 34, hello_llvm
-// ASM: .aeabi_subsection private_subsection_4, required, ntbs
-// ASM: .aeabi_attribute 777, "hello_llvm"
-// ASM: .aeabi_subsection private_subsection_1, optional, uleb128
-// ASM: .aeabi_attribute 876, 257
-// ASM: .aeabi_subsection private_subsection_2, required, uleb128
-// ASM: .aeabi_attribute 876, 257
-// ASM: .aeabi_subsection private_subsection_3, optional, ntbs
-// ASM: .aeabi_attribute 876, "hello_llvm"
-// ASM: .aeabi_subsection private_subsection_4, required, ntbs
-// ASM: .aeabi_attribute 876, hello_llvm
-
-// ELF: Hex dump of section '.ARM.attributes':
-// ELF-NEXT: 0x00000000 41220000 00707269 76617465 5f737562 A"...private_sub
-// ELF-NEXT: 0x00000010 73656374 696f6e5f 31000100 0c8102ec section_1.......
-// ELF-NEXT: 0x00000020 06810222 00000070 72697661 74655f73 ..."...private_s
-// ELF-NEXT: 0x00000030 75627365 6374696f 6e5f3200 00004c81 ubsection_2...L.
-// ELF-NEXT: 0x00000040 02ec0681 02360000 00707269 76617465 .....6...private
-// ELF-NEXT: 0x00000050 5f737562 73656374 696f6e5f 33000101 _subsection_3...
-// ELF-NEXT: 0x00000060 2268656c 6c6f5f6c 6c766d00 ec062268 "hello_llvm..."h
-// ELF-NEXT: 0x00000070 656c6c6f 5f6c6c76 6d220037 00000070 ello_llvm".7...p
-// ELF-NEXT: 0x00000080 72697661 74655f73 75627365 6374696f rivate_subsectio
-// ELF-NEXT: 0x00000090 6e5f3400 00018906 2268656c 6c6f5f6c n_4....."hello_l
-// ELF-NEXT: 0x000000a0 6c766d22 00ec0668 656c6c6f 5f6c6c76 lvm"...hello_llv
-// ELF-NEXT: 0x000000b0 6d00 m.
-
-
-.aeabi_subsection private_subsection_1, optional, uleb128
-.aeabi_attribute 12, 257
-.aeabi_subsection private_subsection_2, required, uleb128
-.aeabi_attribute 76, 257
-.aeabi_subsection private_subsection_3, optional, ntbs
-.aeabi_attribute 34, hello_llvm
-.aeabi_subsection private_subsection_4, required, ntbs
-.aeabi_attribute 777, "hello_llvm"
-.aeabi_subsection private_subsection_1, optional, uleb128
-.aeabi_attribute 876, 257
-.aeabi_subsection private_subsection_2, required, uleb128
-.aeabi_attribute 876, 257
-.aeabi_subsection private_subsection_3, optional, ntbs
-.aeabi_attribute 876, "hello_llvm"
-.aeabi_subsection private_subsection_4, required, ntbs
-.aeabi_attribute 876, hello_llvm
>From 506aad316c39dc5e196b66c4df892f084a91155c Mon Sep 17 00:00:00 2001
From: Sivan Shani <sivan.shani at arm.com>
Date: Mon, 17 Feb 2025 11:00:57 +0000
Subject: [PATCH 02/11] [AArch64][Build Attributes] Standardize parsing error
messages
Parsing error message should not print the symbol triggering error.
(Only point to it with the symbol '^')
---
llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
index 335b46b76688f..283c090ac4c1c 100644
--- a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
+++ b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
@@ -7870,8 +7870,7 @@ bool AArch64AsmParser::parseDirectiveAeabiSubSectionHeader(SMLoc L) {
IsOptional = AArch64BuildAttrs::getOptionalID(Optionality);
if (AArch64BuildAttrs::OPTIONAL_NOT_FOUND == IsOptional) {
Error(Parser.getTok().getLoc(),
- AArch64BuildAttrs::getSubsectionOptionalUnknownError() + ": " +
- Optionality);
+ AArch64BuildAttrs::getSubsectionOptionalUnknownError());
return true;
}
if (SubsectionExists) {
@@ -7919,7 +7918,7 @@ bool AArch64AsmParser::parseDirectiveAeabiSubSectionHeader(SMLoc L) {
Type = AArch64BuildAttrs::getTypeID(Name);
if (AArch64BuildAttrs::TYPE_NOT_FOUND == Type) {
Error(Parser.getTok().getLoc(),
- AArch64BuildAttrs::getSubsectionTypeUnknownError() + ": " + Name);
+ AArch64BuildAttrs::getSubsectionTypeUnknownError());
return true;
}
if (SubsectionExists) {
>From 1fb501d18ce1ed4e9fa6206696ab6b8dcad9a50a Mon Sep 17 00:00:00 2001
From: Sivan Shani <sivan.shani at arm.com>
Date: Mon, 17 Feb 2025 11:09:12 +0000
Subject: [PATCH 03/11] [AArch64][Build Attributes] Print Tags as Numbers with
Comments
Print Tags as numbers followed by comments instead of using string representations.
For example:
.aeabi_attribute 0, 1 @ Tag_Feature_BTI
instead of:
.aeabi_attribute Tag_Feature_BTI, 1
This reduces dependencies between compiler and assembler versions.
---
.../Target/AArch64/AsmParser/AArch64AsmParser.cpp | 15 ++++++++++++---
.../AArch64/MCTargetDesc/AArch64ELFStreamer.cpp | 8 ++++----
.../AArch64/aarch64-build-attributes-all.ll | 6 +++---
.../AArch64/aarch64-build-attributes-bti.ll | 6 +++---
.../AArch64/aarch64-build-attributes-gcs.ll | 6 +++---
.../AArch64/aarch64-build-attributes-pac.ll | 6 +++---
.../AArch64/aarch64-build-attributes-pauthabi.ll | 4 ++--
7 files changed, 30 insertions(+), 21 deletions(-)
diff --git a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
index 283c090ac4c1c..58bebdf1f75ce 100644
--- a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
+++ b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
@@ -7947,7 +7947,12 @@ bool AArch64AsmParser::parseDirectiveAeabiSubSectionHeader(SMLoc L) {
}
}
Parser.Lex();
- // Parsing finished, check for trailing tokens.
+
+ // Parsing finished, hereafter only accept comments; otherwise no trailing
+ // tokens.
+ if (Parser.getTok().is(llvm::AsmToken::At)) {
+ Parser.parseStringToEndOfStatement();
+ }
if (Parser.getTok().isNot(llvm::AsmToken::EndOfStatement)) {
Error(Parser.getTok().getLoc(), "unexpected token for AArch64 build "
"attributes subsection header directive");
@@ -8070,7 +8075,12 @@ bool AArch64AsmParser::parseDirectiveAeabiAArch64Attr(SMLoc L) {
}
}
Parser.Lex();
- // Parsing finished, check for trailing tokens.
+
+ // Parsing finished, hereafter only accept comments; otherwise no trailing
+ // tokens.
+ if (Parser.getTok().is(llvm::AsmToken::At)) {
+ Parser.parseStringToEndOfStatement();
+ }
if (Parser.getTok().isNot(llvm::AsmToken::EndOfStatement)) {
Error(Parser.getTok().getLoc(),
"unexpected token for AArch64 build attributes tag and value "
@@ -8082,7 +8092,6 @@ bool AArch64AsmParser::parseDirectiveAeabiAArch64Attr(SMLoc L) {
getTargetStreamer().emitAttribute(ActiveSubsectionName, Tag, ValueInt, "",
false);
}
-
if ("" != ValueStr) {
getTargetStreamer().emitAttribute(ActiveSubsectionName, Tag, unsigned(-1),
ValueStr, false);
diff --git a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp
index 6b5c5f36cbd4b..2f6a5144a82b4 100644
--- a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp
+++ b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp
@@ -191,8 +191,8 @@ class AArch64TargetAsmStreamer : public AArch64TargetStreamer {
case AArch64BuildAttrs::TAG_FEATURE_BTI:
case AArch64BuildAttrs::TAG_FEATURE_GCS:
case AArch64BuildAttrs::TAG_FEATURE_PAC:
- OS << "\t.aeabi_attribute" << "\t"
- << AArch64BuildAttrs::getFeatureAndBitsTagsStr(Tag) << ", " << Value;
+ OS << "\t.aeabi_attribute" << "\t" << Tag << ", " << Value << "\t@ "
+ << AArch64BuildAttrs::getFeatureAndBitsTagsStr(Tag);
AArch64TargetStreamer::emitAttribute(VendorName, Tag, Value, "",
Override);
break;
@@ -210,8 +210,8 @@ class AArch64TargetAsmStreamer : public AArch64TargetStreamer {
break;
case AArch64BuildAttrs::TAG_PAUTH_PLATFORM:
case AArch64BuildAttrs::TAG_PAUTH_SCHEMA:
- OS << "\t.aeabi_attribute" << "\t"
- << AArch64BuildAttrs::getPauthABITagsStr(Tag) << ", " << Value;
+ OS << "\t.aeabi_attribute" << "\t" << Tag << ", " << Value << "\t@ "
+ << AArch64BuildAttrs::getPauthABITagsStr(Tag);
AArch64TargetStreamer::emitAttribute(VendorName, Tag, Value, "",
Override);
break;
diff --git a/llvm/test/CodeGen/AArch64/aarch64-build-attributes-all.ll b/llvm/test/CodeGen/AArch64/aarch64-build-attributes-all.ll
index aecc74b2ce46d..9eaed09130f15 100644
--- a/llvm/test/CodeGen/AArch64/aarch64-build-attributes-all.ll
+++ b/llvm/test/CodeGen/AArch64/aarch64-build-attributes-all.ll
@@ -2,9 +2,9 @@
; RUN: llc %s -filetype=obj -o - | llvm-readelf --hex-dump=.ARM.attributes - | FileCheck %s --check-prefix=ELF
; ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-; ASM-NEXT: .aeabi_attribute Tag_Feature_BTI, 1
-; ASM-NEXT: .aeabi_attribute Tag_Feature_PAC, 1
-; ASM-NEXT: .aeabi_attribute Tag_Feature_GCS, 1
+; ASM-NEXT: .aeabi_attribute 0, 1 @ Tag_Feature_BTI
+; ASM-NEXT: .aeabi_attribute 1, 1 @ Tag_Feature_PAC
+; ASM-NEXT: .aeabi_attribute 2, 1 @ Tag_Feature_GCS
; ELF: Hex dump of section '.ARM.attributes':
; ELF-NEXT: 0x00000000 41230000 00616561 62695f66 65617475 A#...aeabi_featu
diff --git a/llvm/test/CodeGen/AArch64/aarch64-build-attributes-bti.ll b/llvm/test/CodeGen/AArch64/aarch64-build-attributes-bti.ll
index 8ec78df13be28..cffb1fb265379 100644
--- a/llvm/test/CodeGen/AArch64/aarch64-build-attributes-bti.ll
+++ b/llvm/test/CodeGen/AArch64/aarch64-build-attributes-bti.ll
@@ -2,9 +2,9 @@
; RUN: llc %s -filetype=obj -o - | llvm-readelf --hex-dump=.ARM.attributes - | FileCheck %s --check-prefix=ELF
; ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-; ASM-NEXT: .aeabi_attribute Tag_Feature_BTI, 1
-; ASM-NEXT: .aeabi_attribute Tag_Feature_PAC, 0
-; ASM-NEXT: .aeabi_attribute Tag_Feature_GCS, 0
+; ASM-NEXT: .aeabi_attribute 0, 1 @ Tag_Feature_BTI
+; ASM-NEXT: .aeabi_attribute 1, 0 @ Tag_Feature_PAC
+; ASM-NEXT: .aeabi_attribute 2, 0 @ Tag_Feature_GCS
; ELF: Hex dump of section '.ARM.attributes':
; ELF-NEXT: 0x00000000 41230000 00616561 62695f66 65617475 A#...aeabi_featu
diff --git a/llvm/test/CodeGen/AArch64/aarch64-build-attributes-gcs.ll b/llvm/test/CodeGen/AArch64/aarch64-build-attributes-gcs.ll
index be528779e8228..3dbba6a7eeace 100644
--- a/llvm/test/CodeGen/AArch64/aarch64-build-attributes-gcs.ll
+++ b/llvm/test/CodeGen/AArch64/aarch64-build-attributes-gcs.ll
@@ -2,9 +2,9 @@
; RUN: llc %s -filetype=obj -o - | llvm-readelf --hex-dump=.ARM.attributes - | FileCheck %s --check-prefix=ELF
; ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-; ASM-NEXT: .aeabi_attribute Tag_Feature_BTI, 0
-; ASM-NEXT: .aeabi_attribute Tag_Feature_PAC, 0
-; ASM-NEXT: .aeabi_attribute Tag_Feature_GCS, 1
+; ASM-NEXT: .aeabi_attribute 0, 0 @ Tag_Feature_BTI
+; ASM-NEXT: .aeabi_attribute 1, 0 @ Tag_Feature_PAC
+; ASM-NEXT: .aeabi_attribute 2, 1 @ Tag_Feature_GCS
; ELF: Hex dump of section '.ARM.attributes':
; ELF-NEXT: 0x00000000 41230000 00616561 62695f66 65617475 A#...aeabi_featu
diff --git a/llvm/test/CodeGen/AArch64/aarch64-build-attributes-pac.ll b/llvm/test/CodeGen/AArch64/aarch64-build-attributes-pac.ll
index e3e5933105426..506a821ad9d90 100644
--- a/llvm/test/CodeGen/AArch64/aarch64-build-attributes-pac.ll
+++ b/llvm/test/CodeGen/AArch64/aarch64-build-attributes-pac.ll
@@ -2,9 +2,9 @@
; RUN: llc %s -filetype=obj -o - | llvm-readelf --hex-dump=.ARM.attributes - | FileCheck %s --check-prefix=ELF
; ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-; ASM-NEXT: .aeabi_attribute Tag_Feature_BTI, 0
-; ASM-NEXT: .aeabi_attribute Tag_Feature_PAC, 1
-; ASM-NEXT: .aeabi_attribute Tag_Feature_GCS, 0
+; ASM-NEXT: .aeabi_attribute 0, 0 @ Tag_Feature_BTI
+; ASM-NEXT: .aeabi_attribute 1, 1 @ Tag_Feature_PAC
+; ASM-NEXT: .aeabi_attribute 2, 0 @ Tag_Feature_GCS
; ELF: Hex dump of section '.ARM.attributes':
; ELF-NEXT: 0x00000000 41230000 00616561 62695f66 65617475 A#...aeabi_featu
diff --git a/llvm/test/CodeGen/AArch64/aarch64-build-attributes-pauthabi.ll b/llvm/test/CodeGen/AArch64/aarch64-build-attributes-pauthabi.ll
index 35ad514c943a5..a7d9585af4379 100644
--- a/llvm/test/CodeGen/AArch64/aarch64-build-attributes-pauthabi.ll
+++ b/llvm/test/CodeGen/AArch64/aarch64-build-attributes-pauthabi.ll
@@ -2,8 +2,8 @@
; RUN: llc %s -filetype=obj -o - | llvm-readelf --hex-dump=.ARM.attributes - | FileCheck %s --check-prefix=ELF
; ASM: .aeabi_subsection aeabi_pauthabi, required, uleb128
-; ASM-NEXT: .aeabi_attribute Tag_PAuth_Platform, 2
-; ASM-NEXT: .aeabi_attribute Tag_PAuth_Schema, 31
+; ASM-NEXT: .aeabi_attribute 1, 2 @ Tag_PAuth_Platform
+; ASM-NEXT: .aeabi_attribute 2, 31 @ Tag_PAuth_Schema
; ELF: Hex dump of section '.ARM.attributes':
; ELF-NEXT: 0x00000000 41190000 00616561 62695f70 61757468 A....aeabi_pauth
>From 083bd48981bb025cdc4afff7b2adacc2b66ca284 Mon Sep 17 00:00:00 2001
From: Sivan Shani <sivan.shani at arm.com>
Date: Mon, 17 Feb 2025 11:16:51 +0000
Subject: [PATCH 04/11] [AArch64][Build Attributes] Fix Parsing of Some Tags
and Values
- Reject strings for unknown tags.
- Allow any value for Tag_PAuth_Platform and Tag_PAuth_Schema.
---
.../AArch64/AsmParser/AArch64AsmParser.cpp | 21 +++++---
...4-build-attributes-asm-aeabi-aeabi-known.s | 43 ++++++++++++++++
...aarch64-build-attributes-asm-aeabi-mixed.s | 48 ++++++++++++++++++
.../aarch64-build-attributes-asm-non_aeabi.s | 49 +++++++++++++++++++
4 files changed, 153 insertions(+), 8 deletions(-)
create mode 100644 llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-aeabi-known.s
create mode 100644 llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-mixed.s
create mode 100644 llvm/test/MC/AArch64/aarch64-build-attributes-asm-non_aeabi.s
diff --git a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
index 58bebdf1f75ce..16e0883fe0584 100644
--- a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
+++ b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
@@ -7990,14 +7990,22 @@ bool AArch64AsmParser::parseDirectiveAeabiAArch64Attr(SMLoc L) {
StringRef TagStr = "";
unsigned Tag;
- if (Parser.getTok().is(AsmToken::Identifier)) {
+ if (Parser.getTok().is(AsmToken::Integer)) {
+ Tag = getTok().getIntVal();
+ } else if (Parser.getTok().is(AsmToken::Identifier)) {
TagStr = Parser.getTok().getIdentifier();
switch (ActiveSubsectionID) {
default:
+ // Should not happen
assert(0 && "Subsection name error");
break;
case AArch64BuildAttrs::VENDOR_UNKNOWN:
- // Private subsection, accept any tag.
+ // Tag was provided as an unrecognized string instead of an unsigned
+ // integer
+ Error(Parser.getTok().getLoc(), "unrecognized Tag: '" + TagStr +
+ "' \nExcept for public subsections, "
+ "tags have to be an unsigned int.");
+ return true;
break;
case AArch64BuildAttrs::AEABI_PAUTHABI:
Tag = AArch64BuildAttrs::getPauthABITagsID(TagStr);
@@ -8018,8 +8026,6 @@ bool AArch64AsmParser::parseDirectiveAeabiAArch64Attr(SMLoc L) {
}
break;
}
- } else if (Parser.getTok().is(AsmToken::Integer)) {
- Tag = getTok().getIntVal();
} else {
Error(Parser.getTok().getLoc(), "AArch64 build attributes tag not found");
return true;
@@ -8063,10 +8069,9 @@ bool AArch64AsmParser::parseDirectiveAeabiAArch64Attr(SMLoc L) {
Error(Parser.getTok().getLoc(), "AArch64 build attributes value not found");
return true;
}
- // Check for possible unaccepted values for known tags (AEABI_PAUTHABI,
- // AEABI_FEATURE_AND_BITS)
- if (!(ActiveSubsectionID == AArch64BuildAttrs::VENDOR_UNKNOWN) &&
- TagStr != "") { // TagStr was a recognized string
+ // Check for possible unaccepted values for known tags
+ // (AEABI_FEATURE_AND_BITS)
+ if (ActiveSubsectionID == AArch64BuildAttrs::AEABI_FEATURE_AND_BITS) {
if (0 != ValueInt && 1 != ValueInt) {
Error(Parser.getTok().getLoc(),
"unknown AArch64 build attributes Value for Tag '" + TagStr +
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-aeabi-known.s b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-aeabi-known.s
new file mode 100644
index 0000000000000..d81ab72678013
--- /dev/null
+++ b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-aeabi-known.s
@@ -0,0 +1,43 @@
+// RUN: llvm-mc -triple=aarch64 %s -o - | FileCheck %s --check-prefix=ASM
+// RUN: llvm-mc -triple=aarch64 -filetype=obj %s -o - | llvm-readelf --hex-dump=.ARM.attributes - | FileCheck %s --check-prefix=ELF
+
+// ASM: .aeabi_subsection aeabi_pauthabi, required, uleb128
+// ASM: .aeabi_attribute 1, 7 @ Tag_PAuth_Platform
+// ASM: .aeabi_attribute 2, 777 @ Tag_PAuth_Schema
+// ASM: .aeabi_attribute 2, 777 @ Tag_PAuth_Schema
+// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
+// ASM: .aeabi_attribute 0, 1 @ Tag_Feature_BTI
+// ASM: .aeabi_attribute 1, 1 @ Tag_Feature_PAC
+// ASM: .aeabi_attribute 2, 1 @ Tag_Feature_GCS
+// ASM: .aeabi_subsection aeabi_pauthabi, required, uleb128
+// ASM: .aeabi_attribute 1, 7 @ Tag_PAuth_Platform
+// ASM: .aeabi_attribute 2, 777 @ Tag_PAuth_Schema
+// ASM: .aeabi_attribute 2, 777 @ Tag_PAuth_Schema
+// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
+// ASM: .aeabi_attribute 0, 1 @ Tag_Feature_BTI
+// ASM: .aeabi_attribute 1, 1 @ Tag_Feature_PAC
+// ASM: .aeabi_attribute 2, 1 @ Tag_Feature_GCS
+
+// ELF: Hex dump of section '.ARM.attributes':
+// ELF: 0x00000000 411a0000 00616561 62695f70 61757468 A....aeabi_pauth
+// ELF: 0x00000010 61626900 00000107 02890623 00000061 abi........#...a
+// ELF: 0x00000020 65616269 5f666561 74757265 5f616e64 eabi_feature_and
+// ELF: 0x00000030 5f626974 73000100 00010101 0201 _bits.........
+
+
+.aeabi_subsection aeabi_pauthabi, required, uleb128 @ test header comment
+.aeabi_attribute Tag_PAuth_Platform, 7
+.aeabi_attribute Tag_PAuth_Schema, 777
+.aeabi_attribute Tag_PAuth_Schema, 777
+.aeabi_subsection aeabi_feature_and_bits, optional, uleb128
+.aeabi_attribute Tag_Feature_BTI, 1
+.aeabi_attribute Tag_Feature_PAC, 1
+.aeabi_attribute Tag_Feature_GCS, 1
+.aeabi_subsection aeabi_pauthabi, required, uleb128
+.aeabi_attribute 1, 7 @ Tag_PAuth_Platform
+.aeabi_attribute 2, 777 @ Tag_PAuth_Schema
+.aeabi_attribute 2, 777 @ Tag_PAuth_Schema
+.aeabi_subsection aeabi_feature_and_bits, optional, uleb128
+.aeabi_attribute 0, 1 @ Tag_Feature_BTI
+.aeabi_attribute 1, 1 @ Tag_Feature_PAC
+.aeabi_attribute 2, 1 @ Tag_Feature_GCS
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-mixed.s b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-mixed.s
new file mode 100644
index 0000000000000..0607861795791
--- /dev/null
+++ b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-mixed.s
@@ -0,0 +1,48 @@
+// RUN: llvm-mc -triple=aarch64 %s -o - | FileCheck %s --check-prefix=ASM
+// RUN: llvm-mc -triple=aarch64 -filetype=obj %s -o - | llvm-readelf --hex-dump=.ARM.attributes - | FileCheck %s --check-prefix=ELF
+
+// ASM: .aeabi_subsection subsection_a, optional, uleb128
+// ASM: .aeabi_subsection aeabi_subsection, optional, ntbs
+// ASM: .aeabi_subsection subsection_b, required, uleb128
+// ASM: .aeabi_subsection aeabi_pauthabi, required, uleb128
+// ASM: .aeabi_attribute 1, 7 @ Tag_PAuth_Platform
+// ASM: .aeabi_attribute 2, 777 @ Tag_PAuth_Schema
+// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
+// ASM: .aeabi_attribute 0, 1 @ Tag_Feature_BTI
+// ASM: .aeabi_attribute 1, 1 @ Tag_Feature_PAC
+// ASM: .aeabi_attribute 2, 1 @ Tag_Feature_GCS
+// ASM: .aeabi_subsection aeabi_subsection, optional, ntbs
+// ASM: .aeabi_attribute 5, "Value"
+// ASM: .aeabi_subsection subsection_b, required, uleb128
+// ASM: .aeabi_attribute 6, 536
+// ASM: .aeabi_subsection subsection_a, optional, uleb128
+// ASM: .aeabi_attribute 7, 11
+
+// ELF: Hex dump of section '.ARM.attributes':
+// ELF: 0x00000000 41150000 00737562 73656374 696f6e5f A....subsection_
+// ELF: 0x00000010 61000100 070b2000 00006165 6162695f a..... ...aeabi_
+// ELF: 0x00000020 73756273 65637469 6f6e0001 01052256 subsection...."V
+// ELF: 0x00000030 616c7565 22001600 00007375 62736563 alue".....subsec
+// ELF: 0x00000040 74696f6e 5f620000 00069804 1a000000 tion_b..........
+// ELF: 0x00000050 61656162 695f7061 75746861 62690000 aeabi_pauthabi..
+// ELF: 0x00000060 00010702 89062300 00006165 6162695f ......#...aeabi_
+// ELF: 0x00000070 66656174 7572655f 616e645f 62697473 feature_and_bits
+// ELF: 0x00000080 00010000 01010102 01 .........
+
+
+.aeabi_subsection subsection_a, optional, uleb128
+.aeabi_subsection aeabi_subsection, optional, ntbs
+.aeabi_subsection subsection_b, required, uleb128
+.aeabi_subsection aeabi_pauthabi, required, uleb128
+.aeabi_attribute Tag_PAuth_Platform, 7
+.aeabi_attribute Tag_PAuth_Schema, 777
+.aeabi_subsection aeabi_feature_and_bits, optional, uleb128
+.aeabi_attribute Tag_Feature_BTI, 1
+.aeabi_attribute Tag_Feature_PAC, 1
+.aeabi_attribute Tag_Feature_GCS, 1
+.aeabi_subsection aeabi_subsection, optional, ntbs
+.aeabi_attribute 5, "Value"
+.aeabi_subsection subsection_b, required, uleb128
+.aeabi_attribute 6, 536
+.aeabi_subsection subsection_a, optional, uleb128
+.aeabi_attribute 7, 11
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-non_aeabi.s b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-non_aeabi.s
new file mode 100644
index 0000000000000..ef55a3cfc89de
--- /dev/null
+++ b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-non_aeabi.s
@@ -0,0 +1,49 @@
+// RUN: llvm-mc -triple=aarch64 %s -o - | FileCheck %s --check-prefix=ASM
+// RUN: llvm-mc -triple=aarch64 -filetype=obj %s -o - | llvm-readelf --hex-dump=.ARM.attributes - | FileCheck %s --check-prefix=ELF
+
+// ASM: .aeabi_subsection private_subsection_1, optional, uleb128
+// ASM: .aeabi_attribute 12, 257
+// ASM: .aeabi_subsection aeabi_2, required, uleb128
+// ASM: .aeabi_attribute 76, 257
+// ASM: .aeabi_subsection aeabi_3, optional, ntbs
+// ASM: .aeabi_attribute 34, hello_llvm
+// ASM: .aeabi_subsection private_subsection_4, required, ntbs
+// ASM: .aeabi_attribute 777, "hello_llvm"
+// ASM: .aeabi_subsection private_subsection_1, optional, uleb128
+// ASM: .aeabi_attribute 876, 257
+// ASM: .aeabi_subsection aeabi_2, required, uleb128
+// ASM: .aeabi_attribute 876, 257
+// ASM: .aeabi_subsection aeabi_3, optional, ntbs
+// ASM: .aeabi_attribute 876, "hello_llvm"
+// ASM: .aeabi_subsection private_subsection_4, required, ntbs
+// ASM: .aeabi_attribute 876, hello_llvm
+
+// ELF: Hex dump of section '.ARM.attributes':
+// ELF: 0x00000000 41220000 00707269 76617465 5f737562 A"...private_sub
+// ELF: 0x00000010 73656374 696f6e5f 31000100 0c8102ec section_1.......
+// ELF: 0x00000020 06810215 00000061 65616269 5f320000 .......aeabi_2..
+// ELF: 0x00000030 004c8102 ec068102 29000000 61656162 .L......)...aeab
+// ELF: 0x00000040 695f3300 01012268 656c6c6f 5f6c6c76 i_3..."hello_llv
+// ELF: 0x00000050 6d00ec06 2268656c 6c6f5f6c 6c766d22 m..."hello_llvm"
+// ELF: 0x00000060 00370000 00707269 76617465 5f737562 .7...private_sub
+// ELF: 0x00000070 73656374 696f6e5f 34000001 89062268 section_4....."h
+// ELF: 0x00000080 656c6c6f 5f6c6c76 6d2200ec 0668656c ello_llvm"...hel
+// ELF: 0x00000090 6c6f5f6c 6c766d00 lo_llvm.
+
+
+.aeabi_subsection private_subsection_1, optional, uleb128
+.aeabi_attribute 12, 257
+.aeabi_subsection aeabi_2, required, uleb128
+.aeabi_attribute 76, 257
+.aeabi_subsection aeabi_3, optional, ntbs
+.aeabi_attribute 34, hello_llvm
+.aeabi_subsection private_subsection_4, required, ntbs
+.aeabi_attribute 777, "hello_llvm"
+.aeabi_subsection private_subsection_1, optional, uleb128
+.aeabi_attribute 876, 257
+.aeabi_subsection aeabi_2, required, uleb128
+.aeabi_attribute 876, 257
+.aeabi_subsection aeabi_3, optional, ntbs
+.aeabi_attribute 876, "hello_llvm"
+.aeabi_subsection private_subsection_4, required, ntbs
+.aeabi_attribute 876, hello_llvm
>From a126df16932f76a8914e153c1977c5d01a210c9c Mon Sep 17 00:00:00 2001
From: Sivan Shani <sivan.shani at arm.com>
Date: Mon, 17 Feb 2025 11:24:29 +0000
Subject: [PATCH 05/11] [AArch64][Build Attributes] Remove Assertion for
Duplicate Values
Adding the same value twice is valid, so the assertion has been removed.
---
.../Target/AArch64/MCTargetDesc/AArch64TargetStreamer.cpp | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64TargetStreamer.cpp b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64TargetStreamer.cpp
index 1ed4a81a97673..01b74e55116f9 100644
--- a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64TargetStreamer.cpp
+++ b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64TargetStreamer.cpp
@@ -222,13 +222,9 @@ void AArch64TargetStreamer::emitAttribute(StringRef VendorName, unsigned Tag,
"Can not add AArch64 build attribute: An attribute with "
"the same tag and a different value already exists");
return;
- } else {
- // Case Item.IntValue == Value, no need to emit twice
- assert(0 &&
- "AArch64 build attribute: An attribute with the same tag "
- "and a same value already exists");
- return;
}
+ // Case Item.IntValue == Value is permited.
+ return;
}
}
}
>From e453ae00d311961ac2469054892838fc2a4bd087 Mon Sep 17 00:00:00 2001
From: Sivan Shani <sivan.shani at arm.com>
Date: Mon, 17 Feb 2025 11:26:41 +0000
Subject: [PATCH 06/11] [AArch64][Build Attributes] Add test files
Add test files
---
.../aarch64-build-attributes-asm-aeabi-bti.s | 18 +++++
...h64-build-attributes-asm-aeabi-err-attrs.s | 69 +++++++++++++++++++
...4-build-attributes-asm-aeabi-err-headers.s | 64 +++++++++++++++++
.../aarch64-build-attributes-asm-aeabi-gcs.s | 18 +++++
.../aarch64-build-attributes-asm-aeabi-none.s | 25 +++++++
...uild-attributes-asm-aeabi-numerical-tags.s | 39 +++++++++++
...-build-attributes-asm-aeabi-out-of-order.s | 48 +++++++++++++
.../aarch64-build-attributes-asm-aeabi-pac.s | 18 +++++
...rch64-build-attributes-asm-non_aeabi-err.s | 33 +++++++++
9 files changed, 332 insertions(+)
create mode 100644 llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-bti.s
create mode 100644 llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-err-attrs.s
create mode 100644 llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-err-headers.s
create mode 100644 llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-gcs.s
create mode 100644 llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-none.s
create mode 100644 llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-numerical-tags.s
create mode 100644 llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-out-of-order.s
create mode 100644 llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-pac.s
create mode 100644 llvm/test/MC/AArch64/aarch64-build-attributes-asm-non_aeabi-err.s
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-bti.s b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-bti.s
new file mode 100644
index 0000000000000..c760cf1558578
--- /dev/null
+++ b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-bti.s
@@ -0,0 +1,18 @@
+// RUN: llvm-mc -triple=aarch64 %s -o - | FileCheck %s --check-prefix=ASM
+// RUN: llvm-mc -triple=aarch64 -filetype=obj %s -o - | llvm-readelf --hex-dump=.ARM.attributes - | FileCheck %s --check-prefix=ELF
+
+// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
+// ASM: .aeabi_attribute 0, 1 @ Tag_Feature_BTI
+// ASM: .aeabi_attribute 1, 0 @ Tag_Feature_PAC
+// ASM: .aeabi_attribute 2, 0 @ Tag_Feature_GCS
+
+// ELF: Hex dump of section '.ARM.attributes':
+// ELF-NEXT: 0x00000000 41230000 00616561 62695f66 65617475 A#...aeabi_featu
+// ELF-NEXT: 0x00000010 72655f61 6e645f62 69747300 01000001 re_and_bits.....
+// ELF-NEXT: 0x00000020 01000200
+
+
+.aeabi_subsection aeabi_feature_and_bits, optional, uleb128
+.aeabi_attribute Tag_Feature_BTI, 1
+.aeabi_attribute Tag_Feature_PAC, 0
+.aeabi_attribute Tag_Feature_GCS, 0
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-err-attrs.s b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-err-attrs.s
new file mode 100644
index 0000000000000..d509974f508d0
--- /dev/null
+++ b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-err-attrs.s
@@ -0,0 +1,69 @@
+// RUN: not llvm-mc -triple=aarch64 %s 2>&1 | FileCheck --check-prefix=ERR %s
+
+// Test logic and type mismatch
+.aeabi_attribute Tag_Feature_BTI, 1
+// ERR: error: no active subsection, build attribute can not be added
+// ERR-NEXT: .aeabi_attribute Tag_Feature_BTI, 1
+
+.aeabi_subsection aeabi_pauthabi, required, uleb128
+.aeabi_attribute Tag_Feature_BTI, 1
+// ERR: error: unknown AArch64 build attribute 'Tag_Feature_BTI' for subsection 'aeabi_pauthabi'
+// ERR-NEXT: .aeabi_attribute Tag_Feature_BTI, 1
+
+.aeabi_attribute a, 1
+// ERR: error: unknown AArch64 build attribute 'a' for subsection 'aeabi_pauthabi'
+// ERR-NEXT: .aeabi_attribute a, 1
+
+.aeabi_attribute Tag_PAuth_Platform, Tag_PAuth_Platform
+// ERR: error: active subsection type is ULEB128 (unsigned), found NTBS (string)
+// ERR-NEXT: .aeabi_attribute Tag_PAuth_Platform, Tag_PAuth_Platform
+
+.aeabi_attribute Tag_PAuth_Platform, a
+// ERR: error: active subsection type is ULEB128 (unsigned), found NTBS (string)
+// ERR-NEXT: .aeabi_attribute Tag_PAuth_Platform, a
+
+
+// Test syntax errors
+.aeabi_attribute Tag_PAuth_Platform,
+// ERR: error: AArch64 build attributes value not found
+// ERR-NEXT: .aeabi_attribute Tag_PAuth_Platform,
+
+.aeabi_attribute Tag_PAuth_Platform
+// ERR: error: expected comma
+// ERR-NEXT: .aeabi_attribute Tag_PAuth_Platform
+
+.aeabi_attribute
+// ERR: error: AArch64 build attributes tag not found
+// ERR-NEXT: .aeabi_attribute
+
+.aeabi_subsection aeabi_feature_and_bits, optional, uleb128
+.aeabi_attribute Tag_PAuth_Platform, 1
+// ERR: unknown AArch64 build attribute 'Tag_PAuth_Platform' for subsection 'aeabi_feature_and_bits'
+
+.aeabi_attribute a, 1
+// ERR: error: unknown AArch64 build attribute 'a' for subsection 'aeabi_feature_and_bits'
+
+.aeabi_attribute Tag_Feature_BTI, Tag_Feature_BTI
+// ERR: error: active subsection type is ULEB128 (unsigned), found NTBS (string)
+// ERR-NEXT: .aeabi_attribute Tag_Feature_BTI, Tag_Feature_BTI
+
+.aeabi_attribute Tag_Feature_BTI, a
+// ERR: error: active subsection type is ULEB128 (unsigned), found NTBS (string)
+// ERR-NEXT: .aeabi_attribute Tag_Feature_BTI, a
+
+.aeabi_attribute Tag_Feature_BTI,
+// ERR: error: AArch64 build attributes value not found
+// ERR-NEXT: .aeabi_attribute Tag_Feature_BTI,
+
+.aeabi_attribute Tag_Feature_BTI
+// ERR: error: expected comma
+// ERR-NEXT: .aeabi_attribute Tag_Feature_BTI
+
+.aeabi_attribute
+// ERR: error: AArch64 build attributes tag not found
+// ERR-NEXT: .aeabi_attribute
+
+.aeabi_subsection aeabi_pauthabi, required, uleb128
+.aeabi_attribute Tag_PAuth_Platform, 1 some_text
+// ERR: error: unexpected token for AArch64 build attributes tag and value attribute directive
+// ERR-NEXT: .aeabi_attribute Tag_PAuth_Platform, 1 some_text
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-err-headers.s b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-err-headers.s
new file mode 100644
index 0000000000000..501958a17bed3
--- /dev/null
+++ b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-err-headers.s
@@ -0,0 +1,64 @@
+// RUN: not llvm-mc -triple=aarch64 %s 2>&1 | FileCheck --check-prefix=ERR %s
+
+// Test syntax errors
+.aeabi_subsection 1, required, uleb128
+// ERR: error: subsection name not found
+// ERR-NEXT: .aeabi_subsection 1, required, uleb128
+
+.aeabi_subsection , required, uleb128
+// ERR: error: subsection name not found
+// ERR-NEXT: .aeabi_subsection , required, uleb128
+
+.aeabi_subsection aeabi_pauthabi, a, uleb128
+// ERR: error: unknown AArch64 build attributes optionality, expected required|optional
+// ERR-NEXT: .aeabi_subsection aeabi_pauthabi, a, uleb128
+
+.aeabi_subsection aeabi_pauthabi, 1, uleb128
+// ERR: error: optionality parameter not found, expected required|optional
+// ERR-NEXT: .aeabi_subsection aeabi_pauthabi, 1, uleb128
+
+.aeabi_subsection aeabi_pauthabi, ,uleb128
+// ERR: error: optionality parameter not found, expected required|optional
+// ERR-NEXT: .aeabi_subsection aeabi_pauthabi, ,uleb128
+
+.aeabi_subsection aeabi_pauthabi,uleb128
+// ERR: error: unknown AArch64 build attributes optionality, expected required|optional
+// ERR-NEXT: .aeabi_subsection aeabi_pauthabi,uleb128
+
+.aeabi_subsection aeabi_pauthabi uleb128
+// ERR: expected comma
+// ERR-NEXT: .aeabi_subsection aeabi_pauthabi uleb128
+
+.aeabi_subsection aeabi_pauthabi, required
+// ERR: error: expected comma
+// ERR-NEXT: .aeabi_subsection aeabi_pauthabi, required
+
+.aeabi_subsection aeabi_pauthabi, required,
+// ERR: error: type parameter not found, expected uleb128|ntbs
+// ERR-NEXT: .aeabi_subsection aeabi_pauthabi, required,
+
+.aeabi_subsection aeabi_pauthabi, required, a
+// ERR: error: unknown AArch64 build attributes type, expected uleb128|ntbs
+// ERR-NEXT: .aeabi_subsection aeabi_pauthabi, required, a
+
+.aeabi_subsection aeabi_pauthabi, optional, uleb128
+// ERR: error: aeabi_pauthabi must be marked as required
+// ERR-NEXT: .aeabi_subsection aeabi_pauthabi, optional, uleb128
+
+
+// Test types mismatch
+.aeabi_subsection aeabi_pauthabi, optional, uleb128
+// ERR: error: aeabi_pauthabi must be marked as required
+// ERR-NEXT: .aeabi_subsection aeabi_pauthabi, optional, uleb128
+
+.aeabi_subsection aeabi_pauthabi, required, ntbs
+// ERR: error: aeabi_pauthabi must be marked as ULEB128
+// ERR-NEXT: .aeabi_subsection aeabi_pauthabi, required, ntbs
+
+.aeabi_subsection aeabi_feature_and_bits, required, uleb128
+// ERR: error: aeabi_feature_and_bits must be marked as optional
+// ERR-NEXT: .aeabi_subsection aeabi_feature_and_bits, required, uleb128
+
+.aeabi_subsection aeabi_feature_and_bits, optional, ntbs
+// ERR: error: aeabi_feature_and_bits must be marked as ULEB128
+// ERR-NEXT: .aeabi_subsection aeabi_feature_and_bits, optional, ntbs
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-gcs.s b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-gcs.s
new file mode 100644
index 0000000000000..5c5551a2133cd
--- /dev/null
+++ b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-gcs.s
@@ -0,0 +1,18 @@
+// RUN: llvm-mc -triple=aarch64 %s -o - | FileCheck %s --check-prefix=ASM
+// RUN: llvm-mc -triple=aarch64 -filetype=obj %s -o - | llvm-readelf --hex-dump=.ARM.attributes - | FileCheck %s --check-prefix=ELF
+
+// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
+// ASM: .aeabi_attribute 0, 0 @ Tag_Feature_BTI
+// ASM: .aeabi_attribute 1, 0 @ Tag_Feature_PAC
+// ASM: .aeabi_attribute 2, 1 @ Tag_Feature_GCS
+
+// ELF: Hex dump of section '.ARM.attributes':
+// ELF-NEXT: 0x00000000 41230000 00616561 62695f66 65617475 A#...aeabi_featu
+// ELF-NEXT: 0x00000010 72655f61 6e645f62 69747300 01000000 re_and_bits.....
+// ELF-NEXT: 0x00000020 01000201
+
+
+.aeabi_subsection aeabi_feature_and_bits, optional, uleb128
+.aeabi_attribute Tag_Feature_BTI, 0
+.aeabi_attribute Tag_Feature_PAC, 0
+.aeabi_attribute Tag_Feature_GCS, 1
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-none.s b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-none.s
new file mode 100644
index 0000000000000..e029e43c0934a
--- /dev/null
+++ b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-none.s
@@ -0,0 +1,25 @@
+// RUN: llvm-mc -triple=aarch64 %s -o - | FileCheck %s --check-prefix=ASM
+// RUN: llvm-mc -triple=aarch64 -filetype=obj %s -o - | llvm-readelf --hex-dump=.ARM.attributes - | FileCheck %s --check-prefix=ELF
+
+// ASM: .aeabi_subsection aeabi_pauthabi, required, uleb128
+// ASM: .aeabi_attribute 1, 0 @ Tag_PAuth_Platform
+// ASM: .aeabi_attribute 2, 0 @ Tag_PAuth_Schema
+// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
+// ASM: .aeabi_attribute 0, 0 @ Tag_Feature_BTI
+// ASM: .aeabi_attribute 1, 0 @ Tag_Feature_PAC
+// ASM: .aeabi_attribute 2, 0 @ Tag_Feature_GCS
+
+// ELF: Hex dump of section '.ARM.attributes':
+// ELF-NEXT: 0x00000000 41190000 00616561 62695f70 61757468 A....aeabi_pauth
+// ELF-NEXT: 0x00000010 61626900 00000100 02002300 00006165 abi.......#...ae
+// ELF-NEXT: 0x00000020 6162695f 66656174 7572655f 616e645f abi_feature_and_
+// ELF-NEXT: 0x00000030 62697473 00010000 00010002 00
+
+
+.aeabi_subsection aeabi_pauthabi, required, uleb128
+.aeabi_attribute Tag_PAuth_Platform, 0
+.aeabi_attribute Tag_PAuth_Schema, 0
+.aeabi_subsection aeabi_feature_and_bits, optional, uleb128
+.aeabi_attribute Tag_Feature_BTI, 0
+.aeabi_attribute Tag_Feature_PAC, 0
+.aeabi_attribute Tag_Feature_GCS, 0
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-numerical-tags.s b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-numerical-tags.s
new file mode 100644
index 0000000000000..71e28baa7fc73
--- /dev/null
+++ b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-numerical-tags.s
@@ -0,0 +1,39 @@
+// RUN: llvm-mc -triple=aarch64 %s -o - | FileCheck %s --check-prefix=ASM
+
+// ASM: .aeabi_subsection aeabi_pauthabi, required, uleb128
+// ASM: .aeabi_attribute 0, 1
+// ASM: .aeabi_attribute 1, 1 @ Tag_PAuth_Platform
+// ASM: .aeabi_attribute 2, 1 @ Tag_PAuth_Schema
+// ASM: .aeabi_attribute 3, 1
+// ASM: .aeabi_attribute 4, 1
+// ASM: .aeabi_attribute 5, 1
+// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
+// ASM: .aeabi_attribute 0, 1 @ Tag_Feature_BTI
+// ASM: .aeabi_attribute 1, 1 @ Tag_Feature_PAC
+// ASM: .aeabi_attribute 2, 1 @ Tag_Feature_GCS
+// ASM: .aeabi_attribute 3, 1
+// ASM: .aeabi_attribute 4, 1
+// ASM: .aeabi_attribute 5, 1
+
+// ELF: Hex dump of section '.ARM.attributes':
+// ELF-NEXT: 0x00000000 41210000 00616561 62695f70 61757468 A!...aeabi_pauth
+// ELF-NEXT: 0x00000010 61626900 00000001 01010201 03010401 abi.............
+// ELF-NEXT: 0x00000020 05012900 00006165 6162695f 66656174 ..)...aeabi_feat
+// ELF-NEXT: 0x00000030 7572655f 616e645f 62697473 00010000 ure_and_bits....
+// ELF-NEXT: 0x00000040 01010102 01030104 010501
+
+
+.aeabi_subsection aeabi_pauthabi, required, uleb128
+.aeabi_attribute 0, 1
+.aeabi_attribute 1, 1
+.aeabi_attribute 2, 1
+.aeabi_attribute 3, 1
+.aeabi_attribute 4, 1
+.aeabi_attribute 5, 1
+.aeabi_subsection aeabi_feature_and_bits, optional, uleb128
+.aeabi_attribute 0, 1
+.aeabi_attribute 1, 1
+.aeabi_attribute 2, 1
+.aeabi_attribute 3, 1
+.aeabi_attribute 4, 1
+.aeabi_attribute 5, 1
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-out-of-order.s b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-out-of-order.s
new file mode 100644
index 0000000000000..197b7cfd52038
--- /dev/null
+++ b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-out-of-order.s
@@ -0,0 +1,48 @@
+// RUN: llvm-mc -triple=aarch64 %s -o - | FileCheck %s --check-prefix=ASM
+// RUN: llvm-mc -triple=aarch64 -filetype=obj %s -o - | llvm-readelf --hex-dump=.ARM.attributes - | FileCheck %s --check-prefix=ELF
+
+// ASM: .aeabi_subsection aeabi_pauthabi, required, uleb128
+// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
+// ASM: .aeabi_attribute 0, 1 @ Tag_Feature_BTI
+// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
+// ASM: .aeabi_subsection aeabi_pauthabi, required, uleb128
+// ASM: .aeabi_attribute 2, 1 @ Tag_PAuth_Schema
+// ASM: .aeabi_subsection aeabi_pauthabi, required, uleb128
+// ASM: .aeabi_attribute 1, 1 @ Tag_PAuth_Platform
+// ASM: .aeabi_subsection aeabi_pauthabi, required, uleb128
+// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
+// ASM: .aeabi_attribute 2, 1 @ Tag_Feature_GCS
+// ASM: .aeabi_subsection aeabi_pauthabi, required, uleb128
+// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
+// ASM: .aeabi_attribute 1, 0 @ Tag_Feature_PAC
+// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
+// ASM: .aeabi_attribute 7, 1
+// ASM: .aeabi_subsection aeabi_pauthabi, required, uleb128
+// ASM: .aeabi_attribute 7, 0
+
+// ELF: Hex dump of section '.ARM.attributes':
+// ELF-NEXT: 0x00000000 411b0000 00616561 62695f70 61757468 A....aeabi_pauth
+// ELF-NEXT: 0x00000010 61626900 00000201 01010700 25000000 abi.........%...
+// ELF-NEXT: 0x00000020 61656162 695f6665 61747572 655f616e aeabi_feature_an
+// ELF-NEXT: 0x00000030 645f6269 74730001 00000102 01010007 d_bits..........
+// ELF-NEXT: 0x00000040 01
+
+
+.aeabi_subsection aeabi_pauthabi, required, uleb128
+.aeabi_subsection aeabi_feature_and_bits, optional, uleb128
+.aeabi_attribute Tag_Feature_BTI, 1
+.aeabi_subsection aeabi_feature_and_bits, optional, uleb128
+.aeabi_subsection aeabi_pauthabi, required, uleb128
+.aeabi_attribute Tag_PAuth_Schema, 1
+.aeabi_subsection aeabi_pauthabi, required, uleb128
+.aeabi_attribute Tag_PAuth_Platform, 1
+.aeabi_subsection aeabi_pauthabi, required, uleb128
+.aeabi_subsection aeabi_feature_and_bits, optional, uleb128
+.aeabi_attribute Tag_Feature_GCS, 1
+.aeabi_subsection aeabi_pauthabi, required, uleb128
+.aeabi_subsection aeabi_feature_and_bits, optional, uleb128
+.aeabi_attribute Tag_Feature_PAC, 0
+.aeabi_subsection aeabi_feature_and_bits, optional, uleb128
+.aeabi_attribute 7, 1
+.aeabi_subsection aeabi_pauthabi, required, uleb128
+.aeabi_attribute 7, 0
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-pac.s b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-pac.s
new file mode 100644
index 0000000000000..1b86081355ab9
--- /dev/null
+++ b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-pac.s
@@ -0,0 +1,18 @@
+// RUN: llvm-mc -triple=aarch64 %s -o - | FileCheck %s --check-prefix=ASM
+// RUN: llvm-mc -triple=aarch64 -filetype=obj %s -o - | llvm-readelf --hex-dump=.ARM.attributes - | FileCheck %s --check-prefix=ELF
+
+// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
+// ASM: .aeabi_attribute 0, 0 @ Tag_Feature_BTI
+// ASM: .aeabi_attribute 1, 1 @ Tag_Feature_PAC
+// ASM: .aeabi_attribute 2, 0 @ Tag_Feature_GCS
+
+// ELF: Hex dump of section '.ARM.attributes':
+// ELF-NEXT: 0x00000000 41230000 00616561 62695f66 65617475 A#...aeabi_featu
+// ELF-NEXT: 0x00000010 72655f61 6e645f62 69747300 01000000 re_and_bits.....
+// ELF-NEXT: 0x00000020 01010200
+
+
+.aeabi_subsection aeabi_feature_and_bits, optional, uleb128
+.aeabi_attribute 0, 0 @ Tag_Feature_BTI
+.aeabi_attribute 1, 1 @ Tag_Feature_PAC
+.aeabi_attribute 2, 0 @ Tag_Feature_GCS
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-non_aeabi-err.s b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-non_aeabi-err.s
new file mode 100644
index 0000000000000..6e28481aeb97b
--- /dev/null
+++ b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-non_aeabi-err.s
@@ -0,0 +1,33 @@
+// RUN: not llvm-mc -triple=aarch64 %s 2>&1 | FileCheck --check-prefix=ERR %s
+
+.aeabi_subsection private_subsection, optional, uleb128
+
+.aeabi_subsection private_subsection, required, uleb128
+// ERR: error: optionality mismatch! subsection 'private_subsection' already exists with optionality defined as 'optional' and not 'required'
+// ERR-NEXT: .aeabi_subsection private_subsection, required, uleb128
+
+.aeabi_subsection private_subsection, optional, ntbs
+// ERR: error: type mismatch! subsection 'private_subsection' already exists with type defined as 'uleb128' and not 'ntbs'
+// ERR-NEXT: .aeabi_subsection private_subsection, optional, ntbs
+
+.aeabi_subsection private_subsection_1, optional, ntbs
+.aeabi_attribute 324, 1
+// ERR: error: active subsection type is NTBS (string), found ULEB128 (unsigned)
+// ERR-NEXT: .aeabi_attribute 324, 1
+
+.aeabi_attribute str_not_int, "1"
+// ERR: error: unrecognized Tag: 'str_not_int'
+// ERR-NEXT: Except for public subsections, tags have to be an unsigned int.
+// ERR-NEXT: .aeabi_attribute str_not_int, "1"
+
+.aeabi_subsection foo, optional, uleb128
+.aeabi_subsection bar, optional, uleb128
+.aeabi_subsection foo, required, uleb128
+// ERR: error: optionality mismatch! subsection 'foo' already exists with optionality defined as 'optional' and not 'required'
+// ERR-NEXT: .aeabi_subsection foo, required, uleb128
+
+.aeabi_subsection goo, optional, ntbs
+.aeabi_subsection zar, optional, ntbs
+.aeabi_subsection goo, optional, uleb128
+// ERR: error: type mismatch! subsection 'goo' already exists with type defined as 'ntbs' and not 'uleb128'
+// ERR-NEXT: .aeabi_subsection goo, optional, uleb128
>From c161c0472bf3e818ee321811db8b51dca89d509f Mon Sep 17 00:00:00 2001
From: Sivan Shani <sivan.shani at arm.com>
Date: Tue, 18 Feb 2025 12:45:24 +0000
Subject: [PATCH 07/11] [AArch64][Build Attributes] Same Tag different Value:
override
When a new value is provided for an existing tag, override.
---
.../MCTargetDesc/AArch64TargetStreamer.cpp | 21 +++++++++++--------
...aarch64-build-attributes-asm-aeabi-mixed.s | 4 +++-
2 files changed, 15 insertions(+), 10 deletions(-)
diff --git a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64TargetStreamer.cpp b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64TargetStreamer.cpp
index 01b74e55116f9..25b0ba8f30f12 100644
--- a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64TargetStreamer.cpp
+++ b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64TargetStreamer.cpp
@@ -15,6 +15,7 @@
#include "llvm/BinaryFormat/ELF.h"
#include "llvm/MC/ConstantPools.h"
#include "llvm/MC/MCContext.h"
+#include "llvm/MC/MCELFStreamer.h"
#include "llvm/MC/MCSection.h"
#include "llvm/MC/MCSectionELF.h"
#include "llvm/MC/MCSubtargetInfo.h"
@@ -214,18 +215,20 @@ void AArch64TargetStreamer::emitAttribute(StringRef VendorName, unsigned Tag,
return;
}
for (MCELFStreamer::AttributeItem &Item : SubSection.Content) {
+ // Tag already exists
if (Item.Tag == Tag) {
- if (!Override) {
- if ((unsigned(-1) != Value && Item.IntValue != Value) ||
- ("" != String && Item.StringValue != String)) {
- assert(0 &&
- "Can not add AArch64 build attribute: An attribute with "
- "the same tag and a different value already exists");
- return;
- }
- // Case Item.IntValue == Value is permited.
+ // New value for existing tag: update tag
+ if ((unsigned(-1) != Value && Item.IntValue != Value) ||
+ ("" != String && Item.StringValue != String)) {
+ Item.Type = unsigned(-1) != Value
+ ? MCELFStreamer::AttributeItem::NumericAttribute
+ : MCELFStreamer::AttributeItem::TextAttribute;
+ Item.IntValue = unsigned(-1) != Value ? Value : unsigned(-1);
+ Item.StringValue = unsigned(-1) != Value ? "" : String;
return;
}
+ // Same value for existing tag: do nothing
+ return;
}
}
if (unsigned(-1) != Value)
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-mixed.s b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-mixed.s
index 0607861795791..027def743db6d 100644
--- a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-mixed.s
+++ b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-mixed.s
@@ -7,6 +7,7 @@
// ASM: .aeabi_subsection aeabi_pauthabi, required, uleb128
// ASM: .aeabi_attribute 1, 7 @ Tag_PAuth_Platform
// ASM: .aeabi_attribute 2, 777 @ Tag_PAuth_Schema
+// ASM: .aeabi_attribute 1, 9 @ Tag_PAuth_Platform
// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
// ASM: .aeabi_attribute 0, 1 @ Tag_Feature_BTI
// ASM: .aeabi_attribute 1, 1 @ Tag_Feature_PAC
@@ -25,7 +26,7 @@
// ELF: 0x00000030 616c7565 22001600 00007375 62736563 alue".....subsec
// ELF: 0x00000040 74696f6e 5f620000 00069804 1a000000 tion_b..........
// ELF: 0x00000050 61656162 695f7061 75746861 62690000 aeabi_pauthabi..
-// ELF: 0x00000060 00010702 89062300 00006165 6162695f ......#...aeabi_
+// ELF: 0x00000060 00010902 89062300 00006165 6162695f ......#...aeabi_
// ELF: 0x00000070 66656174 7572655f 616e645f 62697473 feature_and_bits
// ELF: 0x00000080 00010000 01010102 01 .........
@@ -36,6 +37,7 @@
.aeabi_subsection aeabi_pauthabi, required, uleb128
.aeabi_attribute Tag_PAuth_Platform, 7
.aeabi_attribute Tag_PAuth_Schema, 777
+.aeabi_attribute Tag_PAuth_Platform, 9
.aeabi_subsection aeabi_feature_and_bits, optional, uleb128
.aeabi_attribute Tag_Feature_BTI, 1
.aeabi_attribute Tag_Feature_PAC, 1
>From 9c3f0f769503af334100c274eba5408574c53617 Mon Sep 17 00:00:00 2001
From: Sivan Shani <sivan.shani at arm.com>
Date: Tue, 18 Feb 2025 14:07:00 +0000
Subject: [PATCH 08/11] [AArch64][Build Attributes] Improve Parsing and
Formatting
AArch64 assembly comments should be '//'
Lexer remove comments, no need to handle them when parsing.
---
.../AArch64/AsmParser/AArch64AsmParser.cpp | 14 ++-----
.../MCTargetDesc/AArch64ELFStreamer.cpp | 4 +-
.../AArch64/aarch64-build-attributes-all.ll | 6 +--
.../AArch64/aarch64-build-attributes-bti.ll | 6 +--
.../AArch64/aarch64-build-attributes-gcs.ll | 6 +--
.../AArch64/aarch64-build-attributes-pac.ll | 6 +--
.../aarch64-build-attributes-pauthabi.ll | 4 +-
...4-build-attributes-asm-aeabi-aeabi-known.s | 38 +++++++++----------
.../aarch64-build-attributes-asm-aeabi-bti.s | 6 +--
.../aarch64-build-attributes-asm-aeabi-gcs.s | 6 +--
...aarch64-build-attributes-asm-aeabi-mixed.s | 12 +++---
.../aarch64-build-attributes-asm-aeabi-none.s | 10 ++---
...uild-attributes-asm-aeabi-numerical-tags.s | 10 ++---
...-build-attributes-asm-aeabi-out-of-order.s | 10 ++---
.../aarch64-build-attributes-asm-aeabi-pac.s | 12 +++---
15 files changed, 72 insertions(+), 78 deletions(-)
diff --git a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
index 16e0883fe0584..cccd60502abf0 100644
--- a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
+++ b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
@@ -7948,11 +7948,8 @@ bool AArch64AsmParser::parseDirectiveAeabiSubSectionHeader(SMLoc L) {
}
Parser.Lex();
- // Parsing finished, hereafter only accept comments; otherwise no trailing
- // tokens.
- if (Parser.getTok().is(llvm::AsmToken::At)) {
- Parser.parseStringToEndOfStatement();
- }
+ // Parsing finished. Check for trailing characters (no need to check for
+ // comments; they are removed by the lexer).
if (Parser.getTok().isNot(llvm::AsmToken::EndOfStatement)) {
Error(Parser.getTok().getLoc(), "unexpected token for AArch64 build "
"attributes subsection header directive");
@@ -8081,11 +8078,8 @@ bool AArch64AsmParser::parseDirectiveAeabiAArch64Attr(SMLoc L) {
}
Parser.Lex();
- // Parsing finished, hereafter only accept comments; otherwise no trailing
- // tokens.
- if (Parser.getTok().is(llvm::AsmToken::At)) {
- Parser.parseStringToEndOfStatement();
- }
+ // Parsing finished. Check for trailing characters (no need to check for
+ // comments; they are removed by the lexer).
if (Parser.getTok().isNot(llvm::AsmToken::EndOfStatement)) {
Error(Parser.getTok().getLoc(),
"unexpected token for AArch64 build attributes tag and value "
diff --git a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp
index 2f6a5144a82b4..33214c11ccf1a 100644
--- a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp
+++ b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp
@@ -191,7 +191,7 @@ class AArch64TargetAsmStreamer : public AArch64TargetStreamer {
case AArch64BuildAttrs::TAG_FEATURE_BTI:
case AArch64BuildAttrs::TAG_FEATURE_GCS:
case AArch64BuildAttrs::TAG_FEATURE_PAC:
- OS << "\t.aeabi_attribute" << "\t" << Tag << ", " << Value << "\t@ "
+ OS << "\t.aeabi_attribute" << "\t" << Tag << ", " << Value << "\t// "
<< AArch64BuildAttrs::getFeatureAndBitsTagsStr(Tag);
AArch64TargetStreamer::emitAttribute(VendorName, Tag, Value, "",
Override);
@@ -210,7 +210,7 @@ class AArch64TargetAsmStreamer : public AArch64TargetStreamer {
break;
case AArch64BuildAttrs::TAG_PAUTH_PLATFORM:
case AArch64BuildAttrs::TAG_PAUTH_SCHEMA:
- OS << "\t.aeabi_attribute" << "\t" << Tag << ", " << Value << "\t@ "
+ OS << "\t.aeabi_attribute" << "\t" << Tag << ", " << Value << "\t// "
<< AArch64BuildAttrs::getPauthABITagsStr(Tag);
AArch64TargetStreamer::emitAttribute(VendorName, Tag, Value, "",
Override);
diff --git a/llvm/test/CodeGen/AArch64/aarch64-build-attributes-all.ll b/llvm/test/CodeGen/AArch64/aarch64-build-attributes-all.ll
index 9eaed09130f15..e2e1e0a384867 100644
--- a/llvm/test/CodeGen/AArch64/aarch64-build-attributes-all.ll
+++ b/llvm/test/CodeGen/AArch64/aarch64-build-attributes-all.ll
@@ -2,9 +2,9 @@
; RUN: llc %s -filetype=obj -o - | llvm-readelf --hex-dump=.ARM.attributes - | FileCheck %s --check-prefix=ELF
; ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-; ASM-NEXT: .aeabi_attribute 0, 1 @ Tag_Feature_BTI
-; ASM-NEXT: .aeabi_attribute 1, 1 @ Tag_Feature_PAC
-; ASM-NEXT: .aeabi_attribute 2, 1 @ Tag_Feature_GCS
+; ASM-NEXT: .aeabi_attribute 0, 1 // Tag_Feature_BTI
+; ASM-NEXT: .aeabi_attribute 1, 1 // Tag_Feature_PAC
+; ASM-NEXT: .aeabi_attribute 2, 1 // Tag_Feature_GCS
; ELF: Hex dump of section '.ARM.attributes':
; ELF-NEXT: 0x00000000 41230000 00616561 62695f66 65617475 A#...aeabi_featu
diff --git a/llvm/test/CodeGen/AArch64/aarch64-build-attributes-bti.ll b/llvm/test/CodeGen/AArch64/aarch64-build-attributes-bti.ll
index cffb1fb265379..92ce2abb795d9 100644
--- a/llvm/test/CodeGen/AArch64/aarch64-build-attributes-bti.ll
+++ b/llvm/test/CodeGen/AArch64/aarch64-build-attributes-bti.ll
@@ -2,9 +2,9 @@
; RUN: llc %s -filetype=obj -o - | llvm-readelf --hex-dump=.ARM.attributes - | FileCheck %s --check-prefix=ELF
; ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-; ASM-NEXT: .aeabi_attribute 0, 1 @ Tag_Feature_BTI
-; ASM-NEXT: .aeabi_attribute 1, 0 @ Tag_Feature_PAC
-; ASM-NEXT: .aeabi_attribute 2, 0 @ Tag_Feature_GCS
+; ASM-NEXT: .aeabi_attribute 0, 1 // Tag_Feature_BTI
+; ASM-NEXT: .aeabi_attribute 1, 0 // Tag_Feature_PAC
+; ASM-NEXT: .aeabi_attribute 2, 0 // Tag_Feature_GCS
; ELF: Hex dump of section '.ARM.attributes':
; ELF-NEXT: 0x00000000 41230000 00616561 62695f66 65617475 A#...aeabi_featu
diff --git a/llvm/test/CodeGen/AArch64/aarch64-build-attributes-gcs.ll b/llvm/test/CodeGen/AArch64/aarch64-build-attributes-gcs.ll
index 3dbba6a7eeace..faa77d657aa2e 100644
--- a/llvm/test/CodeGen/AArch64/aarch64-build-attributes-gcs.ll
+++ b/llvm/test/CodeGen/AArch64/aarch64-build-attributes-gcs.ll
@@ -2,9 +2,9 @@
; RUN: llc %s -filetype=obj -o - | llvm-readelf --hex-dump=.ARM.attributes - | FileCheck %s --check-prefix=ELF
; ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-; ASM-NEXT: .aeabi_attribute 0, 0 @ Tag_Feature_BTI
-; ASM-NEXT: .aeabi_attribute 1, 0 @ Tag_Feature_PAC
-; ASM-NEXT: .aeabi_attribute 2, 1 @ Tag_Feature_GCS
+; ASM-NEXT: .aeabi_attribute 0, 0 // Tag_Feature_BTI
+; ASM-NEXT: .aeabi_attribute 1, 0 // Tag_Feature_PAC
+; ASM-NEXT: .aeabi_attribute 2, 1 // Tag_Feature_GCS
; ELF: Hex dump of section '.ARM.attributes':
; ELF-NEXT: 0x00000000 41230000 00616561 62695f66 65617475 A#...aeabi_featu
diff --git a/llvm/test/CodeGen/AArch64/aarch64-build-attributes-pac.ll b/llvm/test/CodeGen/AArch64/aarch64-build-attributes-pac.ll
index 506a821ad9d90..0358927ad10f5 100644
--- a/llvm/test/CodeGen/AArch64/aarch64-build-attributes-pac.ll
+++ b/llvm/test/CodeGen/AArch64/aarch64-build-attributes-pac.ll
@@ -2,9 +2,9 @@
; RUN: llc %s -filetype=obj -o - | llvm-readelf --hex-dump=.ARM.attributes - | FileCheck %s --check-prefix=ELF
; ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-; ASM-NEXT: .aeabi_attribute 0, 0 @ Tag_Feature_BTI
-; ASM-NEXT: .aeabi_attribute 1, 1 @ Tag_Feature_PAC
-; ASM-NEXT: .aeabi_attribute 2, 0 @ Tag_Feature_GCS
+; ASM-NEXT: .aeabi_attribute 0, 0 // Tag_Feature_BTI
+; ASM-NEXT: .aeabi_attribute 1, 1 // Tag_Feature_PAC
+; ASM-NEXT: .aeabi_attribute 2, 0 // Tag_Feature_GCS
; ELF: Hex dump of section '.ARM.attributes':
; ELF-NEXT: 0x00000000 41230000 00616561 62695f66 65617475 A#...aeabi_featu
diff --git a/llvm/test/CodeGen/AArch64/aarch64-build-attributes-pauthabi.ll b/llvm/test/CodeGen/AArch64/aarch64-build-attributes-pauthabi.ll
index a7d9585af4379..1c2a72524d5de 100644
--- a/llvm/test/CodeGen/AArch64/aarch64-build-attributes-pauthabi.ll
+++ b/llvm/test/CodeGen/AArch64/aarch64-build-attributes-pauthabi.ll
@@ -2,8 +2,8 @@
; RUN: llc %s -filetype=obj -o - | llvm-readelf --hex-dump=.ARM.attributes - | FileCheck %s --check-prefix=ELF
; ASM: .aeabi_subsection aeabi_pauthabi, required, uleb128
-; ASM-NEXT: .aeabi_attribute 1, 2 @ Tag_PAuth_Platform
-; ASM-NEXT: .aeabi_attribute 2, 31 @ Tag_PAuth_Schema
+; ASM-NEXT: .aeabi_attribute 1, 2 // Tag_PAuth_Platform
+; ASM-NEXT: .aeabi_attribute 2, 31 // Tag_PAuth_Schema
; ELF: Hex dump of section '.ARM.attributes':
; ELF-NEXT: 0x00000000 41190000 00616561 62695f70 61757468 A....aeabi_pauth
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-aeabi-known.s b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-aeabi-known.s
index d81ab72678013..dca673fa5e149 100644
--- a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-aeabi-known.s
+++ b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-aeabi-known.s
@@ -2,21 +2,21 @@
// RUN: llvm-mc -triple=aarch64 -filetype=obj %s -o - | llvm-readelf --hex-dump=.ARM.attributes - | FileCheck %s --check-prefix=ELF
// ASM: .aeabi_subsection aeabi_pauthabi, required, uleb128
-// ASM: .aeabi_attribute 1, 7 @ Tag_PAuth_Platform
-// ASM: .aeabi_attribute 2, 777 @ Tag_PAuth_Schema
-// ASM: .aeabi_attribute 2, 777 @ Tag_PAuth_Schema
+// ASM: .aeabi_attribute 1, 7 // Tag_PAuth_Platform
+// ASM: .aeabi_attribute 2, 777 // Tag_PAuth_Schema
+// ASM: .aeabi_attribute 2, 777 // Tag_PAuth_Schema
// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-// ASM: .aeabi_attribute 0, 1 @ Tag_Feature_BTI
-// ASM: .aeabi_attribute 1, 1 @ Tag_Feature_PAC
-// ASM: .aeabi_attribute 2, 1 @ Tag_Feature_GCS
+// ASM: .aeabi_attribute 0, 1 // Tag_Feature_BTI
+// ASM: .aeabi_attribute 1, 1 // Tag_Feature_PAC
+// ASM: .aeabi_attribute 2, 1 // Tag_Feature_GCS
// ASM: .aeabi_subsection aeabi_pauthabi, required, uleb128
-// ASM: .aeabi_attribute 1, 7 @ Tag_PAuth_Platform
-// ASM: .aeabi_attribute 2, 777 @ Tag_PAuth_Schema
-// ASM: .aeabi_attribute 2, 777 @ Tag_PAuth_Schema
+// ASM: .aeabi_attribute 1, 7 // Tag_PAuth_Platform
+// ASM: .aeabi_attribute 2, 777 // Tag_PAuth_Schema
+// ASM: .aeabi_attribute 2, 777 // Tag_PAuth_Schema
// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-// ASM: .aeabi_attribute 0, 1 @ Tag_Feature_BTI
-// ASM: .aeabi_attribute 1, 1 @ Tag_Feature_PAC
-// ASM: .aeabi_attribute 2, 1 @ Tag_Feature_GCS
+// ASM: .aeabi_attribute 0, 1 // Tag_Feature_BTI
+// ASM: .aeabi_attribute 1, 1 // Tag_Feature_PAC
+// ASM: .aeabi_attribute 2, 1 // Tag_Feature_GCS
// ELF: Hex dump of section '.ARM.attributes':
// ELF: 0x00000000 411a0000 00616561 62695f70 61757468 A....aeabi_pauth
@@ -25,7 +25,7 @@
// ELF: 0x00000030 5f626974 73000100 00010101 0201 _bits.........
-.aeabi_subsection aeabi_pauthabi, required, uleb128 @ test header comment
+.aeabi_subsection aeabi_pauthabi, required, uleb128 // test header comment
.aeabi_attribute Tag_PAuth_Platform, 7
.aeabi_attribute Tag_PAuth_Schema, 777
.aeabi_attribute Tag_PAuth_Schema, 777
@@ -34,10 +34,10 @@
.aeabi_attribute Tag_Feature_PAC, 1
.aeabi_attribute Tag_Feature_GCS, 1
.aeabi_subsection aeabi_pauthabi, required, uleb128
-.aeabi_attribute 1, 7 @ Tag_PAuth_Platform
-.aeabi_attribute 2, 777 @ Tag_PAuth_Schema
-.aeabi_attribute 2, 777 @ Tag_PAuth_Schema
+.aeabi_attribute 1, 7 // Tag_PAuth_Platform
+.aeabi_attribute 2, 777 // Tag_PAuth_Schema
+.aeabi_attribute 2, 777 // Tag_PAuth_Schema
.aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-.aeabi_attribute 0, 1 @ Tag_Feature_BTI
-.aeabi_attribute 1, 1 @ Tag_Feature_PAC
-.aeabi_attribute 2, 1 @ Tag_Feature_GCS
+.aeabi_attribute 0, 1 // Tag_Feature_BTI
+.aeabi_attribute 1, 1 // Tag_Feature_PAC
+.aeabi_attribute 2, 1 // Tag_Feature_GCS
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-bti.s b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-bti.s
index c760cf1558578..c6003e07e3eec 100644
--- a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-bti.s
+++ b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-bti.s
@@ -2,9 +2,9 @@
// RUN: llvm-mc -triple=aarch64 -filetype=obj %s -o - | llvm-readelf --hex-dump=.ARM.attributes - | FileCheck %s --check-prefix=ELF
// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-// ASM: .aeabi_attribute 0, 1 @ Tag_Feature_BTI
-// ASM: .aeabi_attribute 1, 0 @ Tag_Feature_PAC
-// ASM: .aeabi_attribute 2, 0 @ Tag_Feature_GCS
+// ASM: .aeabi_attribute 0, 1 // Tag_Feature_BTI
+// ASM: .aeabi_attribute 1, 0 // Tag_Feature_PAC
+// ASM: .aeabi_attribute 2, 0 // Tag_Feature_GCS
// ELF: Hex dump of section '.ARM.attributes':
// ELF-NEXT: 0x00000000 41230000 00616561 62695f66 65617475 A#...aeabi_featu
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-gcs.s b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-gcs.s
index 5c5551a2133cd..91122fc4b5cf3 100644
--- a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-gcs.s
+++ b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-gcs.s
@@ -2,9 +2,9 @@
// RUN: llvm-mc -triple=aarch64 -filetype=obj %s -o - | llvm-readelf --hex-dump=.ARM.attributes - | FileCheck %s --check-prefix=ELF
// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-// ASM: .aeabi_attribute 0, 0 @ Tag_Feature_BTI
-// ASM: .aeabi_attribute 1, 0 @ Tag_Feature_PAC
-// ASM: .aeabi_attribute 2, 1 @ Tag_Feature_GCS
+// ASM: .aeabi_attribute 0, 0 // Tag_Feature_BTI
+// ASM: .aeabi_attribute 1, 0 // Tag_Feature_PAC
+// ASM: .aeabi_attribute 2, 1 // Tag_Feature_GCS
// ELF: Hex dump of section '.ARM.attributes':
// ELF-NEXT: 0x00000000 41230000 00616561 62695f66 65617475 A#...aeabi_featu
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-mixed.s b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-mixed.s
index 027def743db6d..7932517d8e0cf 100644
--- a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-mixed.s
+++ b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-mixed.s
@@ -5,13 +5,13 @@
// ASM: .aeabi_subsection aeabi_subsection, optional, ntbs
// ASM: .aeabi_subsection subsection_b, required, uleb128
// ASM: .aeabi_subsection aeabi_pauthabi, required, uleb128
-// ASM: .aeabi_attribute 1, 7 @ Tag_PAuth_Platform
-// ASM: .aeabi_attribute 2, 777 @ Tag_PAuth_Schema
-// ASM: .aeabi_attribute 1, 9 @ Tag_PAuth_Platform
+// ASM: .aeabi_attribute 1, 7 // Tag_PAuth_Platform
+// ASM: .aeabi_attribute 2, 777 // Tag_PAuth_Schema
+// ASM: .aeabi_attribute 1, 9 // Tag_PAuth_Platform
// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-// ASM: .aeabi_attribute 0, 1 @ Tag_Feature_BTI
-// ASM: .aeabi_attribute 1, 1 @ Tag_Feature_PAC
-// ASM: .aeabi_attribute 2, 1 @ Tag_Feature_GCS
+// ASM: .aeabi_attribute 0, 1 // Tag_Feature_BTI
+// ASM: .aeabi_attribute 1, 1 // Tag_Feature_PAC
+// ASM: .aeabi_attribute 2, 1 // Tag_Feature_GCS
// ASM: .aeabi_subsection aeabi_subsection, optional, ntbs
// ASM: .aeabi_attribute 5, "Value"
// ASM: .aeabi_subsection subsection_b, required, uleb128
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-none.s b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-none.s
index e029e43c0934a..0b60b8c47d049 100644
--- a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-none.s
+++ b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-none.s
@@ -2,12 +2,12 @@
// RUN: llvm-mc -triple=aarch64 -filetype=obj %s -o - | llvm-readelf --hex-dump=.ARM.attributes - | FileCheck %s --check-prefix=ELF
// ASM: .aeabi_subsection aeabi_pauthabi, required, uleb128
-// ASM: .aeabi_attribute 1, 0 @ Tag_PAuth_Platform
-// ASM: .aeabi_attribute 2, 0 @ Tag_PAuth_Schema
+// ASM: .aeabi_attribute 1, 0 // Tag_PAuth_Platform
+// ASM: .aeabi_attribute 2, 0 // Tag_PAuth_Schema
// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-// ASM: .aeabi_attribute 0, 0 @ Tag_Feature_BTI
-// ASM: .aeabi_attribute 1, 0 @ Tag_Feature_PAC
-// ASM: .aeabi_attribute 2, 0 @ Tag_Feature_GCS
+// ASM: .aeabi_attribute 0, 0 // Tag_Feature_BTI
+// ASM: .aeabi_attribute 1, 0 // Tag_Feature_PAC
+// ASM: .aeabi_attribute 2, 0 // Tag_Feature_GCS
// ELF: Hex dump of section '.ARM.attributes':
// ELF-NEXT: 0x00000000 41190000 00616561 62695f70 61757468 A....aeabi_pauth
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-numerical-tags.s b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-numerical-tags.s
index 71e28baa7fc73..25b6a1836bba9 100644
--- a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-numerical-tags.s
+++ b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-numerical-tags.s
@@ -2,15 +2,15 @@
// ASM: .aeabi_subsection aeabi_pauthabi, required, uleb128
// ASM: .aeabi_attribute 0, 1
-// ASM: .aeabi_attribute 1, 1 @ Tag_PAuth_Platform
-// ASM: .aeabi_attribute 2, 1 @ Tag_PAuth_Schema
+// ASM: .aeabi_attribute 1, 1 // Tag_PAuth_Platform
+// ASM: .aeabi_attribute 2, 1 // Tag_PAuth_Schema
// ASM: .aeabi_attribute 3, 1
// ASM: .aeabi_attribute 4, 1
// ASM: .aeabi_attribute 5, 1
// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-// ASM: .aeabi_attribute 0, 1 @ Tag_Feature_BTI
-// ASM: .aeabi_attribute 1, 1 @ Tag_Feature_PAC
-// ASM: .aeabi_attribute 2, 1 @ Tag_Feature_GCS
+// ASM: .aeabi_attribute 0, 1 // Tag_Feature_BTI
+// ASM: .aeabi_attribute 1, 1 // Tag_Feature_PAC
+// ASM: .aeabi_attribute 2, 1 // Tag_Feature_GCS
// ASM: .aeabi_attribute 3, 1
// ASM: .aeabi_attribute 4, 1
// ASM: .aeabi_attribute 5, 1
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-out-of-order.s b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-out-of-order.s
index 197b7cfd52038..c4192cddb1f2e 100644
--- a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-out-of-order.s
+++ b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-out-of-order.s
@@ -3,18 +3,18 @@
// ASM: .aeabi_subsection aeabi_pauthabi, required, uleb128
// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-// ASM: .aeabi_attribute 0, 1 @ Tag_Feature_BTI
+// ASM: .aeabi_attribute 0, 1 // Tag_Feature_BTI
// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
// ASM: .aeabi_subsection aeabi_pauthabi, required, uleb128
-// ASM: .aeabi_attribute 2, 1 @ Tag_PAuth_Schema
+// ASM: .aeabi_attribute 2, 1 // Tag_PAuth_Schema
// ASM: .aeabi_subsection aeabi_pauthabi, required, uleb128
-// ASM: .aeabi_attribute 1, 1 @ Tag_PAuth_Platform
+// ASM: .aeabi_attribute 1, 1 // Tag_PAuth_Platform
// ASM: .aeabi_subsection aeabi_pauthabi, required, uleb128
// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-// ASM: .aeabi_attribute 2, 1 @ Tag_Feature_GCS
+// ASM: .aeabi_attribute 2, 1 // Tag_Feature_GCS
// ASM: .aeabi_subsection aeabi_pauthabi, required, uleb128
// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-// ASM: .aeabi_attribute 1, 0 @ Tag_Feature_PAC
+// ASM: .aeabi_attribute 1, 0 // Tag_Feature_PAC
// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
// ASM: .aeabi_attribute 7, 1
// ASM: .aeabi_subsection aeabi_pauthabi, required, uleb128
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-pac.s b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-pac.s
index 1b86081355ab9..228e2be8af88a 100644
--- a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-pac.s
+++ b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-pac.s
@@ -2,9 +2,9 @@
// RUN: llvm-mc -triple=aarch64 -filetype=obj %s -o - | llvm-readelf --hex-dump=.ARM.attributes - | FileCheck %s --check-prefix=ELF
// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-// ASM: .aeabi_attribute 0, 0 @ Tag_Feature_BTI
-// ASM: .aeabi_attribute 1, 1 @ Tag_Feature_PAC
-// ASM: .aeabi_attribute 2, 0 @ Tag_Feature_GCS
+// ASM: .aeabi_attribute 0, 0 // Tag_Feature_BTI
+// ASM: .aeabi_attribute 1, 1 // Tag_Feature_PAC
+// ASM: .aeabi_attribute 2, 0 // Tag_Feature_GCS
// ELF: Hex dump of section '.ARM.attributes':
// ELF-NEXT: 0x00000000 41230000 00616561 62695f66 65617475 A#...aeabi_featu
@@ -13,6 +13,6 @@
.aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-.aeabi_attribute 0, 0 @ Tag_Feature_BTI
-.aeabi_attribute 1, 1 @ Tag_Feature_PAC
-.aeabi_attribute 2, 0 @ Tag_Feature_GCS
+.aeabi_attribute 0, 0 // Tag_Feature_BTI
+.aeabi_attribute 1, 1 // Tag_Feature_PAC
+.aeabi_attribute 2, 0 // Tag_Feature_GCS
>From 3ae07d14079e80f4e93c7f755ff61e7f28a60faf Mon Sep 17 00:00:00 2001
From: Sivan Shani <sivan.shani at arm.com>
Date: Wed, 19 Feb 2025 11:37:48 +0000
Subject: [PATCH 09/11] [AArch64][Build Attributes] Remove unused 'Override'
parameter
Since the function accepts assembly that adds a different value for an existing tag,
the 'Override' parameter is no longer needed.
---
llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp | 10 +++----
.../AArch64/AsmParser/AArch64AsmParser.cpp | 5 ++--
.../MCTargetDesc/AArch64ELFStreamer.cpp | 28 ++++++++-----------
.../MCTargetDesc/AArch64TargetStreamer.cpp | 3 +-
.../MCTargetDesc/AArch64TargetStreamer.h | 4 +--
5 files changed, 21 insertions(+), 29 deletions(-)
diff --git a/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp b/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp
index f1f25b65fc53f..c7de0a6d2ca51 100644
--- a/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp
+++ b/llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp
@@ -482,10 +482,10 @@ void AArch64AsmPrinter::emitAttributes(unsigned Flags,
AArch64BuildAttrs::SubsectionType::ULEB128);
TS->emitAttribute(
AArch64BuildAttrs::getVendorName(AArch64BuildAttrs::AEABI_PAUTHABI),
- AArch64BuildAttrs::TAG_PAUTH_PLATFORM, PAuthABIPlatform, "", false);
+ AArch64BuildAttrs::TAG_PAUTH_PLATFORM, PAuthABIPlatform, "");
TS->emitAttribute(
AArch64BuildAttrs::getVendorName(AArch64BuildAttrs::AEABI_PAUTHABI),
- AArch64BuildAttrs::TAG_PAUTH_SCHEMA, PAuthABIVersion, "", false);
+ AArch64BuildAttrs::TAG_PAUTH_SCHEMA, PAuthABIVersion, "");
}
unsigned BTIValue = (Flags & AArch64BuildAttrs::Feature_BTI_Flag) ? 1 : 0;
@@ -499,13 +499,13 @@ void AArch64AsmPrinter::emitAttributes(unsigned Flags,
AArch64BuildAttrs::SubsectionType::ULEB128);
TS->emitAttribute(AArch64BuildAttrs::getVendorName(
AArch64BuildAttrs::AEABI_FEATURE_AND_BITS),
- AArch64BuildAttrs::TAG_FEATURE_BTI, BTIValue, "", false);
+ AArch64BuildAttrs::TAG_FEATURE_BTI, BTIValue, "");
TS->emitAttribute(AArch64BuildAttrs::getVendorName(
AArch64BuildAttrs::AEABI_FEATURE_AND_BITS),
- AArch64BuildAttrs::TAG_FEATURE_PAC, PACValue, "", false);
+ AArch64BuildAttrs::TAG_FEATURE_PAC, PACValue, "");
TS->emitAttribute(AArch64BuildAttrs::getVendorName(
AArch64BuildAttrs::AEABI_FEATURE_AND_BITS),
- AArch64BuildAttrs::TAG_FEATURE_GCS, GCSValue, "", false);
+ AArch64BuildAttrs::TAG_FEATURE_GCS, GCSValue, "");
}
}
diff --git a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
index cccd60502abf0..59dd2dd3e28f4 100644
--- a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
+++ b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
@@ -8088,12 +8088,11 @@ bool AArch64AsmParser::parseDirectiveAeabiAArch64Attr(SMLoc L) {
}
if (unsigned(-1) != ValueInt) {
- getTargetStreamer().emitAttribute(ActiveSubsectionName, Tag, ValueInt, "",
- false);
+ getTargetStreamer().emitAttribute(ActiveSubsectionName, Tag, ValueInt, "");
}
if ("" != ValueStr) {
getTargetStreamer().emitAttribute(ActiveSubsectionName, Tag, unsigned(-1),
- ValueStr, false);
+ ValueStr);
}
return false;
}
diff --git a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp
index 33214c11ccf1a..61c860341ca99 100644
--- a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp
+++ b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFStreamer.cpp
@@ -151,7 +151,7 @@ class AArch64TargetAsmStreamer : public AArch64TargetStreamer {
}
void emitAttribute(StringRef VendorName, unsigned Tag, unsigned Value,
- std::string String, bool Override) override {
+ std::string String) override {
// AArch64 build attributes for assembly attribute form:
// .aeabi_attribute tag, value
@@ -169,13 +169,12 @@ class AArch64TargetAsmStreamer : public AArch64TargetStreamer {
case AArch64BuildAttrs::VENDOR_UNKNOWN:
if (unsigned(-1) != Value) {
OS << "\t.aeabi_attribute" << "\t" << Tag << ", " << Value;
- AArch64TargetStreamer::emitAttribute(VendorName, Tag, Value, "",
- Override);
+ AArch64TargetStreamer::emitAttribute(VendorName, Tag, Value, "");
}
if ("" != String) {
OS << "\t.aeabi_attribute" << "\t" << Tag << ", " << String;
AArch64TargetStreamer::emitAttribute(VendorName, Tag, unsigned(-1),
- String, Override);
+ String);
}
break;
// Note: AEABI_FEATURE_AND_BITS takes only unsigned values
@@ -185,16 +184,14 @@ class AArch64TargetAsmStreamer : public AArch64TargetStreamer {
OS << "\t.aeabi_attribute" << "\t" << Tag << ", " << Value;
// Keep the data structure consistent with the case of ELF emission
// (important for llvm-mc asm parsing)
- AArch64TargetStreamer::emitAttribute(VendorName, Tag, Value, "",
- Override);
+ AArch64TargetStreamer::emitAttribute(VendorName, Tag, Value, "");
break;
case AArch64BuildAttrs::TAG_FEATURE_BTI:
case AArch64BuildAttrs::TAG_FEATURE_GCS:
case AArch64BuildAttrs::TAG_FEATURE_PAC:
OS << "\t.aeabi_attribute" << "\t" << Tag << ", " << Value << "\t// "
<< AArch64BuildAttrs::getFeatureAndBitsTagsStr(Tag);
- AArch64TargetStreamer::emitAttribute(VendorName, Tag, Value, "",
- Override);
+ AArch64TargetStreamer::emitAttribute(VendorName, Tag, Value, "");
break;
}
break;
@@ -205,15 +202,13 @@ class AArch64TargetAsmStreamer : public AArch64TargetStreamer {
OS << "\t.aeabi_attribute" << "\t" << Tag << ", " << Value;
// Keep the data structure consistent with the case of ELF emission
// (important for llvm-mc asm parsing)
- AArch64TargetStreamer::emitAttribute(VendorName, Tag, Value, "",
- Override);
+ AArch64TargetStreamer::emitAttribute(VendorName, Tag, Value, "");
break;
case AArch64BuildAttrs::TAG_PAUTH_PLATFORM:
case AArch64BuildAttrs::TAG_PAUTH_SCHEMA:
OS << "\t.aeabi_attribute" << "\t" << Tag << ", " << Value << "\t// "
<< AArch64BuildAttrs::getPauthABITagsStr(Tag);
- AArch64TargetStreamer::emitAttribute(VendorName, Tag, Value, "",
- Override);
+ AArch64TargetStreamer::emitAttribute(VendorName, Tag, Value, "");
break;
}
break;
@@ -426,13 +421,12 @@ void AArch64TargetELFStreamer::emitAtributesSubsection(
}
void AArch64TargetELFStreamer::emitAttribute(StringRef VendorName, unsigned Tag,
- unsigned Value, std::string String,
- bool Override) {
+ unsigned Value,
+ std::string String) {
if (unsigned(-1) != Value)
- AArch64TargetStreamer::emitAttribute(VendorName, Tag, Value, "", Override);
+ AArch64TargetStreamer::emitAttribute(VendorName, Tag, Value, "");
if ("" != String)
- AArch64TargetStreamer::emitAttribute(VendorName, Tag, unsigned(-1), String,
- Override);
+ AArch64TargetStreamer::emitAttribute(VendorName, Tag, unsigned(-1), String);
}
void AArch64TargetELFStreamer::emitInst(uint32_t Inst) {
diff --git a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64TargetStreamer.cpp b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64TargetStreamer.cpp
index 25b0ba8f30f12..0221ab60352db 100644
--- a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64TargetStreamer.cpp
+++ b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64TargetStreamer.cpp
@@ -194,8 +194,7 @@ AArch64TargetStreamer::getAtributesSubsectionByName(StringRef Name) {
}
void AArch64TargetStreamer::emitAttribute(StringRef VendorName, unsigned Tag,
- unsigned Value, std::string String,
- bool Override) {
+ unsigned Value, std::string String) {
if (unsigned(-1) == Value && "" == String) {
assert(0 && "Arguments error");
diff --git a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64TargetStreamer.h b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64TargetStreamer.h
index 9183fb4cc5f56..9cbb104c0eb9e 100644
--- a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64TargetStreamer.h
+++ b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64TargetStreamer.h
@@ -100,7 +100,7 @@ class AArch64TargetStreamer : public MCTargetStreamer {
AArch64BuildAttrs::SubsectionOptional IsOptional,
AArch64BuildAttrs::SubsectionType ParameterType);
virtual void emitAttribute(StringRef VendorName, unsigned Tag, unsigned Value,
- std::string String, bool Override);
+ std::string String);
void activateAtributesSubsection(StringRef VendorName);
std::unique_ptr<MCELFStreamer::AttributeSubSection>
getActiveAtributesSubsection();
@@ -127,7 +127,7 @@ class AArch64TargetELFStreamer : public AArch64TargetStreamer {
StringRef VendorName, AArch64BuildAttrs::SubsectionOptional IsOptional,
AArch64BuildAttrs::SubsectionType ParameterType) override;
void emitAttribute(StringRef VendorName, unsigned Tag, unsigned Value,
- std::string String, bool Override = false) override;
+ std::string String) override;
void emitInst(uint32_t Inst) override;
void emitDirectiveVariantPCS(MCSymbol *Symbol) override;
void finish() override;
>From badefe8ff4fd58f7f516ef5a0a07dabbb852dbcf Mon Sep 17 00:00:00 2001
From: Sivan Shani <sivan.shani at arm.com>
Date: Wed, 19 Feb 2025 11:46:20 +0000
Subject: [PATCH 10/11] [AArch64][Build Attributes] Remove redundant comments
and unneeded case
- Remove redundant comments
- Remove default case from a fully covered switch
---
llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp | 10 ++--------
1 file changed, 2 insertions(+), 8 deletions(-)
diff --git a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
index 59dd2dd3e28f4..e46e7b38010a4 100644
--- a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
+++ b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
@@ -7948,8 +7948,7 @@ bool AArch64AsmParser::parseDirectiveAeabiSubSectionHeader(SMLoc L) {
}
Parser.Lex();
- // Parsing finished. Check for trailing characters (no need to check for
- // comments; they are removed by the lexer).
+ // Parsing finished, check for trailing tokens.
if (Parser.getTok().isNot(llvm::AsmToken::EndOfStatement)) {
Error(Parser.getTok().getLoc(), "unexpected token for AArch64 build "
"attributes subsection header directive");
@@ -7992,10 +7991,6 @@ bool AArch64AsmParser::parseDirectiveAeabiAArch64Attr(SMLoc L) {
} else if (Parser.getTok().is(AsmToken::Identifier)) {
TagStr = Parser.getTok().getIdentifier();
switch (ActiveSubsectionID) {
- default:
- // Should not happen
- assert(0 && "Subsection name error");
- break;
case AArch64BuildAttrs::VENDOR_UNKNOWN:
// Tag was provided as an unrecognized string instead of an unsigned
// integer
@@ -8078,8 +8073,7 @@ bool AArch64AsmParser::parseDirectiveAeabiAArch64Attr(SMLoc L) {
}
Parser.Lex();
- // Parsing finished. Check for trailing characters (no need to check for
- // comments; they are removed by the lexer).
+ // Parsing finished. Check for trailing tokens.
if (Parser.getTok().isNot(llvm::AsmToken::EndOfStatement)) {
Error(Parser.getTok().getLoc(),
"unexpected token for AArch64 build attributes tag and value "
>From 71a634582c0baeda12d6fa1e53dbcf2c57d39f36 Mon Sep 17 00:00:00 2001
From: Sivan Shani <sivan.shani at arm.com>
Date: Thu, 20 Feb 2025 10:36:18 +0000
Subject: [PATCH 11/11] Remove prefix aarch64 from test files residing in the
AArch64 folder
---
...ributes-all.ll => build-attributes-all.ll} | 0
...ributes-bti.ll => build-attributes-bti.ll} | 0
...ributes-gcs.ll => build-attributes-gcs.ll} | 0
...ributes-pac.ll => build-attributes-pac.ll} | 0
...uthabi.ll => build-attributes-pauthabi.ll} | 0
...4-build-attributes-asm-aeabi-aeabi-known.s | 43 -------------------
.../build-attributes-asm-aeabi-aeabi-known.s | 43 +++++++++++++++++++
...bti.s => build-attributes-asm-aeabi-bti.s} | 6 +--
...=> build-attributes-asm-aeabi-err-attrs.s} | 0
... build-attributes-asm-aeabi-err-headers.s} | 0
...gcs.s => build-attributes-asm-aeabi-gcs.s} | 6 +--
...d.s => build-attributes-asm-aeabi-mixed.s} | 32 +++++++-------
...ne.s => build-attributes-asm-aeabi-none.s} | 0
...ild-attributes-asm-aeabi-numerical-tags.s} | 0
...build-attributes-asm-aeabi-out-of-order.s} | 0
...pac.s => build-attributes-asm-aeabi-pac.s} | 0
...s => build-attributes-asm-non_aeabi-err.s} | 0
...abi.s => build-attributes-asm-non_aeabi.s} | 0
18 files changed, 65 insertions(+), 65 deletions(-)
rename llvm/test/CodeGen/AArch64/{aarch64-build-attributes-all.ll => build-attributes-all.ll} (100%)
rename llvm/test/CodeGen/AArch64/{aarch64-build-attributes-bti.ll => build-attributes-bti.ll} (100%)
rename llvm/test/CodeGen/AArch64/{aarch64-build-attributes-gcs.ll => build-attributes-gcs.ll} (100%)
rename llvm/test/CodeGen/AArch64/{aarch64-build-attributes-pac.ll => build-attributes-pac.ll} (100%)
rename llvm/test/CodeGen/AArch64/{aarch64-build-attributes-pauthabi.ll => build-attributes-pauthabi.ll} (100%)
delete mode 100644 llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-aeabi-known.s
create mode 100644 llvm/test/MC/AArch64/build-attributes-asm-aeabi-aeabi-known.s
rename llvm/test/MC/AArch64/{aarch64-build-attributes-asm-aeabi-bti.s => build-attributes-asm-aeabi-bti.s} (80%)
rename llvm/test/MC/AArch64/{aarch64-build-attributes-asm-aeabi-err-attrs.s => build-attributes-asm-aeabi-err-attrs.s} (100%)
rename llvm/test/MC/AArch64/{aarch64-build-attributes-asm-aeabi-err-headers.s => build-attributes-asm-aeabi-err-headers.s} (100%)
rename llvm/test/MC/AArch64/{aarch64-build-attributes-asm-aeabi-gcs.s => build-attributes-asm-aeabi-gcs.s} (80%)
rename llvm/test/MC/AArch64/{aarch64-build-attributes-asm-aeabi-mixed.s => build-attributes-asm-aeabi-mixed.s} (64%)
rename llvm/test/MC/AArch64/{aarch64-build-attributes-asm-aeabi-none.s => build-attributes-asm-aeabi-none.s} (100%)
rename llvm/test/MC/AArch64/{aarch64-build-attributes-asm-aeabi-numerical-tags.s => build-attributes-asm-aeabi-numerical-tags.s} (100%)
rename llvm/test/MC/AArch64/{aarch64-build-attributes-asm-aeabi-out-of-order.s => build-attributes-asm-aeabi-out-of-order.s} (100%)
rename llvm/test/MC/AArch64/{aarch64-build-attributes-asm-aeabi-pac.s => build-attributes-asm-aeabi-pac.s} (100%)
rename llvm/test/MC/AArch64/{aarch64-build-attributes-asm-non_aeabi-err.s => build-attributes-asm-non_aeabi-err.s} (100%)
rename llvm/test/MC/AArch64/{aarch64-build-attributes-asm-non_aeabi.s => build-attributes-asm-non_aeabi.s} (100%)
diff --git a/llvm/test/CodeGen/AArch64/aarch64-build-attributes-all.ll b/llvm/test/CodeGen/AArch64/build-attributes-all.ll
similarity index 100%
rename from llvm/test/CodeGen/AArch64/aarch64-build-attributes-all.ll
rename to llvm/test/CodeGen/AArch64/build-attributes-all.ll
diff --git a/llvm/test/CodeGen/AArch64/aarch64-build-attributes-bti.ll b/llvm/test/CodeGen/AArch64/build-attributes-bti.ll
similarity index 100%
rename from llvm/test/CodeGen/AArch64/aarch64-build-attributes-bti.ll
rename to llvm/test/CodeGen/AArch64/build-attributes-bti.ll
diff --git a/llvm/test/CodeGen/AArch64/aarch64-build-attributes-gcs.ll b/llvm/test/CodeGen/AArch64/build-attributes-gcs.ll
similarity index 100%
rename from llvm/test/CodeGen/AArch64/aarch64-build-attributes-gcs.ll
rename to llvm/test/CodeGen/AArch64/build-attributes-gcs.ll
diff --git a/llvm/test/CodeGen/AArch64/aarch64-build-attributes-pac.ll b/llvm/test/CodeGen/AArch64/build-attributes-pac.ll
similarity index 100%
rename from llvm/test/CodeGen/AArch64/aarch64-build-attributes-pac.ll
rename to llvm/test/CodeGen/AArch64/build-attributes-pac.ll
diff --git a/llvm/test/CodeGen/AArch64/aarch64-build-attributes-pauthabi.ll b/llvm/test/CodeGen/AArch64/build-attributes-pauthabi.ll
similarity index 100%
rename from llvm/test/CodeGen/AArch64/aarch64-build-attributes-pauthabi.ll
rename to llvm/test/CodeGen/AArch64/build-attributes-pauthabi.ll
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-aeabi-known.s b/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-aeabi-known.s
deleted file mode 100644
index dca673fa5e149..0000000000000
--- a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-aeabi-known.s
+++ /dev/null
@@ -1,43 +0,0 @@
-// RUN: llvm-mc -triple=aarch64 %s -o - | FileCheck %s --check-prefix=ASM
-// RUN: llvm-mc -triple=aarch64 -filetype=obj %s -o - | llvm-readelf --hex-dump=.ARM.attributes - | FileCheck %s --check-prefix=ELF
-
-// ASM: .aeabi_subsection aeabi_pauthabi, required, uleb128
-// ASM: .aeabi_attribute 1, 7 // Tag_PAuth_Platform
-// ASM: .aeabi_attribute 2, 777 // Tag_PAuth_Schema
-// ASM: .aeabi_attribute 2, 777 // Tag_PAuth_Schema
-// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-// ASM: .aeabi_attribute 0, 1 // Tag_Feature_BTI
-// ASM: .aeabi_attribute 1, 1 // Tag_Feature_PAC
-// ASM: .aeabi_attribute 2, 1 // Tag_Feature_GCS
-// ASM: .aeabi_subsection aeabi_pauthabi, required, uleb128
-// ASM: .aeabi_attribute 1, 7 // Tag_PAuth_Platform
-// ASM: .aeabi_attribute 2, 777 // Tag_PAuth_Schema
-// ASM: .aeabi_attribute 2, 777 // Tag_PAuth_Schema
-// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-// ASM: .aeabi_attribute 0, 1 // Tag_Feature_BTI
-// ASM: .aeabi_attribute 1, 1 // Tag_Feature_PAC
-// ASM: .aeabi_attribute 2, 1 // Tag_Feature_GCS
-
-// ELF: Hex dump of section '.ARM.attributes':
-// ELF: 0x00000000 411a0000 00616561 62695f70 61757468 A....aeabi_pauth
-// ELF: 0x00000010 61626900 00000107 02890623 00000061 abi........#...a
-// ELF: 0x00000020 65616269 5f666561 74757265 5f616e64 eabi_feature_and
-// ELF: 0x00000030 5f626974 73000100 00010101 0201 _bits.........
-
-
-.aeabi_subsection aeabi_pauthabi, required, uleb128 // test header comment
-.aeabi_attribute Tag_PAuth_Platform, 7
-.aeabi_attribute Tag_PAuth_Schema, 777
-.aeabi_attribute Tag_PAuth_Schema, 777
-.aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-.aeabi_attribute Tag_Feature_BTI, 1
-.aeabi_attribute Tag_Feature_PAC, 1
-.aeabi_attribute Tag_Feature_GCS, 1
-.aeabi_subsection aeabi_pauthabi, required, uleb128
-.aeabi_attribute 1, 7 // Tag_PAuth_Platform
-.aeabi_attribute 2, 777 // Tag_PAuth_Schema
-.aeabi_attribute 2, 777 // Tag_PAuth_Schema
-.aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-.aeabi_attribute 0, 1 // Tag_Feature_BTI
-.aeabi_attribute 1, 1 // Tag_Feature_PAC
-.aeabi_attribute 2, 1 // Tag_Feature_GCS
diff --git a/llvm/test/MC/AArch64/build-attributes-asm-aeabi-aeabi-known.s b/llvm/test/MC/AArch64/build-attributes-asm-aeabi-aeabi-known.s
new file mode 100644
index 0000000000000..22af5bf887e7e
--- /dev/null
+++ b/llvm/test/MC/AArch64/build-attributes-asm-aeabi-aeabi-known.s
@@ -0,0 +1,43 @@
+// RUN: llvm-mc -triple=aarch64 %s -o - | FileCheck %s --check-prefix=ASM
+// RUN: llvm-mc -triple=aarch64 -filetype=obj %s -o - | llvm-readelf --hex-dump=.ARM.attributes - | FileCheck %s --check-prefix=ELF
+
+// ASM: .aeabi_subsection aeabi_pauthabi, required, uleb128
+// ASM-NEXT: .aeabi_attribute 1, 7 // Tag_PAuth_Platform
+// ASM-NEXT: .aeabi_attribute 2, 777 // Tag_PAuth_Schema
+// ASM-NEXT: .aeabi_attribute 2, 777 // Tag_PAuth_Schema
+// ASM-NEXT: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
+// ASM-NEXT: .aeabi_attribute 0, 1 // Tag_Feature_BTI
+// ASM-NEXT: .aeabi_attribute 1, 1 // Tag_Feature_PAC
+// ASM-NEXT: .aeabi_attribute 2, 1 // Tag_Feature_GCS
+// ASM-NEXT: .aeabi_subsection aeabi_pauthabi, required, uleb128
+// ASM-NEXT: .aeabi_attribute 1, 7 // Tag_PAuth_Platform
+// ASM-NEXT: .aeabi_attribute 2, 777 // Tag_PAuth_Schema
+// ASM-NEXT: .aeabi_attribute 2, 777 // Tag_PAuth_Schema
+// ASM-NEXT: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
+// ASM-NEXT: .aeabi_attribute 0, 1 // Tag_Feature_BTI
+// ASM-NEXT: .aeabi_attribute 1, 1 // Tag_Feature_PAC
+// ASM-NEXT: .aeabi_attribute 2, 1 // Tag_Feature_GCS
+
+// ELF: Hex dump of section '.ARM.attributes':
+// ELF-NEXT: 0x00000000 411a0000 00616561 62695f70 61757468 A....aeabi_pauth
+// ELF-NEXT: 0x00000010 61626900 00000107 02890623 00000061 abi........#...a
+// ELF-NEXT: 0x00000020 65616269 5f666561 74757265 5f616e64 eabi_feature_and
+// ELF-NEXT: 0x00000030 5f626974 73000100 00010101 0201 _bits.........
+
+
+.aeabi_subsection aeabi_pauthabi, required, uleb128 // test header comment
+.aeabi_attribute Tag_PAuth_Platform, 7
+.aeabi_attribute Tag_PAuth_Schema, 777
+.aeabi_attribute Tag_PAuth_Schema, 777
+.aeabi_subsection aeabi_feature_and_bits, optional, uleb128
+.aeabi_attribute Tag_Feature_BTI, 1
+.aeabi_attribute Tag_Feature_PAC, 1
+.aeabi_attribute Tag_Feature_GCS, 1
+.aeabi_subsection aeabi_pauthabi, required, uleb128
+.aeabi_attribute 1, 7 // Tag_PAuth_Platform
+.aeabi_attribute 2, 777 // Tag_PAuth_Schema
+.aeabi_attribute 2, 777 // Tag_PAuth_Schema
+.aeabi_subsection aeabi_feature_and_bits, optional, uleb128
+.aeabi_attribute 0, 1 // Tag_Feature_BTI
+.aeabi_attribute 1, 1 // Tag_Feature_PAC
+.aeabi_attribute 2, 1 // Tag_Feature_GCS
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-bti.s b/llvm/test/MC/AArch64/build-attributes-asm-aeabi-bti.s
similarity index 80%
rename from llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-bti.s
rename to llvm/test/MC/AArch64/build-attributes-asm-aeabi-bti.s
index c6003e07e3eec..fa88af5c10b57 100644
--- a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-bti.s
+++ b/llvm/test/MC/AArch64/build-attributes-asm-aeabi-bti.s
@@ -2,9 +2,9 @@
// RUN: llvm-mc -triple=aarch64 -filetype=obj %s -o - | llvm-readelf --hex-dump=.ARM.attributes - | FileCheck %s --check-prefix=ELF
// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-// ASM: .aeabi_attribute 0, 1 // Tag_Feature_BTI
-// ASM: .aeabi_attribute 1, 0 // Tag_Feature_PAC
-// ASM: .aeabi_attribute 2, 0 // Tag_Feature_GCS
+// ASM-NEXT: .aeabi_attribute 0, 1 // Tag_Feature_BTI
+// ASM-NEXT: .aeabi_attribute 1, 0 // Tag_Feature_PAC
+// ASM-NEXT: .aeabi_attribute 2, 0 // Tag_Feature_GCS
// ELF: Hex dump of section '.ARM.attributes':
// ELF-NEXT: 0x00000000 41230000 00616561 62695f66 65617475 A#...aeabi_featu
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-err-attrs.s b/llvm/test/MC/AArch64/build-attributes-asm-aeabi-err-attrs.s
similarity index 100%
rename from llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-err-attrs.s
rename to llvm/test/MC/AArch64/build-attributes-asm-aeabi-err-attrs.s
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-err-headers.s b/llvm/test/MC/AArch64/build-attributes-asm-aeabi-err-headers.s
similarity index 100%
rename from llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-err-headers.s
rename to llvm/test/MC/AArch64/build-attributes-asm-aeabi-err-headers.s
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-gcs.s b/llvm/test/MC/AArch64/build-attributes-asm-aeabi-gcs.s
similarity index 80%
rename from llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-gcs.s
rename to llvm/test/MC/AArch64/build-attributes-asm-aeabi-gcs.s
index 91122fc4b5cf3..420c95f6615e9 100644
--- a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-gcs.s
+++ b/llvm/test/MC/AArch64/build-attributes-asm-aeabi-gcs.s
@@ -2,9 +2,9 @@
// RUN: llvm-mc -triple=aarch64 -filetype=obj %s -o - | llvm-readelf --hex-dump=.ARM.attributes - | FileCheck %s --check-prefix=ELF
// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-// ASM: .aeabi_attribute 0, 0 // Tag_Feature_BTI
-// ASM: .aeabi_attribute 1, 0 // Tag_Feature_PAC
-// ASM: .aeabi_attribute 2, 1 // Tag_Feature_GCS
+// ASM-NEXT: .aeabi_attribute 0, 0 // Tag_Feature_BTI
+// ASM-NEXT: .aeabi_attribute 1, 0 // Tag_Feature_PAC
+// ASM-NEXT: .aeabi_attribute 2, 1 // Tag_Feature_GCS
// ELF: Hex dump of section '.ARM.attributes':
// ELF-NEXT: 0x00000000 41230000 00616561 62695f66 65617475 A#...aeabi_featu
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-mixed.s b/llvm/test/MC/AArch64/build-attributes-asm-aeabi-mixed.s
similarity index 64%
rename from llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-mixed.s
rename to llvm/test/MC/AArch64/build-attributes-asm-aeabi-mixed.s
index 7932517d8e0cf..9a1916a3982d7 100644
--- a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-mixed.s
+++ b/llvm/test/MC/AArch64/build-attributes-asm-aeabi-mixed.s
@@ -2,22 +2,22 @@
// RUN: llvm-mc -triple=aarch64 -filetype=obj %s -o - | llvm-readelf --hex-dump=.ARM.attributes - | FileCheck %s --check-prefix=ELF
// ASM: .aeabi_subsection subsection_a, optional, uleb128
-// ASM: .aeabi_subsection aeabi_subsection, optional, ntbs
-// ASM: .aeabi_subsection subsection_b, required, uleb128
-// ASM: .aeabi_subsection aeabi_pauthabi, required, uleb128
-// ASM: .aeabi_attribute 1, 7 // Tag_PAuth_Platform
-// ASM: .aeabi_attribute 2, 777 // Tag_PAuth_Schema
-// ASM: .aeabi_attribute 1, 9 // Tag_PAuth_Platform
-// ASM: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
-// ASM: .aeabi_attribute 0, 1 // Tag_Feature_BTI
-// ASM: .aeabi_attribute 1, 1 // Tag_Feature_PAC
-// ASM: .aeabi_attribute 2, 1 // Tag_Feature_GCS
-// ASM: .aeabi_subsection aeabi_subsection, optional, ntbs
-// ASM: .aeabi_attribute 5, "Value"
-// ASM: .aeabi_subsection subsection_b, required, uleb128
-// ASM: .aeabi_attribute 6, 536
-// ASM: .aeabi_subsection subsection_a, optional, uleb128
-// ASM: .aeabi_attribute 7, 11
+// ASM-NEXT: .aeabi_subsection aeabi_subsection, optional, ntbs
+// ASM-NEXT: .aeabi_subsection subsection_b, required, uleb128
+// ASM-NEXT: .aeabi_subsection aeabi_pauthabi, required, uleb128
+// ASM-NEXT: .aeabi_attribute 1, 7 // Tag_PAuth_Platform
+// ASM-NEXT: .aeabi_attribute 2, 777 // Tag_PAuth_Schema
+// ASM-NEXT: .aeabi_attribute 1, 9 // Tag_PAuth_Platform
+// ASM-NEXT: .aeabi_subsection aeabi_feature_and_bits, optional, uleb128
+// ASM-NEXT: .aeabi_attribute 0, 1 // Tag_Feature_BTI
+// ASM-NEXT: .aeabi_attribute 1, 1 // Tag_Feature_PAC
+// ASM-NEXT: .aeabi_attribute 2, 1 // Tag_Feature_GCS
+// ASM-NEXT: .aeabi_subsection aeabi_subsection, optional, ntbs
+// ASM-NEXT: .aeabi_attribute 5, "Value"
+// ASM-NEXT: .aeabi_subsection subsection_b, required, uleb128
+// ASM-NEXT: .aeabi_attribute 6, 536
+// ASM-NEXT: .aeabi_subsection subsection_a, optional, uleb128
+// ASM-NEXT: .aeabi_attribute 7, 11
// ELF: Hex dump of section '.ARM.attributes':
// ELF: 0x00000000 41150000 00737562 73656374 696f6e5f A....subsection_
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-none.s b/llvm/test/MC/AArch64/build-attributes-asm-aeabi-none.s
similarity index 100%
rename from llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-none.s
rename to llvm/test/MC/AArch64/build-attributes-asm-aeabi-none.s
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-numerical-tags.s b/llvm/test/MC/AArch64/build-attributes-asm-aeabi-numerical-tags.s
similarity index 100%
rename from llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-numerical-tags.s
rename to llvm/test/MC/AArch64/build-attributes-asm-aeabi-numerical-tags.s
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-out-of-order.s b/llvm/test/MC/AArch64/build-attributes-asm-aeabi-out-of-order.s
similarity index 100%
rename from llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-out-of-order.s
rename to llvm/test/MC/AArch64/build-attributes-asm-aeabi-out-of-order.s
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-pac.s b/llvm/test/MC/AArch64/build-attributes-asm-aeabi-pac.s
similarity index 100%
rename from llvm/test/MC/AArch64/aarch64-build-attributes-asm-aeabi-pac.s
rename to llvm/test/MC/AArch64/build-attributes-asm-aeabi-pac.s
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-non_aeabi-err.s b/llvm/test/MC/AArch64/build-attributes-asm-non_aeabi-err.s
similarity index 100%
rename from llvm/test/MC/AArch64/aarch64-build-attributes-asm-non_aeabi-err.s
rename to llvm/test/MC/AArch64/build-attributes-asm-non_aeabi-err.s
diff --git a/llvm/test/MC/AArch64/aarch64-build-attributes-asm-non_aeabi.s b/llvm/test/MC/AArch64/build-attributes-asm-non_aeabi.s
similarity index 100%
rename from llvm/test/MC/AArch64/aarch64-build-attributes-asm-non_aeabi.s
rename to llvm/test/MC/AArch64/build-attributes-asm-non_aeabi.s
More information about the llvm-commits
mailing list