Remove this file; the code that it went with is no longer
[oota-llvm.git] / lib / Archive / Archive.cpp
index b7e7106ae6fe70abeba8a406996824059008ce1a..a0e5eedc9c94a2369f13db9b02f22a6c42f6e035 100644 (file)
@@ -2,8 +2,8 @@
 //
 //                     The LLVM Compiler Infrastructure
 //
-// This file was developed by Reid Spencer and is distributed under the
-// University of Illinois Open Source License. See LICENSE.TXT for details.
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
 //
 //===----------------------------------------------------------------------===//
 //
@@ -18,6 +18,8 @@
 #include "llvm/Module.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/System/Process.h"
+#include <memory>
+#include <cstring>
 using namespace llvm;
 
 // getMemberSize - compute the actual physical size of the file member as seen
@@ -142,25 +144,19 @@ Archive::Archive(const sys::Path& filename)
 }
 
 bool
-Archive::mapToMemory(std::string* ErrMsg)
-{
-  mapfile = new sys::MappedFile();
-  if (mapfile->open(archPath, sys::MappedFile::READ_ACCESS, ErrMsg))
-    return true;
-  if (!(base = (char*) mapfile->map(ErrMsg)))
+Archive::mapToMemory(std::string* ErrMsg) {
+  mapfile = MemoryBuffer::getFile(archPath.c_str(), ErrMsg);
+  if (mapfile == 0)
     return true;
+  base = mapfile->getBufferStart();
   return false;
 }
 
 void Archive::cleanUpMemory() {
   // Shutdown the file mapping
-  if (mapfile) {
-    mapfile->close();
-    delete mapfile;
-    
-    mapfile = 0;
-    base = 0;
-  }
+  delete mapfile;
+  mapfile = 0;
+  base = 0;
   
   // Forget the entire symbol table
   symTab.clear();
@@ -196,11 +192,18 @@ static void getSymbols(Module*M, std::vector<std::string>& symbols) {
       if (!GI->getName().empty())
         symbols.push_back(GI->getName());
   
-  // Loop over functions.
+  // Loop over functions
   for (Module::iterator FI = M->begin(), FE = M->end(); FI != FE; ++FI)
     if (!FI->isDeclaration() && !FI->hasInternalLinkage())
       if (!FI->getName().empty())
         symbols.push_back(FI->getName());
+
+  // Loop over aliases
+  for (Module::alias_iterator AI = M->alias_begin(), AE = M->alias_end();
+       AI != AE; ++AI) {
+    if (AI->hasName())
+      symbols.push_back(AI->getName());
+  }
 }
 
 // Get just the externally visible defined symbols from the bitcode
@@ -208,8 +211,7 @@ bool llvm::GetBitcodeSymbols(const sys::Path& fName,
                              std::vector<std::string>& symbols,
                              std::string* ErrMsg) {
   std::auto_ptr<MemoryBuffer> Buffer(
-                       MemoryBuffer::getFileOrSTDIN(&fName.toString()[0],
-                                                    fName.toString().size()));
+                       MemoryBuffer::getFileOrSTDIN(fName.c_str()));
   if (!Buffer.get()) {
     if (ErrMsg) *ErrMsg = "Could not open file '" + fName.toString() + "'";
     return true;