diff options
-rw-r--r-- | lld/lib/ReaderWriter/ELF/ELFTargetInfo.cpp | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/lld/lib/ReaderWriter/ELF/ELFTargetInfo.cpp b/lld/lib/ReaderWriter/ELF/ELFTargetInfo.cpp index e9b171c35ec..b9443fc7fc2 100644 --- a/lld/lib/ReaderWriter/ELF/ELFTargetInfo.cpp +++ b/lld/lib/ReaderWriter/ELF/ELFTargetInfo.cpp @@ -98,16 +98,19 @@ ELFTargetInfo::parseFile(std::unique_ptr<MemoryBuffer> &mb, std::vector<std::unique_ptr<File> > &result) const { ScopedTask task(getDefaultDomain(), "parseFile"); 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")) - ec = _yamlReader->parseFile(mb, result); - if (ec) - // Not a yaml file, assume it is a linkerscript - ec = _linkerScriptReader->parseFile(mb, result); + if (!ec) + return ec; + + // Not an ELF file, check file extension to see if it might be yaml + StringRef path = mb->getBufferIdentifier(); + if (path.endswith(".objtxt")) { + ec = _yamlReader->parseFile(mb, result); + if (!ec) + return ec; } - return ec; + + // Not a yaml file, assume it is a linkerscript + return _linkerScriptReader->parseFile(mb, result); } Writer &ELFTargetInfo::writer() const { |