From 3bbd741c2e0e9c17bb1a6406be37e6991b6d14cd Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Mon, 14 Mar 2011 18:12:16 -0700 Subject: llvmext: Make the Object bindings actually work --- src/llvmext/Object.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'src/llvmext/Object.cpp') 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(SI); } const char *LLVMGetSectionName(LLVMSectionIteratorRef SI) { -- cgit v1.2.3