Index: include/lldb/Symbol/PostfixExpression.h =================================================================== --- include/lldb/Symbol/PostfixExpression.h +++ include/lldb/Symbol/PostfixExpression.h @@ -87,14 +87,14 @@ /// A node representing an integer literal. class IntegerNode : public Node { public: - IntegerNode(uint32_t value) : Node(Integer), m_value(value) {} + IntegerNode(int64_t value) : Node(Integer), m_value(value) {} - uint32_t GetValue() const { return m_value; } + int64_t GetValue() const { return m_value; } static bool classof(const Node *node) { return node->GetKind() == Integer; } private: - uint32_t m_value; + int64_t m_value; }; /// A node representing the value of a register with the given register number. Index: source/Symbol/PostfixExpression.cpp =================================================================== --- source/Symbol/PostfixExpression.cpp +++ source/Symbol/PostfixExpression.cpp @@ -67,7 +67,7 @@ continue; } - uint32_t value; + int64_t value; if (to_integer(token, value, 10)) { // token is integer literal stack.push_back(MakeNode(alloc, value)); @@ -129,8 +129,8 @@ void Visit(InitialValueNode &val, Node *&); void Visit(IntegerNode &integer, Node *&) { - m_out_stream.PutHex8(DW_OP_constu); - m_out_stream.PutULEB128(integer.GetValue()); + m_out_stream.PutHex8(DW_OP_consts); + m_out_stream.PutSLEB128(integer.GetValue()); ++m_stack_depth; } Index: unittests/Symbol/PostfixExpressionTest.cpp =================================================================== --- unittests/Symbol/PostfixExpressionTest.cpp +++ unittests/Symbol/PostfixExpressionTest.cpp @@ -88,6 +88,7 @@ EXPECT_EQ("^(^(int(1)))", ParseAndStringify("1 ^ ^")); EXPECT_EQ("^(+(int(1), ^(int(2))))", ParseAndStringify("1 2 ^ + ^")); EXPECT_EQ("-($foo, int(47))", ParseAndStringify("$foo 47 -")); + EXPECT_EQ("+(int(47), int(-42))", ParseAndStringify("47 -42 +")); EXPECT_EQ("nullptr", ParseAndStringify("+")); EXPECT_EQ("nullptr", ParseAndStringify("^")); @@ -137,7 +138,7 @@ } TEST(PostfixExpression, ToDWARF) { - EXPECT_EQ("DW_OP_constu 0x0", ParseAndGenerateDWARF("0")); + EXPECT_EQ("DW_OP_consts +0", ParseAndGenerateDWARF("0")); EXPECT_EQ("DW_OP_breg1 +0", ParseAndGenerateDWARF("R1")); @@ -151,18 +152,18 @@ EXPECT_EQ("DW_OP_breg1 +0, DW_OP_pick 0x01, DW_OP_plus ", ParseAndGenerateDWARF("R1 INIT +")); - EXPECT_EQ("DW_OP_constu 0x1, DW_OP_pick 0x01, DW_OP_deref , DW_OP_plus ", + EXPECT_EQ("DW_OP_consts +1, DW_OP_pick 0x01, DW_OP_deref , DW_OP_plus ", ParseAndGenerateDWARF("1 INIT ^ +")); - EXPECT_EQ("DW_OP_constu 0x4, DW_OP_constu 0x5, DW_OP_plus ", + EXPECT_EQ("DW_OP_consts +4, DW_OP_consts +5, DW_OP_plus ", ParseAndGenerateDWARF("4 5 +")); - EXPECT_EQ("DW_OP_constu 0x4, DW_OP_constu 0x5, DW_OP_minus ", + EXPECT_EQ("DW_OP_consts +4, DW_OP_consts +5, DW_OP_minus ", ParseAndGenerateDWARF("4 5 -")); - EXPECT_EQ("DW_OP_constu 0x4, DW_OP_deref ", ParseAndGenerateDWARF("4 ^")); + EXPECT_EQ("DW_OP_consts +4, DW_OP_deref ", ParseAndGenerateDWARF("4 ^")); - EXPECT_EQ("DW_OP_breg6 +0, DW_OP_constu 0x80, DW_OP_lit1 " + EXPECT_EQ("DW_OP_breg6 +0, DW_OP_consts +128, DW_OP_lit1 " ", DW_OP_minus , DW_OP_not , DW_OP_and ", ParseAndGenerateDWARF("R6 128 @")); } Index: unittests/SymbolFile/NativePDB/PdbFPOProgramToDWARFExpressionTests.cpp =================================================================== --- unittests/SymbolFile/NativePDB/PdbFPOProgramToDWARFExpressionTests.cpp +++ unittests/SymbolFile/NativePDB/PdbFPOProgramToDWARFExpressionTests.cpp @@ -58,20 +58,20 @@ } TEST(PDBFPOProgramToDWARFExpressionTests, MultipleIndependentAssignments) { - CheckValidProgramTranslation("$T1 1 = $T0 0 =", "$T0", "DW_OP_constu 0x0"); + CheckValidProgramTranslation("$T1 1 = $T0 0 =", "$T0", "DW_OP_consts +0"); } TEST(PDBFPOProgramToDWARFExpressionTests, MultipleDependentAssignments) { CheckValidProgramTranslation( "$T1 $ebp 4 + = $T0 $T1 8 - 128 @ = ", "$T0", - "DW_OP_breg6 +0, DW_OP_constu 0x4, DW_OP_plus , DW_OP_constu 0x8, " - "DW_OP_minus , DW_OP_constu 0x80, DW_OP_lit1 , DW_OP_minus , DW_OP_not , " + "DW_OP_breg6 +0, DW_OP_consts +4, DW_OP_plus , DW_OP_consts +8, " + "DW_OP_minus , DW_OP_consts +128, DW_OP_lit1 , DW_OP_minus , DW_OP_not , " "DW_OP_and "); } TEST(PDBFPOProgramToDWARFExpressionTests, DependencyChain) { CheckValidProgramTranslation("$T1 0 = $T0 $T1 = $ebp $T0 =", "$ebp", - "DW_OP_constu 0x0"); + "DW_OP_consts +0"); } /// Invalid programs tests