From 50b040ef83252730d75463bdeea589294e698532 Mon Sep 17 00:00:00 2001 From: grischka Date: Sat, 19 Dec 2009 22:40:28 +0100 Subject: 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. --- tcc.h | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'tcc.h') diff --git a/tcc.h b/tcc.h index ea4ae21..130c1b9 100644 --- a/tcc.h +++ b/tcc.h @@ -521,6 +521,10 @@ struct TCCState { /* PE info */ int pe_subsystem; unsigned long pe_file_align; + struct pe_uw { + Section *pdata; + int sym_1, sym_2, offs_1; + } pe_unwind; #endif #ifndef TCC_TARGET_PE @@ -1167,6 +1171,9 @@ ST_FUNC int pe_output_file(TCCState * s1, const char *filename); ST_FUNC int pe_dllimport(int r, SValue *sv, void (*fn)(int r, SValue *sv)); /* tiny_impdef.c */ ST_FUNC char *get_export_names(FILE *fp); +#ifdef TCC_TARGET_X86_64 +ST_FUNC void pe_add_unwind_data(unsigned start, unsigned end, unsigned stack); +#endif #endif /* ------------ tccrun.c ----------------- */ -- cgit v1.3.1