llvmbot wrote:

<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-aarch64

@llvm/pr-subscribers-llvm-binary-utilities

Author: Daniil Kovalev (kovdan01)

<details>
<summary>Changes</summary>

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.

---
Full diff: https://github.com/llvm/llvm-project/pull/102508.diff


6 Files Affected:

- (modified) clang/lib/CodeGen/CodeGenModule.cpp (+8-2) 
- (modified) clang/test/CodeGen/aarch64-elf-pauthabi.c (+28-3) 
- (modified) llvm/include/llvm/BinaryFormat/ELF.h (+4-1) 
- (modified) llvm/test/CodeGen/AArch64/note-gnu-property-elf-pauthabi.ll (+3-3) 
- (modified) llvm/test/tools/llvm-readobj/ELF/AArch64/aarch64-feature-pauth.s 
(+30-30) 
- (modified) llvm/tools/llvm-readobj/ELFDumper.cpp (+6-1) 


``````````diff
diff --git a/clang/lib/CodeGen/CodeGenModule.cpp 
b/clang/lib/CodeGen/CodeGenModule.cpp
index 9aaf90ccfe04ff..809859fc97559f 100644
--- a/clang/lib/CodeGen/CodeGenModule.cpp
+++ b/clang/lib/CodeGen/CodeGenModule.cpp
@@ -1220,8 +1220,14 @@ void CodeGenModule::Release() {
           (LangOpts.PointerAuthInitFiniAddressDiscrimination
            << AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_INITFINIADDRDISC) |
           (LangOpts.PointerAuthELFGOT
-           << AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_GOT);
-      static_assert(AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_GOT ==
+           << AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_GOT) |
+          (LangOpts.PointerAuthIndirectGotos
+           << AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_GOTOS) |
+          (LangOpts.PointerAuthTypeInfoVTPtrDiscrimination
+           << AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_TYPEINFOVPTRDISCR) |
+          (LangOpts.PointerAuthFunctionTypeDiscrimination
+           << AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_FPTRTYPEDISCR);
+      static_assert(AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_FPTRTYPEDISCR ==
                         AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_LAST,
                     "Update when new enum items are defined");
       if (PAuthABIVersion != 0) {
diff --git a/clang/test/CodeGen/aarch64-elf-pauthabi.c 
b/clang/test/CodeGen/aarch64-elf-pauthabi.c
index d60dcee3618887..023fa8c18e1300 100644
--- a/clang/test/CodeGen/aarch64-elf-pauthabi.c
+++ b/clang/test/CodeGen/aarch64-elf-pauthabi.c
@@ -1,3 +1,5 @@
+//// TODO: also test with -fptrauth-elf-got when the driver flag is supported
+
 // RUN: %clang_cc1 -triple aarch64-linux -emit-llvm -o - \
 // RUN:   -fptrauth-intrinsics \
 // RUN:   -fptrauth-calls \
@@ -5,8 +7,11 @@
 // RUN:   -fptrauth-auth-traps \
 // RUN:   -fptrauth-vtable-pointer-address-discrimination \
 // RUN:   -fptrauth-vtable-pointer-type-discrimination \
-// RUN:   -fptrauth-init-fini %s \
-// RUN:   -fptrauth-init-fini-address-discrimination %s | \
+// RUN:   -fptrauth-init-fini \
+// RUN:   -fptrauth-init-fini-address-discrimination \
+// RUN:   -fptrauth-indirect-gotos \
+// RUN:   -fptrauth-type-info-vtable-pointer-discrimination \
+// RUN:   -fptrauth-function-pointer-type-discrimination %s | \
 // RUN:   FileCheck %s --check-prefix=ALL
 
 // RUN: %clang_cc1 -triple aarch64-linux -emit-llvm -o - \
@@ -37,8 +42,19 @@
 // RUN:   -fptrauth-calls -fptrauth-init-fini 
-fptrauth-init-fini-address-discrimination %s | \
 // RUN:   FileCheck %s --check-prefix=INITFINIADDR
 
+// RUN: %clang_cc1 -triple aarch64-linux -emit-llvm -o - \
+// RUN:   -fptrauth-indirect-gotos %s | FileCheck %s --check-prefix=GOTOS
+
+// RUN: %clang_cc1 -triple aarch64-linux -emit-llvm -o - \
+// RUN:   -fptrauth-calls -fptrauth-type-info-vtable-pointer-discrimination %s 
| \
+// RUN:   FileCheck %s --check-prefix=TYPEINFO
+
+// RUN: %clang_cc1 -triple aarch64-linux -emit-llvm -o - \
+// RUN:   -fptrauth-calls -fptrauth-function-pointer-type-discrimination %s | \
+// RUN:   FileCheck %s --check-prefix=FPTRTYPE
+
 // ALL: !{i32 1, !"aarch64-elf-pauthabi-platform", i32 268435458}
-// ALL: !{i32 1, !"aarch64-elf-pauthabi-version", i32 255}
+// ALL: !{i32 1, !"aarch64-elf-pauthabi-version", i32 3839}
 
 // INTRIN: !{i32 1, !"aarch64-elf-pauthabi-platform", i32 268435458}
 // INTRIN: !{i32 1, !"aarch64-elf-pauthabi-version", i32 1}
@@ -64,4 +80,13 @@
 // INITFINIADDR: !{i32 1, !"aarch64-elf-pauthabi-platform", i32 268435458}
 // INITFINIADDR: !{i32 1, !"aarch64-elf-pauthabi-version", i32 194}
 
+// GOTOS: !{i32 1, !"aarch64-elf-pauthabi-platform", i32 268435458}
+// GOTOS: !{i32 1, !"aarch64-elf-pauthabi-version", i32 512}
+
+// TYPEINFO: !{i32 1, !"aarch64-elf-pauthabi-platform", i32 268435458}
+// TYPEINFO: !{i32 1, !"aarch64-elf-pauthabi-version", i32 1026}
+
+// FPTRTYPE: !{i32 1, !"aarch64-elf-pauthabi-platform", i32 268435458}
+// FPTRTYPE: !{i32 1, !"aarch64-elf-pauthabi-version", i32 2050}
+
 void foo() {}
diff --git a/llvm/include/llvm/BinaryFormat/ELF.h 
b/llvm/include/llvm/BinaryFormat/ELF.h
index c21bb41d386aca..c26663ce4cb159 100644
--- a/llvm/include/llvm/BinaryFormat/ELF.h
+++ b/llvm/include/llvm/BinaryFormat/ELF.h
@@ -1801,8 +1801,11 @@ enum : unsigned {
   AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_INITFINI = 6,
   AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_INITFINIADDRDISC = 7,
   AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_GOT = 8,
+  AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_GOTOS = 9,
+  AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_TYPEINFOVPTRDISCR = 10,
+  AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_FPTRTYPEDISCR = 11,
   AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_LAST =
-      AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_GOT,
+      AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_FPTRTYPEDISCR,
 };
 
 // x86 processor feature bits.
diff --git a/llvm/test/CodeGen/AArch64/note-gnu-property-elf-pauthabi.ll 
b/llvm/test/CodeGen/AArch64/note-gnu-property-elf-pauthabi.ll
index b2ebf1fc041137..e5f675e62577d0 100644
--- a/llvm/test/CodeGen/AArch64/note-gnu-property-elf-pauthabi.ll
+++ b/llvm/test/CodeGen/AArch64/note-gnu-property-elf-pauthabi.ll
@@ -10,7 +10,7 @@
 !llvm.module.flags = !{!0, !1}
 
 !0 = !{i32 1, !"aarch64-elf-pauthabi-platform", i32 268435458}
-!1 = !{i32 1, !"aarch64-elf-pauthabi-version", i32 341}
+!1 = !{i32 1, !"aarch64-elf-pauthabi-version", i32 1365}
 
 ; ASM: .section .note.gnu.property,"a",@note
 ; ASM-NEXT: .p2align 3, 0x0
@@ -22,12 +22,12 @@
 ; ASM-NEXT: .word 3221225473
 ; ASM-NEXT: .word 16
 ; ASM-NEXT: .xword 268435458
-; ASM-NEXT: .xword 341
+; ASM-NEXT: .xword 1365
 
 ; OBJ: Displaying notes found in: .note.gnu.property
 ; OBJ-NEXT:   Owner                 Data size  Description
 ; OBJ-NEXT:   GNU                   0x00000018 NT_GNU_PROPERTY_TYPE_0 
(property note)
-; OBJ-NEXT:   AArch64 PAuth ABI core info: platform 0x10000002 (llvm_linux), 
version 0x155 (PointerAuthIntrinsics, !PointerAuthCalls, PointerAuthReturns, 
!PointerAuthAuthTraps, PointerAuthVTPtrAddressDiscrimination, 
!PointerAuthVTPtrTypeDiscrimination, PointerAuthInitFini, 
!PointerAuthInitFiniAddressDiscrimination, PointerAuthELFGOT)
+; 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)
 
 ; ERR: either both or no 'aarch64-elf-pauthabi-platform' and 
'aarch64-elf-pauthabi-version' module flags must be present
 
diff --git a/llvm/test/tools/llvm-readobj/ELF/AArch64/aarch64-feature-pauth.s 
b/llvm/test/tools/llvm-readobj/ELF/AArch64/aarch64-feature-pauth.s
index a71f8a231545f2..aaf28ed4a1e79a 100644
--- a/llvm/test/tools/llvm-readobj/ELF/AArch64/aarch64-feature-pauth.s
+++ b/llvm/test/tools/llvm-readobj/ELF/AArch64/aarch64-feature-pauth.s
@@ -108,12 +108,12 @@ end:
 # RUN: llvm-mc -filetype=obj -triple aarch64-linux-gnu gnu-0x10000002-0.s -o 
gnu-0x10000002-0.o
 # RUN: llvm-readelf --notes gnu-0x10000002-0.o | \
 # RUN:   FileCheck --check-prefix=ELF -DPLATFORM="0x10000002 (llvm_linux)" \
-# RUN:   -DVERSION="0x0 (!PointerAuthIntrinsics, !PointerAuthCalls, 
!PointerAuthReturns, !PointerAuthAuthTraps, 
!PointerAuthVTPtrAddressDiscrimination, !PointerAuthVTPtrTypeDiscrimination, 
!PointerAuthInitFini, !PointerAuthInitFiniAddressDiscrimination, 
!PointerAuthELFGOT)" %s
+# RUN:   -DVERSION="0x0 (!PointerAuthIntrinsics, !PointerAuthCalls, 
!PointerAuthReturns, !PointerAuthAuthTraps, 
!PointerAuthVTPtrAddressDiscrimination, !PointerAuthVTPtrTypeDiscrimination, 
!PointerAuthInitFini, !PointerAuthInitFiniAddressDiscrimination, 
!PointerAuthELFGOT, !PointerAuthIndirectGotos, 
!PointerAuthTypeInfoVTPtrDiscrimination, !PointerAuthFPtrTypeDiscrimination)" %s
 # RUN: llvm-readobj --notes gnu-0x10000002-0.o | \
 # RUN:   FileCheck --check-prefix=OBJ -DPLATFORM="0x10000002 (llvm_linux)" \
-# RUN:   -DVERSION="0x0 (!PointerAuthIntrinsics, !PointerAuthCalls, 
!PointerAuthReturns, !PointerAuthAuthTraps, 
!PointerAuthVTPtrAddressDiscrimination, !PointerAuthVTPtrTypeDiscrimination, 
!PointerAuthInitFini, !PointerAuthInitFiniAddressDiscrimination, 
!PointerAuthELFGOT)" %s
+# RUN:   -DVERSION="0x0 (!PointerAuthIntrinsics, !PointerAuthCalls, 
!PointerAuthReturns, !PointerAuthAuthTraps, 
!PointerAuthVTPtrAddressDiscrimination, !PointerAuthVTPtrTypeDiscrimination, 
!PointerAuthInitFini, !PointerAuthInitFiniAddressDiscrimination, 
!PointerAuthELFGOT, !PointerAuthIndirectGotos, 
!PointerAuthTypeInfoVTPtrDiscrimination, !PointerAuthFPtrTypeDiscrimination)" %s
 
-#--- gnu-0x10000002-341.s
+#--- gnu-0x10000002-1365.s
 .section ".note.gnu.property", "a"
   .long 4           // Name length is always 4 ("GNU")
   .long end - begin // Data length
@@ -125,19 +125,19 @@ begin:
   .long 0xc0000001  // Type: GNU_PROPERTY_AARCH64_FEATURE_PAUTH
   .long 16          // Data size
   .quad 0x10000002  // PAuth ABI platform
-  .quad 341          // PAuth ABI version
+  .quad 1365        // PAuth ABI version
   .p2align 3        // Align to 8 byte for 64 bit
 end:
 
-# RUN: llvm-mc -filetype=obj -triple aarch64-linux-gnu gnu-0x10000002-341.s -o 
gnu-0x10000002-341.o
-# RUN: llvm-readelf --notes gnu-0x10000002-341.o | \
+# RUN: llvm-mc -filetype=obj -triple aarch64-linux-gnu gnu-0x10000002-1365.s 
-o gnu-0x10000002-1365.o
+# RUN: llvm-readelf --notes gnu-0x10000002-1365.o | \
 # RUN:   FileCheck --check-prefix=ELF -DPLATFORM="0x10000002 (llvm_linux)" \
-# RUN:   -DVERSION="0x155 (PointerAuthIntrinsics, !PointerAuthCalls, 
PointerAuthReturns, !PointerAuthAuthTraps, 
PointerAuthVTPtrAddressDiscrimination, !PointerAuthVTPtrTypeDiscrimination, 
PointerAuthInitFini, !PointerAuthInitFiniAddressDiscrimination, 
PointerAuthELFGOT)" %s
-# RUN: llvm-readobj --notes gnu-0x10000002-341.o | \
+# RUN:   -DVERSION="0x555 (PointerAuthIntrinsics, !PointerAuthCalls, 
PointerAuthReturns, !PointerAuthAuthTraps, 
PointerAuthVTPtrAddressDiscrimination, !PointerAuthVTPtrTypeDiscrimination, 
PointerAuthInitFini, !PointerAuthInitFiniAddressDiscrimination, 
PointerAuthELFGOT, !PointerAuthIndirectGotos, 
PointerAuthTypeInfoVTPtrDiscrimination, !PointerAuthFPtrTypeDiscrimination)" %s
+# RUN: llvm-readobj --notes gnu-0x10000002-1365.o | \
 # RUN:   FileCheck --check-prefix=OBJ -DPLATFORM="0x10000002 (llvm_linux)" \
-# RUN:   -DVERSION="0x155 (PointerAuthIntrinsics, !PointerAuthCalls, 
PointerAuthReturns, !PointerAuthAuthTraps, 
PointerAuthVTPtrAddressDiscrimination, !PointerAuthVTPtrTypeDiscrimination, 
PointerAuthInitFini, !PointerAuthInitFiniAddressDiscrimination, 
PointerAuthELFGOT)" %s
+# RUN:   -DVERSION="0x555 (PointerAuthIntrinsics, !PointerAuthCalls, 
PointerAuthReturns, !PointerAuthAuthTraps, 
PointerAuthVTPtrAddressDiscrimination, !PointerAuthVTPtrTypeDiscrimination, 
PointerAuthInitFini, !PointerAuthInitFiniAddressDiscrimination, 
PointerAuthELFGOT, !PointerAuthIndirectGotos, 
PointerAuthTypeInfoVTPtrDiscrimination, !PointerAuthFPtrTypeDiscrimination)" %s
 
-#--- gnu-0x10000002-170.s
+#--- gnu-0x10000002-2730.s
 .section ".note.gnu.property", "a"
   .long 4           // Name length is always 4 ("GNU")
   .long end - begin // Data length
@@ -149,19 +149,19 @@ begin:
   .long 0xc0000001  // Type: GNU_PROPERTY_AARCH64_FEATURE_PAUTH
   .long 16          // Data size
   .quad 0x10000002  // PAuth ABI platform
-  .quad 170         // PAuth ABI version
+  .quad 2730        // PAuth ABI version
   .p2align 3        // Align to 8 byte for 64 bit
 end:
 
-# RUN: llvm-mc -filetype=obj -triple aarch64-linux-gnu gnu-0x10000002-170.s -o 
gnu-0x10000002-170.o
-# RUN: llvm-readelf --notes gnu-0x10000002-170.o | \
+# RUN: llvm-mc -filetype=obj -triple aarch64-linux-gnu gnu-0x10000002-2730.s 
-o gnu-0x10000002-2730.o
+# RUN: llvm-readelf --notes gnu-0x10000002-2730.o | \
 # RUN:   FileCheck --check-prefix=ELF -DPLATFORM="0x10000002 (llvm_linux)" \
-# RUN:   -DVERSION="0xaa (!PointerAuthIntrinsics, PointerAuthCalls, 
!PointerAuthReturns, PointerAuthAuthTraps, 
!PointerAuthVTPtrAddressDiscrimination, PointerAuthVTPtrTypeDiscrimination, 
!PointerAuthInitFini, PointerAuthInitFiniAddressDiscrimination, 
!PointerAuthELFGOT)" %s
-# RUN: llvm-readobj --notes gnu-0x10000002-170.o | \
+# RUN:   -DVERSION="0xaaa (!PointerAuthIntrinsics, PointerAuthCalls, 
!PointerAuthReturns, PointerAuthAuthTraps, 
!PointerAuthVTPtrAddressDiscrimination, PointerAuthVTPtrTypeDiscrimination, 
!PointerAuthInitFini, PointerAuthInitFiniAddressDiscrimination, 
!PointerAuthELFGOT, PointerAuthIndirectGotos, 
!PointerAuthTypeInfoVTPtrDiscrimination, PointerAuthFPtrTypeDiscrimination)" %s
+# RUN: llvm-readobj --notes gnu-0x10000002-2730.o | \
 # RUN:   FileCheck --check-prefix=OBJ -DPLATFORM="0x10000002 (llvm_linux)" \
-# RUN:   -DVERSION="0xaa (!PointerAuthIntrinsics, PointerAuthCalls, 
!PointerAuthReturns, PointerAuthAuthTraps, 
!PointerAuthVTPtrAddressDiscrimination, PointerAuthVTPtrTypeDiscrimination, 
!PointerAuthInitFini, PointerAuthInitFiniAddressDiscrimination, 
!PointerAuthELFGOT)" %s
+# RUN:   -DVERSION="0xaaa (!PointerAuthIntrinsics, PointerAuthCalls, 
!PointerAuthReturns, PointerAuthAuthTraps, 
!PointerAuthVTPtrAddressDiscrimination, PointerAuthVTPtrTypeDiscrimination, 
!PointerAuthInitFini, PointerAuthInitFiniAddressDiscrimination, 
!PointerAuthELFGOT, PointerAuthIndirectGotos, 
!PointerAuthTypeInfoVTPtrDiscrimination, PointerAuthFPtrTypeDiscrimination)" %s
 
-#--- gnu-0x10000002-511.s
+#--- gnu-0x10000002-4095.s
 .section ".note.gnu.property", "a"
   .long 4           // Name length is always 4 ("GNU")
   .long end - begin // Data length
@@ -173,19 +173,19 @@ begin:
   .long 0xc0000001  // Type: GNU_PROPERTY_AARCH64_FEATURE_PAUTH
   .long 16          // Data size
   .quad 0x10000002  // PAuth ABI platform
-  .quad 511         // PAuth ABI version
+  .quad 4095        // PAuth ABI version
   .p2align 3        // Align to 8 byte for 64 bit
 end:
 
-# RUN: llvm-mc -filetype=obj -triple aarch64-linux-gnu gnu-0x10000002-511.s -o 
gnu-0x10000002-511.o
-# RUN: llvm-readelf --notes gnu-0x10000002-511.o | \
+# RUN: llvm-mc -filetype=obj -triple aarch64-linux-gnu gnu-0x10000002-4095.s 
-o gnu-0x10000002-4095.o
+# RUN: llvm-readelf --notes gnu-0x10000002-4095.o | \
 # RUN:   FileCheck --check-prefix=ELF -DPLATFORM="0x10000002 (llvm_linux)" \
-# RUN:   -DVERSION="0x1ff (PointerAuthIntrinsics, PointerAuthCalls, 
PointerAuthReturns, PointerAuthAuthTraps, 
PointerAuthVTPtrAddressDiscrimination, PointerAuthVTPtrTypeDiscrimination, 
PointerAuthInitFini, PointerAuthInitFiniAddressDiscrimination, 
PointerAuthELFGOT)" %s
-# RUN: llvm-readobj --notes gnu-0x10000002-511.o | \
+# RUN:   -DVERSION="0xfff (PointerAuthIntrinsics, PointerAuthCalls, 
PointerAuthReturns, PointerAuthAuthTraps, 
PointerAuthVTPtrAddressDiscrimination, PointerAuthVTPtrTypeDiscrimination, 
PointerAuthInitFini, PointerAuthInitFiniAddressDiscrimination, 
PointerAuthELFGOT, PointerAuthIndirectGotos, 
PointerAuthTypeInfoVTPtrDiscrimination, PointerAuthFPtrTypeDiscrimination)" %s
+# RUN: llvm-readobj --notes gnu-0x10000002-4095.o | \
 # RUN:   FileCheck --check-prefix=OBJ -DPLATFORM="0x10000002 (llvm_linux)" \
-# RUN:   -DVERSION="0x1ff (PointerAuthIntrinsics, PointerAuthCalls, 
PointerAuthReturns, PointerAuthAuthTraps, 
PointerAuthVTPtrAddressDiscrimination, PointerAuthVTPtrTypeDiscrimination, 
PointerAuthInitFini, PointerAuthInitFiniAddressDiscrimination, 
PointerAuthELFGOT)" %s
+# RUN:   -DVERSION="0xfff (PointerAuthIntrinsics, PointerAuthCalls, 
PointerAuthReturns, PointerAuthAuthTraps, 
PointerAuthVTPtrAddressDiscrimination, PointerAuthVTPtrTypeDiscrimination, 
PointerAuthInitFini, PointerAuthInitFiniAddressDiscrimination, 
PointerAuthELFGOT, PointerAuthIndirectGotos, 
PointerAuthTypeInfoVTPtrDiscrimination, PointerAuthFPtrTypeDiscrimination)" %s
 
-#--- gnu-0x10000002-512.s
+#--- gnu-0x10000002-4096.s
 .section ".note.gnu.property", "a"
   .long 4           // Name length is always 4 ("GNU")
   .long end - begin // Data length
@@ -197,15 +197,15 @@ begin:
   .long 0xc0000001  // Type: GNU_PROPERTY_AARCH64_FEATURE_PAUTH
   .long 16          // Data size
   .quad 0x10000002  // PAuth ABI platform
-  .quad 512         // PAuth ABI version
+  .quad 4096        // PAuth ABI version
   .p2align 3        // Align to 8 byte for 64 bit
 end:
 
-# RUN: llvm-mc -filetype=obj -triple aarch64-linux-gnu gnu-0x10000002-512.s -o 
gnu-0x10000002-512.o
-# RUN: llvm-readelf --notes gnu-0x10000002-512.o | \
-# RUN:   FileCheck --check-prefix=ELF -DPLATFORM="0x10000002 (llvm_linux)" 
-DVERSION="0x200 (unknown)" %s
-# RUN: llvm-readobj --notes gnu-0x10000002-512.o | \
-# RUN:   FileCheck --check-prefix=OBJ -DPLATFORM="0x10000002 (llvm_linux)" 
-DVERSION="0x200 (unknown)" %s
+# RUN: llvm-mc -filetype=obj -triple aarch64-linux-gnu gnu-0x10000002-4096.s 
-o gnu-0x10000002-4096.o
+# RUN: llvm-readelf --notes gnu-0x10000002-4096.o | \
+# RUN:   FileCheck --check-prefix=ELF -DPLATFORM="0x10000002 (llvm_linux)" 
-DVERSION="0x1000 (unknown)" %s
+# RUN: llvm-readobj --notes gnu-0x10000002-4096.o | \
+# RUN:   FileCheck --check-prefix=OBJ -DPLATFORM="0x10000002 (llvm_linux)" 
-DVERSION="0x1000 (unknown)" %s
 
 #--- gnu-short.s
 .section ".note.gnu.property", "a"
diff --git a/llvm/tools/llvm-readobj/ELFDumper.cpp 
b/llvm/tools/llvm-readobj/ELFDumper.cpp
index 1457ae8cb41733..ddaed8891be78c 100644
--- a/llvm/tools/llvm-readobj/ELFDumper.cpp
+++ b/llvm/tools/llvm-readobj/ELFDumper.cpp
@@ -5287,8 +5287,13 @@ static bool printAArch64PAuthABICoreInfo(raw_ostream 
&OS, uint32_t DataSize,
     Flags[AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_INITFINIADDRDISC] =
         "InitFiniAddressDiscrimination";
     Flags[AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_GOT] = "ELFGOT";
+    Flags[AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_GOTOS] = "IndirectGotos";
+    Flags[AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_TYPEINFOVPTRDISCR] =
+        "TypeInfoVTPtrDiscrimination";
+    Flags[AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_FPTRTYPEDISCR] =
+        "FPtrTypeDiscrimination";
 
-    static_assert(AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_GOT ==
+    static_assert(AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_FPTRTYPEDISCR ==
                       AARCH64_PAUTH_PLATFORM_LLVM_LINUX_VERSION_LAST,
                   "Update when new enum items are defined");
 

``````````

</details>


https://github.com/llvm/llvm-project/pull/102508
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to