diff options
author | Adrian Prantl <aprantl@apple.com> | 2019-11-14 13:57:49 -0800 |
---|---|---|
committer | Adrian Prantl <aprantl@apple.com> | 2019-11-15 11:52:13 -0800 |
commit | 1cbe0038944a39ba79078997f9c65ba8abf6fbdd (patch) | |
tree | 56f59d50075a7e99c26c27829c5c36a2e134cf4c /lldb/packages/Python/lldbsuite/test/lang/objc/modules-hash-mismatch/TestClangModulesHashMismatch.py | |
parent | 7d71dd928d1dcc838dc4dbe5cf294f557609f271 (diff) | |
download | bcm5719-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.py | 49 |
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) |