JDevlieghere created this revision.
JDevlieghere added reviewers: aprantl, jingham, clayborg.
JDevlieghere added a project: LLDB.
After landing https://reviews.llvm.org/rL341457, we started seeing a failure on
the swift-lldb bots. The change was correct and pretty straightforward, a
`DW_OP_constu` was replaced with `DW_OP_lit23`, the value remaining identical.
0x000000f4: DW_TAG_variable
DW_AT_location (0x00000000
[0x0000000100000a51, 0x0000000100000d47):
DW_OP_lit23, DW_OP_stack_value)
DW_AT_name ("number")
However, this broke LLDB:
(Int) number = <extracting data from value failed>
The value was read correctly, but apparently the value's type was different.
When reading a `constu` it was reading a uint64 (`m_type = e_ulonglong`) while
for the literal, it got a signed int (`m_type = e_sint`). This change makes
sure we read the value as an unsigned.
Repository:
rLLDB LLDB
https://reviews.llvm.org/D51730
Files:
source/Expression/DWARFExpression.cpp
Index: source/Expression/DWARFExpression.cpp
===================================================================
--- source/Expression/DWARFExpression.cpp
+++ source/Expression/DWARFExpression.cpp
@@ -2382,7 +2382,7 @@
case DW_OP_lit29:
case DW_OP_lit30:
case DW_OP_lit31:
- stack.push_back(Scalar(op - DW_OP_lit0));
+ stack.push_back(Scalar((uint64_t(op - DW_OP_lit0)));
break;
//----------------------------------------------------------------------
Index: source/Expression/DWARFExpression.cpp
===================================================================
--- source/Expression/DWARFExpression.cpp
+++ source/Expression/DWARFExpression.cpp
@@ -2382,7 +2382,7 @@
case DW_OP_lit29:
case DW_OP_lit30:
case DW_OP_lit31:
- stack.push_back(Scalar(op - DW_OP_lit0));
+ stack.push_back(Scalar((uint64_t(op - DW_OP_lit0)));
break;
//----------------------------------------------------------------------
_______________________________________________
lldb-commits mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits