aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/CodeGen/CodeGenModule.cpp
diff options
context:
space:
mode:
authorDaniil Kovalev <dkovalev@accesssoftek.com>2024-12-10 08:48:09 +0300
committerGitHub <noreply@github.com>2024-12-10 08:48:09 +0300
commit4fb1cda6606ba75782aa1964835abf1a69e2adae (patch)
tree92f4ac4ce81884cb03fec46a5ab033c0edb657b9 /clang/lib/CodeGen/CodeGenModule.cpp
parent7fa57438c4272fe1d2df1eaed02fde97654ab476 (diff)
downloadllvm-4fb1cda6606ba75782aa1964835abf1a69e2adae.zip
llvm-4fb1cda6606ba75782aa1964835abf1a69e2adae.tar.gz
llvm-4fb1cda6606ba75782aa1964835abf1a69e2adae.tar.bz2
[PAC][ELF][AArch64] Support signed personality function pointer (#113148)
If function pointer signing is enabled, sign personality function pointer stored in `.DW.ref.__gxx_personality_v0` section with IA key, 0x7EAD = `ptrauth_string_discriminator("personality")` constant discriminator and address diversity enabled.
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
-rw-r--r--clang/lib/CodeGen/CodeGenModule.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp
index d3d5c07..841fb1c 100644
--- a/clang/lib/CodeGen/CodeGenModule.cpp
+++ b/clang/lib/CodeGen/CodeGenModule.cpp
@@ -1218,6 +1218,9 @@ void CodeGenModule::Release() {
getModule().addModuleFlag(llvm::Module::Min, "ptrauth-elf-got", 1);
if (getTriple().isOSLinux()) {
+ if (LangOpts.PointerAuthCalls)
+ getModule().addModuleFlag(llvm::Module::Min, "ptrauth-sign-personality",
+ 1);
assert(getTriple().isOSBinFormatELF());
using namespace llvm::ELF;
uint64_t PAuthABIVersion =