From be01f79d3d1b1e661d390d86cff4335daed8bfcd Mon Sep 17 00:00:00 2001 From: Andy Polyakov Date: Fri, 19 Dec 2008 11:17:29 +0000 Subject: x86_64 assembler pack: add support for Win64 SEH. --- ms/uplink-x86_64.pl | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'ms') diff --git a/ms/uplink-x86_64.pl b/ms/uplink-x86_64.pl index 80807ce05b..9acbf6be6f 100755 --- a/ms/uplink-x86_64.pl +++ b/ms/uplink-x86_64.pl @@ -12,6 +12,7 @@ $prefix="_lazy"; print <<___; .text .extern OPENSSL_Uplink +.globl OPENSSL_UplinkTable ___ for ($i=1;$i<=$N;$i++) { print <<___; @@ -30,8 +31,8 @@ $prefix${i}: mov 56(%rsp),%rdx mov 64(%rsp),%r8 mov 72(%rsp),%r9 - add \$40,%rsp lea OPENSSL_UplinkTable(%rip),%rax + add \$40,%rsp jmp *8*$i(%rax) $prefix${i}_end: .size $prefix${i},.-$prefix${i} @@ -39,24 +40,25 @@ ___ } print <<___; .data -.globl OPENSSL_UplinkTable OPENSSL_UplinkTable: .quad $N ___ for ($i=1;$i<=$N;$i++) { print " .quad $prefix$i\n"; } print <<___; -.section .pdata +.section .pdata,"r" +.align 4 ___ for ($i=1;$i<=$N;$i++) { print <<___; - .long $prefix${i} - .long $prefix${i}_end - .long ${prefix}_unwind_info + .rva $prefix${i},$prefix${i}_end,${prefix}_unwind_info ___ } print <<___; -.section .xdata +.section .xdata,"r" +.align 8 ${prefix}_unwind_info: .byte 0x01,0x04,0x01,0x00 .byte 0x04,0x42,0x00,0x00 ___ + +close STDOUT; -- cgit v1.2.3