diff options
-rw-r--r-- | gnu/llvm/tools/clang/include/clang/Driver/Options.td | 4 | ||||
-rw-r--r-- | gnu/llvm/tools/clang/lib/Driver/ToolChains/Clang.cpp | 10 |
2 files changed, 14 insertions, 0 deletions
diff --git a/gnu/llvm/tools/clang/include/clang/Driver/Options.td b/gnu/llvm/tools/clang/include/clang/Driver/Options.td index c6e49ab205e..2b5be735f49 100644 --- a/gnu/llvm/tools/clang/include/clang/Driver/Options.td +++ b/gnu/llvm/tools/clang/include/clang/Driver/Options.td @@ -1457,6 +1457,10 @@ def fstack_protector_strong : Flag<["-"], "fstack-protector-strong">, Group<f_Gr HelpText<"Use a strong heuristic to apply stack protectors to functions">; def fstack_protector : Flag<["-"], "fstack-protector">, Group<f_Group>, HelpText<"Enable stack protectors for functions potentially vulnerable to stack smashing">; +def fno_ret_protector : Flag<["-"], "fno-ret-protector">, Group<f_Group>, + HelpText<"Disable return protector">; +def fret_protector : Flag<["-"], "fret-protector">, Group<f_Group>, + HelpText<"Enable return protector">; def fstandalone_debug : Flag<["-"], "fstandalone-debug">, Group<f_Group>, Flags<[CoreOption]>, HelpText<"Emit full debug info for all types used by the program">; def fno_standalone_debug : Flag<["-"], "fno-standalone-debug">, Group<f_Group>, Flags<[CoreOption]>, diff --git a/gnu/llvm/tools/clang/lib/Driver/ToolChains/Clang.cpp b/gnu/llvm/tools/clang/lib/Driver/ToolChains/Clang.cpp index 5eb832b1056..f1137b2d928 100644 --- a/gnu/llvm/tools/clang/lib/Driver/ToolChains/Clang.cpp +++ b/gnu/llvm/tools/clang/lib/Driver/ToolChains/Clang.cpp @@ -3969,6 +3969,16 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, RenderSSPOptions(getToolChain(), Args, CmdArgs, KernelOrKext); + // -ret-protector + unsigned RetProtector = 1; + if (Arg *A = Args.getLastArg(options::OPT_fno_ret_protector, + options::OPT_fret_protector)) { + if (A->getOption().matches(options::OPT_fno_ret_protector)) + RetProtector = 0; + else if (A->getOption().matches(options::OPT_fret_protector)) + RetProtector = 1; + } + // Translate -mstackrealign if (Args.hasFlag(options::OPT_mstackrealign, options::OPT_mno_stackrealign, false)) |