On Thu, Mar 19, 2020 at 01:11:45PM -0700, Sean Christopherson wrote: > On Thu, Mar 19, 2020 at 01:03:41PM -0700, Xing, Cedric wrote: > > On 3/18/2020 6:11 PM, Sean Christopherson wrote: > > > #endif > > > SYM_FUNC_START(__vdso_sgx_enter_enclave) > > > /* Prolog */ > > >@@ -82,7 +84,9 @@ SYM_FUNC_START(__vdso_sgx_enter_enclave) > > > .cfi_rel_offset %rbp, 0 > > > mov %rsp, %rbp > > > .cfi_def_cfa_register %rbp > > >+ push %rbx > > A CFI directive is needed here: > > > > .cfi_rel_offset %rbx, -8 > > Darn, I suspected as much, but wasn't 100% positive. Shouldn't have > hedged. :-) > > Is the rule of thumb for adding directives that one is needed any time > there is a new saved value of a register, or if the relative address of > the last saved value changes? Are CFI directives only used for > non-volatile registers? AFAIK the convention is just that if you push a register you need to offset it so that the FDE that is put into .eh_frame by GCC has the information from which locations of the stack the register values are copied. BTW, why use GCC-style ".L-mangled" label names instead of having more readable ones? /Jarkko