[DWARFExpression] Read literars as unsigned values.
authorJonas Devlieghere <jonas@devlieghere.com>
Thu, 13 Sep 2018 15:18:39 +0000 (15:18 +0000)
committerJonas Devlieghere <jonas@devlieghere.com>
Thu, 13 Sep 2018 15:18:39 +0000 (15:18 +0000)
commitbf2d112c15c407a5ff9a3ecbba8ec638cd989e85
tree578519a0c8182d5b236c529a54edd01d78270504
parentaaec3c62602c389e90feb98d8746c63349e81533
[DWARFExpression] Read literars as unsigned values.

After landing r341457, 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.

Differential revision: https://reviews.llvm.org/D51730

llvm-svn: 342142
lldb/packages/Python/lldbsuite/test/lang/c/local_variables/Makefile [new file with mode: 0644]
lldb/packages/Python/lldbsuite/test/lang/c/local_variables/TestLocalVariables.py [new file with mode: 0644]
lldb/packages/Python/lldbsuite/test/lang/c/local_variables/main.c [new file with mode: 0644]
lldb/source/Expression/DWARFExpression.cpp