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 /tcc.h | |
| 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 'tcc.h')
| -rw-r--r-- | tcc.h | 7 |
1 files changed, 7 insertions, 0 deletions
@@ -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 ----------------- */ |
