[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