summaryrefslogtreecommitdiff
path: root/lldb/test/API/functionalities/scripted_process/TestStackCoreScriptedProcess.py
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/test/API/functionalities/scripted_process/TestStackCoreScriptedProcess.py')
-rw-r--r--lldb/test/API/functionalities/scripted_process/TestStackCoreScriptedProcess.py41
1 files changed, 28 insertions, 13 deletions
diff --git a/lldb/test/API/functionalities/scripted_process/TestStackCoreScriptedProcess.py b/lldb/test/API/functionalities/scripted_process/TestStackCoreScriptedProcess.py
index 3f4222fe3b79..b24648e80f1d 100644
--- a/lldb/test/API/functionalities/scripted_process/TestStackCoreScriptedProcess.py
+++ b/lldb/test/API/functionalities/scripted_process/TestStackCoreScriptedProcess.py
@@ -25,13 +25,19 @@ class StackCoreScriptedProcesTestCase(TestBase):
def create_stack_skinny_corefile(self, file):
self.build()
target, process, thread, _ = lldbutil.run_to_source_breakpoint(self, "// break here",
- lldb.SBFileSpec("main.cpp"))
+ lldb.SBFileSpec("baz.c"))
self.assertTrue(process.IsValid(), "Process is invalid.")
# FIXME: Use SBAPI to save the process corefile.
self.runCmd("process save-core -s stack " + file)
self.assertTrue(os.path.exists(file), "No stack-only corefile found.")
self.assertTrue(self.dbg.DeleteTarget(target), "Couldn't delete target")
+ def get_module_with_name(self, target, name):
+ for module in target.modules:
+ if name in module.GetFileSpec().GetFilename():
+ return module
+ return None
+
@skipUnlessDarwin
@skipIfOutOfTreeDebugserver
def test_launch_scripted_process_stack_frames(self):
@@ -41,15 +47,15 @@ class StackCoreScriptedProcesTestCase(TestBase):
target = self.dbg.CreateTarget(self.getBuildArtifact("a.out"))
self.assertTrue(target, VALID_TARGET)
- for module in target.modules:
- if 'a.out' in module.GetFileSpec().GetFilename():
- main_module = module
- break
-
+ main_module = self.get_module_with_name(target, 'a.out')
self.assertTrue(main_module, "Invalid main module.")
error = target.SetModuleLoadAddress(main_module, 0)
self.assertSuccess(error, "Reloading main module at offset 0 failed.")
+ scripted_dylib = self.get_module_with_name(target, 'libbaz.dylib')
+ self.assertTrue(scripted_dylib, "Dynamic library libbaz.dylib not found.")
+ self.assertEqual(scripted_dylib.GetObjectFileHeaderAddress().GetLoadAddress(target), 0xffffffffffffffff)
+
os.environ['SKIP_SCRIPTED_PROCESS_LAUNCH'] = '1'
def cleanup():
del os.environ["SKIP_SCRIPTED_PROCESS_LAUNCH"]
@@ -68,7 +74,8 @@ class StackCoreScriptedProcesTestCase(TestBase):
structured_data = lldb.SBStructuredData()
structured_data.SetFromJSON(json.dumps({
- "backing_target_idx" : self.dbg.GetIndexOfTarget(corefile_process.GetTarget())
+ "backing_target_idx" : self.dbg.GetIndexOfTarget(corefile_process.GetTarget()),
+ "libbaz_path" : self.getBuildArtifact("libbaz.dylib")
}))
launch_info = lldb.SBLaunchInfo(None)
launch_info.SetProcessPluginName("ScriptedProcess")
@@ -81,10 +88,10 @@ class StackCoreScriptedProcesTestCase(TestBase):
self.assertTrue(process, PROCESS_IS_VALID)
self.assertEqual(process.GetProcessID(), 42)
- self.assertEqual(process.GetNumThreads(), 3)
+ self.assertEqual(process.GetNumThreads(), 2)
thread = process.GetSelectedThread()
self.assertTrue(thread, "Invalid thread.")
- self.assertEqual(thread.GetName(), "StackCoreScriptedThread.thread-2")
+ self.assertEqual(thread.GetName(), "StackCoreScriptedThread.thread-1")
self.assertTrue(target.triple, "Invalid target triple")
arch = target.triple.split('-')[0]
@@ -102,9 +109,17 @@ class StackCoreScriptedProcesTestCase(TestBase):
else:
self.assertTrue(thread.GetStopReason(), lldb.eStopReasonSignal)
- self.assertEqual(thread.GetNumFrames(), 6)
+ self.assertEqual(thread.GetNumFrames(), 5)
frame = thread.GetSelectedFrame()
self.assertTrue(frame, "Invalid frame.")
- self.assertIn("bar", frame.GetFunctionName())
- self.assertEqual(int(frame.FindValue("i", lldb.eValueTypeVariableArgument).GetValue()), 42)
- self.assertEqual(int(frame.FindValue("j", lldb.eValueTypeVariableLocal).GetValue()), 42 * 42)
+ func = frame.GetFunction()
+ self.assertTrue(func, "Invalid function.")
+
+ self.assertIn("baz", frame.GetFunctionName())
+ self.assertEqual(frame.vars.GetSize(), 2)
+ self.assertEqual(int(frame.vars.GetFirstValueByName('j').GetValue()), 42 * 42)
+ self.assertEqual(int(frame.vars.GetFirstValueByName('k').GetValue()), 42)
+
+ scripted_dylib = self.get_module_with_name(target, 'libbaz.dylib')
+ self.assertTrue(scripted_dylib, "Dynamic library libbaz.dylib not found.")
+ self.assertEqual(scripted_dylib.GetObjectFileHeaderAddress().GetLoadAddress(target), 0x1001e0000)