Index: lld/ELF/Config.h =================================================================== --- lld/ELF/Config.h +++ lld/ELF/Config.h @@ -70,6 +70,9 @@ // For -z *stack enum class GnuStackKind { None, Exec, NoExec }; +// For --power10-stub +enum class P10Stub { Default, No }; + struct SymbolVersion { llvm::StringRef name; bool isExternCpp; @@ -251,6 +254,7 @@ UnresolvedPolicy unresolvedSymbols; UnresolvedPolicy unresolvedSymbolsInShlib; Target2Policy target2; + P10Stub Power10Stub; ARMVFPArgKind armVFPArgs = ARMVFPArgKind::Default; BuildIdKind buildId = BuildIdKind::None; SeparateSegmentKind zSeparate; Index: lld/ELF/Driver.cpp =================================================================== --- lld/ELF/Driver.cpp +++ lld/ELF/Driver.cpp @@ -760,6 +760,25 @@ return OrphanHandlingPolicy::Place; } +// Parses --power10-stubs= flags, to disable or enable Power 10 +// instructions in stubs. +static P10Stub getP10StubOpt(opt::InputArgList &args) { + + // This handles the --no-power10-stubs option. + + + StringRef SelectedOpt = args.getLastArgValue(OPT_power10_stubs_eq); + + if (SelectedOpt == "no") + return P10Stub::No; + + if (!args.hasArg(OPT_power10_stubs_eq) && + args.hasArg(OPT_no_power10_stubs)) + return P10Stub::No; + + return P10Stub::Default; +} + // Parse --build-id or --build-id=