diff options
| author | Rui Ueyama <ruiu@google.com> | 2014-10-08 21:08:15 +0000 |
|---|---|---|
| committer | Rui Ueyama <ruiu@google.com> | 2014-10-08 21:08:15 +0000 |
| commit | 42466be42ce93bf51b5f5b6ba81e673ef4f0d59f (patch) | |
| tree | b820f481cf39df7fe34c7894ed625a74e0c337e7 /lld/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp | |
| parent | 57cfe3405bf61e3879e2bc1eca0f2c0e6d55812d (diff) | |
| download | bcm5719-llvm-42466be42ce93bf51b5f5b6ba81e673ef4f0d59f.tar.gz bcm5719-llvm-42466be42ce93bf51b5f5b6ba81e673ef4f0d59f.zip | |
Use llvm::StringSwitch.
llvm-svn: 219341
Diffstat (limited to 'lld/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp')
| -rw-r--r-- | lld/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp | 35 |
1 files changed, 16 insertions, 19 deletions
diff --git a/lld/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp b/lld/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp index 9c48d9abec1..313bcd5a737 100644 --- a/lld/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp +++ b/lld/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp @@ -1030,26 +1030,23 @@ void PECOFFWriter::build(const File &linkedFile) { peHeader->setAddressOfEntryPoint(0); } } - if (section->getSectionName() == ".data") + StringRef name = section->getSectionName(); + if (name == ".data") { peHeader->setBaseOfData(section->getVirtualAddress()); - 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()); - if (section->getSectionName() == ".idata.d") - dataDirectory->setField(DataDirectoryIndex::IMPORT_TABLE, - section->getVirtualAddress(), section->size()); - if (section->getSectionName() == ".edata") - dataDirectory->setField(DataDirectoryIndex::EXPORT_TABLE, - section->getVirtualAddress(), section->size()); - if (section->getSectionName() == ".loadcfg") - dataDirectory->setField(DataDirectoryIndex::LOAD_CONFIG_TABLE, - section->getVirtualAddress(), section->size()); + continue; + } + DataDirectoryIndex ignore = DataDirectoryIndex(-1); + DataDirectoryIndex idx = llvm::StringSwitch<DataDirectoryIndex>(name) + .Case(".pdata", DataDirectoryIndex::EXCEPTION_TABLE) + .Case(".rsrc", DataDirectoryIndex::RESOURCE_TABLE) + .Case(".idata.a", DataDirectoryIndex::IAT) + .Case(".idata.d", DataDirectoryIndex::IMPORT_TABLE) + .Case(".edata", DataDirectoryIndex::EXPORT_TABLE) + .Case(".loadcfg", DataDirectoryIndex::LOAD_CONFIG_TABLE) + .Default(ignore); + if (idx == ignore) + continue; + dataDirectory->setField(idx, section->getVirtualAddress(), section->size()); } if (const DefinedAtom *atom = findTLSUsedSymbol(_ctx, linkedFile)) { |

