klee/0007-llvm38-archive-child-iterator-changes.patch

62 lines
2.2 KiB
Diff

From: Jiri Slaby <jirislaby@gmail.com>
Date: Fri, 15 Jun 2018 08:28:22 +0200
Subject: llvm38: archive child iterator changes
Patch-mainline: no
After LLVM commit 25569fdcdab0, archive iterator returns
object::Archive::Child instead of child_iterator, adapt to that.
Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
---
lib/Module/ModuleUtil.cpp | 20 ++++++++++++++++----
1 file changed, 16 insertions(+), 4 deletions(-)
diff --git a/lib/Module/ModuleUtil.cpp b/lib/Module/ModuleUtil.cpp
index 025b7374fcf9..e6d592b135b6 100644
--- a/lib/Module/ModuleUtil.cpp
+++ b/lib/Module/ModuleUtil.cpp
@@ -207,8 +207,19 @@ static bool linkBCA(object::Archive* archive, Module* composite, std::string& er
StringRef memberName;
#if LLVM_VERSION_CODE >= LLVM_VERSION(3, 5)
- ErrorOr<StringRef> memberNameErr = AI->getName();
- std::error_code ec = memberNameErr.getError();
+ std::error_code ec;
+#if LLVM_VERSION_CODE >= LLVM_VERSION(3, 8)
+ ErrorOr<object::Archive::Child> childErr = *AI;
+ ec = childErr.getError();
+ if (ec) {
+ errorMessage = ec.message();
+ return false;
+ }
+#else
+ object::Archive::child_iterator childErr = AI;
+#endif
+ ErrorOr<StringRef> memberNameErr = childErr->getName();
+ ec = memberNameErr.getError();
if (!ec) {
memberName = memberNameErr.get();
#else
@@ -226,7 +237,8 @@ static bool linkBCA(object::Archive* archive, Module* composite, std::string& er
}
#if LLVM_VERSION_CODE >= LLVM_VERSION(3, 5)
- ErrorOr<std::unique_ptr<llvm::object::Binary> > child = AI->getAsBinary();
+ ErrorOr<std::unique_ptr<llvm::object::Binary> > child =
+ childErr->getAsBinary();
ec = child.getError();
#else
OwningPtr<object::Binary> child;
@@ -235,7 +247,7 @@ static bool linkBCA(object::Archive* archive, Module* composite, std::string& er
if (ec) {
// If we can't open as a binary object file its hopefully a bitcode file
#if LLVM_VERSION_CODE >= LLVM_VERSION(3, 6)
- ErrorOr<MemoryBufferRef> buff = AI->getMemoryBufferRef();
+ ErrorOr<MemoryBufferRef> buff = childErr->getMemoryBufferRef();
ec = buff.getError();
#elif LLVM_VERSION_CODE >= LLVM_VERSION(3, 5)
ErrorOr<std::unique_ptr<MemoryBuffer> > buffErr = AI->getMemoryBuffer();
--
2.17.1