[lld] r175572 - [Driver][GNULD] Lookup .so files and default to dynamic output.
Michael J. Spencer
bigcheesegs at gmail.com
Tue Feb 19 15:05:37 PST 2013
Author: mspencer
Date: Tue Feb 19 17:05:36 2013
New Revision: 175572
URL: http://llvm.org/viewvc/llvm-project?rev=175572&view=rev
Log:
[Driver][GNULD] Lookup .so files and default to dynamic output.
Modified:
lld/trunk/lib/Driver/Drivers.cpp
lld/trunk/lib/Driver/LDOptions.td
Modified: lld/trunk/lib/Driver/Drivers.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/Driver/Drivers.cpp?rev=175572&r1=175571&r2=175572&view=diff
==============================================================================
--- lld/trunk/lib/Driver/Drivers.cpp (original)
+++ lld/trunk/lib/Driver/Drivers.cpp Tue Feb 19 17:05:36 2013
@@ -115,6 +115,8 @@ public:
std::unique_ptr<llvm::opt::DerivedArgList> newArgs(
new llvm::opt::DerivedArgList(*_inputArgs));
+ bool isOutputDynamic = false;
+
if (llvm::opt::Arg *A = _inputArgs->getLastArg(ld::OPT_target)) {
newArgs->AddSeparateArg( A, _core.getOption(core::OPT_target)
, A->getValue());
@@ -134,6 +136,15 @@ public:
newArgs->AddJoinedArg(nullptr, _core.getOption(core::OPT_output),
"a.out");
+ if (llvm::opt::Arg *A = _inputArgs->getLastArg(ld::OPT_static))
+ newArgs->AddJoinedArg(A, _core.getOption(core::OPT_output_type),
+ newArgs->MakeArgString("static"));
+ else {
+ newArgs->AddJoinedArg(nullptr, _core.getOption(core::OPT_output_type),
+ newArgs->MakeArgString("dynamic"));
+ isOutputDynamic = true;
+ }
+
if (llvm::opt::Arg *A = _inputArgs->getLastArg(ld::OPT_relocatable))
newArgs->AddFlagArg(A, _core.getOption(core::OPT_relocatable));
@@ -170,6 +181,14 @@ public:
StringRef libName = (*it)->getValue();
SmallString<128> p;
for (const auto &path : _inputSearchPaths) {
+ if (isOutputDynamic) {
+ p = path;
+ llvm::sys::path::append(p, Twine("lib") + libName + ".so");
+ if (llvm::sys::fs::exists(p.str())) {
+ inputPath = newArgs->MakeArgString(p);
+ break;
+ }
+ }
p = path;
llvm::sys::path::append(p, Twine("lib") + libName + ".a");
if (llvm::sys::fs::exists(p.str())) {
Modified: lld/trunk/lib/Driver/LDOptions.td
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/Driver/LDOptions.td?rev=175572&r1=175571&r2=175572&view=diff
==============================================================================
--- lld/trunk/lib/Driver/LDOptions.td (original)
+++ lld/trunk/lib/Driver/LDOptions.td Tue Feb 19 17:05:36 2013
@@ -14,6 +14,8 @@ def output_e : Separate<["-"], "o">, Ali
def relocatable : Flag<["--"], "relocatable">;
def relocatable_r : Flag<["-"], "r">, Alias<relocatable>;
+def dynamic_linker : Separate<["-"], "dynamic-linker">;
+
def OCTOTHORPE_OCTOTHORPE_OCTOTHORPE : Flag<["-"], "###">;
def emit_yaml : Flag<["-"], "emit-yaml">;
More information about the llvm-commits
mailing list