aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/CodeGen/CodeGenModule.cpp
diff options
context:
space:
mode:
authorDaniil Kovalev <dkovalev@accesssoftek.com>2024-12-16 10:24:09 +0300
committerGitHub <noreply@github.com>2024-12-16 10:24:09 +0300
commitf65a21a4ecc2e712c700c59842b6b9a1d2a9a060 (patch)
tree5980eaf26e610c0e8b669761522236dd82816675 /clang/lib/CodeGen/CodeGenModule.cpp
parent54dac27c57d05d3f5c33bd4ec878bcb0a9c7cb71 (diff)
downloadllvm-f65a21a4ecc2e712c700c59842b6b9a1d2a9a060.zip
llvm-f65a21a4ecc2e712c700c59842b6b9a1d2a9a060.tar.gz
llvm-f65a21a4ecc2e712c700c59842b6b9a1d2a9a060.tar.bz2
[PAC][ELF][AArch64] Support signed personality function pointer (#119361)
Re-apply #113148 after revert in #119331 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 =