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
