From e2d20cb2602a44efec70c3163fecb6ca0e036cbe Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Tue, 10 Oct 2017 20:00:07 +0000 Subject: [PATCH] Convert two uses of ErrorOr to Expected. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315354 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Object/ObjectFile.h | 5 ++--- lib/Object/COFFObjectFile.cpp | 4 ++-- lib/Object/ELFObjectFile.cpp | 12 ++++++------ lib/Object/ObjectFile.cpp | 4 ++-- test/Object/nm-archive.test | 2 +- 5 files changed, 13 insertions(+), 14 deletions(-) diff --git a/include/llvm/Object/ObjectFile.h b/include/llvm/Object/ObjectFile.h index 57496373973..c7943512f0c 100644 --- a/include/llvm/Object/ObjectFile.h +++ b/include/llvm/Object/ObjectFile.h @@ -23,7 +23,6 @@ #include "llvm/Object/SymbolicFile.h" #include "llvm/Support/Casting.h" #include "llvm/Support/Error.h" -#include "llvm/Support/ErrorOr.h" #include "llvm/Support/FileSystem.h" #include "llvm/Support/MemoryBuffer.h" #include @@ -322,10 +321,10 @@ public: return v->isObject(); } - static ErrorOr> + static Expected> createCOFFObjectFile(MemoryBufferRef Object); - static ErrorOr> + static Expected> createELFObjectFile(MemoryBufferRef Object); static Expected> diff --git a/lib/Object/COFFObjectFile.cpp b/lib/Object/COFFObjectFile.cpp index f88ebfc9a1d..e139f64db6b 100644 --- a/lib/Object/COFFObjectFile.cpp +++ b/lib/Object/COFFObjectFile.cpp @@ -1590,12 +1590,12 @@ std::error_code ImportedSymbolRef::getOrdinal(uint16_t &Result) const { return std::error_code(); } -ErrorOr> +Expected> ObjectFile::createCOFFObjectFile(MemoryBufferRef Object) { std::error_code EC; std::unique_ptr Ret(new COFFObjectFile(Object, EC)); if (EC) - return EC; + return errorCodeToError(EC); return std::move(Ret); } diff --git a/lib/Object/ELFObjectFile.cpp b/lib/Object/ELFObjectFile.cpp index 986eccc36e3..da87b3b8c89 100644 --- a/lib/Object/ELFObjectFile.cpp +++ b/lib/Object/ELFObjectFile.cpp @@ -37,7 +37,7 @@ using namespace object; ELFObjectFileBase::ELFObjectFileBase(unsigned int Type, MemoryBufferRef Source) : ObjectFile(Type, Source) {} -ErrorOr> +Expected> ObjectFile::createELFObjectFile(MemoryBufferRef Obj) { std::pair Ident = getElfArchType(Obj.getBuffer()); @@ -45,7 +45,7 @@ ObjectFile::createELFObjectFile(MemoryBufferRef Obj) { 1ULL << countTrailingZeros(uintptr_t(Obj.getBufferStart())); if (MaxAlignment < 2) - return object_error::parse_failed; + return createError("Insufficient alignment"); std::error_code EC; std::unique_ptr R; @@ -55,20 +55,20 @@ ObjectFile::createELFObjectFile(MemoryBufferRef Obj) { else if (Ident.second == ELF::ELFDATA2MSB) R.reset(new ELFObjectFile>(Obj, EC)); else - return object_error::parse_failed; + return createError("Invalid ELF data"); } else if (Ident.first == ELF::ELFCLASS64) { if (Ident.second == ELF::ELFDATA2LSB) R.reset(new ELFObjectFile>(Obj, EC)); else if (Ident.second == ELF::ELFDATA2MSB) R.reset(new ELFObjectFile>(Obj, EC)); else - return object_error::parse_failed; + return createError("Invalid ELF data"); } else { - return object_error::parse_failed; + return createError("Invalid ELF class"); } if (EC) - return EC; + return errorCodeToError(EC); return std::move(R); } diff --git a/lib/Object/ObjectFile.cpp b/lib/Object/ObjectFile.cpp index 2b80d0bf538..652a2b2497e 100644 --- a/lib/Object/ObjectFile.cpp +++ b/lib/Object/ObjectFile.cpp @@ -125,7 +125,7 @@ ObjectFile::createObjectFile(MemoryBufferRef Object, file_magic Type) { case file_magic::elf_executable: case file_magic::elf_shared_object: case file_magic::elf_core: - return errorOrToExpected(createELFObjectFile(Object)); + return createELFObjectFile(Object); case file_magic::macho_object: case file_magic::macho_executable: case file_magic::macho_fixed_virtual_memory_shared_lib: @@ -141,7 +141,7 @@ ObjectFile::createObjectFile(MemoryBufferRef Object, file_magic Type) { case file_magic::coff_object: case file_magic::coff_import_library: case file_magic::pecoff_executable: - return errorOrToExpected(createCOFFObjectFile(Object)); + return createCOFFObjectFile(Object); case file_magic::wasm_object: return createWasmObjectFile(Object); } diff --git a/test/Object/nm-archive.test b/test/Object/nm-archive.test index 1a13c23f245..a059e65853b 100644 --- a/test/Object/nm-archive.test +++ b/test/Object/nm-archive.test @@ -58,7 +58,7 @@ GNU AR is able to parse the unaligned member and warns about the member with the unknown format. We should probably simply warn on both. For now we just produce an error for the unknown format. RUN: not llvm-nm %p/Inputs/corrupt-archive.a 2>&1 | FileCheck %s -check-prefix CORRUPT -CORRUPT: corrupt-archive.a(trivial-object-test2.elf-x86-64) Invalid data was encountered while parsing the file +CORRUPT: corrupt-archive.a(trivial-object-test2.elf-x86-64) Insufficient alignment RUN: llvm-nm %p/Inputs/thin.a | FileCheck %s -check-prefix THIN -- 2.40.0