From 59659b596734466dd182fa99b0a189ca7c376129 Mon Sep 17 00:00:00 2001 From: Rainer Orth Date: Fri, 18 Nov 2011 16:15:59 +0000 Subject: [PATCH] Support libitm on Solaris 8 and 9/x86 with Sun as * config/generic/asmcfi.h: Fix comment. * config/x86/sjlj.S (_ITM_beginTransaction): Provide ELF PIC code sequence without .hidden support, error for non-ELF targets. (GTM_longjmp) [__ELF__]: Only use .hidden if HAVE_ATTRIBUTE_VISIBILITY. From-SVN: r181481 --- libitm/ChangeLog | 8 ++++++++ libitm/config/generic/asmcfi.h | 2 +- libitm/config/x86/sjlj.S | 12 ++++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/libitm/ChangeLog b/libitm/ChangeLog index 19e9fe3..642c42a 100644 --- a/libitm/ChangeLog +++ b/libitm/ChangeLog @@ -1,3 +1,11 @@ +2011-11-18 Rainer Orth + + * config/generic/asmcfi.h: Fix comment. + * config/x86/sjlj.S (_ITM_beginTransaction): Provide ELF PIC code + sequence without .hidden support, error for non-ELF targets. + (GTM_longjmp) [__ELF__]: Only use .hidden if + HAVE_ATTRIBUTE_VISIBILITY. + 2011-11-17 Rainer Orth * alloc_cpp.cc [__osf__] (_ZnwX, _ZdlPv, _ZnaX, _ZdaPv, diff --git a/libitm/config/generic/asmcfi.h b/libitm/config/generic/asmcfi.h index fcb45c5..4344d6f 100644 --- a/libitm/config/generic/asmcfi.h +++ b/libitm/config/generic/asmcfi.h @@ -41,4 +41,4 @@ #define cfi_def_cfa(r,n) #define cfi_register(o,n) -#endif /* HAVE_ASM_CFI */ +#endif /* HAVE_AS_CFI_PSEUDO_OP */ diff --git a/libitm/config/x86/sjlj.S b/libitm/config/x86/sjlj.S index 32572d9..ed755da 100644 --- a/libitm/config/x86/sjlj.S +++ b/libitm/config/x86/sjlj.S @@ -60,7 +60,17 @@ _ITM_beginTransaction: movl %edi, 20(%esp) movl %ebp, 24(%esp) leal 8(%esp), %edx +#if defined HAVE_ATTRIBUTE_VISIBILITY || !defined __PIC__ call GTM_begin_transaction +#elif defined __ELF__ + call 1f +1: popl %ebx + addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx + call GTM_begin_transaction@PLT + movl 12(%esp), %ebx +#else +# error "Unsupported PIC sequence" +#endif addl $28, %esp cfi_def_cfa_offset(4) ret @@ -108,7 +118,9 @@ GTM_longjmp: #ifdef __ELF__ .type GTM_longjmp, @function +#ifdef HAVE_ATTRIBUTE_VISIBILITY .hidden GTM_longjmp +#endif .size GTM_longjmp, .-GTM_longjmp #endif -- 2.7.4