see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
<http://www.gnu.org/licenses/>. */
+
+#include "asmcfi.h"
+
+#define CONCAT1(a, b) CONCAT2(a, b)
+#define CONCAT2(a, b) a ## b
+
+#ifdef __USER_LABEL_PREFIX__
+# define SYM(x) CONCAT1 (__USER_LABEL_PREFIX__, x)
+#else
+# define SYM(x) x
+#endif
+
+#ifdef __ELF__
+# define TYPE(x) .type SYM(x), @function
+# define SIZE(x) .size SYM(x), . - SYM(x)
+# ifdef HAVE_ATTRIBUTE_VISIBILITY
+# define HIDDEN(x) .hidden SYM(x)
+# else
+# define HIDDEN(x)
+# endif
+#else
+# define TYPE(x)
+# define SIZE(x)
+# ifdef __MACH__
+# define HIDDEN(x) .private_extern SYM(x)
+# else
+# define HIDDEN(x)
+# endif
+#endif
+
.text
- .p2align 4
- .globl _ITM_beginTransaction
- .type _ITM_beginTransaction, @function
-_ITM_beginTransaction:
- .cfi_startproc
+ .align 4
+ .globl SYM(_ITM_beginTransaction)
+
+SYM(_ITM_beginTransaction):
+ cfi_startproc
#ifdef __x86_64__
leaq 8(%rsp), %rax
movq (%rsp), %r8
subq $72, %rsp
- .cfi_def_cfa_offset 80
+ cfi_def_cfa_offset(80)
movq %rax, (%rsp)
movq %r8, 8(%rsp)
movq %rbx, 16(%rsp)
movq %r14, 48(%rsp)
movq %r15, 56(%rsp)
movq %rsp, %rsi
- call GTM_begin_transaction
+ call SYM(GTM_begin_transaction)
addq $72, %rsp
- .cfi_def_cfa_offset 8
+ cfi_def_cfa_offset(8)
ret
#else
leal 4(%esp), %ecx
subl $28, %esp
- .cfi_def_cfa_offset 32
+ cfi_def_cfa_offset(32)
movl %ecx, 8(%esp)
movl %ebx, 12(%esp)
movl %esi, 16(%esp)
movl %edi, 20(%esp)
movl %ebp, 24(%esp)
leal 8(%esp), %edx
- call GTM_begin_transaction
+#if defined HAVE_ATTRIBUTE_VISIBILITY || !defined __PIC__
+ call SYM(GTM_begin_transaction)
+#elif defined __ELF__
+ call 1f
+1: popl %ebx
+ addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx
+ call SYM(GTM_begin_transaction)@PLT
+ movl 12(%esp), %ebx
+#else
+# error "Unsupported PIC sequence"
+#endif
addl $28, %esp
- .cfi_def_cfa_offset 4
+ cfi_def_cfa_offset(4)
ret
#endif
- .cfi_endproc
- .size _ITM_beginTransaction, .-_ITM_beginTransaction
+ cfi_endproc
- .p2align 4
- .globl GTM_longjmp
- .type GTM_longjmp, @function
- .hidden GTM_longjmp
+ TYPE(_ITM_beginTransaction)
+ SIZE(_ITM_beginTransaction)
-GTM_longjmp:
- .cfi_startproc
+ .align 4
+ .globl SYM(GTM_longjmp)
+
+SYM(GTM_longjmp):
+ cfi_startproc
#ifdef __x86_64__
movq (%rdi), %rcx
movq 8(%rdi), %rdx
movq 48(%rdi), %r14
movq 56(%rdi), %r15
movl %esi, %eax
- .cfi_def_cfa %rcx, 0
- .cfi_register %rip, %rdx
+ cfi_def_cfa(%rcx, 0)
+ cfi_register(%rip, %rdx)
movq %rcx, %rsp
jmp *%rdx
#else
movl 12(%edx), %edi
movl 16(%edx), %ebp
movl 20(%edx), %edx
- .cfi_def_cfa %ecx, 0
- .cfi_register %eip, %edx
+ cfi_def_cfa(%ecx, 0)
+ cfi_register(%eip, %edx)
movl %ecx, %esp
jmp *%edx
#endif
- .cfi_endproc
- .size GTM_longjmp, .-GTM_longjmp
+ cfi_endproc
+
+ TYPE(GTM_longjmp)
+ HIDDEN(GTM_longjmp)
+ SIZE(GTM_longjmp)
+#ifdef __linux__
.section .note.GNU-stack, "", @progbits
+#endif