forked from OSchip/llvm-project
[clang] Fix absolute file paths with -fdebug-prefix-map
Previously if you passed an absolute path to clang, where only part of the path to the file was remapped, it would result in the file's DIFile being stored with a duplicate path, for example: ``` !DIFile(filename: "./ios/Sources/bar.c", directory: "./ios/Sources") ``` This change handles absolute paths, specifically in the case they are remapped to something relative, and uses the dirname for the directory, and basename for the filename. This also adds a test verifying this behavior for more standard uses as well. Differential Revision: https://reviews.llvm.org/D111352
This commit is contained in:
parent
b4498e6b8d
commit
a23a596793
|
@ -446,6 +446,9 @@ CGDebugInfo::createFile(StringRef FileName,
|
|||
Dir = DirBuf;
|
||||
File = FileBuf;
|
||||
}
|
||||
} else if (llvm::sys::path::is_absolute(FileName)) {
|
||||
Dir = llvm::sys::path::parent_path(RemappedFile);
|
||||
File = llvm::sys::path::filename(RemappedFile);
|
||||
} else {
|
||||
Dir = CurDir;
|
||||
File = RemappedFile;
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
// RUN: mkdir -p %t.nested/dir && cd %t.nested/dir
|
||||
// RUN: cp %s %t.nested/dir/main.c
|
||||
// RUN: %clang_cc1 -debug-info-kind=standalone -fdebug-prefix-map=%t.nested=. %t.nested/dir/main.c -emit-llvm -o - | FileCheck %s
|
||||
//
|
||||
// RUN: %clang_cc1 -debug-info-kind=standalone -fdebug-prefix-map=%p=. %s -emit-llvm -o - | FileCheck %s --check-prefix=CHECK-DIRECT
|
||||
//
|
||||
// RUN: cd %p
|
||||
// RUN: %clang_cc1 -debug-info-kind=standalone -fdebug-compilation-dir=. relative-debug-prefix-map.c -emit-llvm -o - | FileCheck %s --check-prefix=CHECK-DIRECT
|
||||
|
||||
// CHECK: !DIFile(filename: "main.c", directory: "./dir")
|
||||
// CHECK-DIRECT: !DIFile(filename: "relative-debug-prefix-map.c", directory: ".")
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
(void)argc;
|
||||
(void)argv;
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue