summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test/lang/objc/modules-hash-mismatch/TestClangModulesHashMismatch.py
diff options
context:
space:
mode:
authorAdrian Prantl <aprantl@apple.com>2019-11-14 13:57:49 -0800
committerAdrian Prantl <aprantl@apple.com>2019-11-15 11:52:13 -0800
commit1cbe0038944a39ba79078997f9c65ba8abf6fbdd (patch)
tree56f59d50075a7e99c26c27829c5c36a2e134cf4c /lldb/packages/Python/lldbsuite/test/lang/objc/modules-hash-mismatch/TestClangModulesHashMismatch.py
parent7d71dd928d1dcc838dc4dbe5cf294f557609f271 (diff)
downloadbcm5719-llvm-1cbe0038944a39ba79078997f9c65ba8abf6fbdd.tar.gz
bcm5719-llvm-1cbe0038944a39ba79078997f9c65ba8abf6fbdd.zip
[-gmodules] Let LLDB log a warning if the Clang module hash mismatches.
This feature is mostly there to aid debugging of Clang module issues, since the only useful actual the end-user can to is to recompile their program. Differential Revision: https://reviews.llvm.org/D70272
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/lang/objc/modules-hash-mismatch/TestClangModulesHashMismatch.py')
-rw-r--r--lldb/packages/Python/lldbsuite/test/lang/objc/modules-hash-mismatch/TestClangModulesHashMismatch.py49
1 files changed, 49 insertions, 0 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/lang/objc/modules-hash-mismatch/TestClangModulesHashMismatch.py b/lldb/packages/Python/lldbsuite/test/lang/objc/modules-hash-mismatch/TestClangModulesHashMismatch.py
new file mode 100644
index 00000000000..298e26ee400
--- /dev/null
+++ b/lldb/packages/Python/lldbsuite/test/lang/objc/modules-hash-mismatch/TestClangModulesHashMismatch.py
@@ -0,0 +1,49 @@
+from __future__ import print_function
+
+import unittest2
+import os
+import shutil
+
+import lldb
+from lldbsuite.test.decorators import *
+from lldbsuite.test.lldbtest import *
+from lldbsuite.test import lldbutil
+
+
+class TestClangModuleHashMismatch(TestBase):
+ mydir = TestBase.compute_mydir(__file__)
+
+ def setUp(self):
+ TestBase.setUp(self)
+
+ @skipUnlessDarwin
+ @skipIf(debug_info=no_match(["gmodules"]))
+ def test_expr(self):
+ with open(self.getBuildArtifact("module.modulemap"), "w") as f:
+ f.write("""
+ module Foo { header "f.h" }
+ """)
+ with open(self.getBuildArtifact("f.h"), "w") as f:
+ f.write("""
+ typedef int my_int;
+ void f() {}
+ """)
+
+ mod_cache = self.getBuildArtifact("private-module-cache")
+ if os.path.isdir(mod_cache):
+ shutil.rmtree(mod_cache)
+ self.build()
+ self.assertTrue(os.path.isdir(mod_cache), "module cache exists")
+
+ logfile = self.getBuildArtifact("host.log")
+ self.runCmd("log enable -v -f %s lldb host" % logfile)
+ target, _, _, _ = lldbutil.run_to_source_breakpoint(
+ self, "break here", lldb.SBFileSpec("main.m"))
+ target.GetModuleAtIndex(0).FindTypes('my_int')
+
+ found = False
+ with open(logfile, 'r') as f:
+ for line in f:
+ if "hash mismatch" in line and "Foo" in line:
+ found = True
+ self.assertTrue(found)
OpenPOWER on IntegriCloud