[Lldb-commits] [lldb] [llvm] [lldb] Use llvm::DWARFExpression::iterator in DWARFExpression::Evaluate (PR #190556)
Sergei Barannikov via lldb-commits
lldb-commits at lists.llvm.org
Wed Apr 8 01:52:36 PDT 2026
================
@@ -1506,18 +1502,18 @@ llvm::Expected<Value> DWARFExpression::Evaluate(
// the DWARF expression to skip forward or backward from the current
// operation, beginning after the 2-byte constant.
case DW_OP_skip: {
- int16_t skip_offset = (int16_t)opcodes.GetU16(&offset);
- lldb::offset_t new_offset = offset + skip_offset;
+ int16_t skip_offset = (int16_t)op->getRawOperand(0);
+ lldb::offset_t new_offset = op->getEndOffset() + skip_offset;
// New offset can point at the end of the data, in this case we should
// terminate the DWARF expression evaluation (will happen in the loop
// condition).
- if (new_offset <= opcodes.GetByteSize())
- offset = new_offset;
- else {
- return llvm::createStringErrorV(
- "Invalid opcode offset in DW_OP_skip: {0}+({1}) > {2}", offset,
- skip_offset, opcodes.GetByteSize());
+ if (new_offset <= expr_data.size()) {
+ op = op.skipBytes(skip_offset);
+ continue;
}
+ return llvm::createStringErrorV(
+ "Invalid opcode offset in DW_OP_skip: {0}+({1}) > {2}",
+ op->getEndOffset(), skip_offset, expr_data.size());
} break;
----------------
s-barannikov wrote:
Removed the breaks
https://github.com/llvm/llvm-project/pull/190556
More information about the lldb-commits
mailing list