aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorMing-Yi Lai <ming-yi.lai@mediatek.com>2025-02-18 17:27:20 +0800
committerGitHub <noreply@github.com>2025-02-18 17:27:20 +0800
commit2fdb26da619cd09e3ccc8d154e48eb0034474823 (patch)
tree614e5f16f99c122956a558e8176c5d58661babd7 /clang/lib/Frontend/CompilerInvocation.cpp
parent61ab476460516f4bd60a03a46902e801d0db7306 (diff)
downloadllvm-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.cpp7
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;
}
}