diff options
| author | Vedant Kumar <vsk@apple.com> | 2016-07-18 22:32:02 +0000 |
|---|---|---|
| committer | Vedant Kumar <vsk@apple.com> | 2016-07-18 22:32:02 +0000 |
| commit | d04929d875d7c1bd4627d534f0ab432243003e5e (patch) | |
| tree | 6208b87a6710b40b42e0f2b2a0704f49dc6c4804 /clang | |
| parent | 4ced16dd2efd1793bd5c294c807d75737a06e7f6 (diff) | |
| download | bcm5719-llvm-d04929d875d7c1bd4627d534f0ab432243003e5e.tar.gz bcm5719-llvm-d04929d875d7c1bd4627d534f0ab432243003e5e.zip | |
[Coverage] Remove '..' from filenames *after* getting an absolute path
Failure to do this breaks relative paths which begin with '..'.
This issue was caught by the (still nascent) coverage bot.
llvm-svn: 275924
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/lib/CodeGen/CoverageMappingGen.cpp | 2 | ||||
| -rw-r--r-- | clang/test/CoverageMapping/abspath.cpp | 19 |
2 files changed, 16 insertions, 5 deletions
diff --git a/clang/lib/CodeGen/CoverageMappingGen.cpp b/clang/lib/CodeGen/CoverageMappingGen.cpp index c5495de3b56..4debc7e9506 100644 --- a/clang/lib/CodeGen/CoverageMappingGen.cpp +++ b/clang/lib/CodeGen/CoverageMappingGen.cpp @@ -932,8 +932,8 @@ StringRef getCoverageSection(const CodeGenModule &CGM) { std::string normalizeFilename(StringRef Filename) { llvm::SmallString<256> Path(Filename); - llvm::sys::path::remove_dots(Path, /*remove_dot_dots=*/true); llvm::sys::fs::make_absolute(Path); + llvm::sys::path::remove_dots(Path, /*remove_dot_dots=*/true); return Path.str().str(); } diff --git a/clang/test/CoverageMapping/abspath.cpp b/clang/test/CoverageMapping/abspath.cpp index ffc3896c413..dfdf10f4259 100644 --- a/clang/test/CoverageMapping/abspath.cpp +++ b/clang/test/CoverageMapping/abspath.cpp @@ -1,7 +1,18 @@ -// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -emit-llvm -main-file-name abspath.cpp %S/Inputs/../abspath.cpp -o - | FileCheck %s +// This test requires mkdir. +// REQUIRES: shell +// +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -emit-llvm -main-file-name abspath.cpp %S/Inputs/../abspath.cpp -o - | FileCheck -check-prefix=RMDOTS %s -// CHECK: @__llvm_coverage_mapping = {{.*}}"\01 -// CHECK-NOT: Inputs -// CHECK: " +// RMDOTS: @__llvm_coverage_mapping = {{.*}}"\01 +// RMDOTS-NOT: Inputs +// RMDOTS: " + +// RUN: cd %T && mkdir -p test && cd test +// RUN: echo "void f1() {}" > f1.c +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -emit-llvm -main-file-name abspath.cpp ../test/f1.c -o - | FileCheck -check-prefix=RELPATH %s + +// RELPATH: @__llvm_coverage_mapping = {{.*}}"\01 +// RELPATH: test{{.*}}f1.c +// RELPATH: " void f1() {} |

