[CodeView] Add full repro to LF_BUILDINFO record
authorAlexandre Ganea <alexandre.ganea@ubisoft.com>
Thu, 18 Jun 2020 13:16:59 +0000 (09:16 -0400)
committerAlexandre Ganea <alexandre.ganea@ubisoft.com>
Thu, 18 Jun 2020 13:17:15 +0000 (09:17 -0400)
commit403f9537924b8910ed4f741ed96c61f5e657915b
tree9493cd437b6824b2050df8e4085e07c2506d06bd
parent89ea0b05207d45c145fb525df554b3b986ae379b
[CodeView] Add full repro to LF_BUILDINFO record

This patch adds some missing information to the LF_BUILDINFO which allows for rebuilding an .OBJ without any external dependency but the .OBJ itself (other than the compiler executable).

Some tools need this information to reproduce a build without any knowledge of the build system. The LF_BUILDINFO therefore stores a full path to the compiler, the PWD (which is the CWD at program startup), a relative or absolute path to the TU, and the full CC1 command line. The command line needs to be freestanding (not depend on any environment variable). In the same way, MSVC doesn't store the provided command-line, but an expanded version (somehow their equivalent of CC1) which is also freestanding.

For more information see PR36198 and D43002.

Differential Revision: https://reviews.llvm.org/D80833
clang/test/CodeGen/debug-info-codeview-buildinfo.c [new file with mode: 0644]
lld/COFF/PDB.cpp
lld/test/COFF/Inputs/pdb_lines_1_relative.yaml
lld/test/COFF/Inputs/pdb_lines_2_relative.yaml
lld/test/COFF/pdb-relative-source-lines.test
llvm/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp