diff options
author | Daniil Kovalev <dkovalev@accesssoftek.com> | 2024-12-16 10:24:09 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-12-16 10:24:09 +0300 |
commit | f65a21a4ecc2e712c700c59842b6b9a1d2a9a060 (patch) | |
tree | 5980eaf26e610c0e8b669761522236dd82816675 /clang/lib/CodeGen/CodeGenModule.cpp | |
parent | 54dac27c57d05d3f5c33bd4ec878bcb0a9c7cb71 (diff) | |
download | llvm-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.cpp | 3 |
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 = |