The patch fixes a crash in ValueObject::CreateChildAtIndex caused by a null pointer dereferencing. This is a corner case that is happening when trying to dereference a variable with an incomplete type, and this same variable doesn't have a synthetic value to get the child ValueObject. If this happens, lldb will now return a null pointer that will results in an error message. rdar://65181171 Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
25 lines
840 B
Python
25 lines
840 B
Python
"""
|
|
Test that target var can resolve complex DWARF expressions.
|
|
"""
|
|
|
|
import lldb
|
|
from lldbsuite.test.decorators import *
|
|
from lldbsuite.test.lldbtest import *
|
|
from lldbsuite.test import lldbutil
|
|
|
|
|
|
class targetCommandTestCase(TestBase):
|
|
|
|
mydir = TestBase.compute_mydir(__file__)
|
|
|
|
@skipUnlessDarwin
|
|
@skipIfDarwinEmbedded # needs x86_64
|
|
@skipIf(debug_info="gmodules") # not relevant
|
|
@skipIf(compiler="clang", compiler_version=['<', '7.0'])
|
|
def testTargetVarExpr(self):
|
|
self.build()
|
|
lldbutil.run_to_name_breakpoint(self, 'main')
|
|
self.expect("target variable i", substrs=['i', '42'])
|
|
self.expect("target variable var", patterns=['\(incomplete \*\) var = 0[xX](0)*dead'])
|
|
self.expect("target variable var[0]", error=True, substrs=["can't find global variable 'var[0]'"])
|