Author: jdevlieghere Date: Thu Aug 1 11:35:40 2019 New Revision: 367595 URL: http://llvm.org/viewvc/llvm-project?rev=367595&view=rev Log: Fix `skipIfSanitized` decorator on macOS
For security reasons, DYLD_INSERT_LIBRARIES is not propagated to a child process. This breaks the skipIfSanitized decorator, which checks for the environment variable being set. Instead, always set the ASAN_OPTIONS and make the decorator check for that. Differential revision: https://reviews.llvm.org/D65594 Modified: lldb/trunk/lit/Suite/lit.cfg lldb/trunk/packages/Python/lldbsuite/test/decorators.py lldb/trunk/packages/Python/lldbsuite/test/functionalities/exec/TestExec.py lldb/trunk/packages/Python/lldbsuite/test/python_api/hello_world/TestHelloWorld.py Modified: lldb/trunk/lit/Suite/lit.cfg URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lit/Suite/lit.cfg?rev=367595&r1=367594&r2=367595&view=diff ============================================================================== --- lldb/trunk/lit/Suite/lit.cfg (original) +++ lldb/trunk/lit/Suite/lit.cfg Thu Aug 1 11:35:40 2019 @@ -20,18 +20,16 @@ config.test_source_root = os.path.join(c 'Python', 'lldbsuite', 'test') config.test_exec_root = config.test_source_root -# macOS flags needed for LLDB built with address sanitizer. -if 'Address' in config.llvm_use_sanitizer and \ - 'Darwin' in config.host_os and \ - 'x86' in config.host_triple: - import subprocess - resource_dir = subprocess.check_output( - config.cmake_cxx_compiler +' -print-resource-dir', shell=True).strip() - runtime = os.path.join(resource_dir, 'lib', 'darwin', - 'libclang_rt.asan_osx_dynamic.dylib') - config.environment['ASAN_OPTIONS'] = \ - 'detect_stack_use_after_return=1' - config.environment['DYLD_INSERT_LIBRARIES'] = runtime +if 'Address' in config.llvm_use_sanitizer: + config.environment['ASAN_OPTIONS'] = 'detect_stack_use_after_return=1' + # macOS flags needed for LLDB built with address sanitizer. + if 'Darwin' in config.host_os and 'x86' in config.host_triple: + import subprocess + resource_dir = subprocess.check_output( + [config.cmake_cxx_compiler, '-print-resource-dir']).strip() + runtime = os.path.join(resource_dir, 'lib', 'darwin', + 'libclang_rt.asan_osx_dynamic.dylib') + config.environment['DYLD_INSERT_LIBRARIES'] = runtime # Shared library build of LLVM may require LD_LIBRARY_PATH or equivalent. def find_shlibpath_var(): Modified: lldb/trunk/packages/Python/lldbsuite/test/decorators.py URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/decorators.py?rev=367595&r1=367594&r2=367595&view=diff ============================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/decorators.py (original) +++ lldb/trunk/packages/Python/lldbsuite/test/decorators.py Thu Aug 1 11:35:40 2019 @@ -821,11 +821,10 @@ def skipUnlessFeature(feature): return "%s is not supported on this system." % feature return skipTestIfFn(is_feature_enabled) -def skipIfSanitized(func): +def skipIfAsan(func): """Skip this test if the environment is set up to run LLDB itself under ASAN.""" - def is_sanitized(): - if (('DYLD_INSERT_LIBRARIES' in os.environ) and - 'libclang_rt.asan' in os.environ['DYLD_INSERT_LIBRARIES']): + def is_asan(): + if ('ASAN_OPTIONS' in os.environ): return "ASAN unsupported" return None - return skipTestIfFn(is_sanitized)(func) + return skipTestIfFn(is_asan)(func) Modified: lldb/trunk/packages/Python/lldbsuite/test/functionalities/exec/TestExec.py URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/exec/TestExec.py?rev=367595&r1=367594&r2=367595&view=diff ============================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/functionalities/exec/TestExec.py (original) +++ lldb/trunk/packages/Python/lldbsuite/test/functionalities/exec/TestExec.py Thu Aug 1 11:35:40 2019 @@ -21,7 +21,7 @@ class ExecTestCase(TestBase): @expectedFailureAll(archs=['i386'], bugnumber="rdar://28656532") @expectedFailureAll(oslist=["ios", "tvos", "watchos", "bridgeos"], bugnumber="rdar://problem/34559552") # this exec test has problems on ios systems @expectedFailureNetBSD - @skipIfSanitized # rdar://problem/43756823 + @skipIfAsan # rdar://problem/43756823 @skipIfWindows def test_hitting_exec (self): self.do_test(False) @@ -29,7 +29,7 @@ class ExecTestCase(TestBase): @expectedFailureAll(archs=['i386'], bugnumber="rdar://28656532") @expectedFailureAll(oslist=["ios", "tvos", "watchos", "bridgeos"], bugnumber="rdar://problem/34559552") # this exec test has problems on ios systems @expectedFailureNetBSD - @skipIfSanitized # rdar://problem/43756823 + @skipIfAsan # rdar://problem/43756823 @skipIfWindows def test_skipping_exec (self): self.do_test(True) Modified: lldb/trunk/packages/Python/lldbsuite/test/python_api/hello_world/TestHelloWorld.py URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/python_api/hello_world/TestHelloWorld.py?rev=367595&r1=367594&r2=367595&view=diff ============================================================================== --- lldb/trunk/packages/Python/lldbsuite/test/python_api/hello_world/TestHelloWorld.py (original) +++ lldb/trunk/packages/Python/lldbsuite/test/python_api/hello_world/TestHelloWorld.py Thu Aug 1 11:35:40 2019 @@ -108,7 +108,7 @@ class HelloWorldTestCase(TestBase): @add_test_categories(['pyapi']) @skipIfiOSSimulator - @skipIfSanitized # FIXME: Hangs indefinitely. + @skipIfAsan # FIXME: Hangs indefinitely. @expectedFailureNetBSD def test_with_attach_to_process_with_name_api(self): """Create target, spawn a process, and attach to it with process name.""" _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits