From b9f39bcc8268e98f39a81a618202569fde448e99 Mon Sep 17 00:00:00 2001 From: "Michael J. Spencer" Date: Tue, 18 Nov 2014 01:14:25 +0000 Subject: [PATCH] Support ELF files of unknown type. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@222208 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Support/FileSystem.h | 1 + lib/Object/Binary.cpp | 1 + lib/Object/ObjectFile.cpp | 1 + lib/Object/SymbolicFile.cpp | 1 + lib/Support/Path.cpp | 3 +++ 5 files changed, 7 insertions(+) diff --git a/include/llvm/Support/FileSystem.h b/include/llvm/Support/FileSystem.h index f4062850360..63c9ed5356f 100644 --- a/include/llvm/Support/FileSystem.h +++ b/include/llvm/Support/FileSystem.h @@ -226,6 +226,7 @@ struct file_magic { unknown = 0, ///< Unrecognized file bitcode, ///< Bitcode file archive, ///< ar style archive file + elf, ///< ELF Unknown type elf_relocatable, ///< ELF Relocatable object file elf_executable, ///< ELF Executable image elf_shared_object, ///< ELF dynamically linked shared lib diff --git a/lib/Object/Binary.cpp b/lib/Object/Binary.cpp index d23ee590569..c56eeb1ea8b 100644 --- a/lib/Object/Binary.cpp +++ b/lib/Object/Binary.cpp @@ -43,6 +43,7 @@ ErrorOr> object::createBinary(MemoryBufferRef Buffer, switch (Type) { case sys::fs::file_magic::archive: return Archive::create(Buffer); + case sys::fs::file_magic::elf: case sys::fs::file_magic::elf_relocatable: case sys::fs::file_magic::elf_executable: case sys::fs::file_magic::elf_shared_object: diff --git a/lib/Object/ObjectFile.cpp b/lib/Object/ObjectFile.cpp index 9565d02f35a..fd782714253 100644 --- a/lib/Object/ObjectFile.cpp +++ b/lib/Object/ObjectFile.cpp @@ -60,6 +60,7 @@ ObjectFile::createObjectFile(MemoryBufferRef Object, sys::fs::file_magic Type) { case sys::fs::file_magic::macho_universal_binary: case sys::fs::file_magic::windows_resource: return object_error::invalid_file_type; + case sys::fs::file_magic::elf: case sys::fs::file_magic::elf_relocatable: case sys::fs::file_magic::elf_executable: case sys::fs::file_magic::elf_shared_object: diff --git a/lib/Object/SymbolicFile.cpp b/lib/Object/SymbolicFile.cpp index 9dfb09dbeca..ffd3dbcdb0d 100644 --- a/lib/Object/SymbolicFile.cpp +++ b/lib/Object/SymbolicFile.cpp @@ -40,6 +40,7 @@ ErrorOr> SymbolicFile::createSymbolicFile( case sys::fs::file_magic::macho_universal_binary: case sys::fs::file_magic::windows_resource: return object_error::invalid_file_type; + case sys::fs::file_magic::elf: case sys::fs::file_magic::elf_executable: case sys::fs::file_magic::elf_shared_object: case sys::fs::file_magic::elf_core: diff --git a/lib/Support/Path.cpp b/lib/Support/Path.cpp index 9937978c748..a7a991950bc 100644 --- a/lib/Support/Path.cpp +++ b/lib/Support/Path.cpp @@ -958,6 +958,9 @@ file_magic identify_magic(StringRef Magic) { case 3: return file_magic::elf_shared_object; case 4: return file_magic::elf_core; } + else + // It's still some type of ELF file. + return file_magic::elf; } break; -- 2.34.1