Pass a StringRef to sys::identifyFileType.
authorRafael Espindola <rafael.espindola@gmail.com>
Mon, 10 Jun 2013 15:27:39 +0000 (15:27 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Mon, 10 Jun 2013 15:27:39 +0000 (15:27 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183669 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/ExecutionEngine/ObjectBuffer.h
include/llvm/Support/PathV1.h
lib/Archive/Archive.cpp
lib/Archive/ArchiveReader.cpp
lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp
lib/Object/Binary.cpp
lib/Object/ObjectFile.cpp
lib/Support/Path.cpp
tools/lto/LTOModule.cpp

index 96a48b28b8477dfc989e4dca2ca8ae1c5934cb4e..32de40464a5fd591f10a25b0ecc09cdc0d0d5ed2 100644 (file)
@@ -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
index af46cc11bae766ac0c1a6ed3c508e81b20a4406c..d4bb58af06607470fc8ccc42d2b3e0bf48fb142b 100644 (file)
@@ -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
index 1f36a00ab086f8865405de1c0faebcce8fcf89b4..2b92d0ff8278ff0450f2ec35e08a229b7da4d363 100644 (file)
@@ -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;
index 14713e692c0f3b820d08addfc8d65238ea0b456d..65505993c0c3d08cb27cfc49402481ceba185f3a 100644 (file)
@@ -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;
index cee18c69adf7305f1f41d9baaa985f3141c765e1..3995ba5b0da8a96fb7bf57c3ce109d8d2d3a63ce 100644 (file)
@@ -501,9 +501,7 @@ RuntimeDyld::~RuntimeDyld() {
 
 ObjectImage *RuntimeDyld::loadObject(ObjectBuffer *InputBuffer) {
   if (!Dyld) {
-    sys::LLVMFileType type = sys::IdentifyFileType(
-            InputBuffer->getBufferStart(),
-            static_cast<unsigned>(InputBuffer->getBufferSize()));
+    sys::LLVMFileType type = sys::identifyFileType(InputBuffer->getBuffer());
     switch (type) {
       case sys::ELF_Relocatable_FileType:
       case sys::ELF_Executable_FileType:
index 012e328412792c074aa25123288de337091d8be4..5d816e15b531157ff4779c301033d02b90df6d65 100644 (file)
@@ -45,8 +45,7 @@ error_code object::createBinary(MemoryBuffer *Source,
   OwningPtr<MemoryBuffer> scopedSource(Source);
   if (!Source)
     return make_error_code(errc::invalid_argument);
-  sys::LLVMFileType type = sys::IdentifyFileType(Source->getBufferStart(),
-                                static_cast<unsigned>(Source->getBufferSize()));
+  sys::LLVMFileType type = sys::identifyFileType(Source->getBuffer());
   error_code ec;
   switch (type) {
     case sys::Archive_FileType: {
index 5b3165db94ffa7e78ff107ed3c3563ea8b5a3a2a..c64af84346bb60216060b9f4e1685cd1f8473292 100644 (file)
@@ -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<unsigned>(Object->getBufferSize()));
+  sys::LLVMFileType type = sys::identifyFileType(Object->getBuffer());
   switch (type) {
     case sys::Unknown_FileType:
       return 0;
index b6eeb1484cfd981fdb9798b92ba7c219e52fb4d6..bf1ae44e0d0170a7856204d57ca86d2ee1ecc038 100644 (file)
@@ -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,"!<arch>\n",8) == 0)
+        if (memcmp(Magic.data(),"!<arch>\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<const ulittle32_t *>(Magic + 0x3c);
+            *reinterpret_cast<const ulittle32_t *>(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;
index 2c308b6d61c570075db1a63297479c96110ebfdb..5fad01bb51192e5e449b40e8679f48f269bd4261 100644 (file)
@@ -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;
 }