From d4a698d494b9bc5344b49824ac3aa27710833fa8 Mon Sep 17 00:00:00 2001 From: Uros Bizjak Date: Tue, 14 Feb 2012 08:50:38 +0100 Subject: [PATCH] target.h (GTM_longjmp): Jump indirect from memory address. * config/x86/target.h (GTM_longjmp): Jump indirect from memory address. From-SVN: r184198 --- libitm/ChangeLog | 4 ++++ libitm/config/x86/sjlj.S | 10 ++++------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/libitm/ChangeLog b/libitm/ChangeLog index ad8e3d73a8f..6e24888b710 100644 --- a/libitm/ChangeLog +++ b/libitm/ChangeLog @@ -1,3 +1,7 @@ +2012-02-15 Uros Bizjak + + * config/x86/target.h (GTM_longjmp): Jump indirect from memory address. + 2012-02-13 Eric Botcazou * configure.tgt (target_cpu): Handle sparc and sparc64 & sparcv9. diff --git a/libitm/config/x86/sjlj.S b/libitm/config/x86/sjlj.S index 0571a4ab658..9a74d97f76f 100644 --- a/libitm/config/x86/sjlj.S +++ b/libitm/config/x86/sjlj.S @@ -119,23 +119,21 @@ SYM(GTM_longjmp): movq 32(%rsi), %r13 movq 40(%rsi), %r14 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) #else movl (%edx), %ecx movl 4(%edx), %ebx movl 8(%edx), %esi movl 12(%edx), %edi movl 16(%edx), %ebp - movl 20(%edx), %edx + cfi_offset(%eip, 20) cfi_def_cfa(%ecx, 0) - cfi_register(%eip, %edx) movl %ecx, %esp - jmp *%edx + jmp *20(%edx) #endif cfi_endproc