On 05/27/2016 09:34 AM, Peter Maydell wrote:
On 27 May 2016 at 17:21, Richard Henderson <r...@twiddle.net> wrote:
On 05/27/2016 08:06 AM, Peter Maydell wrote:

@@ -31,6 +32,8 @@ safe_syscall_base:
          * does not list any ABI differences regarding stack alignment.)
          */
         push    %rbp
+        .cfi_def_cfa_offset 16
+        .cfi_offset rbp,-16


While this is correct, there are two other directives that make it easier to
describe changes without having to compute globally correct constants.  Here
they would be:

        .cfi_adjust_cfa_offset 8

Add 8 to the offset, i.e. decrement the SP by 8.

Presumably .cfi_startproc sets the initial offset to 8?
(It's not documented that it does so, which is I think partly why
I preferred to use a directive that definitely set the offset
to the right thing.)

It is documented to set up the normal no-instructions-executed call frame. Which in the case of x86, does have a non-zero offset.

There is a ".cfi_startproc simple" that begins a frame with no opcodes at all.


r~

Reply via email to