mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-26 05:32:25 +00:00
llvm-dwarfdump: reorder dwo sections to immediately proceed their non-dwo equivalents
This makes it easier to write a test that's mostly shared between fission and non-fission (using FileCheck's multiple prefix support). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198806 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
19e5156f4e
commit
4130da81de
@ -66,12 +66,27 @@ void DWARFContext::dump(raw_ostream &OS, DIDumpType DumpType) {
|
||||
getDebugAbbrev()->dump(OS);
|
||||
}
|
||||
|
||||
if (DumpType == DIDT_All || DumpType == DIDT_AbbrevDwo) {
|
||||
const DWARFDebugAbbrev *D = getDebugAbbrevDWO();
|
||||
if (D) {
|
||||
OS << "\n.debug_abbrev.dwo contents:\n";
|
||||
getDebugAbbrevDWO()->dump(OS);
|
||||
}
|
||||
}
|
||||
|
||||
if (DumpType == DIDT_All || DumpType == DIDT_Info) {
|
||||
OS << "\n.debug_info contents:\n";
|
||||
for (unsigned i = 0, e = getNumCompileUnits(); i != e; ++i)
|
||||
getCompileUnitAtIndex(i)->dump(OS);
|
||||
}
|
||||
|
||||
if (DumpType == DIDT_All || DumpType == DIDT_InfoDwo)
|
||||
if (getNumDWOCompileUnits()) {
|
||||
OS << "\n.debug_info.dwo contents:\n";
|
||||
for (unsigned i = 0, e = getNumDWOCompileUnits(); i != e; ++i)
|
||||
getDWOCompileUnitAtIndex(i)->dump(OS);
|
||||
}
|
||||
|
||||
if (DumpType == DIDT_All || DumpType == DIDT_Types) {
|
||||
OS << "\n.debug_types contents:\n";
|
||||
for (unsigned i = 0, e = getNumTypeUnits(); i != e; ++i)
|
||||
@ -126,6 +141,18 @@ void DWARFContext::dump(raw_ostream &OS, DIDumpType DumpType) {
|
||||
}
|
||||
}
|
||||
|
||||
if (DumpType == DIDT_All || DumpType == DIDT_StrDwo)
|
||||
if (!getStringDWOSection().empty()) {
|
||||
OS << "\n.debug_str.dwo contents:\n";
|
||||
DataExtractor strDWOData(getStringDWOSection(), isLittleEndian(), 0);
|
||||
offset = 0;
|
||||
uint32_t strDWOOffset = 0;
|
||||
while (const char *s = strDWOData.getCStr(&offset)) {
|
||||
OS << format("0x%8.8x: \"%s\"\n", strDWOOffset, s);
|
||||
strDWOOffset = offset;
|
||||
}
|
||||
}
|
||||
|
||||
if (DumpType == DIDT_All || DumpType == DIDT_Ranges) {
|
||||
OS << "\n.debug_ranges contents:\n";
|
||||
// In fact, different compile units may have different address byte
|
||||
@ -156,33 +183,6 @@ void DWARFContext::dump(raw_ostream &OS, DIDumpType DumpType) {
|
||||
dumpPubSection(OS, "debug_gnu_pubtypes", getGnuPubTypesSection(),
|
||||
isLittleEndian(), true /* GnuStyle */);
|
||||
|
||||
if (DumpType == DIDT_All || DumpType == DIDT_AbbrevDwo) {
|
||||
const DWARFDebugAbbrev *D = getDebugAbbrevDWO();
|
||||
if (D) {
|
||||
OS << "\n.debug_abbrev.dwo contents:\n";
|
||||
getDebugAbbrevDWO()->dump(OS);
|
||||
}
|
||||
}
|
||||
|
||||
if (DumpType == DIDT_All || DumpType == DIDT_InfoDwo)
|
||||
if (getNumDWOCompileUnits()) {
|
||||
OS << "\n.debug_info.dwo contents:\n";
|
||||
for (unsigned i = 0, e = getNumDWOCompileUnits(); i != e; ++i)
|
||||
getDWOCompileUnitAtIndex(i)->dump(OS);
|
||||
}
|
||||
|
||||
if (DumpType == DIDT_All || DumpType == DIDT_StrDwo)
|
||||
if (!getStringDWOSection().empty()) {
|
||||
OS << "\n.debug_str.dwo contents:\n";
|
||||
DataExtractor strDWOData(getStringDWOSection(), isLittleEndian(), 0);
|
||||
offset = 0;
|
||||
uint32_t strDWOOffset = 0;
|
||||
while (const char *s = strDWOData.getCStr(&offset)) {
|
||||
OS << format("0x%8.8x: \"%s\"\n", strDWOOffset, s);
|
||||
strDWOOffset = offset;
|
||||
}
|
||||
}
|
||||
|
||||
if (DumpType == DIDT_All || DumpType == DIDT_StrOffsetsDwo)
|
||||
if (!getStringOffsetDWOSection().empty()) {
|
||||
OS << "\n.debug_str_offsets.dwo contents:\n";
|
||||
|
@ -30,19 +30,6 @@
|
||||
; CHECK: DW_AT_GNU_dwo_id DW_FORM_data8
|
||||
; CHECK: DW_AT_low_pc DW_FORM_addr
|
||||
|
||||
; CHECK: .debug_info contents:
|
||||
; CHECK: DW_TAG_compile_unit
|
||||
; CHECK: DW_AT_GNU_dwo_name [DW_FORM_strp] ( .debug_str[0x00000000] = "baz.dwo")
|
||||
; CHECK: DW_AT_GNU_addr_base [DW_FORM_sec_offset] (0x00000000)
|
||||
; CHECK: DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000)
|
||||
; CHECK: DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x00000008] = "/usr/local/google/home/echristo/tmp")
|
||||
; CHECK: DW_AT_GNU_dwo_id [DW_FORM_data8] (0x0000000000000000)
|
||||
; CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000)
|
||||
|
||||
; CHECK: .debug_str contents:
|
||||
; CHECK: 0x00000000: "baz.dwo"
|
||||
; CHECK: 0x00000008: "/usr/local/google/home/echristo/tmp"
|
||||
|
||||
; Check that we're using the right forms.
|
||||
; CHECK: .debug_abbrev.dwo contents:
|
||||
; CHECK: Abbrev table for offset: 0x00000000
|
||||
@ -68,6 +55,15 @@
|
||||
; CHECK: DW_AT_encoding DW_FORM_data1
|
||||
; CHECK: DW_AT_byte_size DW_FORM_data1
|
||||
|
||||
; CHECK: .debug_info contents:
|
||||
; CHECK: DW_TAG_compile_unit
|
||||
; CHECK: DW_AT_GNU_dwo_name [DW_FORM_strp] ( .debug_str[0x00000000] = "baz.dwo")
|
||||
; CHECK: DW_AT_GNU_addr_base [DW_FORM_sec_offset] (0x00000000)
|
||||
; CHECK: DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000)
|
||||
; CHECK: DW_AT_comp_dir [DW_FORM_strp] ( .debug_str[0x00000008] = "/usr/local/google/home/echristo/tmp")
|
||||
; CHECK: DW_AT_GNU_dwo_id [DW_FORM_data8] (0x0000000000000000)
|
||||
; CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000)
|
||||
|
||||
; Check that the rest of the compile units have information.
|
||||
; CHECK: .debug_info.dwo contents:
|
||||
; CHECK: DW_TAG_compile_unit
|
||||
@ -88,6 +84,9 @@
|
||||
; CHECK: [[TYPE]]: DW_TAG_base_type
|
||||
; CHECK: DW_AT_name [DW_FORM_GNU_str_index] ( indexed (00000003) string = "int")
|
||||
|
||||
; CHECK: .debug_str contents:
|
||||
; CHECK: 0x00000000: "baz.dwo"
|
||||
; CHECK: 0x00000008: "/usr/local/google/home/echristo/tmp"
|
||||
|
||||
; CHECK: .debug_str.dwo contents:
|
||||
; CHECK: 0x00000000: "clang version 3.3 (trunk 169021) (llvm/trunk 169020)"
|
||||
|
Loading…
Reference in New Issue
Block a user