diff options
Diffstat (limited to 'lldb/test/API')
8 files changed, 126 insertions, 0 deletions
diff --git a/lldb/test/API/commands/frame/var-dil/basics/GlobalVariableLookup/TestFrameVarDILGlobalVariableLookup.py b/lldb/test/API/commands/frame/var-dil/basics/GlobalVariableLookup/TestFrameVarDILGlobalVariableLookup.py index 9cb166e..4d55767 100644 --- a/lldb/test/API/commands/frame/var-dil/basics/GlobalVariableLookup/TestFrameVarDILGlobalVariableLookup.py +++ b/lldb/test/API/commands/frame/var-dil/basics/GlobalVariableLookup/TestFrameVarDILGlobalVariableLookup.py @@ -19,6 +19,15 @@ class TestFrameVarDILGlobalVariableLookup(TestBase): NO_DEBUG_INFO_TESTCASE = True @skipIf(macos_version=["<", "15.0"], archs=["arm64", "arm64e"]) + @expectedFailureAll( + dwarf_version=["<", "5"], + oslist=[lldbplatformutil.getDarwinOSTriples()], + ) + @expectedFailureAll( + compiler="clang", + compiler_version=["<", "19.0"], + oslist=[lldbplatformutil.getDarwinOSTriples()], + ) def test_frame_var(self): self.build() lldbutil.run_to_source_breakpoint( diff --git a/lldb/test/API/driver/stdio_closed/TestDriverWithClosedSTDIO.py b/lldb/test/API/driver/stdio_closed/TestDriverWithClosedSTDIO.py new file mode 100644 index 0000000..a73322c --- /dev/null +++ b/lldb/test/API/driver/stdio_closed/TestDriverWithClosedSTDIO.py @@ -0,0 +1,56 @@ +""" +Test that if you exec lldb with the stdio file handles +closed, it is able to exit without hanging. +""" + + +import lldb +import os +import sys +import socket + +if os.name != "nt": + import fcntl + +import lldbsuite.test.lldbutil as lldbutil +from lldbsuite.test.lldbtest import * +from lldbsuite.test.decorators import * + +class TestDriverWithClosedSTDIO(TestBase): + # If your test case doesn't stress debug info, then + # set this to true. That way it won't be run once for + # each debug info format. + NO_DEBUG_INFO_TESTCASE = True + + # Windows doesn't have the fcntl module, so we can't run this + # test there. + @skipIf(hostoslist=["windows"]) + def test_run_lldb_and_wait(self): + """This test forks, closes the stdio channels and exec's lldb. + Then it waits for it to exit and asserts it did that successfully""" + pid = os.fork() + if pid == 0: + fcntl.fcntl(sys.stdin, fcntl.F_SETFD, fcntl.FD_CLOEXEC) + fcntl.fcntl(sys.stdout, fcntl.F_SETFD, fcntl.FD_CLOEXEC) + fcntl.fcntl(sys.stderr, fcntl.F_SETFD, fcntl.FD_CLOEXEC) + lldb = lldbtest_config.lldbExec + print(f"About to run: {lldb}") + os.execlp( + lldb, + lldb, + "-x", + "-o", + "script print(lldb.debugger.GetNumTargets())", + "--batch", + ) + else: + if pid == -1: + print("Couldn't fork a process.") + return + ret_pid, status = os.waitpid(pid, 0) + # We're really just checking that lldb doesn't stall. + # At the time this test was written, if you close stdin + # in an asserts build, lldb aborts. So handle both + # of those cases. The failure will just be that the + # waitpid doesn't return, and the test times out. + self.assertFalse(os.WIFSTOPPED(status), "We either exited or crashed.") diff --git a/lldb/test/API/functionalities/vtable/Makefile b/lldb/test/API/functionalities/vtable/Makefile index 99998b2..cbd7d47 100644 --- a/lldb/test/API/functionalities/vtable/Makefile +++ b/lldb/test/API/functionalities/vtable/Makefile @@ -1,3 +1,9 @@ CXX_SOURCES := main.cpp +ifeq "$(OS)" "Darwin" + # Make vtables writable for test_overwrite_vtable test + # The -no_data_const flag prevents vtables from being placed in __DATA_CONST + LD_EXTRAS := -Wl,-no_data_const +endif + include Makefile.rules diff --git a/lldb/test/API/lang/objc/synthesized-property-accessor/Makefile b/lldb/test/API/lang/objc/synthesized-property-accessor/Makefile new file mode 100644 index 0000000..89e6e79 --- /dev/null +++ b/lldb/test/API/lang/objc/synthesized-property-accessor/Makefile @@ -0,0 +1,4 @@ +OBJC_SOURCES := main.m +LDFLAGS := -lobjc + +include Makefile.rules diff --git a/lldb/test/API/lang/objc/synthesized-property-accessor/TestSynthesizedPropertyAccessor.py b/lldb/test/API/lang/objc/synthesized-property-accessor/TestSynthesizedPropertyAccessor.py new file mode 100644 index 0000000..0a171e98 --- /dev/null +++ b/lldb/test/API/lang/objc/synthesized-property-accessor/TestSynthesizedPropertyAccessor.py @@ -0,0 +1,30 @@ +""" +Test debug-info parsing of synthesized Objective-C properties. +""" + +import lldb +from lldbsuite.test.lldbtest import * +from lldbsuite.test import lldbutil + + +class TestSynthesizedPropertyAccessor(TestBase): + def test(self): + self.build() + + (target, _, _, _) = lldbutil.run_to_source_breakpoint( + self, "return f.fooProp", lldb.SBFileSpec("main.m") + ) + + getters = target.FindFunctions("-[Foo fooProp]", lldb.eFunctionNameTypeSelector) + self.assertEqual(len(getters), 1) + getter = getters[0].function.GetType() + self.assertTrue(getter) + self.assertEqual(getter.GetDisplayTypeName(), "int ()") + + setters = target.FindFunctions( + "-[Foo setFooProp:]", lldb.eFunctionNameTypeSelector + ) + self.assertEqual(len(setters), 1) + setter = setters[0].function.GetType() + self.assertTrue(setter) + self.assertEqual(setter.GetDisplayTypeName(), "void (int)") diff --git a/lldb/test/API/lang/objc/synthesized-property-accessor/main.m b/lldb/test/API/lang/objc/synthesized-property-accessor/main.m new file mode 100644 index 0000000..4186162 --- /dev/null +++ b/lldb/test/API/lang/objc/synthesized-property-accessor/main.m @@ -0,0 +1,14 @@ +#import <Foundation/Foundation.h> + +@interface Foo : NSObject +@property(readwrite) int fooProp; +@end + +@implementation Foo +@end + +int main() { + Foo *f = [Foo new]; + [f setFooProp:10]; + return f.fooProp; +} diff --git a/lldb/test/API/lit.cfg.py b/lldb/test/API/lit.cfg.py index dcff868..f2a14d1 100644 --- a/lldb/test/API/lit.cfg.py +++ b/lldb/test/API/lit.cfg.py @@ -90,6 +90,8 @@ def find_python_interpreter(): ) shutil.copy(real_python, copied_python) + # macOS 15+ restricts injecting the ASAN runtime to only user-compiled code. + subprocess.check_call(["/usr/bin/codesign", "--remove-signature", copied_python]) # Now make sure the copied Python works. The Python in Xcode has a relative # RPATH and cannot be copied. diff --git a/lldb/test/API/macosx/posix_spawn/TestLaunchProcessPosixSpawn.py b/lldb/test/API/macosx/posix_spawn/TestLaunchProcessPosixSpawn.py index 0f40dfd..9050f6a 100644 --- a/lldb/test/API/macosx/posix_spawn/TestLaunchProcessPosixSpawn.py +++ b/lldb/test/API/macosx/posix_spawn/TestLaunchProcessPosixSpawn.py @@ -18,6 +18,11 @@ def apple_silicon(): def rosetta_debugserver_installed(): + import platform + version = platform.mac_ver() + # Workaround for an undiagnosed problem on green dragon. + if version[0] == '15.5': + return False return exists("/Library/Apple/usr/libexec/oah/debugserver") |
