diff options
author | Daniil Kovalev <dkovalev@accesssoftek.com> | 2024-12-10 08:48:09 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-12-10 08:48:09 +0300 |
commit | 4fb1cda6606ba75782aa1964835abf1a69e2adae (patch) | |
tree | 92f4ac4ce81884cb03fec46a5ab033c0edb657b9 /llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp | |
parent | 7fa57438c4272fe1d2df1eaed02fde97654ab476 (diff) | |
download | llvm-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 'llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp')
-rw-r--r-- | llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp b/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp index ce50a3c..d5342b5 100644 --- a/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp +++ b/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp @@ -413,7 +413,8 @@ MCSymbol *TargetLoweringObjectFileELF::getCFIPersonalitySymbol( } void TargetLoweringObjectFileELF::emitPersonalityValue( - MCStreamer &Streamer, const DataLayout &DL, const MCSymbol *Sym) const { + MCStreamer &Streamer, const DataLayout &DL, const MCSymbol *Sym, + const MachineModuleInfo *MMI) const { SmallString<64> NameData("DW.ref."); NameData += Sym->getName(); MCSymbolELF *Label = @@ -431,6 +432,13 @@ void TargetLoweringObjectFileELF::emitPersonalityValue( Streamer.emitELFSize(Label, E); Streamer.emitLabel(Label); + emitPersonalityValueImpl(Streamer, DL, Sym, MMI); +} + +void TargetLoweringObjectFileELF::emitPersonalityValueImpl( + MCStreamer &Streamer, const DataLayout &DL, const MCSymbol *Sym, + const MachineModuleInfo *MMI) const { + unsigned Size = DL.getPointerSize(); Streamer.emitSymbolValue(Sym, Size); } |