[all-commits] [llvm/llvm-project] e6d1f2: [lld-link] Add /reproduce: support for several flags
Nico Weber via All-commits
all-commits at lists.llvm.org
Mon Feb 22 13:53:22 PST 2021
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: e6d1f261a5a08d4c05b25509a6f4217a8a1c2188
https://github.com/llvm/llvm-project/commit/e6d1f261a5a08d4c05b25509a6f4217a8a1c2188
Author: Nico Weber <thakis at chromium.org>
Date: 2021-02-22 (Mon, 22 Feb 2021)
Changed paths:
M lld/COFF/Driver.cpp
M lld/COFF/Driver.h
M lld/COFF/PDB.cpp
M lld/test/COFF/linkrepro-manifest.test
M lld/test/COFF/linkrepro-pdb.test
M lld/test/COFF/linkrepro.test
Log Message:
-----------
[lld-link] Add /reproduce: support for several flags
/reproduce: now works correctly with:
- /call-graph-ordering-file:
- /def:
- /natvis:
- /order:
- /pdbstream:
I went through all instances of MemoryBuffer::getFile() and made sure
everything that didn't already do so called takeBuffer().
For natvis, that wasn't possible since DebugInfo/PDB wants to take
owernship of the natvis buffer. For that case, I'm manually adding the
tar file entry.
/natvis: and /pdbstream: is slightly awkward, since createResponseFile()
always adds these flags to the response file but createPDB() (which
ultimately adds the files referenced by the flags) is only called if
/debug is also passed. So when using /natvis: without /debug with
/reproduce:, lld won't warn, but when linking using the response
file from the archive, it won't find the natvis file since it's not
in the tar. This isn't a new issue though, and after this patch things
at least work with using /natvis: _with_ debug with /reproduce:.
(Same for /pdbstream:)
Differential Revison: https://reviews.llvm.org/D97212
More information about the All-commits
mailing list