diff options
author | Ming-Yi Lai <ming-yi.lai@mediatek.com> | 2025-02-18 17:27:20 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-02-18 17:27:20 +0800 |
commit | 2fdb26da619cd09e3ccc8d154e48eb0034474823 (patch) | |
tree | 614e5f16f99c122956a558e8176c5d58661babd7 /clang/lib/Frontend/CompilerInvocation.cpp | |
parent | 61ab476460516f4bd60a03a46902e801d0db7306 (diff) | |
download | llvm-2fdb26da619cd09e3ccc8d154e48eb0034474823.zip llvm-2fdb26da619cd09e3ccc8d154e48eb0034474823.tar.gz llvm-2fdb26da619cd09e3ccc8d154e48eb0034474823.tar.bz2 |
[clang][RISCV] Introduce preprocessor macro when Zicfiss-based shadow stack is enabled (#127592)
The `-fcf-protection=[full|return]` flag enables shadow stack
implementation based on RISC-V Zicfiss extension. This patch adds the
`__riscv_shadow_stack` predefined macro to preprocessing when such a
shadow stack implementation is enabled.
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
-rw-r--r-- | clang/lib/Frontend/CompilerInvocation.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp index 014e629..b9a5c05 100644 --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -4048,8 +4048,13 @@ bool CompilerInvocation::ParseLangArgs(LangOptions &Opts, ArgList &Args, if (const Arg *A = Args.getLastArg(OPT_fcf_protection_EQ)) { StringRef Name = A->getValue(); - if (Name == "full" || Name == "branch") { + if (Name == "full") { + Opts.CFProtectionBranch = 1; + Opts.CFProtectionReturn = 1; + } else if (Name == "branch") { Opts.CFProtectionBranch = 1; + } else if (Name == "return") { + Opts.CFProtectionReturn = 1; } } |