diff options
author | Stephen Hines <srhines@google.com> | 2013-06-12 13:32:42 -0700 |
---|---|---|
committer | Stephen Hines <srhines@google.com> | 2013-06-12 13:32:42 -0700 |
commit | 1878f9a7874b1ff569d745c0269f49d3daf7203d (patch) | |
tree | 19a8dbaaedf6a056c617e87596b32d3f452af137 /lib/Object/Binary.cpp | |
parent | 7a57f27b857ec4b243d83d392a399f02fc196c0a (diff) | |
parent | 100fbdd06be7590b23c4707a98cd605bdb519498 (diff) | |
download | external_llvm-1878f9a7874b1ff569d745c0269f49d3daf7203d.tar.gz external_llvm-1878f9a7874b1ff569d745c0269f49d3daf7203d.tar.bz2 external_llvm-1878f9a7874b1ff569d745c0269f49d3daf7203d.zip |
Merge commit '100fbdd06be7590b23c4707a98cd605bdb519498' into merge_20130612
Diffstat (limited to 'lib/Object/Binary.cpp')
-rw-r--r-- | lib/Object/Binary.cpp | 37 |
1 files changed, 18 insertions, 19 deletions
diff --git a/lib/Object/Binary.cpp b/lib/Object/Binary.cpp index 4e528d8ea5..201899ffe2 100644 --- a/lib/Object/Binary.cpp +++ b/lib/Object/Binary.cpp @@ -14,6 +14,7 @@ #include "llvm/Object/Binary.h" #include "llvm/ADT/StringRef.h" #include "llvm/Support/MemoryBuffer.h" +#include "llvm/Support/FileSystem.h" #include "llvm/Support/Path.h" // Include headers for createBinary. @@ -45,22 +46,19 @@ error_code object::createBinary(MemoryBuffer *Source, OwningPtr<MemoryBuffer> scopedSource(Source); if (!Source) return make_error_code(errc::invalid_argument); - if (Source->getBufferSize() < 64) - return object_error::invalid_file_type; - sys::LLVMFileType type = sys::IdentifyFileType(Source->getBufferStart(), - static_cast<unsigned>(Source->getBufferSize())); + sys::fs::file_magic type = sys::fs::identify_magic(Source->getBuffer()); error_code ec; switch (type) { - case sys::Archive_FileType: { + case sys::fs::file_magic::archive: { OwningPtr<Binary> ret(new Archive(scopedSource.take(), ec)); if (ec) return ec; Result.swap(ret); return object_error::success; } - case sys::ELF_Relocatable_FileType: - case sys::ELF_Executable_FileType: - case sys::ELF_SharedObject_FileType: - case sys::ELF_Core_FileType: { + case sys::fs::file_magic::elf_relocatable: + case sys::fs::file_magic::elf_executable: + case sys::fs::file_magic::elf_shared_object: + case sys::fs::file_magic::elf_core: { OwningPtr<Binary> ret( ObjectFile::createELFObjectFile(scopedSource.take())); if (!ret) @@ -68,15 +66,15 @@ error_code object::createBinary(MemoryBuffer *Source, Result.swap(ret); return object_error::success; } - case sys::Mach_O_Object_FileType: - case sys::Mach_O_Executable_FileType: - case sys::Mach_O_FixedVirtualMemorySharedLib_FileType: - case sys::Mach_O_Core_FileType: - case sys::Mach_O_PreloadExecutable_FileType: - case sys::Mach_O_DynamicallyLinkedSharedLib_FileType: - case sys::Mach_O_DynamicLinker_FileType: - case sys::Mach_O_Bundle_FileType: - case sys::Mach_O_DynamicallyLinkedSharedLibStub_FileType: { + case sys::fs::file_magic::macho_object: + case sys::fs::file_magic::macho_executable: + case sys::fs::file_magic::macho_fixed_virtual_memory_shared_lib: + case sys::fs::file_magic::macho_core: + case sys::fs::file_magic::macho_preload_executable: + case sys::fs::file_magic::macho_dynamically_linked_shared_lib: + case sys::fs::file_magic::macho_dynamic_linker: + case sys::fs::file_magic::macho_bundle: + case sys::fs::file_magic::macho_dynamically_linked_shared_lib_stub: { OwningPtr<Binary> ret( ObjectFile::createMachOObjectFile(scopedSource.take())); if (!ret) @@ -84,7 +82,8 @@ error_code object::createBinary(MemoryBuffer *Source, Result.swap(ret); return object_error::success; } - case sys::COFF_FileType: { + case sys::fs::file_magic::coff_object: + case sys::fs::file_magic::pecoff_executable: { OwningPtr<Binary> ret(new COFFObjectFile(scopedSource.take(), ec)); if (ec) return ec; Result.swap(ret); |