DWARF: Generate the address lookup table from the DIE tree if .debug_aranges is not available.

Ported from LLDB.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139732 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Benjamin Kramer
2011-09-14 20:52:27 +00:00
parent 55cf815e19
commit 10df80692c
7 changed files with 87 additions and 1 deletions

View File

@ -83,6 +83,19 @@ bool DWARFDebugAranges::extract(DataExtractor debug_aranges_data) {
return false;
}
bool DWARFDebugAranges::generate(DWARFContext *ctx) {
clear();
if (ctx) {
const uint32_t num_compile_units = ctx->getNumCompileUnits();
for (uint32_t cu_idx = 0; cu_idx < num_compile_units; ++cu_idx) {
DWARFCompileUnit *cu = ctx->getCompileUnitAtIndex(cu_idx);
if (cu)
cu->buildAddressRangeTable(this, true);
}
}
return !isEmpty();
}
void DWARFDebugAranges::dump(raw_ostream &OS) const {
const uint32_t num_ranges = getNumRanges();
for (uint32_t i = 0; i < num_ranges; ++i) {