Skip to content

Commit

Permalink
DWARF: s/CompileUnit/Unit/ in DWARFFormValue
Browse files Browse the repository at this point in the history
The class has been converted to use DWARFUnit, but a number of uses of
the words compile unit remained. This removes all such references
Get/SetCompileUnit becomes Get/SetUnit, and m_cu becomes m_unit.

llvm-svn: 360754
  • Loading branch information
labath committed May 15, 2019
1 parent 4c1d6ee commit 041f40e
Show file tree
Hide file tree
Showing 5 changed files with 51 additions and 59 deletions.
9 changes: 4 additions & 5 deletions lldb/source/Plugins/SymbolFile/DWARF/DIERef.cpp
Expand Up @@ -16,12 +16,11 @@
DIERef::DIERef(const DWARFFormValue &form_value)
: cu_offset(DW_INVALID_OFFSET), die_offset(DW_INVALID_OFFSET) {
if (form_value.IsValid()) {
const DWARFUnit *dwarf_cu = form_value.GetCompileUnit();
if (dwarf_cu) {
if (dwarf_cu->GetBaseObjOffset() != DW_INVALID_OFFSET)
cu_offset = dwarf_cu->GetBaseObjOffset();
if (const DWARFUnit *unit = form_value.GetUnit()) {
if (unit->GetBaseObjOffset() != DW_INVALID_OFFSET)
cu_offset = unit->GetBaseObjOffset();
else
cu_offset = dwarf_cu->GetOffset();
cu_offset = unit->GetOffset();
}
die_offset = form_value.Reference();
}
Expand Down
2 changes: 1 addition & 1 deletion lldb/source/Plugins/SymbolFile/DWARF/DWARFAttribute.cpp
Expand Up @@ -35,7 +35,7 @@ void DWARFAttributes::Append(const DWARFUnit *cu, dw_offset_t attr_die_offset,
bool DWARFAttributes::ExtractFormValueAtIndex(
uint32_t i, DWARFFormValue &form_value) const {
const DWARFUnit *cu = CompileUnitAtIndex(i);
form_value.SetCompileUnit(cu);
form_value.SetUnit(cu);
form_value.SetForm(FormAtIndex(i));
lldb::offset_t offset = DIEOffsetAtIndex(i);
return form_value.ExtractValue(cu->GetData(), &offset);
Expand Down
Expand Up @@ -833,7 +833,7 @@ dw_offset_t DWARFDebugInfoEntry::GetAttributeValue(
debug_info_data, &offset, cu);

const dw_offset_t attr_offset = offset;
form_value.SetCompileUnit(cu);
form_value.SetUnit(cu);
form_value.SetForm(abbrevDecl->GetFormByIndex(idx));
if (form_value.ExtractValue(debug_info_data, &offset)) {
if (end_attr_offset_ptr)
Expand Down
80 changes: 36 additions & 44 deletions lldb/source/Plugins/SymbolFile/DWARF/DWARFFormValue.cpp
Expand Up @@ -104,16 +104,8 @@ DWARFFormValue::GetFixedFormSizesForAddressSize(uint8_t addr_size) {
return FixedFormSizes();
}

DWARFFormValue::DWARFFormValue() : m_cu(NULL), m_form(0), m_value() {}

DWARFFormValue::DWARFFormValue(const DWARFUnit *cu)
: m_cu(cu), m_form(0), m_value() {}

DWARFFormValue::DWARFFormValue(const DWARFUnit *cu, dw_form_t form)
: m_cu(cu), m_form(form), m_value() {}

void DWARFFormValue::Clear() {
m_cu = nullptr;
m_unit = nullptr;
m_form = 0;
m_value = ValueTypeTag();
}
Expand All @@ -133,9 +125,9 @@ bool DWARFFormValue::ExtractValue(const DWARFDataExtractor &data,
indirect = false;
switch (m_form) {
case DW_FORM_addr:
assert(m_cu);
assert(m_unit);
m_value.value.uval =
data.GetMaxU64(offset_ptr, DWARFUnit::GetAddressByteSize(m_cu));
data.GetMaxU64(offset_ptr, DWARFUnit::GetAddressByteSize(m_unit));
break;
case DW_FORM_block1:
m_value.value.uval = data.GetU8(offset_ptr);
Expand Down Expand Up @@ -207,9 +199,9 @@ bool DWARFFormValue::ExtractValue(const DWARFDataExtractor &data,
m_value.value.uval = data.GetULEB128(offset_ptr);
break;
case DW_FORM_ref_addr:
assert(m_cu);
if (m_cu->GetVersion() <= 2)
ref_addr_size = m_cu->GetAddressByteSize();
assert(m_unit);
if (m_unit->GetVersion() <= 2)
ref_addr_size = m_unit->GetAddressByteSize();
else
ref_addr_size = 4;
m_value.value.uval = data.GetMaxU64(offset_ptr, ref_addr_size);
Expand Down Expand Up @@ -238,13 +230,13 @@ bool DWARFFormValue::ExtractValue(const DWARFDataExtractor &data,

bool DWARFFormValue::SkipValue(const DWARFDataExtractor &debug_info_data,
lldb::offset_t *offset_ptr) const {
return DWARFFormValue::SkipValue(m_form, debug_info_data, offset_ptr, m_cu);
return DWARFFormValue::SkipValue(m_form, debug_info_data, offset_ptr, m_unit);
}

bool DWARFFormValue::SkipValue(dw_form_t form,
const DWARFDataExtractor &debug_info_data,
lldb::offset_t *offset_ptr,
const DWARFUnit *cu) {
const DWARFUnit *unit) {
uint8_t ref_addr_size;
switch (form) {
// Blocks if inlined data that have a length field and the data bytes inlined
Expand Down Expand Up @@ -278,15 +270,15 @@ bool DWARFFormValue::SkipValue(dw_form_t form,

// Compile unit address sized values
case DW_FORM_addr:
*offset_ptr += DWARFUnit::GetAddressByteSize(cu);
*offset_ptr += DWARFUnit::GetAddressByteSize(unit);
return true;

case DW_FORM_ref_addr:
ref_addr_size = 4;
assert(cu); // CU must be valid for DW_FORM_ref_addr objects or we will get
// this wrong
if (cu->GetVersion() <= 2)
ref_addr_size = cu->GetAddressByteSize();
assert(unit); // Unit must be valid for DW_FORM_ref_addr objects or we will
// get this wrong
if (unit->GetVersion() <= 2)
ref_addr_size = unit->GetAddressByteSize();
else
ref_addr_size = 4;
*offset_ptr += ref_addr_size;
Expand Down Expand Up @@ -356,7 +348,7 @@ bool DWARFFormValue::SkipValue(dw_form_t form,
case DW_FORM_indirect: {
dw_form_t indirect_form = debug_info_data.GetULEB128(offset_ptr);
return DWARFFormValue::SkipValue(indirect_form, debug_info_data, offset_ptr,
cu);
unit);
}

default:
Expand All @@ -367,7 +359,7 @@ bool DWARFFormValue::SkipValue(dw_form_t form,

void DWARFFormValue::Dump(Stream &s) const {
uint64_t uvalue = Unsigned();
bool cu_relative_offset = false;
bool unit_relative_offset = false;

switch (m_form) {
case DW_FORM_addr:
Expand Down Expand Up @@ -444,29 +436,29 @@ void DWARFFormValue::Dump(Stream &s) const {
} break;

case DW_FORM_ref_addr: {
assert(m_cu); // CU must be valid for DW_FORM_ref_addr objects or we will
// get this wrong
if (m_cu->GetVersion() <= 2)
assert(m_unit); // Unit must be valid for DW_FORM_ref_addr objects or we
// will get this wrong
if (m_unit->GetVersion() <= 2)
s.Address(uvalue, sizeof(uint64_t) * 2);
else
s.Address(uvalue, 4 * 2); // 4 for DWARF32, 8 for DWARF64, but we don't
// support DWARF64 yet
break;
}
case DW_FORM_ref1:
cu_relative_offset = true;
unit_relative_offset = true;
break;
case DW_FORM_ref2:
cu_relative_offset = true;
unit_relative_offset = true;
break;
case DW_FORM_ref4:
cu_relative_offset = true;
unit_relative_offset = true;
break;
case DW_FORM_ref8:
cu_relative_offset = true;
unit_relative_offset = true;
break;
case DW_FORM_ref_udata:
cu_relative_offset = true;
unit_relative_offset = true;
break;

// All DW_FORM_indirect attributes should be resolved prior to calling this
Expand All @@ -481,15 +473,15 @@ void DWARFFormValue::Dump(Stream &s) const {
break;
}

if (cu_relative_offset) {
assert(m_cu); // CU must be valid for DW_FORM_ref forms that are compile
// unit relative or we will get this wrong
s.Printf("{0x%8.8" PRIx64 "}", uvalue + m_cu->GetOffset());
if (unit_relative_offset) {
assert(m_unit); // Unit must be valid for DW_FORM_ref forms that are compile
// unit relative or we will get this wrong
s.Printf("{0x%8.8" PRIx64 "}", uvalue + m_unit->GetOffset());
}
}

const char *DWARFFormValue::AsCString() const {
SymbolFileDWARF *symbol_file = m_cu->GetSymbolFileDWARF();
SymbolFileDWARF *symbol_file = m_unit->GetSymbolFileDWARF();

if (m_form == DW_FORM_string) {
return m_value.value.cstr;
Expand Down Expand Up @@ -520,7 +512,7 @@ const char *DWARFFormValue::AsCString() const {

uint32_t indexSize = 4;
lldb::offset_t offset =
m_cu->GetStrOffsetsBase() + m_value.value.uval * indexSize;
m_unit->GetStrOffsetsBase() + m_value.value.uval * indexSize;
dw_offset_t strOffset =
symbol_file->get_debug_str_offsets_data().GetMaxU64(&offset, indexSize);
return symbol_file->get_debug_str_data().PeekCStr(strOffset);
Expand All @@ -533,21 +525,21 @@ const char *DWARFFormValue::AsCString() const {
}

dw_addr_t DWARFFormValue::Address() const {
SymbolFileDWARF *symbol_file = m_cu->GetSymbolFileDWARF();
SymbolFileDWARF *symbol_file = m_unit->GetSymbolFileDWARF();

if (m_form == DW_FORM_addr)
return Unsigned();

assert(m_cu);
assert(m_unit);
assert(m_form == DW_FORM_GNU_addr_index || m_form == DW_FORM_addrx ||
m_form == DW_FORM_addrx1 || m_form == DW_FORM_addrx2 ||
m_form == DW_FORM_addrx3 || m_form == DW_FORM_addrx4);

if (!symbol_file)
return 0;

uint32_t index_size = m_cu->GetAddressByteSize();
dw_offset_t addr_base = m_cu->GetAddrBase();
uint32_t index_size = m_unit->GetAddressByteSize();
dw_offset_t addr_base = m_unit->GetAddrBase();
lldb::offset_t offset = addr_base + m_value.value.uval * index_size;
return symbol_file->get_debug_addr_data().GetMaxU64(&offset, index_size);
}
Expand All @@ -560,9 +552,9 @@ uint64_t DWARFFormValue::Reference() const {
case DW_FORM_ref4:
case DW_FORM_ref8:
case DW_FORM_ref_udata:
assert(m_cu); // CU must be valid for DW_FORM_ref forms that are compile
// unit relative or we will get this wrong
return value + m_cu->GetOffset();
assert(m_unit); // Unit must be valid for DW_FORM_ref forms that are compile
// unit relative or we will get this wrong
return value + m_unit->GetOffset();

case DW_FORM_ref_addr:
case DW_FORM_ref_sig8:
Expand Down
17 changes: 9 additions & 8 deletions lldb/source/Plugins/SymbolFile/DWARF/DWARFFormValue.h
Expand Up @@ -54,11 +54,12 @@ class DWARFFormValue {
eValueTypeBlock
};

DWARFFormValue();
DWARFFormValue(const DWARFUnit *cu);
DWARFFormValue(const DWARFUnit *cu, dw_form_t form);
const DWARFUnit *GetCompileUnit() const { return m_cu; }
void SetCompileUnit(const DWARFUnit *cu) { m_cu = cu; }
DWARFFormValue() = default;
DWARFFormValue(const DWARFUnit *unit) : m_unit(unit) {}
DWARFFormValue(const DWARFUnit *unit, dw_form_t form)
: m_unit(unit), m_form(form) {}
const DWARFUnit *GetUnit() const { return m_unit; }
void SetUnit(const DWARFUnit *unit) { m_unit = unit; }
dw_form_t Form() const { return m_form; }
dw_form_t& FormRef() { return m_form; }
void SetForm(dw_form_t form) { m_form = form; }
Expand All @@ -84,7 +85,7 @@ class DWARFFormValue {
lldb::offset_t *offset_ptr) const;
static bool SkipValue(const dw_form_t form,
const lldb_private::DWARFDataExtractor &debug_info_data,
lldb::offset_t *offset_ptr, const DWARFUnit *cu);
lldb::offset_t *offset_ptr, const DWARFUnit *unit);
static bool IsBlockForm(const dw_form_t form);
static bool IsDataForm(const dw_form_t form);
static FixedFormSizes GetFixedFormSizesForAddressSize(uint8_t addr_size);
Expand All @@ -93,8 +94,8 @@ class DWARFFormValue {
static bool FormIsSupported(dw_form_t form);

protected:
const DWARFUnit *m_cu; // Compile unit for this form
dw_form_t m_form; // Form for this value
const DWARFUnit *m_unit = nullptr; // Unit for this form
dw_form_t m_form = 0; // Form for this value
ValueType m_value; // Contains all data for the form
};

Expand Down

0 comments on commit 041f40e

Please sign in to comment.