diff options
author | Nico Weber <nicolasweber@gmx.de> | 2018-10-03 17:01:39 +0000 |
---|---|---|
committer | Nico Weber <nicolasweber@gmx.de> | 2018-10-03 17:01:39 +0000 |
commit | d37782627772fe13927baa282276c0af591f2b75 (patch) | |
tree | b01a8713a53c2e238bd3c0a79d143954992c06e2 /llvm/lib/Bitcode/Writer/BitcodeWriter.cpp | |
parent | 2c59475c064476d321d9c92bd88e7333e9657ce8 (diff) | |
download | llvm-d37782627772fe13927baa282276c0af591f2b75.zip llvm-d37782627772fe13927baa282276c0af591f2b75.tar.gz llvm-d37782627772fe13927baa282276c0af591f2b75.tar.bz2 |
lld-link: Several tweaks to default entry point selection.
Three related changes:
1. link.exe uses the presence of main and wmain to decide if it should call
mainCRTStartup or wmainCRTStartup, even if /nodefaultlib is passed. For
compatibility, remove FindMain logic.
2. Default to the non-wide entrypoint if main is not found. This has two effects:
2a. In normal links, lld-link now prints
lld-link: error: undefined symbol: _main
>>> referenced by f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:78
>>> libcmt.lib(exe_main.obj):("int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ))
>>> referenced by f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:283
>>> libcmt.lib(exe_main.obj):("int __cdecl __scrt_common_main_seh(void)" (?__scrt_common_main_seh@@YAHXZ))
instead of
lld-link: error: entry point must be defined
This is arguably a better error message, since it now mentions that _main is
missing. (This matches link.exe's diagnostic in this case.)
2b. With /nodefautlib, we now default to mainCRTStartup if no main() is
present, again matching link.exe. This makes r337407 obsolete.
This means if you have a cc file containing both mainCRTStartup and
wmainCRTStartup and you pass /nodefaultlib /subsystem:console, lld-link will
now call mainCRTStartup, matching link.exe
3. Print a warning if both main and wmain are present, similar to link.exe's
LNK4067.
Differential Revision: https://reviews.llvm.org/D52832
llvm-svn: 343698
Diffstat (limited to 'llvm/lib/Bitcode/Writer/BitcodeWriter.cpp')
0 files changed, 0 insertions, 0 deletions