Re: Retpolines and CFI

2018-01-25 Thread Jeff Law
On 01/25/2018 06:38 AM, H.J. Lu wrote: > On Mon, Jan 22, 2018 at 4:21 AM, Florian Weimer wrote: >> I tried this: >> >> struct C { >> virtual ~C(); >> virtual void f(); >> }; >> >> void >> f (C *p) >> { >> p->f(); >> p->f(); >> } >> >> with r256939 and -mindirect-branch=thunk -O2 on x86-64

Re: Retpolines and CFI

2018-01-25 Thread Florian Weimer
On 01/25/2018 02:38 PM, H.J. Lu wrote: On Thu, Jan 25, 2018 at 12:32 AM, Florian Weimer wrote: On 01/22/2018 01:21 PM, Florian Weimer wrote: There is a different issue with the think itself. __x86_indirect_thunk_rax: .LFB2: .cfi_startproc call.LIND5 .LIND4:

Re: Retpolines and CFI

2018-01-25 Thread H.J. Lu
On Thu, Jan 25, 2018 at 12:32 AM, Florian Weimer wrote: > On 01/22/2018 01:21 PM, Florian Weimer wrote: > >> There is a different issue with the think itself. >> >> __x86_indirect_thunk_rax: >> .LFB2: >> .cfi_startproc >> call.LIND5 >> .LIND4: >> pause >> lf

Re: Retpolines and CFI

2018-01-25 Thread H.J. Lu
On Mon, Jan 22, 2018 at 4:21 AM, Florian Weimer wrote: > I tried this: > > struct C { > virtual ~C(); > virtual void f(); > }; > > void > f (C *p) > { > p->f(); > p->f(); > } > > with r256939 and -mindirect-branch=thunk -O2 on x86-64 GNU/Linux, and got > this: > > _Z1fP1C: > .LFB0: >

Re: Retpolines and CFI

2018-01-25 Thread Florian Weimer
On 01/22/2018 01:21 PM, Florian Weimer wrote: There is a different issue with the think itself. __x86_indirect_thunk_rax: .LFB2:     .cfi_startproc     call    .LIND5 .LIND4:     pause     lfence     jmp .LIND4 .LIND5:     mov %rax, (%rsp)     ret    

Retpolines and CFI

2018-01-22 Thread Florian Weimer
I tried this: struct C { virtual ~C(); virtual void f(); }; void f (C *p) { p->f(); p->f(); } with r256939 and -mindirect-branch=thunk -O2 on x86-64 GNU/Linux, and got this: _Z1fP1C: .LFB0: .cfi_startproc pushq %rbx .cfi_def_cfa_offset 16 .cfi_offset