[PATCH] D110869: [X86] Implement -fzero-call-used-regs option
Bill Wendling via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 30 11:40:40 PDT 2021
void created this revision.
void added reviewers: kees, nickdesaulniers, jyknight.
Herald added subscribers: dexonsmith, dang, jdoerfert, pengfei, hiraditya.
Herald added a reviewer: aaron.ballman.
void requested review of this revision.
Herald added projects: clang, LLVM.
Herald added subscribers: llvm-commits, cfe-commits.
The "-fzero-call-used-regs" option tells the compiler to zero out
certain registers before the function returns. It's also available as a
function attribute: zero_call_used_regs.
The two upper categories are:
- "used": Zero out used registers.
- "all": Zero out all registers, whether used or not.
The individual options are:
- "skip": Don't zero out any registers. This is the default.
- "used": Zero out all used registers.
- "used-arg": Zero out used registers that are used for arguments.
- "used-gpr": Zero out used registers that are GPRs.
- "used-gpr-arg": Zero out used GPRs that are used as arguments.
- "all": Zero out all registers.
- "all-arg": Zero out all registers used for arguments.
- "all-gpr": Zero out all GPRs.
- "all-gpr-arg": Zero out all GPRs used for arguments.
This is used to help mitigate Return-Oriented Programming exploits.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D110869
Files:
clang/include/clang/Basic/Attr.td
clang/include/clang/Basic/AttrDocs.td
clang/include/clang/Basic/CodeGenOptions.def
clang/include/clang/Driver/Options.td
clang/lib/CodeGen/CGCall.cpp
clang/lib/Driver/ToolChains/Clang.cpp
clang/lib/Sema/SemaDeclAttr.cpp
clang/test/CodeGen/zero-call-used-regs.c
clang/test/Misc/pragma-attribute-supported-attributes-list.test
clang/test/Sema/zero_call_used_regs.c
llvm/include/llvm/Support/CodeGen.h
llvm/lib/Target/X86/X86FrameLowering.cpp
llvm/lib/Target/X86/X86FrameLowering.h
llvm/lib/Target/X86/X86RegisterInfo.cpp
llvm/lib/Target/X86/X86RegisterInfo.h
llvm/test/CodeGen/X86/zero-call-used-regs-all-arg.ll
llvm/test/CodeGen/X86/zero-call-used-regs-all-gpr-arg.ll
llvm/test/CodeGen/X86/zero-call-used-regs-all-gpr.ll
llvm/test/CodeGen/X86/zero-call-used-regs-all.ll
llvm/test/CodeGen/X86/zero-call-used-regs-fmod.ll
llvm/test/CodeGen/X86/zero-call-used-regs-skip.ll
llvm/test/CodeGen/X86/zero-call-used-regs-smoke-tests.ll
llvm/test/CodeGen/X86/zero-call-used-regs-used-arg.ll
llvm/test/CodeGen/X86/zero-call-used-regs-used-gpr-arg.ll
llvm/test/CodeGen/X86/zero-call-used-regs-used-gpr.ll
llvm/test/CodeGen/X86/zero-call-used-regs-used.ll
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D110869.376308.patch
Type: text/x-patch
Size: 63338 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210930/b1039218/attachment.bin>
More information about the llvm-commits
mailing list