summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2013-06-10 15:27:39 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2013-06-10 15:27:39 +0000
commitf12745f7a7e68c05c89ebd515b9b4faedce37dd0 (patch)
treecddc0ab5c895c526e7a8113f5fb60ee5870fead6
parentb972457783f6f992d8ee2fe392609fd4b0c5cf00 (diff)
downloadllvm-f12745f7a7e68c05c89ebd515b9b4faedce37dd0.tar.gz
llvm-f12745f7a7e68c05c89ebd515b9b4faedce37dd0.tar.bz2
llvm-f12745f7a7e68c05c89ebd515b9b4faedce37dd0.tar.xz
Pass a StringRef to sys::identifyFileType.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183669 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/llvm/ExecutionEngine/ObjectBuffer.h1
-rw-r--r--include/llvm/Support/PathV1.h4
-rw-r--r--lib/Archive/Archive.cpp2
-rw-r--r--lib/Archive/ArchiveReader.cpp2
-rw-r--r--lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp4
-rw-r--r--lib/Object/Binary.cpp3
-rw-r--r--lib/Object/ObjectFile.cpp3
-rw-r--r--lib/Support/Path.cpp12
-rw-r--r--tools/lto/LTOModule.cpp2
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<unsigned>(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<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: {
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<unsigned>(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,"!<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;
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;
}