summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/AsmPrinter/DwarfCFIException.cpp
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2011-04-16 03:51:21 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2011-04-16 03:51:21 +0000
commita83b1770358a983c211a25fa3372550daf107a78 (patch)
tree24e32ba6f7386f1e868dfcff849b11f005506c82 /llvm/lib/CodeGen/AsmPrinter/DwarfCFIException.cpp
parentebddfe60a0e71a9da87b8d0d1545b839793cfe09 (diff)
downloadbcm5719-llvm-a83b1770358a983c211a25fa3372550daf107a78.tar.gz
bcm5719-llvm-a83b1770358a983c211a25fa3372550daf107a78.zip
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. llvm-svn: 129635
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter/DwarfCFIException.cpp')
-rw-r--r--llvm/lib/CodeGen/AsmPrinter/DwarfCFIException.cpp11
1 files changed, 3 insertions, 8 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfCFIException.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfCFIException.cpp
index 8e4cf467b40..6deac9e4978 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DwarfCFIException.cpp
+++ b/llvm/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;
}
}
OpenPOWER on IntegriCloud