| # TestCompilationPrefixMap.py |
| # |
| # Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| # See https://llvm.org/LICENSE.txt for license information. |
| # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| # |
| """ |
| Test that LLDB auto-loads compilation-prefix-map.json to resolve remapped |
| source paths without requiring manual `settings set target.source-map`. |
| """ |
| import os |
| |
| import lldb |
| from lldbsuite.test.decorators import * |
| from lldbsuite.test.lldbtest import * |
| import lldbsuite.test.lldbutil as lldbutil |
| |
| |
| class TestCompilationPrefixMap(TestBase): |
| @skipIfWindows |
| @skipIfHostIncompatibleWithTarget |
| def test_compilation_prefix_map(self): |
| """ |
| Build a binary with -fdebug-prefix-map remapping the source directory |
| to /fake/srcdir, place compilation-prefix-map.json next to the binary |
| mapping /fake/srcdir back to the real source directory, and verify that |
| LLDB resolves a source-line breakpoint without any manual source-map |
| configuration. |
| """ |
| self.build() |
| |
| src_dir = self.getSourceDir() |
| |
| log = self.getBuildArtifact("module.log") |
| self.runCmd('log enable lldb module -f "%s"' % log) |
| |
| source_spec = lldb.SBFileSpec(os.path.join(src_dir, "main.c")) |
| lldbutil.run_to_source_breakpoint(self, "return x", source_spec) |
| |
| self.filecheck_log(log, __file__) |
| |
| |
| # CHECK: found compilation-prefix-map.json |
| # CHECK: applying prefix map: '/fake/srcdir' |