[llvm] r315354 - Convert two uses of ErrorOr to Expected.
Rafael Espindola via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 10 13:00:07 PDT 2017
Author: rafael
Date: Tue Oct 10 13:00:07 2017
New Revision: 315354
URL: http://llvm.org/viewvc/llvm-project?rev=315354&view=rev
Log:
Convert two uses of ErrorOr to Expected.
Modified:
llvm/trunk/include/llvm/Object/ObjectFile.h
llvm/trunk/lib/Object/COFFObjectFile.cpp
llvm/trunk/lib/Object/ELFObjectFile.cpp
llvm/trunk/lib/Object/ObjectFile.cpp
llvm/trunk/test/Object/nm-archive.test
Modified: llvm/trunk/include/llvm/Object/ObjectFile.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Object/ObjectFile.h?rev=315354&r1=315353&r2=315354&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Object/ObjectFile.h (original)
+++ llvm/trunk/include/llvm/Object/ObjectFile.h Tue Oct 10 13:00:07 2017
@@ -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 <cassert>
@@ -322,10 +321,10 @@ public:
return v->isObject();
}
- static ErrorOr<std::unique_ptr<COFFObjectFile>>
+ static Expected<std::unique_ptr<COFFObjectFile>>
createCOFFObjectFile(MemoryBufferRef Object);
- static ErrorOr<std::unique_ptr<ObjectFile>>
+ static Expected<std::unique_ptr<ObjectFile>>
createELFObjectFile(MemoryBufferRef Object);
static Expected<std::unique_ptr<MachOObjectFile>>
Modified: llvm/trunk/lib/Object/COFFObjectFile.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Object/COFFObjectFile.cpp?rev=315354&r1=315353&r2=315354&view=diff
==============================================================================
--- llvm/trunk/lib/Object/COFFObjectFile.cpp (original)
+++ llvm/trunk/lib/Object/COFFObjectFile.cpp Tue Oct 10 13:00:07 2017
@@ -1590,12 +1590,12 @@ std::error_code ImportedSymbolRef::getOr
return std::error_code();
}
-ErrorOr<std::unique_ptr<COFFObjectFile>>
+Expected<std::unique_ptr<COFFObjectFile>>
ObjectFile::createCOFFObjectFile(MemoryBufferRef Object) {
std::error_code EC;
std::unique_ptr<COFFObjectFile> Ret(new COFFObjectFile(Object, EC));
if (EC)
- return EC;
+ return errorCodeToError(EC);
return std::move(Ret);
}
Modified: llvm/trunk/lib/Object/ELFObjectFile.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Object/ELFObjectFile.cpp?rev=315354&r1=315353&r2=315354&view=diff
==============================================================================
--- llvm/trunk/lib/Object/ELFObjectFile.cpp (original)
+++ llvm/trunk/lib/Object/ELFObjectFile.cpp Tue Oct 10 13:00:07 2017
@@ -37,7 +37,7 @@ using namespace object;
ELFObjectFileBase::ELFObjectFileBase(unsigned int Type, MemoryBufferRef Source)
: ObjectFile(Type, Source) {}
-ErrorOr<std::unique_ptr<ObjectFile>>
+Expected<std::unique_ptr<ObjectFile>>
ObjectFile::createELFObjectFile(MemoryBufferRef Obj) {
std::pair<unsigned char, unsigned char> Ident =
getElfArchType(Obj.getBuffer());
@@ -45,7 +45,7 @@ ObjectFile::createELFObjectFile(MemoryBu
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<ObjectFile> R;
@@ -55,20 +55,20 @@ ObjectFile::createELFObjectFile(MemoryBu
else if (Ident.second == ELF::ELFDATA2MSB)
R.reset(new ELFObjectFile<ELFType<support::big, false>>(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<ELFType<support::little, true>>(Obj, EC));
else if (Ident.second == ELF::ELFDATA2MSB)
R.reset(new ELFObjectFile<ELFType<support::big, true>>(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);
}
Modified: llvm/trunk/lib/Object/ObjectFile.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Object/ObjectFile.cpp?rev=315354&r1=315353&r2=315354&view=diff
==============================================================================
--- llvm/trunk/lib/Object/ObjectFile.cpp (original)
+++ llvm/trunk/lib/Object/ObjectFile.cpp Tue Oct 10 13:00:07 2017
@@ -125,7 +125,7 @@ ObjectFile::createObjectFile(MemoryBuffe
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(MemoryBuffe
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);
}
Modified: llvm/trunk/test/Object/nm-archive.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Object/nm-archive.test?rev=315354&r1=315353&r2=315354&view=diff
==============================================================================
--- llvm/trunk/test/Object/nm-archive.test (original)
+++ llvm/trunk/test/Object/nm-archive.test Tue Oct 10 13:00:07 2017
@@ -58,7 +58,7 @@ GNU AR is able to parse the unaligned me
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
More information about the llvm-commits
mailing list