summaryrefslogtreecommitdiff
path: root/lldb/test/API/windows/launch/replace-dll/TestReplaceDLL.py
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/test/API/windows/launch/replace-dll/TestReplaceDLL.py')
-rw-r--r--lldb/test/API/windows/launch/replace-dll/TestReplaceDLL.py62
1 files changed, 62 insertions, 0 deletions
diff --git a/lldb/test/API/windows/launch/replace-dll/TestReplaceDLL.py b/lldb/test/API/windows/launch/replace-dll/TestReplaceDLL.py
new file mode 100644
index 000000000000..afa97cf4afe5
--- /dev/null
+++ b/lldb/test/API/windows/launch/replace-dll/TestReplaceDLL.py
@@ -0,0 +1,62 @@
+import lldb
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test import lldbutil
+
+import gc
+import os
+
+
+class ReplaceDllTestCase(TestBase):
+ @skipUnlessWindows
+ def test(self):
+ """
+ Test that LLDB unlocks module files once all references are released.
+ """
+
+ exe = self.getBuildArtifact("a.out")
+ foo = self.getBuildArtifact("foo.dll")
+ bar = self.getBuildArtifact("bar.dll")
+
+ self.build(
+ dictionary={
+ "DYLIB_NAME": "foo",
+ "DYLIB_C_SOURCES": "foo.c",
+ "C_SOURCES": "test.c",
+ }
+ )
+ self.build(
+ dictionary={
+ "DYLIB_ONLY": "YES",
+ "DYLIB_NAME": "bar",
+ "DYLIB_C_SOURCES": "bar.c",
+ }
+ )
+
+ target = self.dbg.CreateTarget(exe)
+ self.assertTrue(target, VALID_TARGET)
+
+ shlib_names = ["foo"]
+ environment = self.registerSharedLibrariesWithTarget(target, shlib_names)
+ process = target.LaunchSimple(
+ None, environment, self.get_process_working_directory()
+ )
+ self.assertEqual(process.GetExitStatus(), 42)
+
+ module = next((m for m in target.modules if "foo" in m.file.basename), None)
+ self.assertIsNotNone(module)
+ self.assertEqual(module.file.fullpath, foo)
+
+ target.RemoveModule(module)
+ del module
+ gc.collect()
+
+ self.dbg.MemoryPressureDetected()
+
+ os.remove(foo)
+ os.rename(bar, foo)
+
+ process = target.LaunchSimple(
+ None, environment, self.get_process_working_directory()
+ )
+ self.assertEqual(process.GetExitStatus(), 43)