diff --git a/lldb/packages/Python/lldbsuite/test/commands/expression/weak_symbols/TestWeakSymbols.py b/lldb/packages/Python/lldbsuite/test/commands/expression/weak_symbols/TestWeakSymbols.py --- a/lldb/packages/Python/lldbsuite/test/commands/expression/weak_symbols/TestWeakSymbols.py +++ b/lldb/packages/Python/lldbsuite/test/commands/expression/weak_symbols/TestWeakSymbols.py @@ -49,17 +49,20 @@ def do_test(self): hidden_dir = os.path.join(self.getBuildDir(), "hidden") - + hidden_dylib = os.path.join(hidden_dir, "libdylib.dylib") + launch_info = lldb.SBLaunchInfo(None) launch_info.SetWorkingDirectory(self.getBuildDir()) # We have to point to the hidden directory to pick up the # version of the dylib without the weak symbols: env_expr = self.platformContext.shlib_environment_var + "=" + hidden_dir launch_info.SetEnvironmentEntries([env_expr], True) - - (self.target, process, thread, bkpt) = lldbutil.run_to_source_breakpoint(self, - "Set a breakpoint here", self.main_source_file, - launch_info = launch_info) + + (self.target, _, thread, _) = lldbutil.run_to_source_breakpoint( + self, "Set a breakpoint here", + self.main_source_file, + launch_info = launch_info, + extra_images = [hidden_dylib]) # First we have to import the Dylib module so we get the type info # for the weak symbol. We need to add the source dir to the module # search paths, and then run @import to introduce it into the expression diff --git a/lldb/packages/Python/lldbsuite/test/lldbutil.py b/lldb/packages/Python/lldbsuite/test/lldbutil.py --- a/lldb/packages/Python/lldbsuite/test/lldbutil.py +++ b/lldb/packages/Python/lldbsuite/test/lldbutil.py @@ -760,13 +760,18 @@ test.assertTrue(target, "Target: %s is not valid."%(exe_name)) return target -def run_to_breakpoint_do_run(test, target, bkpt, launch_info = None, only_one_thread = True): +def run_to_breakpoint_do_run(test, target, bkpt, launch_info = None, + only_one_thread = True, extra_images = None): # Launch the process, and do not stop at the entry point. if not launch_info: launch_info = lldb.SBLaunchInfo(None) launch_info.SetWorkingDirectory(test.get_process_working_directory()) + if extra_images and lldb.remote_platform: + environ = test.registerSharedLibrariesWithTarget(target, extra_images) + launch_info.SetEnvironmentEntries(environ, True) + error = lldb.SBError() process = target.Launch(launch_info, error) @@ -791,7 +796,8 @@ exe_name = "a.out", bkpt_module = None, in_cwd = True, - only_one_thread = True): + only_one_thread = True, + extra_images = None): """Start up a target, using exe_name as the executable, and run it to a breakpoint set by name on bkpt_name restricted to bkpt_module. @@ -827,13 +833,15 @@ test.assertTrue(breakpoint.GetNumLocations() > 0, "No locations found for name breakpoint: '%s'."%(bkpt_name)) - return run_to_breakpoint_do_run(test, target, breakpoint, launch_info, only_one_thread) + return run_to_breakpoint_do_run(test, target, breakpoint, launch_info, + only_one_thread, extra_images) def run_to_source_breakpoint(test, bkpt_pattern, source_spec, launch_info = None, exe_name = "a.out", bkpt_module = None, in_cwd = True, - only_one_thread = True): + only_one_thread = True, + extra_images = None): """Start up a target, using exe_name as the executable, and run it to a breakpoint set by source regex bkpt_pattern. @@ -847,13 +855,15 @@ test.assertTrue(breakpoint.GetNumLocations() > 0, 'No locations found for source breakpoint: "%s", file: "%s", dir: "%s"' %(bkpt_pattern, source_spec.GetFilename(), source_spec.GetDirectory())) - return run_to_breakpoint_do_run(test, target, breakpoint, launch_info, only_one_thread) + return run_to_breakpoint_do_run(test, target, breakpoint, launch_info, + only_one_thread, extra_images) def run_to_line_breakpoint(test, source_spec, line_number, column = 0, launch_info = None, exe_name = "a.out", bkpt_module = None, in_cwd = True, - only_one_thread = True): + only_one_thread = True, + extra_images = None): """Start up a target, using exe_name as the executable, and run it to a breakpoint set by (source_spec, line_number(, column)). @@ -868,7 +878,8 @@ 'No locations found for line breakpoint: "%s:%d(:%d)", dir: "%s"' %(source_spec.GetFilename(), line_number, column, source_spec.GetDirectory())) - return run_to_breakpoint_do_run(test, target, breakpoint, launch_info, only_one_thread) + return run_to_breakpoint_do_run(test, target, breakpoint, launch_info, + only_one_thread, extra_images) def continue_to_breakpoint(process, bkpt):