[DWARF] Make llvm-dwarfdump display location lists in a .dwp file correctly. Fixes PR38990.
Considers the index when extracting location lists from a .dwp file.
Majority of the patch by David Blaikie.
Reviewers: dblaikie
Differential revision: https://reviews.llvm.org/D53155
llvm-svn: 344807
diff --git a/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp b/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp
index e78e13b..d30600a 100644
--- a/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp
+++ b/llvm/lib/DebugInfo/DWARF/DWARFVerifier.cpp
@@ -325,9 +325,10 @@
case dwarf::DW_UT_split_type: {
Unit = TypeUnitVector.addUnit(llvm::make_unique<DWARFTypeUnit>(
DCtx, S, Header, DCtx.getDebugAbbrev(), &DObj.getRangeSection(),
- DObj.getStringSection(), DObj.getStringOffsetSection(),
- &DObj.getAppleObjCSection(), DObj.getLineSection(),
- DCtx.isLittleEndian(), false, TypeUnitVector));
+ &DObj.getLocSection(), DObj.getStringSection(),
+ DObj.getStringOffsetSection(), &DObj.getAppleObjCSection(),
+ DObj.getLineSection(), DCtx.isLittleEndian(), false,
+ TypeUnitVector));
break;
}
case dwarf::DW_UT_skeleton:
@@ -338,9 +339,10 @@
case 0: {
Unit = CompileUnitVector.addUnit(llvm::make_unique<DWARFCompileUnit>(
DCtx, S, Header, DCtx.getDebugAbbrev(), &DObj.getRangeSection(),
- DObj.getStringSection(), DObj.getStringOffsetSection(),
- &DObj.getAppleObjCSection(), DObj.getLineSection(),
- DCtx.isLittleEndian(), false, CompileUnitVector));
+ &DObj.getLocSection(), DObj.getStringSection(),
+ DObj.getStringOffsetSection(), &DObj.getAppleObjCSection(),
+ DObj.getLineSection(), DCtx.isLittleEndian(), false,
+ CompileUnitVector));
break;
}
default: { llvm_unreachable("Invalid UnitType."); }