aboutsummaryrefslogtreecommitdiff
path: root/lib/Linker/LinkArchives.cpp
diff options
context:
space:
mode:
authorReid Spencer <rspencer@reidspencer.com>2007-04-30 00:29:39 +0000
committerReid Spencer <rspencer@reidspencer.com>2007-04-30 00:29:39 +0000
commitc9a83e4f19519e19469efa0ed39d81ed60b94401 (patch)
treed5b7f780b05a06327e4b4b6538506ce8713057fe /lib/Linker/LinkArchives.cpp
parent0a1817392d3ad7ec2681e6bf495f490c443ec0b7 (diff)
If an archive is not recognized as an LLVM bytecode archive then declare
that it is native so that the linker will pass it on downstream. This avoids a problem where the native link line fails because there is both a .so and a .a file. The .a file gets processed as bytecode and then dropped from the command line. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36584 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Linker/LinkArchives.cpp')
-rw-r--r--lib/Linker/LinkArchives.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/Linker/LinkArchives.cpp b/lib/Linker/LinkArchives.cpp
index 8186e7b4d1..95ac1ab1fd 100644
--- a/lib/Linker/LinkArchives.cpp
+++ b/lib/Linker/LinkArchives.cpp
@@ -88,7 +88,7 @@ GetAllUndefinedSymbols(Module *M, std::set<std::string> &UndefinedSymbols) {
/// TRUE - An error occurred.
/// FALSE - No errors.
bool
-Linker::LinkInArchive(const sys::Path &Filename) {
+Linker::LinkInArchive(const sys::Path &Filename, bool &is_native) {
// Make sure this is an archive file we're dealing with
if (!Filename.isArchive())
@@ -118,6 +118,11 @@ Linker::LinkInArchive(const sys::Path &Filename) {
if (!arch)
return error("Cannot read archive '" + Filename.toString() +
"': " + ErrMsg);
+ if (!arch->isBytecodeArchive()) {
+ is_native = true;
+ return false;
+ }
+ is_native = false;
// Save a set of symbols that are not defined by the archive. Since we're
// entering a loop, there's no point searching for these multiple times. This