[ELF] --reproduce: strip directories for --dependency-file=

CMake may generate build.ninja with DEP_FILE specifying a non-existent
directory in the reproduce tarball.
This commit is contained in:
Fangrui Song 2024-11-24 17:23:52 -08:00
parent 5ed09d552d
commit 6aeffa18e9
2 changed files with 3 additions and 1 deletions

View File

@ -174,6 +174,7 @@ std::string elf::createResponseFile(const opt::InputArgList &args) {
break; break;
case OPT_o: case OPT_o:
case OPT_Map: case OPT_Map:
case OPT_dependency_file:
case OPT_print_archive_stats: case OPT_print_archive_stats:
case OPT_why_extract: case OPT_why_extract:
// If an output path contains directories, "lld @response.txt" will // If an output path contains directories, "lld @response.txt" will

View File

@ -76,11 +76,12 @@
## Check that directory path is stripped from -o <file-path> ## Check that directory path is stripped from -o <file-path>
# RUN: mkdir -p %t.dir/build4/a/b/c # RUN: mkdir -p %t.dir/build4/a/b/c
# RUN: cd %t.dir # RUN: cd %t.dir
# RUN: ld.lld build1/foo.o -o build4/a/b/c/bar -Map build4/map --print-archive-stats=build4/stats \ # RUN: ld.lld build1/foo.o -o build4/a/b/c/bar -Map build4/map --dependency-file=build4/bar.d --print-archive-stats=build4/stats \
# RUN: --why-extract=build4/why -shared --as-needed --reproduce=repro4.tar # RUN: --why-extract=build4/why -shared --as-needed --reproduce=repro4.tar
# RUN: tar xOf repro4.tar repro4/response.txt | FileCheck %s --check-prefix=RSP4 # RUN: tar xOf repro4.tar repro4/response.txt | FileCheck %s --check-prefix=RSP4
# RSP4: -o bar # RSP4: -o bar
# RSP4-NEXT: -Map map # RSP4-NEXT: -Map map
# RSP4-NEXT: --dependency-file bar.d
# RSP4-NEXT: --print-archive-stats=stats # RSP4-NEXT: --print-archive-stats=stats
# RSP4-NEXT: --why-extract=why # RSP4-NEXT: --why-extract=why