mirror of
https://github.com/RPCS3/llvm.git
synced 2025-04-15 04:20:27 +00:00
Make the dumper's output for variable ranges easier to read
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@259804 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
1268fa4230
commit
cae51a87c8
@ -92,7 +92,7 @@ private:
|
|||||||
void printLocalVariableAddrRange(const LocalVariableAddrRange &Range,
|
void printLocalVariableAddrRange(const LocalVariableAddrRange &Range,
|
||||||
const coff_section *Sec,
|
const coff_section *Sec,
|
||||||
StringRef SectionContents);
|
StringRef SectionContents);
|
||||||
void printLocalVariableAddrGap(const LocalVariableAddrGap &Gap);
|
void printLocalVariableAddrGap(StringRef SymData);
|
||||||
|
|
||||||
void printCodeViewSymbolsSubsection(StringRef Subsection,
|
void printCodeViewSymbolsSubsection(StringRef Subsection,
|
||||||
const SectionRef &Section,
|
const SectionRef &Section,
|
||||||
@ -1511,11 +1511,7 @@ void COFFDumper::printCodeViewSymbolsSubsection(StringRef Subsection,
|
|||||||
W.printNumber("MayHaveNoName", DefRangeRegister->MayHaveNoName);
|
W.printNumber("MayHaveNoName", DefRangeRegister->MayHaveNoName);
|
||||||
printLocalVariableAddrRange(DefRangeRegister->Range, Sec,
|
printLocalVariableAddrRange(DefRangeRegister->Range, Sec,
|
||||||
SectionContents);
|
SectionContents);
|
||||||
while (!SymData.empty()) {
|
printLocalVariableAddrGap(SymData);
|
||||||
const LocalVariableAddrGap *Gap;
|
|
||||||
error(consumeObject(SymData, Gap));
|
|
||||||
printLocalVariableAddrGap(*Gap);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case S_DEFRANGE_SUBFIELD_REGISTER: {
|
case S_DEFRANGE_SUBFIELD_REGISTER: {
|
||||||
@ -1529,11 +1525,7 @@ void COFFDumper::printCodeViewSymbolsSubsection(StringRef Subsection,
|
|||||||
DefRangeSubfieldRegisterSym->OffsetInParent);
|
DefRangeSubfieldRegisterSym->OffsetInParent);
|
||||||
printLocalVariableAddrRange(DefRangeSubfieldRegisterSym->Range, Sec,
|
printLocalVariableAddrRange(DefRangeSubfieldRegisterSym->Range, Sec,
|
||||||
SectionContents);
|
SectionContents);
|
||||||
while (!SymData.empty()) {
|
printLocalVariableAddrGap(SymData);
|
||||||
const LocalVariableAddrGap *Gap;
|
|
||||||
error(consumeObject(SymData, Gap));
|
|
||||||
printLocalVariableAddrGap(*Gap);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case S_DEFRANGE_FRAMEPOINTER_REL: {
|
case S_DEFRANGE_FRAMEPOINTER_REL: {
|
||||||
@ -1543,11 +1535,7 @@ void COFFDumper::printCodeViewSymbolsSubsection(StringRef Subsection,
|
|||||||
W.printNumber("Offset", DefRangeFramePointerRel->Offset);
|
W.printNumber("Offset", DefRangeFramePointerRel->Offset);
|
||||||
printLocalVariableAddrRange(DefRangeFramePointerRel->Range, Sec,
|
printLocalVariableAddrRange(DefRangeFramePointerRel->Range, Sec,
|
||||||
SectionContents);
|
SectionContents);
|
||||||
while (!SymData.empty()) {
|
printLocalVariableAddrGap(SymData);
|
||||||
const LocalVariableAddrGap *Gap;
|
|
||||||
error(consumeObject(SymData, Gap));
|
|
||||||
printLocalVariableAddrGap(*Gap);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case S_DEFRANGE_FRAMEPOINTER_REL_FULL_SCOPE: {
|
case S_DEFRANGE_FRAMEPOINTER_REL_FULL_SCOPE: {
|
||||||
@ -1568,11 +1556,7 @@ void COFFDumper::printCodeViewSymbolsSubsection(StringRef Subsection,
|
|||||||
W.printNumber("OffsetInParent", DefRangeRegisterRel->offsetInParent());
|
W.printNumber("OffsetInParent", DefRangeRegisterRel->offsetInParent());
|
||||||
printLocalVariableAddrRange(DefRangeRegisterRel->Range, Sec,
|
printLocalVariableAddrRange(DefRangeRegisterRel->Range, Sec,
|
||||||
SectionContents);
|
SectionContents);
|
||||||
while (!SymData.empty()) {
|
printLocalVariableAddrGap(SymData);
|
||||||
const LocalVariableAddrGap *Gap;
|
|
||||||
error(consumeObject(SymData, Gap));
|
|
||||||
printLocalVariableAddrGap(*Gap);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1892,14 +1876,20 @@ void COFFDumper::printTypeIndex(StringRef FieldName, TypeIndex TI) {
|
|||||||
void COFFDumper::printLocalVariableAddrRange(
|
void COFFDumper::printLocalVariableAddrRange(
|
||||||
const LocalVariableAddrRange &Range, const coff_section *Sec,
|
const LocalVariableAddrRange &Range, const coff_section *Sec,
|
||||||
StringRef SectionContents) {
|
StringRef SectionContents) {
|
||||||
|
DictScope S(W, "LocalVariableAddrRange");
|
||||||
printRelocatedField("OffsetStart", Sec, SectionContents, &Range.OffsetStart);
|
printRelocatedField("OffsetStart", Sec, SectionContents, &Range.OffsetStart);
|
||||||
W.printHex("ISectStart", Range.ISectStart);
|
W.printHex("ISectStart", Range.ISectStart);
|
||||||
W.printNumber("Range", Range.Range);
|
W.printNumber("Range", Range.Range);
|
||||||
}
|
}
|
||||||
|
|
||||||
void COFFDumper::printLocalVariableAddrGap(const LocalVariableAddrGap &Gap) {
|
void COFFDumper::printLocalVariableAddrGap(StringRef SymData) {
|
||||||
W.printNumber("GapStartOffset", Gap.GapStartOffset);
|
while (!SymData.empty()) {
|
||||||
W.printNumber("Range", Gap.Range);
|
const LocalVariableAddrGap *Gap;
|
||||||
|
error(consumeObject(SymData, Gap));
|
||||||
|
ListScope S(W, "LocalVariableAddrGap");
|
||||||
|
W.printNumber("GapStartOffset", Gap->GapStartOffset);
|
||||||
|
W.printNumber("Range", Gap->Range);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
StringRef COFFDumper::getFileNameForFileOffset(uint32_t FileOffset) {
|
StringRef COFFDumper::getFileNameForFileOffset(uint32_t FileOffset) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user