llvm-project/lld/COFF
Reid Kleckner ac2226b0f5 [PDB] Improve error handling when writes fail
Handle PDB writing errors like any other error in LLD: emit an error and
continue. This allows the linker to print timing data and summary data
after linking, which can be helpful for finding PDB size problems. Also
report how large the file would have been.

Example output:

lld-link: error: Output data is larger than 4 GiB. File size would have been 6,937,108,480
lld-link: error: failed to write PDB file ./chrome.dll.pdb
                                    Summary
--------------------------------------------------------------------------------
          33282 Input OBJ files (expanded from all cmd-line inputs)
              4 PDB type server dependencies
              0 Precomp OBJ dependencies
       33396931 Input type records
... snip ...
  Input File Reading:           59756 ms ( 45.5%)
  GC:                            7500 ms (  5.7%)
  ICF:                           3336 ms (  2.5%)
  Code Layout:                   6329 ms (  4.8%)
  PDB Emission (Cumulative):    46192 ms ( 35.2%)
    Add Objects:                27609 ms ( 21.0%)
      Type Merging:             16740 ms ( 12.8%)
      Symbol Merging:           10761 ms (  8.2%)
    Publics Stream Layout:       9383 ms (  7.1%)
    TPI Stream Layout:           1678 ms (  1.3%)
    Commit to Disk:              3461 ms (  2.6%)
--------------------------------------------------
Total Link Time:               131244 ms (100.0%)

Differential Revision: https://reviews.llvm.org/D102713
2021-05-18 13:17:17 -07:00
..
CMakeLists.txt [COFF] Port CallGraphSort to COFF from ELF 2020-07-30 15:21:44 -07:00
CallGraphSort.cpp [COFF] Port CallGraphSort to COFF from ELF 2020-07-30 15:21:44 -07:00
CallGraphSort.h [COFF] Port CallGraphSort to COFF from ELF 2020-07-30 15:21:44 -07:00
Chunks.cpp [COFF] Simplify ICF associated comdat handling 2021-04-14 10:40:16 -07:00
Chunks.h [COFF] Remove a truncation assertion from setRVA 2021-05-13 19:37:14 -07:00
Config.h [LLD] Implement /guard:[no]ehcont 2021-04-14 15:06:49 +08:00
DLL.cpp [LLD] [COFF] Add an assert regarding the RVA of exported symbols. NFC. 2021-05-11 13:04:01 +03:00
DLL.h [COFF] Share the tail in delayimport symbol thunks 2019-07-11 21:19:11 +00:00
DebugTypes.cpp [LLD][COFF] Avoid std::vector resizes during type merging 2021-01-13 14:35:03 -05:00
DebugTypes.h [LLD][COFF] Simplify function. NFC. 2021-01-07 22:37:11 -05:00
Driver.cpp [LLD] [COFF] Fix including the personality function for DWARF EH when linking with --gc-sections 2021-05-12 22:23:01 +03:00
Driver.h [lld-link] Add /reproduce: support for several flags 2021-02-22 16:52:49 -05:00
DriverUtils.cpp [LLD] Implement /guard:[no]ehcont 2021-04-14 15:06:49 +08:00
ICF.cpp Revert "[COFF] Only consider associated EH sections during ICF" 2021-03-29 19:15:35 -07:00
ICF.h [lld-link] Add safe icf mode to lld-link, which does safe icf for all sections. 2021-03-03 14:52:33 -08:00
InputFiles.cpp [LLD] Implement /guard:[no]ehcont 2021-04-14 15:06:49 +08:00
InputFiles.h [LLD] Implement /guard:[no]ehcont 2021-04-14 15:06:49 +08:00
LLDMapFile.cpp [Support] Move LLD's parallel algorithm wrappers to support 2020-05-05 15:21:05 -07:00
LLDMapFile.h [lld-link] Support /map option, matching link.exe 's /map output format 2020-03-24 09:48:00 -04:00
LTO.cpp Reland "[lld-link] Enable addrsig table in COFF lto" 2021-04-29 15:54:12 -07:00
LTO.h [COFF] Assign unique identifiers to ObjFiles from LTO 2020-04-17 17:15:12 -07:00
MapFile.cpp [Support] Move LLD's parallel algorithm wrappers to support 2020-05-05 15:21:05 -07:00
MapFile.h [Coding style change][lld] Rename variables for non-ELF ports 2019-07-11 05:40:30 +00:00
MarkLive.cpp [COFF] Don't treat DWARF sections as GC roots 2020-03-27 12:37:43 -07:00
MarkLive.h [Coding style change][lld] Rename variables for non-ELF ports 2019-07-11 05:40:30 +00:00
MinGW.cpp [LLD] [COFF] Fix the mingw --export-all-symbols behaviour with comdat symbols 2021-04-29 23:35:10 +03:00
MinGW.h Reapply [LLD] [COFF] Implement a GNU/ELF like -wrap option 2020-10-15 22:14:02 +03:00
Options.td [lld] add context-sensitive PGO options for COFF. 2021-03-24 23:40:09 -07:00
PDB.cpp [PDB] Improve error handling when writes fail 2021-05-18 13:17:17 -07:00
PDB.h Re-land "[PDB] Merge types in parallel when using ghashing" 2020-09-30 15:44:38 -07:00
README.md
SymbolTable.cpp Reapply [LLD] [COFF] Implement a GNU/ELF like -wrap option 2020-10-15 22:14:02 +03:00
SymbolTable.h [COFF] Assign unique identifiers to ObjFiles from LTO 2020-04-17 17:15:12 -07:00
Symbols.cpp [COFF] Migrate COFFObjectFile to Expected<T> 2020-05-08 14:01:39 -07:00
Symbols.h [CFGuard] Add address-taken IAT tables and delay-load support 2020-11-17 18:24:45 -08:00
TypeMerger.h [PDB] Use one func id DenseMap instead of per-source maps, NFC 2020-10-01 12:22:27 -07:00
Writer.cpp [lld-link] Warn on exported deleting dtor 2021-04-20 14:06:31 -07:00
Writer.h [LLD][COFF] Cover usage of LLD-as-a-library in tests 2020-09-24 15:07:50 -04:00

README.md

See docs/NewLLD.rst