aboutsummaryrefslogtreecommitdiff
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 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) {