[lld] r174273 - [Archive] Update to LLVM change.

Michael J. Spencer bigcheesegs at gmail.com
Sun Feb 3 02:49:26 PST 2013


Author: mspencer
Date: Sun Feb  3 04:49:26 2013
New Revision: 174273

URL: http://llvm.org/viewvc/llvm-project?rev=174273&view=rev
Log:
[Archive] Update to LLVM change.

Modified:
    lld/trunk/lib/ReaderWriter/ReaderArchive.cpp

Modified: lld/trunk/lib/ReaderWriter/ReaderArchive.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ReaderArchive.cpp?rev=174273&r1=174272&r2=174273&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ReaderArchive.cpp (original)
+++ lld/trunk/lib/ReaderWriter/ReaderArchive.cpp Sun Feb  3 04:49:26 2013
@@ -42,16 +42,23 @@ public:
     if (member == _symbolMemberMap.end())
       return nullptr;
 
-    error_code ec;
     llvm::object::Archive::child_iterator ci = member->second;
     
-    if (dataSymbolOnly && (ec = isDataSymbol(ci->getBuffer(), name)))
-      return nullptr;
+    if (dataSymbolOnly) {
+      OwningPtr<MemoryBuffer> buff;
+      if (ci->getMemoryBuffer(buff, true))
+        return nullptr;
+      if (isDataSymbol(buff.take(), name))
+        return nullptr;
+    }
     
     std::vector<std::unique_ptr<File>> result;
 
-    LinkerInput li(std::unique_ptr<MemoryBuffer>(ci->getBuffer()));
-    if ((ec = _getReader(li)->parseFile(li.takeBuffer(), result)))
+    OwningPtr<MemoryBuffer> buff;
+    if (ci->getMemoryBuffer(buff, true))
+      return nullptr;
+    LinkerInput li(std::unique_ptr<MemoryBuffer>(buff.take()));
+    if (_getReader(li)->parseFile(li.takeBuffer(), result))
       return nullptr;
 
     assert(result.size() == 1);
@@ -173,7 +180,10 @@ error_code ReaderArchive::parseFile(std:
     
     for (auto mf = _archive->begin_children(), 
               me = _archive->end_children(); mf != me; ++mf) {
-      LinkerInput li(std::unique_ptr<MemoryBuffer>(mf->getBuffer()));
+      OwningPtr<MemoryBuffer> buff;
+      if ((ec = mf->getMemoryBuffer(buff, true)))
+        return ec;
+      LinkerInput li(std::unique_ptr<MemoryBuffer>(buff.take()));
       if ((ec = _getReader(li)->parseFile(li.takeBuffer(), result)))
         return ec;
     }





More information about the llvm-commits mailing list