diff options
Diffstat (limited to 'llvm/tools/gccld/gccld.cpp')
| -rw-r--r-- | llvm/tools/gccld/gccld.cpp | 14 | 
1 files changed, 13 insertions, 1 deletions
| diff --git a/llvm/tools/gccld/gccld.cpp b/llvm/tools/gccld/gccld.cpp index ae451000884..22a26ef91a7 100644 --- a/llvm/tools/gccld/gccld.cpp +++ b/llvm/tools/gccld/gccld.cpp @@ -243,11 +243,23 @@ int main(int argc, char **argv, char **envp ) {      } else {        // Build a list of the items from our command line        Linker::ItemList Items; +      Linker::ItemList NativeItems;        BuildLinkItems(Items, InputFilenames, Libraries);        // Link all the items together -      if (TheLinker.LinkInItems(Items)) +      if (TheLinker.LinkInItems(Items,NativeItems))          return 1; // Error already printed + +      // Revise the Libraries based on the remaining (native) libraries that +      // were not linked in to the bytecode. This ensures that we don't attempt +      // to pass a bytecode library to the native linker +      Libraries.clear(); // we've consumed the libraries except for native +      if ((Native || NativeCBE) && !NativeItems.empty()) { +        for (Linker::ItemList::const_iterator I = NativeItems.begin(),  +             E = NativeItems.end(); I != E; ++I) { +          Libraries.push_back(I->first); +        } +      }      }      // We're done with the Linker, so tell it to release its module | 

