https://github.com/jchlanda created 
https://github.com/llvm/llvm-project/pull/188749

None

>From c27d986fce053f3ba437322656f9bca7de4dff9c Mon Sep 17 00:00:00 2001
From: Jakub Chlanda <[email protected]>
Date: Thu, 26 Mar 2026 12:37:48 +0000
Subject: [PATCH] [PAC] [clang] Add default handling for ptrauth elf-got option

---
 clang/lib/Driver/ToolChains/Linux.cpp       |  4 ++++
 clang/test/Driver/aarch64-elf-got-ptrauth.c | 18 ++++++++++++++++++
 clang/test/Driver/aarch64-ptrauth.c         |  2 +-
 3 files changed, 23 insertions(+), 1 deletion(-)
 create mode 100644 clang/test/Driver/aarch64-elf-got-ptrauth.c

diff --git a/clang/lib/Driver/ToolChains/Linux.cpp 
b/clang/lib/Driver/ToolChains/Linux.cpp
index a5277dcac1747..2b3214f462bb2 100644
--- a/clang/lib/Driver/ToolChains/Linux.cpp
+++ b/clang/lib/Driver/ToolChains/Linux.cpp
@@ -540,6 +540,10 @@ static void handlePAuthABI(const Driver &D, const ArgList 
&DriverArgs,
           options::OPT_fno_ptrauth_init_fini_address_discrimination))
     CC1Args.push_back("-fptrauth-init-fini-address-discrimination");
 
+  if (!DriverArgs.hasArg(options::OPT_fptrauth_elf_got,
+                         options::OPT_fno_ptrauth_elf_got))
+    CC1Args.push_back("-fptrauth-elf-got");
+
   if (!DriverArgs.hasArg(options::OPT_faarch64_jump_table_hardening,
                          options::OPT_fno_aarch64_jump_table_hardening))
     CC1Args.push_back("-faarch64-jump-table-hardening");
diff --git a/clang/test/Driver/aarch64-elf-got-ptrauth.c 
b/clang/test/Driver/aarch64-elf-got-ptrauth.c
new file mode 100644
index 0000000000000..962c16f488ab1
--- /dev/null
+++ b/clang/test/Driver/aarch64-elf-got-ptrauth.c
@@ -0,0 +1,18 @@
+// REQUIRES: aarch64-registered-target
+
+// Test default behavior of ptrauth-elf-got flag: if the user passes neither
+// the enable nor disable flag, the driver automatically enables it.
+
+// RUN: %clang -### -c --target=aarch64-linux-pauthtest %s 2>&1 | FileCheck %s 
--check-prefix=DEFAULT
+// DEFAULT: "-cc1"
+// DEFAULT: "-fptrauth-elf-got"
+
+// Explicitly enabled.
+// RUN: %clang -### -c --target=aarch64-linux-pauthtest -fptrauth-elf-got %s 
2>&1 | FileCheck %s --check-prefix=ENABLE
+// ENABLE: "-cc1"
+// ENABLE: "-fptrauth-elf-got"
+
+// Explicitly disabled.
+// RUN: %clang -### -c --target=aarch64-linux-pauthtest -fno-ptrauth-elf-got 
%s 2>&1 | FileCheck %s --check-prefix=DISABLE
+// DISABLE: "-cc1"
+// DISABLE-NOT: "-fptrauth-elf-got"
diff --git a/clang/test/Driver/aarch64-ptrauth.c 
b/clang/test/Driver/aarch64-ptrauth.c
index a67e98fdda714..00aa9c7252edb 100644
--- a/clang/test/Driver/aarch64-ptrauth.c
+++ b/clang/test/Driver/aarch64-ptrauth.c
@@ -57,7 +57,7 @@
 // RUN: %clang -### -c --target=aarch64-linux -mabi=pauthtest %s 2>&1 | 
FileCheck %s --check-prefix=PAUTHABI1
 // RUN: %clang -### -c --target=aarch64-linux-pauthtest %s 2>&1 | FileCheck %s 
--check-prefix=PAUTHABI1
 // PAUTHABI1:      "-cc1"{{.*}} "-triple" "aarch64-unknown-linux-pauthtest"
-// PAUTHABI1-SAME: "-fptrauth-intrinsics" "-fptrauth-calls" 
"-fptrauth-returns" "-fptrauth-auth-traps" 
"-fptrauth-vtable-pointer-address-discrimination" 
"-fptrauth-vtable-pointer-type-discrimination" 
"-fptrauth-type-info-vtable-pointer-discrimination" "-fptrauth-indirect-gotos" 
"-fptrauth-init-fini" "-fptrauth-init-fini-address-discrimination" 
"-faarch64-jump-table-hardening"
+// PAUTHABI1-SAME: "-fptrauth-intrinsics" "-fptrauth-calls" 
"-fptrauth-returns" "-fptrauth-auth-traps" 
"-fptrauth-vtable-pointer-address-discrimination" 
"-fptrauth-vtable-pointer-type-discrimination" 
"-fptrauth-type-info-vtable-pointer-discrimination" "-fptrauth-indirect-gotos" 
"-fptrauth-init-fini" "-fptrauth-init-fini-address-discrimination" 
"-fptrauth-elf-got" "-faarch64-jump-table-hardening"
 // PAUTHABI1-SAME: "-target-abi" "pauthtest"
 // PAUTHABI1-NOT: "-fptrauth-function-pointer-type-discrimination"
 

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to