summaryrefslogtreecommitdiff
path: root/tools/gccld
diff options
context:
space:
mode:
authorReid Spencer <rspencer@reidspencer.com>2006-01-10 03:14:40 +0000
committerReid Spencer <rspencer@reidspencer.com>2006-01-10 03:14:40 +0000
commitf4484f3e16e19377af27f062ca8a0450616d319a (patch)
treedc48ce88c0d1cb43fb2dd0e058d15e1ff553e0cb /tools/gccld
parent3e5e127f2986ac177bc16f5970ae0dc4dee8acec (diff)
downloadllvm-f4484f3e16e19377af27f062ca8a0450616d319a.tar.gz
llvm-f4484f3e16e19377af27f062ca8a0450616d319a.tar.bz2
llvm-f4484f3e16e19377af27f062ca8a0450616d319a.tar.xz
For PR521:
With these patches we implement the ability for the Linker library to keep track of which libraries were actually bytecode files (not archives) and cause their users to remove such files from the list of libraries to pass to the native linker. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25169 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/gccld')
-rw-r--r--tools/gccld/gccld.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/tools/gccld/gccld.cpp b/tools/gccld/gccld.cpp
index ae45100088..22a26ef91a 100644
--- a/tools/gccld/gccld.cpp
+++ b/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