diff options
-rw-r--r-- | lld/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp | 3 | ||||
-rw-r--r-- | lld/test/pecoff/resource.test | 7 |
2 files changed, 10 insertions, 0 deletions
diff --git a/lld/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp b/lld/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp index 83fbaa99446..65ab03f4c24 100644 --- a/lld/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp +++ b/lld/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp @@ -981,6 +981,9 @@ void PECOFFWriter::build(const File &linkedFile) { if (section->getSectionName() == ".pdata") dataDirectory->setField(DataDirectoryIndex::EXCEPTION_TABLE, section->getVirtualAddress(), section->size()); + if (section->getSectionName() == ".rsrc") + dataDirectory->setField(DataDirectoryIndex::RESOURCE_TABLE, + section->getVirtualAddress(), section->size()); if (section->getSectionName() == ".idata.a") dataDirectory->setField(DataDirectoryIndex::IAT, section->getVirtualAddress(), section->size()); diff --git a/lld/test/pecoff/resource.test b/lld/test/pecoff/resource.test index 4d26a67c990..bb0f13e8c69 100644 --- a/lld/test/pecoff/resource.test +++ b/lld/test/pecoff/resource.test @@ -13,3 +13,10 @@ # Multiple resource files are concatenated. # RUN: cat %t.exe | grep 'H.e.l.l.o.H.e.l.l.o.' + +# RUN: lld -flavor link /out:%t.exe /subsystem:console /entry:start /opt:noref \ +# RUN: /manifest:embed -- %t.obj %p/Inputs/resource.res +# RUN: llvm-readobj -file-headers %t.exe | FileCheck %s + +CHECK: ResourceTableRVA: 0x1000 +CHECK: ResourceTableSize: 0x208 |