summaryrefslogtreecommitdiffstats
path: root/lld/lib/Driver/GnuLdDriver.cpp
diff options
context:
space:
mode:
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