mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-28 19:31:58 +00:00
DWARF: Print line tables per compile unit, so they get the right address size.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139808 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
10ec65004d
commit
fe80f1da40
@ -94,8 +94,7 @@ void DWARFCompileUnit::dump(raw_ostream &OS) {
|
||||
<< " (next CU at " << format("0x%08x", getNextCompileUnitOffset())
|
||||
<< ")\n";
|
||||
|
||||
extractDIEsIfNeeded(false);
|
||||
DieArray[0].dump(OS, this, -1U);
|
||||
getCompileUnitDIE(false)->dump(OS, this, -1U);
|
||||
}
|
||||
|
||||
void DWARFCompileUnit::setDIERelations() {
|
||||
|
@ -70,6 +70,14 @@ public:
|
||||
BaseAddr = base_addr;
|
||||
}
|
||||
|
||||
const DWARFDebugInfoEntryMinimal *
|
||||
getCompileUnitDIE(bool extract_cu_die_only = true) {
|
||||
extractDIEsIfNeeded(extract_cu_die_only);
|
||||
if (DieArray.empty())
|
||||
return NULL;
|
||||
return &DieArray[0];
|
||||
}
|
||||
|
||||
/// setDIERelations - We read in all of the DIE entries into our flat list
|
||||
/// of DIE entries and now we need to go back through all of them and set the
|
||||
/// parent, sibling and child pointers for quick DIE navigation.
|
||||
|
@ -8,9 +8,11 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "DWARFContext.h"
|
||||
#include "llvm/Support/Dwarf.h"
|
||||
#include "llvm/Support/Format.h"
|
||||
#include "llvm/Support/raw_ostream.h"
|
||||
using namespace llvm;
|
||||
using namespace dwarf;
|
||||
|
||||
void DWARFContext::dump(raw_ostream &OS) {
|
||||
OS << ".debug_abbrev contents:\n";
|
||||
@ -28,9 +30,18 @@ void DWARFContext::dump(raw_ostream &OS) {
|
||||
set.dump(OS);
|
||||
|
||||
OS << "\n.debug_lines contents:\n";
|
||||
// FIXME: must be done per CU.
|
||||
DataExtractor lineData(getLineSection(), isLittleEndian(), /*FIXME*/8);
|
||||
DWARFDebugLine::dump(lineData, OS);
|
||||
for (unsigned i = 0, e = getNumCompileUnits(); i != e; ++i) {
|
||||
DWARFCompileUnit *cu = getCompileUnitAtIndex(i);
|
||||
unsigned stmtOffset =
|
||||
cu->getCompileUnitDIE()->getAttributeValueAsUnsigned(cu, DW_AT_stmt_list,
|
||||
-1U);
|
||||
if (stmtOffset != -1U) {
|
||||
DataExtractor lineData(getLineSection(), isLittleEndian(),
|
||||
cu->getAddressByteSize());
|
||||
DWARFDebugLine::DumpingState state(OS);
|
||||
DWARFDebugLine::parseStatementTable(lineData, &stmtOffset, state);
|
||||
}
|
||||
}
|
||||
|
||||
OS << "\n.debug_str contents:\n";
|
||||
DataExtractor strData(getStringSection(), isLittleEndian(), 0);
|
||||
|
Loading…
Reference in New Issue
Block a user