diff options
Diffstat (limited to 'src/llvmext/Object.cpp')
| -rw-r--r-- | src/llvmext/Object.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/llvmext/Object.cpp b/src/llvmext/Object.cpp index f390870f..603e72b9 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) { |