win64: add tiny unwind data for setjmp/longjmp

This enables native unwind semantics with longjmp on
win64 by putting an entry into the .pdata section for
each compiled fuction.

Also, the function now use a fixed stack and store arguments
into X(%rsp) rather than using push.
This commit is contained in:
grischka
2009-12-19 22:40:28 +01:00
parent 88a3ccab9f
commit 50b040ef83
7 changed files with 322 additions and 110 deletions

View File

@ -57,11 +57,19 @@ P0:
jmp *8(%rax)
/* ---------------------------------------------- */
/* avoid msvcrt unwind stuff for setjmp/longjmp */
/* setjmp/longjmp support */
.globl tinyc_getsp
tinyc_getsp:
.globl tinyc_no_getbp
tinyc_no_getbp:
.byte 0x90
.globl tinyc_getbp
tinyc_getbp:
xor %rax,%rax
cmp %al,tinyc_no_getbp(%rax)
je t1
mov %rbp,%rax
t1:
ret
/* ---------------------------------------------- */