diff options
author | Alexandre Ganea <alex_toresh@yahoo.fr> | 2022-11-20 10:24:02 -0500 |
---|---|---|
committer | Alexandre Ganea <alex_toresh@yahoo.fr> | 2022-11-20 10:40:50 -0500 |
commit | 242a9cf7e6759bdd6c4af524d544f562b7385d27 (patch) | |
tree | 2fec0a29a5d3de05b005a79ee6e868dbcdb9739f /lld/docs | |
parent | e2bff1e489fbc2488dde94bc02dcfc767fca2443 (diff) | |
download | llvm-242a9cf7e6759bdd6c4af524d544f562b7385d27.tar.gz |
[LLD][COFF] Survive empty and invalid PCH signature
Solve two issues that showed up when using LLD with Unreal Engine & FASTBuild:
1. It seems the S_OBJNAME record doesn't always record the "precomp signature". We were relying on that to match the PCH.OBJ with their dependent-OBJ.
2. MSVC link.exe is able to link a PCH.OBJ when the "precomp signatureĆ doesn't match, but LLD was failing. This was occuring since the Unreal Engine Build Tool was compiling the PCH.OBJ, but the dependent-OBJ were compiled & cached through FASTBuild. Upon a clean rebuild, the PCH.OBJs were recompiled by the Unreal Build Tool, thus the "precomp signatures" were changing; however the OBJs were already cached by FASTBuild, thus having an old "precomp signatures".
We now ignore "precomp signatures" and properly fallback to cmd-line name lookup, like MSVC link.exe does, and only fail if the PCH.OBJ type stream doesn't match the count expected by the dependent-OBJ.
Differential Revision: https://reviews.llvm.org/D136762
Diffstat (limited to 'lld/docs')
-rw-r--r-- | lld/docs/ReleaseNotes.rst | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/lld/docs/ReleaseNotes.rst b/lld/docs/ReleaseNotes.rst index 0e9029bdcc09..31eb116c383a 100644 --- a/lld/docs/ReleaseNotes.rst +++ b/lld/docs/ReleaseNotes.rst @@ -45,6 +45,9 @@ COFF Improvements (`D137723 <https://reviews.llvm.org/D137723>`_) * Switched from SHA1 to BLAKE3 for PDB type hashing / ``-gcodeview-ghash`` (`D137101 <https://reviews.llvm.org/D137101>`_) +* Improvements to the PCH.OBJ files handling. Now LLD behaves the same as MSVC + link.exe when merging PCH.OBJ files that don't have the same signature. + (`D136762 <https://reviews.llvm.org/D136762>`_) MinGW Improvements ------------------ |