Skip to content

Commit de5deb7

Browse files
authored
[PAC][ELF][AArch64] Encode several ptrauth features in PAuth core info (llvm#102508)
For llvm_linux platform, define the following meaning for bits 9, 10, 11: - bit 9: set if indirect gotos signing is enabled; - bit 10: set if type info vtable pointer discrimination is enabled; - bit 11: set if function pointer type discrimination is enabled.
1 parent 740f055 commit de5deb7

File tree

6 files changed

+79
-40
lines changed

6 files changed

+79
-40
lines changed

clang/lib/CodeGen/CodeGenModule.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1220,8 +1220,14 @@ void CodeGenModule::Release() {
12201220
(LangOpts.PointerAuthInitFiniAddressDiscrimination
12211221
<< AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_INITFINIADDRDISC) |
12221222
(LangOpts.PointerAuthELFGOT
1223-
<< AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_GOT);
1224-
static_assert(AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_GOT ==
1223+
<< AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_GOT) |
1224+
(LangOpts.PointerAuthIndirectGotos
1225+
<< AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_GOTOS) |
1226+
(LangOpts.PointerAuthTypeInfoVTPtrDiscrimination
1227+
<< AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_TYPEINFOVPTRDISCR) |
1228+
(LangOpts.PointerAuthFunctionTypeDiscrimination
1229+
<< AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_FPTRTYPEDISCR);
1230+
static_assert(AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_FPTRTYPEDISCR ==
12251231
AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_LAST,
12261232
"Update when new enum items are defined");
12271233
if (PAuthABIVersion != 0) {

clang/test/CodeGen/aarch64-elf-pauthabi.c

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
1+
//// TODO: also test with -fptrauth-elf-got when the driver flag is supported
2+
13
// RUN: %clang_cc1 -triple aarch64-linux -emit-llvm -o - \
24
// RUN: -fptrauth-intrinsics \
35
// RUN: -fptrauth-calls \
46
// RUN: -fptrauth-returns \
57
// RUN: -fptrauth-auth-traps \
68
// RUN: -fptrauth-vtable-pointer-address-discrimination \
79
// RUN: -fptrauth-vtable-pointer-type-discrimination \
8-
// RUN: -fptrauth-init-fini %s \
9-
// RUN: -fptrauth-init-fini-address-discrimination %s | \
10+
// RUN: -fptrauth-init-fini \
11+
// RUN: -fptrauth-init-fini-address-discrimination \
12+
// RUN: -fptrauth-indirect-gotos \
13+
// RUN: -fptrauth-type-info-vtable-pointer-discrimination \
14+
// RUN: -fptrauth-function-pointer-type-discrimination %s | \
1015
// RUN: FileCheck %s --check-prefix=ALL
1116

1217
// RUN: %clang_cc1 -triple aarch64-linux -emit-llvm -o - \
@@ -37,8 +42,19 @@
3742
// RUN: -fptrauth-calls -fptrauth-init-fini -fptrauth-init-fini-address-discrimination %s | \
3843
// RUN: FileCheck %s --check-prefix=INITFINIADDR
3944

45+
// RUN: %clang_cc1 -triple aarch64-linux -emit-llvm -o - \
46+
// RUN: -fptrauth-indirect-gotos %s | FileCheck %s --check-prefix=GOTOS
47+
48+
// RUN: %clang_cc1 -triple aarch64-linux -emit-llvm -o - \
49+
// RUN: -fptrauth-calls -fptrauth-type-info-vtable-pointer-discrimination %s | \
50+
// RUN: FileCheck %s --check-prefix=TYPEINFO
51+
52+
// RUN: %clang_cc1 -triple aarch64-linux -emit-llvm -o - \
53+
// RUN: -fptrauth-calls -fptrauth-function-pointer-type-discrimination %s | \
54+
// RUN: FileCheck %s --check-prefix=FPTRTYPE
55+
4056
// ALL: !{i32 1, !"aarch64-elf-pauthabi-platform", i32 268435458}
41-
// ALL: !{i32 1, !"aarch64-elf-pauthabi-version", i32 255}
57+
// ALL: !{i32 1, !"aarch64-elf-pauthabi-version", i32 3839}
4258

4359
// INTRIN: !{i32 1, !"aarch64-elf-pauthabi-platform", i32 268435458}
4460
// INTRIN: !{i32 1, !"aarch64-elf-pauthabi-version", i32 1}
@@ -64,4 +80,13 @@
6480
// INITFINIADDR: !{i32 1, !"aarch64-elf-pauthabi-platform", i32 268435458}
6581
// INITFINIADDR: !{i32 1, !"aarch64-elf-pauthabi-version", i32 194}
6682

83+
// GOTOS: !{i32 1, !"aarch64-elf-pauthabi-platform", i32 268435458}
84+
// GOTOS: !{i32 1, !"aarch64-elf-pauthabi-version", i32 512}
85+
86+
// TYPEINFO: !{i32 1, !"aarch64-elf-pauthabi-platform", i32 268435458}
87+
// TYPEINFO: !{i32 1, !"aarch64-elf-pauthabi-version", i32 1026}
88+
89+
// FPTRTYPE: !{i32 1, !"aarch64-elf-pauthabi-platform", i32 268435458}
90+
// FPTRTYPE: !{i32 1, !"aarch64-elf-pauthabi-version", i32 2050}
91+
6792
void foo() {}

llvm/include/llvm/BinaryFormat/ELF.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1810,8 +1810,11 @@ enum : unsigned {
18101810
AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_INITFINI = 6,
18111811
AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_INITFINIADDRDISC = 7,
18121812
AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_GOT = 8,
1813+
AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_GOTOS = 9,
1814+
AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_TYPEINFOVPTRDISCR = 10,
1815+
AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_FPTRTYPEDISCR = 11,
18131816
AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_LAST =
1814-
AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_GOT,
1817+
AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_FPTRTYPEDISCR,
18151818
};
18161819

18171820
// x86 processor feature bits.

llvm/test/CodeGen/AArch64/note-gnu-property-elf-pauthabi.ll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
!llvm.module.flags = !{!0, !1}
1111

1212
!0 = !{i32 1, !"aarch64-elf-pauthabi-platform", i32 268435458}
13-
!1 = !{i32 1, !"aarch64-elf-pauthabi-version", i32 341}
13+
!1 = !{i32 1, !"aarch64-elf-pauthabi-version", i32 1365}
1414

1515
; ASM: .section .note.gnu.property,"a",@note
1616
; ASM-NEXT: .p2align 3, 0x0
@@ -22,12 +22,12 @@
2222
; ASM-NEXT: .word 3221225473
2323
; ASM-NEXT: .word 16
2424
; ASM-NEXT: .xword 268435458
25-
; ASM-NEXT: .xword 341
25+
; ASM-NEXT: .xword 1365
2626

2727
; OBJ: Displaying notes found in: .note.gnu.property
2828
; OBJ-NEXT: Owner Data size Description
2929
; OBJ-NEXT: GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0 (property note)
30-
; OBJ-NEXT: AArch64 PAuth ABI core info: platform 0x10000002 (llvm_linux), version 0x155 (PointerAuthIntrinsics, !PointerAuthCalls, PointerAuthReturns, !PointerAuthAuthTraps, PointerAuthVTPtrAddressDiscrimination, !PointerAuthVTPtrTypeDiscrimination, PointerAuthInitFini, !PointerAuthInitFiniAddressDiscrimination, PointerAuthELFGOT)
30+
; OBJ-NEXT: AArch64 PAuth ABI core info: platform 0x10000002 (llvm_linux), version 0x555 (PointerAuthIntrinsics, !PointerAuthCalls, PointerAuthReturns, !PointerAuthAuthTraps, PointerAuthVTPtrAddressDiscrimination, !PointerAuthVTPtrTypeDiscrimination, PointerAuthInitFini, !PointerAuthInitFiniAddressDiscrimination, PointerAuthELFGOT, !PointerAuthIndirectGotos, PointerAuthTypeInfoVTPtrDiscrimination, !PointerAuthFPtrTypeDiscrimination)
3131

3232
; ERR: either both or no 'aarch64-elf-pauthabi-platform' and 'aarch64-elf-pauthabi-version' module flags must be present
3333

llvm/test/tools/llvm-readobj/ELF/AArch64/aarch64-feature-pauth.s

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -108,12 +108,12 @@ end:
108108
# RUN: llvm-mc -filetype=obj -triple aarch64-linux-gnu gnu-0x10000002-0.s -o gnu-0x10000002-0.o
109109
# RUN: llvm-readelf --notes gnu-0x10000002-0.o | \
110110
# RUN: FileCheck --check-prefix=ELF -DPLATFORM="0x10000002 (llvm_linux)" \
111-
# RUN: -DVERSION="0x0 (!PointerAuthIntrinsics, !PointerAuthCalls, !PointerAuthReturns, !PointerAuthAuthTraps, !PointerAuthVTPtrAddressDiscrimination, !PointerAuthVTPtrTypeDiscrimination, !PointerAuthInitFini, !PointerAuthInitFiniAddressDiscrimination, !PointerAuthELFGOT)" %s
111+
# RUN: -DVERSION="0x0 (!PointerAuthIntrinsics, !PointerAuthCalls, !PointerAuthReturns, !PointerAuthAuthTraps, !PointerAuthVTPtrAddressDiscrimination, !PointerAuthVTPtrTypeDiscrimination, !PointerAuthInitFini, !PointerAuthInitFiniAddressDiscrimination, !PointerAuthELFGOT, !PointerAuthIndirectGotos, !PointerAuthTypeInfoVTPtrDiscrimination, !PointerAuthFPtrTypeDiscrimination)" %s
112112
# RUN: llvm-readobj --notes gnu-0x10000002-0.o | \
113113
# RUN: FileCheck --check-prefix=OBJ -DPLATFORM="0x10000002 (llvm_linux)" \
114-
# RUN: -DVERSION="0x0 (!PointerAuthIntrinsics, !PointerAuthCalls, !PointerAuthReturns, !PointerAuthAuthTraps, !PointerAuthVTPtrAddressDiscrimination, !PointerAuthVTPtrTypeDiscrimination, !PointerAuthInitFini, !PointerAuthInitFiniAddressDiscrimination, !PointerAuthELFGOT)" %s
114+
# RUN: -DVERSION="0x0 (!PointerAuthIntrinsics, !PointerAuthCalls, !PointerAuthReturns, !PointerAuthAuthTraps, !PointerAuthVTPtrAddressDiscrimination, !PointerAuthVTPtrTypeDiscrimination, !PointerAuthInitFini, !PointerAuthInitFiniAddressDiscrimination, !PointerAuthELFGOT, !PointerAuthIndirectGotos, !PointerAuthTypeInfoVTPtrDiscrimination, !PointerAuthFPtrTypeDiscrimination)" %s
115115

116-
#--- gnu-0x10000002-341.s
116+
#--- gnu-0x10000002-1365.s
117117
.section ".note.gnu.property", "a"
118118
.long 4 // Name length is always 4 ("GNU")
119119
.long end - begin // Data length
@@ -125,19 +125,19 @@ begin:
125125
.long 0xc0000001 // Type: GNU_PROPERTY_AARCH64_FEATURE_PAUTH
126126
.long 16 // Data size
127127
.quad 0x10000002 // PAuth ABI platform
128-
.quad 341 // PAuth ABI version
128+
.quad 1365 // PAuth ABI version
129129
.p2align 3 // Align to 8 byte for 64 bit
130130
end:
131131

132-
# RUN: llvm-mc -filetype=obj -triple aarch64-linux-gnu gnu-0x10000002-341.s -o gnu-0x10000002-341.o
133-
# RUN: llvm-readelf --notes gnu-0x10000002-341.o | \
132+
# RUN: llvm-mc -filetype=obj -triple aarch64-linux-gnu gnu-0x10000002-1365.s -o gnu-0x10000002-1365.o
133+
# RUN: llvm-readelf --notes gnu-0x10000002-1365.o | \
134134
# RUN: FileCheck --check-prefix=ELF -DPLATFORM="0x10000002 (llvm_linux)" \
135-
# RUN: -DVERSION="0x155 (PointerAuthIntrinsics, !PointerAuthCalls, PointerAuthReturns, !PointerAuthAuthTraps, PointerAuthVTPtrAddressDiscrimination, !PointerAuthVTPtrTypeDiscrimination, PointerAuthInitFini, !PointerAuthInitFiniAddressDiscrimination, PointerAuthELFGOT)" %s
136-
# RUN: llvm-readobj --notes gnu-0x10000002-341.o | \
135+
# RUN: -DVERSION="0x555 (PointerAuthIntrinsics, !PointerAuthCalls, PointerAuthReturns, !PointerAuthAuthTraps, PointerAuthVTPtrAddressDiscrimination, !PointerAuthVTPtrTypeDiscrimination, PointerAuthInitFini, !PointerAuthInitFiniAddressDiscrimination, PointerAuthELFGOT, !PointerAuthIndirectGotos, PointerAuthTypeInfoVTPtrDiscrimination, !PointerAuthFPtrTypeDiscrimination)" %s
136+
# RUN: llvm-readobj --notes gnu-0x10000002-1365.o | \
137137
# RUN: FileCheck --check-prefix=OBJ -DPLATFORM="0x10000002 (llvm_linux)" \
138-
# RUN: -DVERSION="0x155 (PointerAuthIntrinsics, !PointerAuthCalls, PointerAuthReturns, !PointerAuthAuthTraps, PointerAuthVTPtrAddressDiscrimination, !PointerAuthVTPtrTypeDiscrimination, PointerAuthInitFini, !PointerAuthInitFiniAddressDiscrimination, PointerAuthELFGOT)" %s
138+
# RUN: -DVERSION="0x555 (PointerAuthIntrinsics, !PointerAuthCalls, PointerAuthReturns, !PointerAuthAuthTraps, PointerAuthVTPtrAddressDiscrimination, !PointerAuthVTPtrTypeDiscrimination, PointerAuthInitFini, !PointerAuthInitFiniAddressDiscrimination, PointerAuthELFGOT, !PointerAuthIndirectGotos, PointerAuthTypeInfoVTPtrDiscrimination, !PointerAuthFPtrTypeDiscrimination)" %s
139139

140-
#--- gnu-0x10000002-170.s
140+
#--- gnu-0x10000002-2730.s
141141
.section ".note.gnu.property", "a"
142142
.long 4 // Name length is always 4 ("GNU")
143143
.long end - begin // Data length
@@ -149,19 +149,19 @@ begin:
149149
.long 0xc0000001 // Type: GNU_PROPERTY_AARCH64_FEATURE_PAUTH
150150
.long 16 // Data size
151151
.quad 0x10000002 // PAuth ABI platform
152-
.quad 170 // PAuth ABI version
152+
.quad 2730 // PAuth ABI version
153153
.p2align 3 // Align to 8 byte for 64 bit
154154
end:
155155

156-
# RUN: llvm-mc -filetype=obj -triple aarch64-linux-gnu gnu-0x10000002-170.s -o gnu-0x10000002-170.o
157-
# RUN: llvm-readelf --notes gnu-0x10000002-170.o | \
156+
# RUN: llvm-mc -filetype=obj -triple aarch64-linux-gnu gnu-0x10000002-2730.s -o gnu-0x10000002-2730.o
157+
# RUN: llvm-readelf --notes gnu-0x10000002-2730.o | \
158158
# RUN: FileCheck --check-prefix=ELF -DPLATFORM="0x10000002 (llvm_linux)" \
159-
# RUN: -DVERSION="0xaa (!PointerAuthIntrinsics, PointerAuthCalls, !PointerAuthReturns, PointerAuthAuthTraps, !PointerAuthVTPtrAddressDiscrimination, PointerAuthVTPtrTypeDiscrimination, !PointerAuthInitFini, PointerAuthInitFiniAddressDiscrimination, !PointerAuthELFGOT)" %s
160-
# RUN: llvm-readobj --notes gnu-0x10000002-170.o | \
159+
# RUN: -DVERSION="0xaaa (!PointerAuthIntrinsics, PointerAuthCalls, !PointerAuthReturns, PointerAuthAuthTraps, !PointerAuthVTPtrAddressDiscrimination, PointerAuthVTPtrTypeDiscrimination, !PointerAuthInitFini, PointerAuthInitFiniAddressDiscrimination, !PointerAuthELFGOT, PointerAuthIndirectGotos, !PointerAuthTypeInfoVTPtrDiscrimination, PointerAuthFPtrTypeDiscrimination)" %s
160+
# RUN: llvm-readobj --notes gnu-0x10000002-2730.o | \
161161
# RUN: FileCheck --check-prefix=OBJ -DPLATFORM="0x10000002 (llvm_linux)" \
162-
# RUN: -DVERSION="0xaa (!PointerAuthIntrinsics, PointerAuthCalls, !PointerAuthReturns, PointerAuthAuthTraps, !PointerAuthVTPtrAddressDiscrimination, PointerAuthVTPtrTypeDiscrimination, !PointerAuthInitFini, PointerAuthInitFiniAddressDiscrimination, !PointerAuthELFGOT)" %s
162+
# RUN: -DVERSION="0xaaa (!PointerAuthIntrinsics, PointerAuthCalls, !PointerAuthReturns, PointerAuthAuthTraps, !PointerAuthVTPtrAddressDiscrimination, PointerAuthVTPtrTypeDiscrimination, !PointerAuthInitFini, PointerAuthInitFiniAddressDiscrimination, !PointerAuthELFGOT, PointerAuthIndirectGotos, !PointerAuthTypeInfoVTPtrDiscrimination, PointerAuthFPtrTypeDiscrimination)" %s
163163

164-
#--- gnu-0x10000002-511.s
164+
#--- gnu-0x10000002-4095.s
165165
.section ".note.gnu.property", "a"
166166
.long 4 // Name length is always 4 ("GNU")
167167
.long end - begin // Data length
@@ -173,19 +173,19 @@ begin:
173173
.long 0xc0000001 // Type: GNU_PROPERTY_AARCH64_FEATURE_PAUTH
174174
.long 16 // Data size
175175
.quad 0x10000002 // PAuth ABI platform
176-
.quad 511 // PAuth ABI version
176+
.quad 4095 // PAuth ABI version
177177
.p2align 3 // Align to 8 byte for 64 bit
178178
end:
179179

180-
# RUN: llvm-mc -filetype=obj -triple aarch64-linux-gnu gnu-0x10000002-511.s -o gnu-0x10000002-511.o
181-
# RUN: llvm-readelf --notes gnu-0x10000002-511.o | \
180+
# RUN: llvm-mc -filetype=obj -triple aarch64-linux-gnu gnu-0x10000002-4095.s -o gnu-0x10000002-4095.o
181+
# RUN: llvm-readelf --notes gnu-0x10000002-4095.o | \
182182
# RUN: FileCheck --check-prefix=ELF -DPLATFORM="0x10000002 (llvm_linux)" \
183-
# RUN: -DVERSION="0x1ff (PointerAuthIntrinsics, PointerAuthCalls, PointerAuthReturns, PointerAuthAuthTraps, PointerAuthVTPtrAddressDiscrimination, PointerAuthVTPtrTypeDiscrimination, PointerAuthInitFini, PointerAuthInitFiniAddressDiscrimination, PointerAuthELFGOT)" %s
184-
# RUN: llvm-readobj --notes gnu-0x10000002-511.o | \
183+
# RUN: -DVERSION="0xfff (PointerAuthIntrinsics, PointerAuthCalls, PointerAuthReturns, PointerAuthAuthTraps, PointerAuthVTPtrAddressDiscrimination, PointerAuthVTPtrTypeDiscrimination, PointerAuthInitFini, PointerAuthInitFiniAddressDiscrimination, PointerAuthELFGOT, PointerAuthIndirectGotos, PointerAuthTypeInfoVTPtrDiscrimination, PointerAuthFPtrTypeDiscrimination)" %s
184+
# RUN: llvm-readobj --notes gnu-0x10000002-4095.o | \
185185
# RUN: FileCheck --check-prefix=OBJ -DPLATFORM="0x10000002 (llvm_linux)" \
186-
# RUN: -DVERSION="0x1ff (PointerAuthIntrinsics, PointerAuthCalls, PointerAuthReturns, PointerAuthAuthTraps, PointerAuthVTPtrAddressDiscrimination, PointerAuthVTPtrTypeDiscrimination, PointerAuthInitFini, PointerAuthInitFiniAddressDiscrimination, PointerAuthELFGOT)" %s
186+
# RUN: -DVERSION="0xfff (PointerAuthIntrinsics, PointerAuthCalls, PointerAuthReturns, PointerAuthAuthTraps, PointerAuthVTPtrAddressDiscrimination, PointerAuthVTPtrTypeDiscrimination, PointerAuthInitFini, PointerAuthInitFiniAddressDiscrimination, PointerAuthELFGOT, PointerAuthIndirectGotos, PointerAuthTypeInfoVTPtrDiscrimination, PointerAuthFPtrTypeDiscrimination)" %s
187187

188-
#--- gnu-0x10000002-512.s
188+
#--- gnu-0x10000002-4096.s
189189
.section ".note.gnu.property", "a"
190190
.long 4 // Name length is always 4 ("GNU")
191191
.long end - begin // Data length
@@ -197,15 +197,15 @@ begin:
197197
.long 0xc0000001 // Type: GNU_PROPERTY_AARCH64_FEATURE_PAUTH
198198
.long 16 // Data size
199199
.quad 0x10000002 // PAuth ABI platform
200-
.quad 512 // PAuth ABI version
200+
.quad 4096 // PAuth ABI version
201201
.p2align 3 // Align to 8 byte for 64 bit
202202
end:
203203

204-
# RUN: llvm-mc -filetype=obj -triple aarch64-linux-gnu gnu-0x10000002-512.s -o gnu-0x10000002-512.o
205-
# RUN: llvm-readelf --notes gnu-0x10000002-512.o | \
206-
# RUN: FileCheck --check-prefix=ELF -DPLATFORM="0x10000002 (llvm_linux)" -DVERSION="0x200 (unknown)" %s
207-
# RUN: llvm-readobj --notes gnu-0x10000002-512.o | \
208-
# RUN: FileCheck --check-prefix=OBJ -DPLATFORM="0x10000002 (llvm_linux)" -DVERSION="0x200 (unknown)" %s
204+
# RUN: llvm-mc -filetype=obj -triple aarch64-linux-gnu gnu-0x10000002-4096.s -o gnu-0x10000002-4096.o
205+
# RUN: llvm-readelf --notes gnu-0x10000002-4096.o | \
206+
# RUN: FileCheck --check-prefix=ELF -DPLATFORM="0x10000002 (llvm_linux)" -DVERSION="0x1000 (unknown)" %s
207+
# RUN: llvm-readobj --notes gnu-0x10000002-4096.o | \
208+
# RUN: FileCheck --check-prefix=OBJ -DPLATFORM="0x10000002 (llvm_linux)" -DVERSION="0x1000 (unknown)" %s
209209

210210
#--- gnu-short.s
211211
.section ".note.gnu.property", "a"

llvm/tools/llvm-readobj/ELFDumper.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5300,8 +5300,13 @@ static bool printAArch64PAuthABICoreInfo(raw_ostream &OS, uint32_t DataSize,
53005300
Flags[AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_INITFINIADDRDISC] =
53015301
"InitFiniAddressDiscrimination";
53025302
Flags[AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_GOT] = "ELFGOT";
5303+
Flags[AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_GOTOS] = "IndirectGotos";
5304+
Flags[AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_TYPEINFOVPTRDISCR] =
5305+
"TypeInfoVTPtrDiscrimination";
5306+
Flags[AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_FPTRTYPEDISCR] =
5307+
"FPtrTypeDiscrimination";
53035308

5304-
static_assert(AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_GOT ==
5309+
static_assert(AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_FPTRTYPEDISCR ==
53055310
AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_LAST,
53065311
"Update when new enum items are defined");
53075312

0 commit comments

Comments
 (0)