diff options
| author | Rafael Espindola <rafael.espindola@gmail.com> | 2011-04-28 03:26:11 +0000 |
|---|---|---|
| committer | Rafael Espindola <rafael.espindola@gmail.com> | 2011-04-28 03:26:11 +0000 |
| commit | bf60fb0a37c043977c355ac68bfae04a47ac9d08 (patch) | |
| tree | 0217dfcb2ad18e4519a5cb463ac747c5775f850f | |
| parent | bfaf477a9922087416c343098a1df63418daac31 (diff) | |
| download | bcm5719-llvm-bf60fb0a37c043977c355ac68bfae04a47ac9d08.tar.gz bcm5719-llvm-bf60fb0a37c043977c355ac68bfae04a47ac9d08.zip | |
Produce the EH_frame# symbols if needed.
llvm-svn: 130378
| -rw-r--r-- | llvm/lib/MC/MCDwarf.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/llvm/lib/MC/MCDwarf.cpp b/llvm/lib/MC/MCDwarf.cpp index ec2bcf85edb..a40e3853c03 100644 --- a/llvm/lib/MC/MCDwarf.cpp +++ b/llvm/lib/MC/MCDwarf.cpp @@ -494,9 +494,10 @@ static const MachineLocation TranslateMachineLocation( namespace { class FrameEmitterImpl { int CFAOffset; + int CIENum; public: - FrameEmitterImpl() : CFAOffset(0) { + FrameEmitterImpl() : CFAOffset(0), CIENum(0) { } const MCSymbol &EmitCIE(MCStreamer &streamer, @@ -623,7 +624,15 @@ const MCSymbol &FrameEmitterImpl::EmitCIE(MCStreamer &streamer, const TargetAsmInfo &asmInfo = context.getTargetAsmInfo(); const MCSection §ion = *asmInfo.getEHFrameSection(); streamer.SwitchSection(§ion); - MCSymbol *sectionStart = context.CreateTempSymbol(); + + MCSymbol *sectionStart; + if (asmInfo.isFunctionEHFrameSymbolPrivate()) + sectionStart = context.CreateTempSymbol(); + else + sectionStart = context.GetOrCreateSymbol(Twine("EH_frame") + Twine(CIENum)); + + CIENum++; + MCSymbol *sectionEnd = streamer.getContext().CreateTempSymbol(); // Length |

