[Lldb-commits] [PATCH] D89842: [lldb/DWARF] Add support for DW_OP_implicit_value
Med Ismail Bennani via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Thu Oct 22 09:03:09 PDT 2020
This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rGefe62b637d51: [lldb/DWARF] Add support for DW_OP_implicit_value (authored by mib).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D89842/new/
https://reviews.llvm.org/D89842
Files:
lldb/source/Expression/DWARFExpression.cpp
lldb/unittests/Expression/DWARFExpressionTest.cpp
Index: lldb/unittests/Expression/DWARFExpressionTest.cpp
===================================================================
--- lldb/unittests/Expression/DWARFExpressionTest.cpp
+++ lldb/unittests/Expression/DWARFExpressionTest.cpp
@@ -218,6 +218,14 @@
llvm::HasValue(GetScalar(16, 0xff00, true)));
}
+TEST(DWARFExpression, DW_OP_implicit_value) {
+ unsigned char bytes = 4;
+
+ EXPECT_THAT_EXPECTED(
+ Evaluate({DW_OP_implicit_value, bytes, 0x11, 0x22, 0x33, 0x44}),
+ llvm::HasValue(GetScalar(8 * bytes, 0x44332211, true)));
+}
+
TEST(DWARFExpression, DW_OP_unknown) {
EXPECT_THAT_EXPECTED(
Evaluate({0xff}),
Index: lldb/source/Expression/DWARFExpression.cpp
===================================================================
--- lldb/source/Expression/DWARFExpression.cpp
+++ lldb/source/Expression/DWARFExpression.cpp
@@ -2248,6 +2248,29 @@
}
break;
+ // OPCODE: DW_OP_implicit_value
+ // OPERANDS: 2
+ // ULEB128 size of the value block in bytes
+ // uint8_t* block bytes encoding value in target's memory
+ // representation
+ // DESCRIPTION: Value is immediately stored in block in the debug info with
+ // the memory representation of the target.
+ case DW_OP_implicit_value: {
+ const uint32_t len = opcodes.GetULEB128(&offset);
+ const void *data = opcodes.GetData(&offset, len);
+
+ if (!data) {
+ LLDB_LOG(log, "Evaluate_DW_OP_implicit_value: could not be read data");
+ LLDB_ERRORF(error_ptr, "Could not evaluate %s.",
+ DW_OP_value_to_name(op));
+ return false;
+ }
+
+ Value result(data, len);
+ stack.push_back(result);
+ break;
+ }
+
// OPCODE: DW_OP_push_object_address
// OPERANDS: none
// DESCRIPTION: Pushes the address of the object currently being
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D89842.300004.patch
Type: text/x-patch
Size: 1855 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20201022/2f4dc472/attachment.bin>
More information about the lldb-commits
mailing list