diff options
| author | grischka <grischka> | 2009-12-19 22:40:28 +0100 |
|---|---|---|
| committer | grischka <grischka> | 2009-12-20 01:54:37 +0100 |
| commit | 50b040ef83252730d75463bdeea589294e698532 (patch) | |
| tree | 92e82f58787576e018858939f97361b486d6bb6f /i386-asm.c | |
| parent | 88a3ccab9f3c877e2ffb8fecc3303006e0640907 (diff) | |
| download | tinycc-50b040ef83252730d75463bdeea589294e698532.tar.gz tinycc-50b040ef83252730d75463bdeea589294e698532.tar.bz2 | |
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.
Diffstat (limited to 'i386-asm.c')
| -rw-r--r-- | i386-asm.c | 4 |
1 files changed, 4 insertions, 0 deletions
@@ -426,6 +426,10 @@ static void gen_disp32(ExprValue *pe) elimination in the linker */ gen_le32(pe->v + sym->jnext - ind - 4); } else { + if (sym && sym->type.t == VT_VOID) { + sym->type.t = VT_FUNC; + sym->type.ref = NULL; + } gen_addrpc32(VT_SYM, sym, pe->v); } } |
