diff options
author | Renato Golin <renato.golin@arm.com> | 2011-03-16 21:05:52 +0000 |
---|---|---|
committer | Renato Golin <renato.golin@arm.com> | 2011-03-16 21:05:52 +0000 |
commit | 2589d0aedf97f1f34246fe89b27270c9d998d19f (patch) | |
tree | 855a57726b334f2754c4301bb145cc00b35ec0e1 /lib/CodeGen/AsmPrinter | |
parent | 0a00615b340b47c6af72998cca35b69fb8e5aa5f (diff) | |
download | external_llvm-2589d0aedf97f1f34246fe89b27270c9d998d19f.zip external_llvm-2589d0aedf97f1f34246fe89b27270c9d998d19f.tar.gz external_llvm-2589d0aedf97f1f34246fe89b27270c9d998d19f.tar.bz2 |
Patch to a fix dwarf relocation problem on ARM. One-line fix plus the test where it used to break.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127757 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/AsmPrinter')
-rw-r--r-- | lib/CodeGen/AsmPrinter/DwarfDebug.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index 15330c2..cb542aef 100644 --- a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -3272,7 +3272,9 @@ void DwarfDebug::emitDIE(DIE *Die) { case dwarf::DW_AT_location: { if (UseDotDebugLocEntry.count(Die) != 0) { DIELabel *L = cast<DIELabel>(Values[i]); - Asm->EmitLabelDifference(L->getValue(), DwarfDebugLocSectionSym, 4); + // Emitting reference to label directly, so the assembler can + // emit the relocations and the offset automatically. + Asm->EmitReference(L->getValue(), dwarf::DW_EH_PE_udata4); } else Values[i]->EmitValue(Asm, Form); break; @@ -3623,6 +3625,7 @@ void DwarfDebug::emitDebugLoc() { if (DotDebugLocEntries.empty()) return; + // Group debug entries. for (SmallVector<DotDebugLocEntry, 4>::iterator I = DotDebugLocEntries.begin(), E = DotDebugLocEntries.end(); I != E; ++I) { @@ -3631,7 +3634,7 @@ void DwarfDebug::emitDebugLoc() { Entry.Merge(I+1); } - // Start the dwarf loc section. + // Start the dwarf location section. Asm->OutStreamer.SwitchSection( Asm->getObjFileLowering().getDwarfLocSection()); unsigned char Size = Asm->getTargetData().getPointerSize(); |