This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH, libitm]: GTM_longjmp: Jump indirect from memory address


On Tue, Feb 14, 2012 at 7:07 PM, Richard Henderson <rth@redhat.com> wrote:
> On 02/13/2012 11:54 PM, Uros Bizjak wrote:
>> ? ? ? movq ? ?48(%rsi), %r15
>> - ? ? movq ? ?56(%rsi), %rdx
>> ? ? ? movl ? ?%edi, %eax
>> + ? ? cfi_offset(%rip, 56)
>> ? ? ? cfi_def_cfa(%rcx, 0)
>> - ? ? cfi_register(%rip, %rdx)
>> ? ? ? movq ? ?%rcx, %rsp
>> - ? ? jmp ? ? *%rdx
>> + ? ? jmp ? ? *56(%rsi)
>
> I'm sorry, I was mistaken earlier. ?The rip value is not at CFA+56, it's at RSI+56.
> The way to describe this is
>
> ? ? ? ?cfi_def_cfa(%rsi, 0)
> ? ? ? ?cfi_offset(%rip, 56)
> ? ? ? ?cfi_register(%rsp, %rcx)

Yes, IMO this now describes correct CFA handling. Following follow-on
patch corrects this issue (and also puts .cfi directions to the place
where they make most sense, mainly a cosmetic change).

Re-tested on x86_64-pc-linux-gnu {,-m32} and committed.

Thanks,
Uros.

Attachment: i.diff.txt
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]