llvm-project/lld/COFF
Martin Storsjo d581dd5013 [LLD] [COFF] Implement MinGW default manifest handling
In mingw environments, resources are normally compiled to resource
object files directly, instead of letting the linker convert them to
COFF format.

Since some time, GCC supports the notion of a default manifest object.
When invoking the linker, GCC looks for the default manifest object
file, and if found in the expected path, it is added to linker commands.

The default manifest is one that indicates support for the latest known
versions of windows, to implicitly unlock the modern behaviours of certain
APIs.

Not all mingw/gcc distributions include this file, but e.g. in msys2,
the default manifest object is distributed in a separate package (which
can be but might not always be installed).

This means that even if user projects only use one single resource
object file, the linker can end up with two resource object files,
and thus needs to support merging them.

The default manifest has a language id of zero, and GNU ld has got
logic for dropping a manifest with a zero language id, if there's
another manifest present with a nonzero language id. If there are
multiple manifests with a nonzero language id, the merging process
errors out.

Differential Revision: https://reviews.llvm.org/D66825

llvm-svn: 370974
2019-09-04 20:34:00 +00:00
..
CMakeLists.txt [LLD][COFF] Early dependency detection 2019-04-01 13:36:59 +00:00
Chunks.cpp [COFF] Rename variale references in comments after VariableName -> variableName change 2019-07-16 08:26:38 +00:00
Chunks.h [Coding style change][lld] Rename variables for non-ELF ports 2019-07-11 05:40:30 +00:00
Config.h [lld-link] implement -lto-obj-path 2019-08-21 18:24:59 +00:00
DLL.cpp [COFF] Clarify a comment. NFC. 2019-08-02 11:08:15 +00:00
DLL.h [COFF] Share the tail in delayimport symbol thunks 2019-07-11 21:19:11 +00:00
DebugTypes.cpp reland "[lld-link] implement -start-lib and -end-lib" 2019-09-03 20:32:16 +00:00
DebugTypes.h [Coding style change][lld] Rename variables for non-ELF ports 2019-07-11 05:40:30 +00:00
Driver.cpp reland "[lld-link] implement -start-lib and -end-lib" 2019-09-03 20:32:16 +00:00
Driver.h reland "[lld-link] implement -start-lib and -end-lib" 2019-09-03 20:32:16 +00:00
DriverUtils.cpp [LLD] [COFF] Implement MinGW default manifest handling 2019-09-04 20:34:00 +00:00
ICF.cpp [Coding style change][lld] Rename variables for non-ELF ports 2019-07-11 05:40:30 +00:00
ICF.h [Coding style change][lld] Rename variables for non-ELF ports 2019-07-11 05:40:30 +00:00
InputFiles.cpp reland "[lld-link] implement -start-lib and -end-lib" 2019-09-03 20:32:16 +00:00
InputFiles.h reland "[lld-link] implement -start-lib and -end-lib" 2019-09-03 20:32:16 +00:00
LTO.cpp [lld-link] implement -lto-obj-path 2019-08-21 18:24:59 +00:00
LTO.h [lld-link] implement -thinlto-index-only 2019-07-11 18:03:14 +00:00
MapFile.cpp Fight a bit against global initializers. NFC. 2019-08-22 19:43:27 +00:00
MapFile.h [Coding style change][lld] Rename variables for non-ELF ports 2019-07-11 05:40:30 +00:00
MarkLive.cpp Fix odd variable names. 2019-07-12 06:12:27 +00:00
MarkLive.h [Coding style change][lld] Rename variables for non-ELF ports 2019-07-11 05:40:30 +00:00
MinGW.cpp Rename F_{None,Text,Append} to OF_{None,Text,Append}. NFC 2019-08-05 05:43:48 +00:00
MinGW.h [Coding style change][lld] Rename variables for non-ELF ports 2019-07-11 05:40:30 +00:00
Options.td reland "[lld-link] implement -start-lib and -end-lib" 2019-09-03 20:32:16 +00:00
PDB.cpp [COFF] Print the file name on errors writing the pdb file 2019-08-20 18:56:48 +00:00
PDB.h [Coding style change][lld] Rename variables for non-ELF ports 2019-07-11 05:40:30 +00:00
README.md Update the documents of the new LLD. 2016-03-12 06:06:40 +00:00
SymbolTable.cpp reland "[lld-link] implement -start-lib and -end-lib" 2019-09-03 20:32:16 +00:00
SymbolTable.h reland "[lld-link] implement -start-lib and -end-lib" 2019-09-03 20:32:16 +00:00
Symbols.cpp reland "[lld-link] implement -start-lib and -end-lib" 2019-09-03 20:32:16 +00:00
Symbols.h reland "[lld-link] implement -start-lib and -end-lib" 2019-09-03 20:32:16 +00:00
TypeMerger.h [Coding style change][lld] Rename variables for non-ELF ports 2019-07-11 05:40:30 +00:00
Writer.cpp reland "[lld-link] implement -start-lib and -end-lib" 2019-09-03 20:32:16 +00:00
Writer.h [Coding style change][lld] Rename variables for non-ELF ports 2019-07-11 05:40:30 +00:00

README.md

See docs/NewLLD.rst