[Lldb-commits] [lldb] [lldb][NFC] Replace lldb's DWARFFormValue::ValueType with llvm's (PR #109853)
via lldb-commits
lldb-commits at lists.llvm.org
Tue Sep 24 12:57:20 PDT 2024
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-lldb
Author: Zequan Wu (ZequanWu)
<details>
<summary>Changes</summary>
---
Full diff: https://github.com/llvm/llvm-project/pull/109853.diff
2 Files Affected:
- (modified) lldb/source/Plugins/SymbolFile/DWARF/DWARFFormValue.cpp (+27-27)
- (modified) lldb/source/Plugins/SymbolFile/DWARF/DWARFFormValue.h (+7-17)
``````````diff
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFFormValue.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFFormValue.cpp
index e1f73f1997e369..f58c6262349c6f 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFFormValue.cpp
+++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFFormValue.cpp
@@ -25,7 +25,7 @@ using namespace lldb_private::plugin::dwarf;
void DWARFFormValue::Clear() {
m_unit = nullptr;
m_form = dw_form_t(0);
- m_value = ValueTypeTag();
+ m_value = ValueType();
}
bool DWARFFormValue::ExtractValue(const DWARFDataExtractor &data,
@@ -44,68 +44,68 @@ bool DWARFFormValue::ExtractValue(const DWARFDataExtractor &data,
switch (m_form) {
case DW_FORM_addr:
assert(m_unit);
- m_value.value.uval =
+ m_value.uval =
data.GetMaxU64(offset_ptr, DWARFUnit::GetAddressByteSize(m_unit));
break;
case DW_FORM_block1:
- m_value.value.uval = data.GetU8(offset_ptr);
+ m_value.uval = data.GetU8(offset_ptr);
is_block = true;
break;
case DW_FORM_block2:
- m_value.value.uval = data.GetU16(offset_ptr);
+ m_value.uval = data.GetU16(offset_ptr);
is_block = true;
break;
case DW_FORM_block4:
- m_value.value.uval = data.GetU32(offset_ptr);
+ m_value.uval = data.GetU32(offset_ptr);
is_block = true;
break;
case DW_FORM_data16:
- m_value.value.uval = 16;
+ m_value.uval = 16;
is_block = true;
break;
case DW_FORM_exprloc:
case DW_FORM_block:
- m_value.value.uval = data.GetULEB128(offset_ptr);
+ m_value.uval = data.GetULEB128(offset_ptr);
is_block = true;
break;
case DW_FORM_string:
- m_value.value.cstr = data.GetCStr(offset_ptr);
+ m_value.cstr = data.GetCStr(offset_ptr);
break;
case DW_FORM_sdata:
- m_value.value.sval = data.GetSLEB128(offset_ptr);
+ m_value.sval = data.GetSLEB128(offset_ptr);
break;
case DW_FORM_strp:
case DW_FORM_line_strp:
case DW_FORM_sec_offset:
- m_value.value.uval = data.GetMaxU64(offset_ptr, 4);
+ m_value.uval = data.GetMaxU64(offset_ptr, 4);
break;
case DW_FORM_addrx1:
case DW_FORM_strx1:
case DW_FORM_ref1:
case DW_FORM_data1:
case DW_FORM_flag:
- m_value.value.uval = data.GetU8(offset_ptr);
+ m_value.uval = data.GetU8(offset_ptr);
break;
case DW_FORM_addrx2:
case DW_FORM_strx2:
case DW_FORM_ref2:
case DW_FORM_data2:
- m_value.value.uval = data.GetU16(offset_ptr);
+ m_value.uval = data.GetU16(offset_ptr);
break;
case DW_FORM_addrx3:
case DW_FORM_strx3:
- m_value.value.uval = data.GetMaxU64(offset_ptr, 3);
+ m_value.uval = data.GetMaxU64(offset_ptr, 3);
break;
case DW_FORM_addrx4:
case DW_FORM_strx4:
case DW_FORM_ref4:
case DW_FORM_data4:
- m_value.value.uval = data.GetU32(offset_ptr);
+ m_value.uval = data.GetU32(offset_ptr);
break;
case DW_FORM_data8:
case DW_FORM_ref8:
case DW_FORM_ref_sig8:
- m_value.value.uval = data.GetU64(offset_ptr);
+ m_value.uval = data.GetU64(offset_ptr);
break;
case DW_FORM_addrx:
case DW_FORM_loclistx:
@@ -115,7 +115,7 @@ bool DWARFFormValue::ExtractValue(const DWARFDataExtractor &data,
case DW_FORM_ref_udata:
case DW_FORM_GNU_str_index:
case DW_FORM_GNU_addr_index:
- m_value.value.uval = data.GetULEB128(offset_ptr);
+ m_value.uval = data.GetULEB128(offset_ptr);
break;
case DW_FORM_ref_addr:
assert(m_unit);
@@ -123,14 +123,14 @@ bool DWARFFormValue::ExtractValue(const DWARFDataExtractor &data,
ref_addr_size = m_unit->GetAddressByteSize();
else
ref_addr_size = 4;
- m_value.value.uval = data.GetMaxU64(offset_ptr, ref_addr_size);
+ m_value.uval = data.GetMaxU64(offset_ptr, ref_addr_size);
break;
case DW_FORM_indirect:
m_form = static_cast<dw_form_t>(data.GetULEB128(offset_ptr));
indirect = true;
break;
case DW_FORM_flag_present:
- m_value.value.uval = 1;
+ m_value.uval = 1;
break;
default:
return false;
@@ -138,9 +138,9 @@ bool DWARFFormValue::ExtractValue(const DWARFDataExtractor &data,
} while (indirect);
if (is_block) {
- m_value.data = data.PeekData(*offset_ptr, m_value.value.uval);
+ m_value.data = data.PeekData(*offset_ptr, m_value.uval);
if (m_value.data != nullptr) {
- *offset_ptr += m_value.value.uval;
+ *offset_ptr += m_value.uval;
}
}
@@ -461,23 +461,23 @@ const char *DWARFFormValue::AsCString() const {
DWARFContext &context = m_unit->GetSymbolFileDWARF().GetDWARFContext();
if (m_form == DW_FORM_string)
- return m_value.value.cstr;
+ return m_value.cstr;
if (m_form == DW_FORM_strp)
- return context.getOrLoadStrData().PeekCStr(m_value.value.uval);
+ return context.getOrLoadStrData().PeekCStr(m_value.uval);
if (m_form == DW_FORM_GNU_str_index || m_form == DW_FORM_strx ||
m_form == DW_FORM_strx1 || m_form == DW_FORM_strx2 ||
m_form == DW_FORM_strx3 || m_form == DW_FORM_strx4) {
std::optional<uint64_t> offset =
- m_unit->GetStringOffsetSectionItem(m_value.value.uval);
+ m_unit->GetStringOffsetSectionItem(m_value.uval);
if (!offset)
return nullptr;
return context.getOrLoadStrData().PeekCStr(*offset);
}
if (m_form == DW_FORM_line_strp)
- return context.getOrLoadLineStrData().PeekCStr(m_value.value.uval);
+ return context.getOrLoadLineStrData().PeekCStr(m_value.uval);
return nullptr;
}
@@ -495,14 +495,14 @@ dw_addr_t DWARFFormValue::Address() const {
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;
+ lldb::offset_t offset = addr_base + m_value.uval * index_size;
return symbol_file.GetDWARFContext().getOrLoadAddrData().GetMaxU64(
&offset, index_size);
}
std::pair<DWARFUnit *, uint64_t>
DWARFFormValue::ReferencedUnitAndOffset() const {
- uint64_t value = m_value.value.uval;
+ uint64_t value = m_value.uval;
switch (m_form) {
case DW_FORM_ref1:
case DW_FORM_ref2:
@@ -550,7 +550,7 @@ DWARFDIE DWARFFormValue::Reference() const {
}
uint64_t DWARFFormValue::Reference(dw_offset_t base_offset) const {
- uint64_t value = m_value.value.uval;
+ uint64_t value = m_value.uval;
switch (m_form) {
case DW_FORM_ref1:
case DW_FORM_ref2:
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFFormValue.h b/lldb/source/Plugins/SymbolFile/DWARF/DWARFFormValue.h
index fdd5b3c278a4e8..8ab9163e645fea 100644
--- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFFormValue.h
+++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFFormValue.h
@@ -10,7 +10,7 @@
#define LLDB_SOURCE_PLUGINS_SYMBOLFILE_DWARF_DWARFFORMVALUE_H
#include "DWARFDataExtractor.h"
-#include <cstddef>
+#include "llvm/DebugInfo/DWARF/DWARFFormValue.h"
#include <optional>
namespace lldb_private::plugin {
@@ -21,17 +21,7 @@ class DWARFDIE;
class DWARFFormValue {
public:
- typedef struct ValueTypeTag {
- ValueTypeTag() : value() { value.uval = 0; }
-
- union {
- uint64_t uval;
- int64_t sval;
- const char *cstr;
- } value;
- const uint8_t *data = nullptr;
- } ValueType;
-
+ typedef llvm::DWARFFormValue::ValueType ValueType;
enum {
eValueTypeInvalid = 0,
eValueTypeUnsigned,
@@ -67,11 +57,11 @@ class DWARFFormValue {
std::pair<DWARFUnit *, uint64_t> ReferencedUnitAndOffset() const;
uint64_t Reference(dw_offset_t offset) const;
- bool Boolean() const { return m_value.value.uval != 0; }
- uint64_t Unsigned() const { return m_value.value.uval; }
- void SetUnsigned(uint64_t uval) { m_value.value.uval = uval; }
- int64_t Signed() const { return m_value.value.sval; }
- void SetSigned(int64_t sval) { m_value.value.sval = sval; }
+ bool Boolean() const { return m_value.uval != 0; }
+ uint64_t Unsigned() const { return m_value.uval; }
+ void SetUnsigned(uint64_t uval) { m_value.uval = uval; }
+ int64_t Signed() const { return m_value.sval; }
+ void SetSigned(int64_t sval) { m_value.sval = sval; }
const char *AsCString() const;
dw_addr_t Address() const;
bool IsValid() const { return m_form != 0; }
``````````
</details>
https://github.com/llvm/llvm-project/pull/109853
More information about the lldb-commits
mailing list