aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>2011-11-18 16:15:59 +0000
committerRainer Orth <ro@gcc.gnu.org>2011-11-18 16:15:59 +0000
commit59659b596734466dd182fa99b0a189ca7c376129 (patch)
treec571e1e0ec2e804464122759d57525541ffd6d36
parent919f402ca5eae1caf53ed2b9caffc9a50e92cdd0 (diff)
downloadgcc-59659b596734466dd182fa99b0a189ca7c376129.zip
gcc-59659b596734466dd182fa99b0a189ca7c376129.tar.gz
gcc-59659b596734466dd182fa99b0a189ca7c376129.tar.bz2
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
-rw-r--r--libitm/ChangeLog8
-rw-r--r--libitm/config/generic/asmcfi.h2
-rw-r--r--libitm/config/x86/sjlj.S12
3 files changed, 21 insertions, 1 deletions
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 <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * 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 <ro@CeBiTec.Uni-Bielefeld.DE>
* 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