Re: [PATCH v5 08/13] selftests/sgx: Handle relocations in test enclave

From: Huang, Kai
Date: Thu Aug 31 2023 - 20:16:27 EST


On Fri, 2023-09-01 at 01:26 +0200, Jo Van Bulck wrote:
> On 01.09.23 01:13, Huang, Kai wrote:
> > > encl_body:
> > > /* snipped */
> > > lea encl_op_array(%rip), %rcx
> > > lea __encl_base(%rip), %rax
> > > add (%rcx,%rdx,8),%rax
> > > jmp *%rax
> >
> > call *%rax
> >
> > ?
> >
> > > ret
>
> Good catch, but this is indeed the code as generated with gcc -Os (for
> readability). It seems the compiler choose a JMP over a CALL (as the
> stack is untouched and the callee can immediately return to the caller).

Ah, OK.

I thought it's a typo, but obviously the compiler is smarter. :-)

>
> Somehow, the compiler still emits a RET after the JMP (which is not
> supposed to return here) though. I agree this is unnecessarily confusing
> and can simply remove the RET from the commit message.

The RET is for encl_body itself I suppose.

>
> Best,
> Jo