================
@@ -40,6 +40,51 @@ using namespace lldb_private;
using namespace llvm::dwarf;
namespace {
+/// A mock implementation of DWARFExpression::Delegate for testing.
+/// This class provides default implementations of all delegate methods,
+/// with the DWARF version being configurable via the constructor.
+class MockDwarfDelegate : public DWARFExpression::Delegate {
+public:
+ static constexpr uint16_t DEFAULT_DWARF_VERSION = 5;
+ static MockDwarfDelegate Dwarf5() { return MockDwarfDelegate(5); }
+ static MockDwarfDelegate Dwarf2() { return MockDwarfDelegate(2); }
+
+ MockDwarfDelegate() : MockDwarfDelegate(DEFAULT_DWARF_VERSION) {}
+ explicit MockDwarfDelegate(uint16_t version) : m_version(version) {}
+
+ uint16_t GetVersion() const override { return m_version; }
+
+ dw_addr_t GetBaseAddress() const override { return 0; }
+
+ uint8_t GetAddressByteSize() const override { return 4; }
+
+ llvm::Expected<std::pair<uint64_t, bool>>
+ GetDIEBitSizeAndSign(uint64_t relative_die_offset) const override {
+ return llvm::createStringError(llvm::inconvertibleErrorCode(),
+ "GetDIEBitSizeAndSign not implemented");
+ }
+
+ dw_addr_t ReadAddressFromDebugAddrSection(uint32_t index) const override {
+ return 0;
+ }
+
+ lldb::offset_t GetVendorDWARFOpcodeSize(const DataExtractor &data,
+ const lldb::offset_t data_offset,
+ const uint8_t op) const override {
+ return LLDB_INVALID_OFFSET;
+ }
+
+ bool ParseVendorDWARFOpcode(uint8_t op, const DataExtractor &opcodes,
+ lldb::offset_t &offset, RegisterContext *reg_ctx,
+ lldb::RegisterKind reg_kind,
+ DWARFExpression::Stack &stack) const override {
+ return false;
+ }
+
+private:
+ uint16_t m_version;
----------------
clayborg wrote:
`m_dwarf_version`?
https://github.com/llvm/llvm-project/pull/168468
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits