mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-21 18:24:23 +00:00
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
This commit is contained in:
@ -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();
|
||||
|
Reference in New Issue
Block a user