diff options
Diffstat (limited to 'src/rustllvm/RustWrapper.cpp')
| -rw-r--r-- | src/rustllvm/RustWrapper.cpp | 101 |
1 files changed, 0 insertions, 101 deletions
diff --git a/src/rustllvm/RustWrapper.cpp b/src/rustllvm/RustWrapper.cpp index 70ef64afc43..6861ad43a3c 100644 --- a/src/rustllvm/RustWrapper.cpp +++ b/src/rustllvm/RustWrapper.cpp @@ -825,107 +825,6 @@ LLVMRustLinkInExternalBitcode(LLVMModuleRef dst, char *bc, size_t len) { return true; } -extern "C" void* -LLVMRustOpenArchive(char *path) { - ErrorOr<std::unique_ptr<MemoryBuffer>> buf_or = MemoryBuffer::getFile(path, - -1, - false); - if (!buf_or) { - LLVMRustSetLastError(buf_or.getError().message().c_str()); - return nullptr; - } - -#if LLVM_VERSION_MINOR >= 6 - ErrorOr<std::unique_ptr<Archive>> archive_or = - Archive::create(buf_or.get()->getMemBufferRef()); - - if (!archive_or) { - LLVMRustSetLastError(archive_or.getError().message().c_str()); - return nullptr; - } - - OwningBinary<Archive> *ret = new OwningBinary<Archive>( - std::move(archive_or.get()), std::move(buf_or.get())); -#else - std::error_code err; - Archive *ret = new Archive(std::move(buf_or.get()), err); - if (err) { - LLVMRustSetLastError(err.message().c_str()); - return nullptr; - } -#endif - - return ret; -} - -#if LLVM_VERSION_MINOR >= 6 -typedef OwningBinary<Archive> RustArchive; -#define GET_ARCHIVE(a) ((a)->getBinary()) -#else -typedef Archive RustArchive; -#define GET_ARCHIVE(a) (a) -#endif - -extern "C" void -LLVMRustDestroyArchive(RustArchive *ar) { - delete ar; -} - -struct RustArchiveIterator { - Archive::child_iterator cur; - Archive::child_iterator end; -}; - -extern "C" RustArchiveIterator* -LLVMRustArchiveIteratorNew(RustArchive *ra) { - Archive *ar = GET_ARCHIVE(ra); - RustArchiveIterator *rai = new RustArchiveIterator(); - rai->cur = ar->child_begin(); - rai->end = ar->child_end(); - return rai; -} - -extern "C" const Archive::Child* -LLVMRustArchiveIteratorCurrent(RustArchiveIterator *rai) { - if (rai->cur == rai->end) - return NULL; -#if LLVM_VERSION_MINOR >= 6 - const Archive::Child &ret = *rai->cur; - return &ret; -#else - return rai->cur.operator->(); -#endif -} - -extern "C" void -LLVMRustArchiveIteratorNext(RustArchiveIterator *rai) { - if (rai->cur == rai->end) - return; - ++rai->cur; -} - -extern "C" void -LLVMRustArchiveIteratorFree(RustArchiveIterator *rai) { - delete rai; -} - -extern "C" const char* -LLVMRustArchiveChildName(const Archive::Child *child, size_t *size) { - ErrorOr<StringRef> name_or_err = child->getName(); - if (name_or_err.getError()) - return NULL; - StringRef name = name_or_err.get(); - *size = name.size(); - return name.data(); -} - -extern "C" const char* -LLVMRustArchiveChildData(Archive::Child *child, size_t *size) { - StringRef buf = child->getBuffer(); - *size = buf.size(); - return buf.data(); -} - extern "C" void LLVMRustSetDLLStorageClass(LLVMValueRef Value, GlobalValue::DLLStorageClassTypes Class) { |
