[llvm] [AArch64][ELF][llvm-readobj] Support the GCS .note.gnu.property bit (PR #75065)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Dec 11 08:26:59 PST 2023
https://github.com/john-brawn-arm created https://github.com/llvm/llvm-project/pull/75065
This bit was added to the AArch64 ABI by https://github.com/ARM-software/abi-aa/pull/231.
>From 10f5fae37f2a8272ea7ca9c2a8bd5f8e55a43766 Mon Sep 17 00:00:00 2001
From: John Brawn <john.brawn at arm.com>
Date: Tue, 14 Mar 2023 16:18:00 +0000
Subject: [PATCH] [AArch64][ELF][llvm-readobj] Support the GCS
.note.gnu.property bit
This bit was added to the AArch64 ABI by
https://github.com/ARM-software/abi-aa/pull/231.
---
llvm/include/llvm/BinaryFormat/ELF.h | 1 +
.../llvm-readobj/ELF/AArch64/aarch64-note-gnu-property.s | 8 ++++----
llvm/tools/llvm-readobj/ELFDumper.cpp | 1 +
3 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/llvm/include/llvm/BinaryFormat/ELF.h b/llvm/include/llvm/BinaryFormat/ELF.h
index 40c795410f95ad..da38f6ef064f95 100644
--- a/llvm/include/llvm/BinaryFormat/ELF.h
+++ b/llvm/include/llvm/BinaryFormat/ELF.h
@@ -1693,6 +1693,7 @@ enum : unsigned {
enum : unsigned {
GNU_PROPERTY_AARCH64_FEATURE_1_BTI = 1 << 0,
GNU_PROPERTY_AARCH64_FEATURE_1_PAC = 1 << 1,
+ GNU_PROPERTY_AARCH64_FEATURE_1_GCS = 1 << 2,
};
// x86 processor feature bits.
diff --git a/llvm/test/tools/llvm-readobj/ELF/AArch64/aarch64-note-gnu-property.s b/llvm/test/tools/llvm-readobj/ELF/AArch64/aarch64-note-gnu-property.s
index 872a3f150fdf63..377e6f93448ca7 100644
--- a/llvm/test/tools/llvm-readobj/ELF/AArch64/aarch64-note-gnu-property.s
+++ b/llvm/test/tools/llvm-readobj/ELF/AArch64/aarch64-note-gnu-property.s
@@ -5,7 +5,7 @@
// GNU: Displaying notes found in: .note.gnu.property
// GNU-NEXT: Owner Data size Description
// GNU-NEXT: GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0 (property note)
-// GNU-NEXT: Properties: aarch64 feature: BTI, PAC
+// GNU-NEXT: Properties: aarch64 feature: BTI, PAC, GCS
// LLVM: Notes [
// LLVM-NEXT: NoteSection {
@@ -17,7 +17,7 @@
// LLVM-NEXT: Data size: 0x10
// LLVM-NEXT: Type: NT_GNU_PROPERTY_TYPE_0 (property note)
// LLVM-NEXT: Property [
-// LLVM-NEXT: aarch64 feature: BTI, PAC
+// LLVM-NEXT: aarch64 feature: BTI, PAC, GCS
// LLVM-NEXT: ]
// LLVM-NEXT: }
// LLVM-NEXT: }
@@ -30,9 +30,9 @@
.asciz "GNU" /* Name */
.p2align 3
begin:
- /* BTI and PAC property note */
+ /* BTI, PAC, and GCS property note */
.long 0xc0000000 /* Type: GNU_PROPERTY_AARCH64_FEATURE_1_AND */
.long 4 /* Data size */
- .long 3 /* BTI and PAC */
+ .long 7 /* BTI, PAC, GCS */
.p2align 3 /* Align to 8 byte for 64 bit */
end:
diff --git a/llvm/tools/llvm-readobj/ELFDumper.cpp b/llvm/tools/llvm-readobj/ELFDumper.cpp
index 85d5ab68b495c3..5eeab11456d0c4 100644
--- a/llvm/tools/llvm-readobj/ELFDumper.cpp
+++ b/llvm/tools/llvm-readobj/ELFDumper.cpp
@@ -5129,6 +5129,7 @@ static std::string getGNUProperty(uint32_t Type, uint32_t DataSize,
if (Type == GNU_PROPERTY_AARCH64_FEATURE_1_AND) {
DumpBit(GNU_PROPERTY_AARCH64_FEATURE_1_BTI, "BTI");
DumpBit(GNU_PROPERTY_AARCH64_FEATURE_1_PAC, "PAC");
+ DumpBit(GNU_PROPERTY_AARCH64_FEATURE_1_GCS, "GCS");
} else {
DumpBit(GNU_PROPERTY_X86_FEATURE_1_IBT, "IBT");
DumpBit(GNU_PROPERTY_X86_FEATURE_1_SHSTK, "SHSTK");
More information about the llvm-commits
mailing list