================
@@ -420,6 +420,20 @@ TEST(DWARFExpression, DW_OP_const) {
   EXPECT_THAT_EXPECTED(
       Evaluate({DW_OP_consts, 0x81, 0x82, 0x84, 0x88, 0x90, 0xa0, 0x40}),
       ExpectScalar(32, 0x01010101, true));
+
+  // A value wider than the 32-bit generic type is truncated before its
+  // signedness is applied.
+  const uint8_t oversized_sconst[] = {
+      DW_OP_consts, 0xff, 0xff, 0xff, 0xff, 0x8f,
+      0x80,         0x80, 0x80, 0x80, 0x02, DW_OP_stack_value};
+  DataExtractor extractor(oversized_sconst, sizeof(oversized_sconst),
+                          lldb::eByteOrderLittle, /*addr_size=*/4);
+  EXPECT_THAT_EXPECTED(
+      DWARFExpression::Evaluate(
+          /*exe_ctx=*/nullptr, /*reg_ctx=*/nullptr, /*module_sp=*/{}, 
extractor,
+          /*unit=*/nullptr, lldb::eRegisterKindLLDB,
+          /*initial_value_ptr=*/nullptr, /*object_address_ptr=*/nullptr),
+      ExpectScalar(32, UINT32_MAX, true));
----------------
MrEven132 wrote:

Agreed. `ExpectScalar(32, UINT32_MAX, true)` is semantically a signed 32-bit 
`-1`, but expressing the expected value as `-1` makes the test clearer. I'vd 
updated the test accordingly.

https://github.com/llvm/llvm-project/pull/219149
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to