llvm-project/lld/test/COFF
Rui Ueyama d8111f2c2e COFF: Fix ordinal-only delay-imported symbols.
DLLs can export symbols only by ordinal, and DLLs are also able to be
delay-loaded. The combination of the two is valid. I didn't expect
that combination. This patch implements that feature.

With this patch, LLD is now able to link a working executable of Chrome
for 64-bit debug build. The browser seemed to be working fine. Chrome is
good for testing because of its variety and size. It contains various
open-source libraries written by various people. The largest file in
Chrome is chrome.dll whose size is 496MB. LLD can link it in 24 seconds.
MSVC linker takes 48 seconds. So it is exactly 2x faster. (I measured
that with debug info and ICF being turned off.)

With this achievement, I think I can say that the new COFF linker is
now mostly feature complete for x86-64 Windows. I believe there are
still many lingering bugs, though.

llvm-svn: 241318
2015-07-03 04:32:49 +00:00
..
Inputs Add layout/triple to fix test on platforms where names are mangled. 2015-06-30 01:15:54 +00:00
alternatename.test COFF: Fix logic to find default entry name or subsystem. 2015-06-29 01:03:53 +00:00
base.test COFF: Fix /base option. 2015-07-03 00:02:19 +00:00
baserel.test COFF: Fix logic to find default entry name or subsystem. 2015-06-29 01:03:53 +00:00
common.test COFF: Fix logic to find default entry name or subsystem. 2015-06-29 01:03:53 +00:00
conflict.test COFF: Implement SymbolBody::getDebugName() for DefinedBitcode symbols. 2015-06-30 00:47:52 +00:00
debug.test COFF: Ignore debug symbols. 2015-06-24 00:05:50 +00:00
defparser.test COFF: Fix lexer for the module-definition file. 2015-06-25 21:06:00 +00:00
delayimports.test COFF: Fix ordinal-only delay-imported symbols. 2015-07-03 04:32:49 +00:00
dll.test COFF: Fix /export. 2015-06-29 14:27:10 +00:00
driver.test COFF: Implement subsystem inference. 2015-05-31 03:55:46 +00:00
entry-inference.test COFF: Infer entry symbol name if /entry is not given. 2015-05-31 03:34:08 +00:00
entry-inference2.test COFF: Infer entry point as early as possible, but not too early. 2015-07-02 03:15:15 +00:00
entry-mangled.test COFF: Handle mangled entry symbol name. 2015-06-29 14:43:07 +00:00
entrylib.ll COFF: Fix logic to find default entry name or subsystem. 2015-06-29 01:03:53 +00:00
export.test COFF: Support module-definition files. 2015-06-17 19:19:25 +00:00
failifmismatch.test COFF: Add /failifmismatch option. 2015-06-04 19:21:24 +00:00
filetype.test COFF: Fix logic to find default entry name or subsystem. 2015-06-29 01:03:53 +00:00
force.test COFF: Fix logic to find default entry name or subsystem. 2015-06-29 01:03:53 +00:00
heap.test COFF: Fix logic to find default entry name or subsystem. 2015-06-29 01:03:53 +00:00
help.test COFF: Add /help option. 2015-05-29 16:11:52 +00:00
icf.test COFF: Fix logic to find default entry name or subsystem. 2015-06-29 01:03:53 +00:00
imports.test COFF: Align DLL import thunks on 16-byte boundaries. 2015-06-26 18:28:56 +00:00
include.test COFF: Fix logic to find default entry name or subsystem. 2015-06-29 01:03:53 +00:00
include2.test COFF: Change the order of adding symbols to the symbol table. 2015-06-30 19:35:21 +00:00
internal.test COFF: Fix logic to find default entry name or subsystem. 2015-06-29 01:03:53 +00:00
libpath.test COFF: Fix precedence between LIB and /libpath. 2015-06-19 22:39:48 +00:00
linkenv.test COFF: Fix logic to find default entry name or subsystem. 2015-06-29 01:03:53 +00:00
lldmap.test COFF: Fix logic to find default entry name or subsystem. 2015-06-29 01:03:53 +00:00
locally-imported.test COFF: Fix locally-imported symbols. 2015-07-02 20:33:50 +00:00
long-section-name.test COFF: Fix logic to find default entry name or subsystem. 2015-06-29 01:03:53 +00:00
lto-chkstk.ll COFF: Handle references from LTO object to lazy symbols correctly. 2015-06-09 04:29:54 +00:00
lto-comdat.ll COFF: Symbol resolution for common and comdat symbols defined in bitcode. 2015-06-11 21:49:54 +00:00
lto-linker-opts.ll COFF: Read linker directives from bitcode files. 2015-06-06 02:00:45 +00:00
lto-new-symbol.ll COFF: Allow the combined LTO object to define new symbols. 2015-06-09 02:53:09 +00:00
lto.ll COFF: Skip internal symbols in bitcode files. 2015-06-08 20:21:28 +00:00
machine.test COFF: Implement subsystem inference. 2015-05-31 03:55:46 +00:00
manifest.test COFF: Fix logic to find default entry name or subsystem. 2015-06-29 01:03:53 +00:00
nodefaultlib.test COFF: Add /libpath option. 2015-05-31 20:10:11 +00:00
noentry.test COFF: Add /noentry flag. 2015-06-28 19:56:30 +00:00
opt.test COFF: Fix logic to find default entry name or subsystem. 2015-06-29 01:03:53 +00:00
options.test COFF: Fix logic to find default entry name or subsystem. 2015-06-29 01:03:53 +00:00
order.test COFF: Change the order of adding symbols to the symbol table. 2015-06-30 19:35:21 +00:00
out.test COFF: Fix logic to find default entry name or subsystem. 2015-06-29 01:03:53 +00:00
resource.test COFF: Fix logic to find default entry name or subsystem. 2015-06-29 01:03:53 +00:00
responsefile.test COFF: Fix logic to find default entry name or subsystem. 2015-06-29 01:03:53 +00:00
stack.test COFF: Fix logic to find default entry name or subsystem. 2015-06-29 01:03:53 +00:00
subsystem-inference.test COFF: Fix logic to find default entry name or subsystem. 2015-06-29 01:03:53 +00:00
subsystem.test COFF: Implement subsystem inference. 2015-05-31 03:55:46 +00:00
unwind.test COFF: Fix logic to find default entry name or subsystem. 2015-06-29 01:03:53 +00:00
version.test COFF: Fix logic to find default entry name or subsystem. 2015-06-29 01:03:53 +00:00