From f12745f7a7e68c05c89ebd515b9b4faedce37dd0 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Mon, 10 Jun 2013 15:27:39 +0000 Subject: Pass a StringRef to sys::identifyFileType. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183669 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/ExecutionEngine/ObjectBuffer.h | 1 + include/llvm/Support/PathV1.h | 4 ++-- lib/Archive/Archive.cpp | 2 +- lib/Archive/ArchiveReader.cpp | 2 +- lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp | 4 +--- lib/Object/Binary.cpp | 3 +-- lib/Object/ObjectFile.cpp | 3 +-- lib/Support/Path.cpp | 12 ++++++------ tools/lto/LTOModule.cpp | 2 +- 9 files changed, 15 insertions(+), 18 deletions(-) diff --git a/include/llvm/ExecutionEngine/ObjectBuffer.h b/include/llvm/ExecutionEngine/ObjectBuffer.h index 96a48b28b8..32de40464a 100644 --- a/include/llvm/ExecutionEngine/ObjectBuffer.h +++ b/include/llvm/ExecutionEngine/ObjectBuffer.h @@ -44,6 +44,7 @@ public: const char *getBufferStart() const { return Buffer->getBufferStart(); } size_t getBufferSize() const { return Buffer->getBufferSize(); } + StringRef getBuffer() const { return Buffer->getBuffer(); } protected: // The memory contained in an ObjectBuffer diff --git a/include/llvm/Support/PathV1.h b/include/llvm/Support/PathV1.h index af46cc11ba..d4bb58af06 100644 --- a/include/llvm/Support/PathV1.h +++ b/include/llvm/Support/PathV1.h @@ -725,9 +725,9 @@ namespace sys { /// This utility function allows any memory block to be examined in order /// to determine its file type. - LLVMFileType identifyFileType(const char *Magic, unsigned Length); + LLVMFileType identifyFileType(StringRef Magic); inline LLVMFileType IdentifyFileType(const char *Magic, unsigned Length) { - return identifyFileType(Magic, Length); + return identifyFileType(StringRef(Magic, Length)); } /// This function can be used to copy the file specified by Src to the diff --git a/lib/Archive/Archive.cpp b/lib/Archive/Archive.cpp index 1f36a00ab0..2b92d0ff82 100644 --- a/lib/Archive/Archive.cpp +++ b/lib/Archive/Archive.cpp @@ -129,7 +129,7 @@ bool ArchiveMember::replaceWith(const sys::Path& newFile, std::string* ErrMsg) { } // Determine what kind of file it is. - switch (sys::IdentifyFileType(signature,4)) { + switch (sys::identifyFileType(StringRef(signature, 4))) { case sys::Bitcode_FileType: flags |= BitcodeFlag; break; diff --git a/lib/Archive/ArchiveReader.cpp b/lib/Archive/ArchiveReader.cpp index 14713e692c..65505993c0 100644 --- a/lib/Archive/ArchiveReader.cpp +++ b/lib/Archive/ArchiveReader.cpp @@ -205,7 +205,7 @@ Archive::parseMemberHeader(const char*& At, const char* End, std::string* error) } // Determine if this is a bitcode file - switch (sys::IdentifyFileType(At, 4)) { + switch (sys::identifyFileType(StringRef(At, 4))) { case sys::Bitcode_FileType: flags |= ArchiveMember::BitcodeFlag; break; diff --git a/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp b/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp index cee18c69ad..3995ba5b0d 100644 --- a/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp +++ b/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp @@ -501,9 +501,7 @@ RuntimeDyld::~RuntimeDyld() { ObjectImage *RuntimeDyld::loadObject(ObjectBuffer *InputBuffer) { if (!Dyld) { - sys::LLVMFileType type = sys::IdentifyFileType( - InputBuffer->getBufferStart(), - static_cast(InputBuffer->getBufferSize())); + sys::LLVMFileType type = sys::identifyFileType(InputBuffer->getBuffer()); switch (type) { case sys::ELF_Relocatable_FileType: case sys::ELF_Executable_FileType: diff --git a/lib/Object/Binary.cpp b/lib/Object/Binary.cpp index 012e328412..5d816e15b5 100644 --- a/lib/Object/Binary.cpp +++ b/lib/Object/Binary.cpp @@ -45,8 +45,7 @@ error_code object::createBinary(MemoryBuffer *Source, OwningPtr scopedSource(Source); if (!Source) return make_error_code(errc::invalid_argument); - sys::LLVMFileType type = sys::IdentifyFileType(Source->getBufferStart(), - static_cast(Source->getBufferSize())); + sys::LLVMFileType type = sys::identifyFileType(Source->getBuffer()); error_code ec; switch (type) { case sys::Archive_FileType: { diff --git a/lib/Object/ObjectFile.cpp b/lib/Object/ObjectFile.cpp index 5b3165db94..c64af84346 100644 --- a/lib/Object/ObjectFile.cpp +++ b/lib/Object/ObjectFile.cpp @@ -40,8 +40,7 @@ section_iterator ObjectFile::getRelocatedSection(DataRefImpl Sec) const { ObjectFile *ObjectFile::createObjectFile(MemoryBuffer *Object) { if (!Object || Object->getBufferSize() < 64) return 0; - sys::LLVMFileType type = sys::IdentifyFileType(Object->getBufferStart(), - static_cast(Object->getBufferSize())); + sys::LLVMFileType type = sys::identifyFileType(Object->getBuffer()); switch (type) { case sys::Unknown_FileType: return 0; diff --git a/lib/Support/Path.cpp b/lib/Support/Path.cpp index b6eeb1484c..bf1ae44e0d 100644 --- a/lib/Support/Path.cpp +++ b/lib/Support/Path.cpp @@ -38,9 +38,9 @@ bool Path::operator<(const Path& that) const { } LLVMFileType -sys::identifyFileType(const char *Magic, unsigned Length) { - assert(Magic && "Invalid magic number string"); - assert(Length >=4 && "Invalid magic number length"); +sys::identifyFileType(StringRef Magic) { + unsigned Length = Magic.size(); + assert(Length >= 4 && "Invalid magic number length"); switch ((unsigned char)Magic[0]) { case 0xDE: // 0x0B17C0DE = BC wraper if (Magic[1] == (char)0xC0 && Magic[2] == (char)0x17 && @@ -53,7 +53,7 @@ sys::identifyFileType(const char *Magic, unsigned Length) { break; case '!': if (Length >= 8) - if (memcmp(Magic,"!\n",8) == 0) + if (memcmp(Magic.data(),"!\n",8) == 0) return Archive_FileType; break; @@ -136,9 +136,9 @@ sys::identifyFileType(const char *Magic, unsigned Length) { case 0x4d: // Possible MS-DOS stub on Windows PE file if (Magic[1] == 0x5a) { uint32_t off = - *reinterpret_cast(Magic + 0x3c); + *reinterpret_cast(Magic.data() + 0x3c); // PE/COFF file, either EXE or DLL. - if (off < Length && memcmp(Magic + off, "PE\0\0",4) == 0) + if (off < Length && memcmp(Magic.data() + off, "PE\0\0",4) == 0) return COFF_FileType; } break; diff --git a/tools/lto/LTOModule.cpp b/tools/lto/LTOModule.cpp index 2c308b6d61..5fad01bb51 100644 --- a/tools/lto/LTOModule.cpp +++ b/tools/lto/LTOModule.cpp @@ -163,7 +163,7 @@ LTOModule::LTOModule(llvm::Module *m, llvm::TargetMachine *t) /// isBitcodeFile - Returns 'true' if the file (or memory contents) is LLVM /// bitcode. bool LTOModule::isBitcodeFile(const void *mem, size_t length) { - return llvm::sys::IdentifyFileType((const char*)mem, length) + return llvm::sys::identifyFileType(StringRef((const char*)mem, length)) == llvm::sys::Bitcode_FileType; } -- cgit v1.2.3