# 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'