summaryrefslogtreecommitdiffstats
path: root/lld/lib/Driver/GnuLdDriver.cpp
diff options
context:
space:
mode:
authorShankar Easwaran <shankare@codeaurora.org>2013-06-16 05:06:28 +0000
committerShankar Easwaran <shankare@codeaurora.org>2013-06-16 05:06:28 +0000
commita42a4738935cd56c2426162f3f744dad1efa20da (patch)
treee8f56bed7be2dd8664e4312b096cf131e19b6006 /lld/lib/Driver/GnuLdDriver.cpp
parent089ee1554c74f12bba8dddcf14cb62feeab6a08b (diff)
downloadbcm5719-llvm-a42a4738935cd56c2426162f3f744dad1efa20da.tar.gz
bcm5719-llvm-a42a4738935cd56c2426162f3f744dad1efa20da.zip
[ELF] add NMAGIC/OMAGIC support
llvm-svn: 184055
Diffstat (limited to 'lld/lib/Driver/GnuLdDriver.cpp')
-rw-r--r--lld/lib/Driver/GnuLdDriver.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/lld/lib/Driver/GnuLdDriver.cpp b/lld/lib/Driver/GnuLdDriver.cpp
index 25ac09343a2..57ee99b0fc2 100644
--- a/lld/lib/Driver/GnuLdDriver.cpp
+++ b/lld/lib/Driver/GnuLdDriver.cpp
@@ -198,6 +198,25 @@ GnuLdDriver::parse(int argc, const char *argv[], raw_ostream &diagnostics) {
parsedArgs->getLastArg(OPT_dynamic_linker))
options->setInterpreter(dynamicLinker->getValue());
+ // Handle NMAGIC
+ if (parsedArgs->getLastArg(OPT_nmagic))
+ options->setOutputMagic(ELFTargetInfo::OutputMagic::NMAGIC);
+
+ // Handle OMAGIC
+ if (parsedArgs->getLastArg(OPT_omagic))
+ options->setOutputMagic(ELFTargetInfo::OutputMagic::OMAGIC);
+
+ // Handle --no-omagic
+ if (parsedArgs->getLastArg(OPT_no_omagic)) {
+ options->setOutputMagic(ELFTargetInfo::OutputMagic::DEFAULT);
+ options->setNoAllowDynamicLibraries();
+ }
+
+ // If either of the options NMAGIC/OMAGIC have been set, make the executable
+ // static
+ if (!options->allowLinkWithDynamicLibraries())
+ options->setIsStaticExecutable(true);
+
// Handle -Lxxx
for (llvm::opt::arg_iterator it = parsedArgs->filtered_begin(OPT_L),
ie = parsedArgs->filtered_end();
OpenPOWER on IntegriCloud