consolidate LinkFiles into LinkItems, use lib_* iterators.
authorChris Lattner <sabre@nondot.org>
Tue, 15 Mar 2005 22:55:17 +0000 (22:55 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 15 Mar 2005 22:55:17 +0000 (22:55 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20630 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Linker/LinkFiles.cpp [deleted file]
lib/Linker/LinkItems.cpp

diff --git a/lib/Linker/LinkFiles.cpp b/lib/Linker/LinkFiles.cpp
deleted file mode 100644 (file)
index 2868346..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-//===- lib/Linker/LinkFiles.cpp - Link LLVM bytecode files  ---------------===//
-// 
-//                     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 contains routines to handle linking together LLVM bytecode files.
-//
-//===----------------------------------------------------------------------===//
-
-#include "llvm/Linker.h"
-#include "llvm/Module.h"
-
-using namespace llvm;
-
-/// LinkInFile - opens a bytecode file and links in all objects which
-/// provide symbols that are currently undefined.
-///
-/// Inputs:
-///  File - The pathname of the bytecode file.
-///
-/// Outputs:
-///  ErrorMessage - A C++ string detailing what error occurred, if any.
-///
-/// Return Value:
-///  TRUE  - An error occurred.
-///  FALSE - No errors.
-///
-bool 
-Linker::LinkInFile(const sys::Path &File)
-{
-  // Make sure we can at least read the file
-  if (!File.readable())
-    return error("Cannot find linker input '" + File.toString() + "'");
-
-  // A user may specify an ar archive without -l, perhaps because it
-  // is not installed as a library. Detect that and link the library.
-  if (File.isArchive()) {
-    if (LinkInArchive(File))
-      return error("Cannot link archive '" + File.toString() + "'");
-  } else if (File.isBytecodeFile()) {
-    verbose("Linking bytecode file '" + File.toString() + "'");
-
-    std::auto_ptr<Module> M(LoadObject(File));
-    if (M.get() == 0) 
-      return error("Cannot load file '" + File.toString() + "'" + Error);
-    if (LinkInModule(M.get()))
-      return error("Cannot link file '" + File.toString() + "'" + Error);
-
-    verbose("Linked in file '" + File.toString() + "'");
-  } else {
-    return warning("File of unknown type '" + File.toString() + "' ignored.");
-  }
-  return false;
-}
-
-/// LinkFiles - takes a module and a list of files and links them all together.
-/// It locates the file either in the current directory, as its absolute
-/// or relative pathname, or as a file somewhere in LLVM_LIB_SEARCH_PATH.
-///
-/// Inputs:
-///  Files      - A vector of sys::Path indicating the LLVM bytecode filenames
-///               to be linked.  The names can refer to a mixture of pure LLVM
-///               bytecode files and archive (ar) formatted files.
-///
-/// Return value:
-///  FALSE - No errors.
-///  TRUE  - Some error occurred.
-///
-bool 
-Linker::LinkInFiles(const std::vector<sys::Path> &Files)
-{
-  for (unsigned i = 0; i < Files.size(); ++i) {
-    if (LinkInFile(Files[i]))
-      return true;
-  }
-  return false;
-}
index 2899d69eec167c676b675d71b767a13a2a543609..b3fb5b00cf1f5ec8a7c112d9b0db45519ae3cd85 100644 (file)
@@ -38,12 +38,10 @@ Linker::LinkInItems(const ItemList& Items) {
   // that module should also be aggregated with duplicates eliminated. This is
   // now the time to process the dependent libraries to resolve any remaining
   // symbols.
-  const Module::LibraryListType& DepLibs = Composite->getLibraries();
-  for (Module::LibraryListType::const_iterator I = DepLibs.begin(), 
-      E = DepLibs.end(); I != E; ++I) {
+  for (Module::lib_iterator I = Composite->lib_begin(), 
+         E = Composite->lib_end(); I != E; ++I)
     if(LinkInLibrary(*I))
       return true;
-  }
 
   return false;
 }
@@ -104,3 +102,62 @@ bool Linker::LinkInLibraries(const std::vector<std::string> &Libraries) {
 
   return false;
 }
+
+/// LinkInFile - opens a bytecode file and links in all objects which
+/// provide symbols that are currently undefined.
+///
+/// Inputs:
+///  File - The pathname of the bytecode file.
+///
+/// Outputs:
+///  ErrorMessage - A C++ string detailing what error occurred, if any.
+///
+/// Return Value:
+///  TRUE  - An error occurred.
+///  FALSE - No errors.
+///
+bool Linker::LinkInFile(const sys::Path &File) {
+  // Make sure we can at least read the file
+  if (!File.readable())
+    return error("Cannot find linker input '" + File.toString() + "'");
+
+  // A user may specify an ar archive without -l, perhaps because it
+  // is not installed as a library. Detect that and link the library.
+  if (File.isArchive()) {
+    if (LinkInArchive(File))
+      return error("Cannot link archive '" + File.toString() + "'");
+  } else if (File.isBytecodeFile()) {
+    verbose("Linking bytecode file '" + File.toString() + "'");
+
+    std::auto_ptr<Module> M(LoadObject(File));
+    if (M.get() == 0) 
+      return error("Cannot load file '" + File.toString() + "'" + Error);
+    if (LinkInModule(M.get()))
+      return error("Cannot link file '" + File.toString() + "'" + Error);
+
+    verbose("Linked in file '" + File.toString() + "'");
+  } else {
+    return warning("File of unknown type '" + File.toString() + "' ignored.");
+  }
+  return false;
+}
+
+/// LinkFiles - takes a module and a list of files and links them all together.
+/// It locates the file either in the current directory, as its absolute
+/// or relative pathname, or as a file somewhere in LLVM_LIB_SEARCH_PATH.
+///
+/// Inputs:
+///  Files      - A vector of sys::Path indicating the LLVM bytecode filenames
+///               to be linked.  The names can refer to a mixture of pure LLVM
+///               bytecode files and archive (ar) formatted files.
+///
+/// Return value:
+///  FALSE - No errors.
+///  TRUE  - Some error occurred.
+///
+bool Linker::LinkInFiles(const std::vector<sys::Path> &Files) {
+  for (unsigned i = 0; i < Files.size(); ++i)
+    if (LinkInFile(Files[i]))
+      return true;
+  return false;
+}