Skip to content

Commit ea59dbb

Browse files
committed
[PAC][llvm-readobj][AArch64][ELF] Support GNU_PROPERTY_AARCH64_FEATURE_PAUTH
This adds support for `GNU_PROPERTY_AARCH64_FEATURE_PAUTH` feature handling in llvm-readobj and llvm-readelf. The following constants for supported platforms are also introduced: - `AARCH64_PAUTH_PLATFORM_INVALID = 0x0` - `AARCH64_PAUTH_PLATFORM_BAREMETAL = 0x1` - `AARCH64_PAUTH_PLATFORM_LLVM_LINUX = 0x10000002` For the llvm_linux platform, output of the tools contains descriptions of PAuth features which are enabled/disabled depending on the version value. Version value bits correspond to the following `LangOptions`: - bit 0: `PointerAuthIntrinsics`; - bit 1: `PointerAuthCalls`; - bit 2: `PointerAuthReturns`; - bit 3: `PointerAuthAuthTraps`; - bit 4: `PointerAuthVTPtrAddressDiscrimination`; - bit 5: `PointerAuthVTPtrTypeDiscrimination`; - bit 6: `PointerAuthInitFini`.
1 parent 4a21e3a commit ea59dbb

File tree

4 files changed

+421
-94
lines changed

4 files changed

+421
-94
lines changed

llvm/include/llvm/BinaryFormat/ELF.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1738,6 +1738,7 @@ enum : unsigned {
17381738
GNU_PROPERTY_STACK_SIZE = 1,
17391739
GNU_PROPERTY_NO_COPY_ON_PROTECTED = 2,
17401740
GNU_PROPERTY_AARCH64_FEATURE_1_AND = 0xc0000000,
1741+
GNU_PROPERTY_AARCH64_FEATURE_PAUTH = 0xc0000001,
17411742
GNU_PROPERTY_X86_FEATURE_1_AND = 0xc0000002,
17421743

17431744
GNU_PROPERTY_X86_UINT32_OR_LO = 0xc0008000,
@@ -1756,6 +1757,13 @@ enum : unsigned {
17561757
GNU_PROPERTY_AARCH64_FEATURE_1_GCS = 1 << 2,
17571758
};
17581759

1760+
// aarch64 PAuth platforms.
1761+
enum : unsigned {
1762+
AARCH64_PAUTH_PLATFORM_INVALID = 0x0,
1763+
AARCH64_PAUTH_PLATFORM_BAREMETAL = 0x1,
1764+
AARCH64_PAUTH_PLATFORM_LLVM_LINUX = 0x10000002,
1765+
};
1766+
17591767
// x86 processor feature bits.
17601768
enum : unsigned {
17611769
GNU_PROPERTY_X86_FEATURE_1_IBT = 1 << 0,

0 commit comments

Comments
 (0)