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:
@ -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
|
||||
|
||||
/* ---------------------------------------------- */
|
||||
|
||||
Reference in New Issue
Block a user