summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2011-04-28 03:26:11 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2011-04-28 03:26:11 +0000
commitbf60fb0a37c043977c355ac68bfae04a47ac9d08 (patch)
tree0217dfcb2ad18e4519a5cb463ac747c5775f850f
parentbfaf477a9922087416c343098a1df63418daac31 (diff)
downloadbcm5719-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.cpp13
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 &section = *asmInfo.getEHFrameSection();
streamer.SwitchSection(&section);
- 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
OpenPOWER on IntegriCloud