summaryrefslogtreecommitdiffstats
path: root/lld/lib/ReaderWriter/ELF/ELFTargetInfo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lld/lib/ReaderWriter/ELF/ELFTargetInfo.cpp')
-rw-r--r--lld/lib/ReaderWriter/ELF/ELFTargetInfo.cpp36
1 files changed, 18 insertions, 18 deletions
diff --git a/lld/lib/ReaderWriter/ELF/ELFTargetInfo.cpp b/lld/lib/ReaderWriter/ELF/ELFTargetInfo.cpp
index 671df194a24..db3a032feeb 100644
--- a/lld/lib/ReaderWriter/ELF/ELFTargetInfo.cpp
+++ b/lld/lib/ReaderWriter/ELF/ELFTargetInfo.cpp
@@ -91,27 +91,27 @@ bool ELFTargetInfo::isDynamic() const {
return false;
}
-error_code
-ELFTargetInfo::parseFile(std::unique_ptr<MemoryBuffer> mb,
- std::vector<std::unique_ptr<File>> &result) const {
+error_code ELFTargetInfo::parseFile(std::unique_ptr<MemoryBuffer> &mb,
+ std::vector<std::unique_ptr<File>> &result) const {
if (!_elfReader)
_elfReader = createReaderELF(*this);
- std::string path = mb->getBufferIdentifier();
- auto magic = llvm::sys::fs::identify_magic(mb->getBuffer());
- if (magic == llvm::sys::fs::file_magic::elf_relocatable ||
- magic == llvm::sys::fs::file_magic::elf_shared_object ||
- magic == llvm::sys::fs::file_magic::archive)
- return _elfReader->parseFile(std::move(mb), result);
- // Not an ELF file, check file extension to see if it might be yaml
- if (StringRef(path).endswith(".objtxt")) {
- if (!_yamlReader)
- _yamlReader = createReaderYAML(*this);
- return _yamlReader->parseFile(std::move(mb), result);
+ error_code ec = _elfReader->parseFile(mb, result);
+ if (ec) {
+ // Not an ELF file, check file extension to see if it might be yaml
+ StringRef path = mb->getBufferIdentifier();
+ if ( path.endswith(".objtxt") ) {
+ if (!_yamlReader)
+ _yamlReader = createReaderYAML(*this);
+ ec = _yamlReader->parseFile(mb, result);
+ }
+ if (ec) {
+ // Not a yaml file, assume it is a linkerscript
+ if (!_linkerScriptReader)
+ _linkerScriptReader.reset(new ReaderLinkerScript(*this));
+ ec = _linkerScriptReader->parseFile(mb, result);
+ }
}
- // Not a yaml file, assume it is a linkerscript
- if (!_linkerScriptReader)
- _linkerScriptReader.reset(new ReaderLinkerScript(*this));
- return _linkerScriptReader->parseFile(std::move(mb), result);
+ return ec;
}
Writer &ELFTargetInfo::writer() const {
OpenPOWER on IntegriCloud