Name lookup doesn't work properly with Windows targets. This is most likely due to issues with name mangling, although there is at least one set of debug info related issues as well, since some of the name lookup requests appear to be failing on types rather than symbols. Specifically, this patch XFAILS the following set of tests: TestChar1632T.py TestRdar12991846.py TestConstVariables.py TestCallCPPFunction.py TestCallStopAndContinue.py TestCallUserDefinedFunction.py TestCModules.py TestCPPThis.py TestExprs2.py TestOverloadedFunctions.py TestRvalueReferences.py And fixing the underlying issue is tracked in http://llvm.org/pr24489 llvm-svn: 245338
52 lines
1.5 KiB
Python
52 lines
1.5 KiB
Python
"""
|
|
Tests calling a function by basename
|
|
"""
|
|
|
|
import lldb
|
|
from lldbtest import *
|
|
import lldbutil
|
|
|
|
class CallCPPFunctionTestCase(TestBase):
|
|
|
|
mydir = TestBase.compute_mydir(__file__)
|
|
|
|
@skipUnlessDarwin
|
|
@dsym_test
|
|
def test_with_dsym_and_run_command(self):
|
|
"""Test calling a function by basename"""
|
|
self.buildDsym()
|
|
self.call_cpp_function()
|
|
|
|
@dwarf_test
|
|
@expectedFailureWindows("llvm.org/pr24489: Name lookup not working correctly on Windows")
|
|
def test_with_dwarf_and_run_command(self):
|
|
"""Test calling a function by basename"""
|
|
self.buildDwarf()
|
|
self.call_cpp_function()
|
|
|
|
def setUp(self):
|
|
TestBase.setUp(self)
|
|
self.line = line_number('main.cpp', '// breakpoint')
|
|
|
|
def call_cpp_function(self):
|
|
"""Test calling a function by basename"""
|
|
self.runCmd("file a.out", CURRENT_EXECUTABLE_SET)
|
|
|
|
lldbutil.run_break_set_by_file_and_line (self, "main.cpp", self.line, num_expected_locations=1, loc_exact=True)
|
|
|
|
self.runCmd("process launch", RUN_SUCCEEDED)
|
|
|
|
# The stop reason of the thread should be breakpoint.
|
|
self.expect("thread list",
|
|
STOPPED_DUE_TO_BREAKPOINT,
|
|
substrs = ['stopped', 'stop reason = breakpoint'])
|
|
|
|
self.expect("expression -- a_function_to_call()",
|
|
startstr = "(int) $0 = 0")
|
|
|
|
if __name__ == '__main__':
|
|
import atexit
|
|
lldb.SBDebugger.Initialize()
|
|
atexit.register(lambda: lldb.SBDebugger.Terminate())
|
|
unittest2.main()
|