diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2011-04-16 03:51:21 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2011-04-16 03:51:21 +0000 |
commit | 30deafc84adf88f643cdc39dc97a37537155347f (patch) | |
tree | 54166d84bd9b295649d616332f3cf919faed906e /lib/CodeGen/AsmPrinter/DwarfCFIException.cpp | |
parent | c5eecbc4ec3e8b6934b2c932735c8ebc1b78f537 (diff) |
Put each personality function in a section. This fixes the gnu ld warning:
error in foo.o; no .eh_frame_hdr table will be created.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129635 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/AsmPrinter/DwarfCFIException.cpp')
-rw-r--r-- | lib/CodeGen/AsmPrinter/DwarfCFIException.cpp | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/lib/CodeGen/AsmPrinter/DwarfCFIException.cpp b/lib/CodeGen/AsmPrinter/DwarfCFIException.cpp index 8e4cf467b4..6deac9e497 100644 --- a/lib/CodeGen/AsmPrinter/DwarfCFIException.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfCFIException.cpp @@ -58,19 +58,14 @@ void DwarfCFIException::EndModule() { const TargetLoweringObjectFile &TLOF = Asm->getObjFileLowering(); unsigned PerEncoding = TLOF.getPersonalityEncoding(); - // Begin eh frame section. - Asm->OutStreamer.SwitchSection(TLOF.getEHFrameSection()); - if ((PerEncoding & 0x70) != dwarf::DW_EH_PE_pcrel) return; // Emit references to all used personality functions const std::vector<const Function*> &Personalities = MMI->getPersonalities(); for (size_t i = 0, e = Personalities.size(); i != e; ++i) { - Asm->OutStreamer.EmitLabel(Asm->GetTempSymbol("personality", i)); const MCSymbol *Sym = Asm->Mang->getSymbol(Personalities[i]); - unsigned Size = Asm->TM.getTargetData()->getPointerSize(); - Asm->OutStreamer.EmitSymbolValue(Sym, Size); + TLOF.emitPersonalityValue(Asm->OutStreamer, Asm->TM, Sym); } } @@ -123,8 +118,8 @@ void DwarfCFIException::BeginFunction(const MachineFunction *MF) { break; } case dwarf::DW_EH_PE_pcrel: { - Sym = Asm->GetTempSymbol("personality", - MMI->getPersonalityIndex()); + MCContext &Context = Asm->OutStreamer.getContext(); + Sym = TLOF.getPersonalityPICSymbol(Per->getName()); break; } } |