[PATCH] D97212: [lld-link] Add /reproduce: support for several flags

Nico Weber via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Feb 22 11:35:18 PST 2021


thakis created this revision.
thakis added reviewers: hans, rnk.
thakis requested review of this revision.

/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:)


https://reviews.llvm.org/D97212

Files:
  lld/COFF/Driver.cpp
  lld/COFF/Driver.h
  lld/COFF/PDB.cpp
  lld/test/COFF/linkrepro-manifest.test
  lld/test/COFF/linkrepro-pdb.test
  lld/test/COFF/linkrepro.test

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D97212.325510.patch
Type: text/x-patch
Size: 10682 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210222/71fc5660/attachment.bin>


More information about the llvm-commits mailing list