summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lld/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp3
-rw-r--r--lld/test/pecoff/resource.test7
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
OpenPOWER on IntegriCloud