[LLD] [COFF] Support merging resource object files
commitca8686b01e22c9d0a26c4eefaea57271ffb291be
authorMartin Storsjo <martin@martin.st>
Fri, 30 Aug 2019 06:56:33 +0000 (30 06:56 +0000)
committerMartin Storsjo <martin@martin.st>
Fri, 30 Aug 2019 06:56:33 +0000 (30 06:56 +0000)
treee75cab89fb1b971760b5d857eee7fc9acd2f0300
parentedc3dbf229a7813e15319d547cc75cc9b752061f
[LLD] [COFF] Support merging resource object files

Extend WindowsResourceParser to support using a ResourceSectionRef for
loading resources from an object file.

Only allow merging resource object files in mingw mode; keep the
existing error on multiple resource objects in link mode.

If there only is one resource object file and no .res resources,
don't parse and recreate the .rsrc section, but just link it in without
inspecting it. This allows users to produce any .rsrc section (outside
of what the parser supports), just like before. (I don't have a specific
need for this, but it reduces the risk of this new feature.)

Separate out the .rsrc section chunks in InputFiles.cpp, and only include
them in the list of section chunks to link if we've determined that there
only was one single resource object. (We need to keep other chunks from
those object files, as they can legitimately contain other sections as
well, in addition to .rsrc section chunks.)

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@370436 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Object/WindowsResource.h
lib/Object/WindowsResource.cpp