about summary refs log tree commit diff
path: root/src/llvmext/Object.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/llvmext/Object.cpp')
-rw-r--r--src/llvmext/Object.cpp14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/llvmext/Object.cpp b/src/llvmext/Object.cpp
index f390870fb33..603e72b9036 100644
--- a/src/llvmext/Object.cpp
+++ b/src/llvmext/Object.cpp
@@ -18,9 +18,8 @@
 using namespace llvm;
 using namespace object;
 
-LLVMObjectFileRef LLVMCreateObjectFile(const char *ObjectPath) {
-  StringRef SR(ObjectPath);
-  return wrap(ObjectFile::createObjectFile(SR));
+LLVMObjectFileRef LLVMCreateObjectFile(LLVMMemoryBufferRef MemBuf) {
+  return wrap(ObjectFile::createObjectFile(unwrap(MemBuf)));
 }
 
 void LLVMDisposeObjectFile(LLVMObjectFileRef ObjectFile) {
@@ -36,9 +35,14 @@ void LLVMDisposeSectionIterator(LLVMSectionIteratorRef SI) {
   delete unwrap(SI);
 }
 
+bool LLVMIsSectionIteratorAtEnd(LLVMObjectFileRef ObjectFile,
+                                LLVMSectionIteratorRef SI) {
+  return *unwrap(SI) == unwrap(ObjectFile)->end_sections();
+}
+
 void LLVMMoveToNextSection(LLVMSectionIteratorRef SI) {
-  ObjectFile::section_iterator UnwrappedSI = *unwrap(SI);
-  ++UnwrappedSI;
+  // We can't use unwrap() here because the argument to ++ must be an lvalue.
+  ++*reinterpret_cast<ObjectFile::section_iterator*>(SI);
 }
 
 const char *LLVMGetSectionName(LLVMSectionIteratorRef SI) {