[PATCH v2 0/3] objtool: Support the stack swizzle
From: Peter Zijlstra
Date: Tue Feb 09 2021 - 04:40:54 EST
Hi!
Implement objtool support for the x86_64 stack swizzle pattern.
This means we can use the minial stack swizzle:
mov %rsp, (%[tos])
mov %[tos], %rsp
...
pop %rsp
from inline asm, with arbitrary stack setup. The ORC data for the Top-of-Stack
will use the SP_INDIRECT CFA base. In order for this to work, SP_INDIRECT needs
to first dereference and then add the offset to find the next frame.
Therefore we need to change SP_INDIRECT (which is currently unused) to mean:
(%rsp) + offset.
Changes since v1 include:
- removed the !callee saved reg restriction by using the vals[] array
over the regs[] array.
- per the above, removed the patches creating the regs[] scratch space.
- more comments.
- rebased to tip/objtool/core