add -fret-clean option (amd64 and i386 only at first), defaulting to off.
authorderaadt <deraadt@openbsd.org>
Sun, 2 Jun 2024 15:42:19 +0000 (15:42 +0000)
committerderaadt <deraadt@openbsd.org>
Sun, 2 Jun 2024 15:42:19 +0000 (15:42 +0000)
commit140e38acaff913a5c75e4bb3f9e655e3163d77f1
tree3bf0671bdcf66d33efe00d150167af97e5bee6c0
parent896063e4d924bef6229f6695f274b5282f1e3d23
add -fret-clean option (amd64 and i386 only at first), defaulting to off.
This causes the caller to cleans the return address off the stack after
a callq completes.  The option is best used in low-level libraries (such as
libc), because libc contains low-level system call stubs.  The option
reduces hints (found on the stale parts of the stack) about libc.so's mapping
location, and together with random-relinking, relro got/pic, and xonly
makes some exploit methods more difficult.
ok mortimer, mlarkin, much discussion with kettenis, in snaps for 2 weeks.
gnu/llvm/llvm/lib/Target/X86/X86RetClean.cpp [new file with mode: 0644]