https://github.com/MrEven132 updated https://github.com/llvm/llvm-project/pull/216661
>From 10c589b3cb3e11a463b040246cdf2456069da0f0 Mon Sep 17 00:00:00 2001 From: MrEven132 <[email protected]> Date: Tue, 18 Aug 2026 13:02:16 +0800 Subject: [PATCH] [lldb] Keep address operation values address-sized --- lldb/source/Expression/DWARFExpression.cpp | 2 +- lldb/unittests/Expression/DWARFExpressionTest.cpp | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/lldb/source/Expression/DWARFExpression.cpp b/lldb/source/Expression/DWARFExpression.cpp index f4c4f519b09c7..d18c193e04f9b 100644 --- a/lldb/source/Expression/DWARFExpression.cpp +++ b/lldb/source/Expression/DWARFExpression.cpp @@ -1440,7 +1440,7 @@ llvm::Expected<Value> DWARFExpression::Evaluate( switch (opcode) { case DW_OP_addr: - stack.push_back(Scalar(op->getRawOperand(0))); + stack.push_back(to_generic(op->getRawOperand(0))); stack.back().SetValueType(Value::ValueType::FileAddress); break; diff --git a/lldb/unittests/Expression/DWARFExpressionTest.cpp b/lldb/unittests/Expression/DWARFExpressionTest.cpp index c2752e16672f7..e98e56d382531 100644 --- a/lldb/unittests/Expression/DWARFExpressionTest.cpp +++ b/lldb/unittests/Expression/DWARFExpressionTest.cpp @@ -833,6 +833,16 @@ TEST(DWARFExpression, DW_OP_addr) { ExpectScalar(uint32_t{0x40302010})); } +TEST(DWARFExpression, DW_OP_addr_address_size) { + // Address arithmetic wraps at the target address size. In particular, + // 0xffffffff + 1 is zero on this 32-bit target. + auto result = Evaluate({DW_OP_addr, 0x2a, 0x00, 0x00, 0x00, DW_OP_const4u, + 0xff, 0xff, 0xff, 0xff, DW_OP_plus, DW_OP_lit1, + DW_OP_plus, DW_OP_stack_value}); + ASSERT_THAT_EXPECTED(result, ExpectScalar(32, 0x2a, false)); + EXPECT_EQ(result->GetScalar().GetAPSInt().getBitWidth(), 32u); +} + TEST(DWARFExpression, DW_OP_addr_big_endian) { // Same operand bytes, big-endian extractor: the address must be read in // target byte order. _______________________________________________ lldb-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
