diff options
Diffstat (limited to 'lld/lib/Driver/GnuLdDriver.cpp')
| -rw-r--r-- | lld/lib/Driver/GnuLdDriver.cpp | 19 |
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(); |

