Implement dependent library linking. It is no longer required that -lstdc++
-lstdsup++ no -lc be passed on the command line to llvm linkers if the
progam being linked was compiled with the C/C++ Front End or Stacker.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18243 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Linker/LinkArchives.cpp b/lib/Linker/LinkArchives.cpp
index 0d770f5..1f96bf9 100644
--- a/lib/Linker/LinkArchives.cpp
+++ b/lib/Linker/LinkArchives.cpp
@@ -371,12 +371,19 @@
 ///  TRUE  - Error.
 ///
 void llvm::LinkLibraries(const char *progname, Module *HeadModule,
-                         const std::vector<std::string> &Libraries,
+                         const std::vector<std::string> &Libs,
                          const std::vector<std::string> &LibPaths,
                          bool Verbose, bool Native) {
   // String in which to receive error messages.
   std::string ErrorMessage;
 
+  // Build a set of library names that we should try, including the 
+  // HeadModule's dependent libraries. We use a set here to eliminate 
+  // duplicates between the module's libraries and the argument Libs.
+  Module::LibraryListType Libraries(HeadModule->getLibraries());
+  Libraries.insert(Libs.begin(),Libs.end());
+
+  // For each library
   for (unsigned i = 0; i < Libraries.size(); ++i) {
     // Determine where this library lives.
     std::string Pathname = FindLib(Libraries[i], LibPaths);