From 74e198126b19efb7871aa673ae17483753f067b0 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Thu, 16 Jul 2015 00:11:09 -0700 Subject: trans: Add kind to writeArchive Updates our LLVM bindings to be able to write out multiple kinds of archives. This commit also enables using LLVM instead of the system ar on all current targets. --- src/rustllvm/ArchiveWrapper.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'src/rustllvm/ArchiveWrapper.cpp') diff --git a/src/rustllvm/ArchiveWrapper.cpp b/src/rustllvm/ArchiveWrapper.cpp index 2e94c196935..86225874df7 100644 --- a/src/rustllvm/ArchiveWrapper.cpp +++ b/src/rustllvm/ArchiveWrapper.cpp @@ -120,7 +120,17 @@ LLVMRustArchiveChildName(const Archive::Child *child, size_t *size) { extern "C" const char* LLVMRustArchiveChildData(Archive::Child *child, size_t *size) { - StringRef buf = child->getBuffer(); + StringRef buf; +#if LLVM_VERSION_MINOR >= 7 + ErrorOr buf_or_err = child->getBuffer(); + if (buf_or_err.getError()) { + LLVMRustSetLastError(buf_or_err.getError().message().c_str()); + return NULL; + } + buf = buf_or_err.get(); +#else + buf = child->getBuffer(); +#endif *size = buf.size(); return buf.data(); } @@ -144,7 +154,8 @@ extern "C" int LLVMRustWriteArchive(char *Dst, size_t NumMembers, const LLVMRustArchiveMember **NewMembers, - bool WriteSymbtab) { + bool WriteSymbtab, + Archive::Kind Kind) { #if LLVM_VERSION_MINOR >= 7 std::vector Members; @@ -157,7 +168,7 @@ LLVMRustWriteArchive(char *Dst, Members.push_back(NewArchiveIterator(Member->child, Member->name)); } } - auto pair = writeArchive(Dst, Members, WriteSymbtab); + auto pair = writeArchive(Dst, Members, WriteSymbtab, Kind, false); if (!pair.second) return 0; LLVMRustSetLastError(pair.second.message().c_str()); -- cgit 1.4.1-3-g733a5