diff options
Diffstat (limited to 'llvm/lib/Object')
-rw-r--r-- | llvm/lib/Object/MachOObjectFile.cpp | 17 | ||||
-rw-r--r-- | llvm/lib/Object/MachOUniversal.cpp | 2 | ||||
-rw-r--r-- | llvm/lib/Object/ObjectFile.cpp | 2 |
3 files changed, 9 insertions, 12 deletions
diff --git a/llvm/lib/Object/MachOObjectFile.cpp b/llvm/lib/Object/MachOObjectFile.cpp index 50f0dd3dc4e..864d76f7112 100644 --- a/llvm/lib/Object/MachOObjectFile.cpp +++ b/llvm/lib/Object/MachOObjectFile.cpp @@ -2421,21 +2421,18 @@ bool MachOObjectFile::isRelocatableObject() const { return getHeader().filetype == MachO::MH_OBJECT; } -ErrorOr<std::unique_ptr<MachOObjectFile>> +Expected<std::unique_ptr<MachOObjectFile>> ObjectFile::createMachOObjectFile(MemoryBufferRef Buffer) { StringRef Magic = Buffer.getBuffer().slice(0, 4); if (Magic == "\xFE\xED\xFA\xCE") - return expectedToErrorOr( - MachOObjectFile::create(Buffer, false, false)); + return MachOObjectFile::create(Buffer, false, false); else if (Magic == "\xCE\xFA\xED\xFE") - return expectedToErrorOr( - MachOObjectFile::create(Buffer, true, false)); + return MachOObjectFile::create(Buffer, true, false); else if (Magic == "\xFE\xED\xFA\xCF") - return expectedToErrorOr( - MachOObjectFile::create(Buffer, false, true)); + return MachOObjectFile::create(Buffer, false, true); else if (Magic == "\xCF\xFA\xED\xFE") - return expectedToErrorOr( - MachOObjectFile::create(Buffer, true, true)); + return MachOObjectFile::create(Buffer, true, true); //else - return object_error::parse_failed; + return malformedError(Buffer.getBufferIdentifier(), + "Unrecognized MachO magic number"); } diff --git a/llvm/lib/Object/MachOUniversal.cpp b/llvm/lib/Object/MachOUniversal.cpp index a1c83b9b7f8..df25f7416b3 100644 --- a/llvm/lib/Object/MachOUniversal.cpp +++ b/llvm/lib/Object/MachOUniversal.cpp @@ -76,7 +76,7 @@ MachOUniversalBinary::ObjectForArch::getAsObjectFile() const { StringRef ObjectData = ParentData.substr(Header.offset, Header.size); StringRef ObjectName = Parent->getFileName(); MemoryBufferRef ObjBuffer(ObjectData, ObjectName); - return ObjectFile::createMachOObjectFile(ObjBuffer); + return expectedToErrorOr(ObjectFile::createMachOObjectFile(ObjBuffer)); } ErrorOr<std::unique_ptr<Archive>> diff --git a/llvm/lib/Object/ObjectFile.cpp b/llvm/lib/Object/ObjectFile.cpp index 860cefa113c..ceb933f4341 100644 --- a/llvm/lib/Object/ObjectFile.cpp +++ b/llvm/lib/Object/ObjectFile.cpp @@ -96,7 +96,7 @@ ObjectFile::createObjectFile(MemoryBufferRef Object, sys::fs::file_magic Type) { case sys::fs::file_magic::macho_dynamically_linked_shared_lib_stub: case sys::fs::file_magic::macho_dsym_companion: case sys::fs::file_magic::macho_kext_bundle: - return createMachOObjectFile(Object); + return expectedToErrorOr(createMachOObjectFile(Object)); case sys::fs::file_magic::coff_object: case sys::fs::file_magic::coff_import_library: case sys::fs::file_magic::pecoff_executable: |