aboutsummaryrefslogtreecommitdiff
path: root/tcc.h
diff options
context:
space:
mode:
authorgrischka <grischka>2009-12-19 22:40:28 +0100
committergrischka <grischka>2009-12-20 01:54:37 +0100
commit50b040ef83252730d75463bdeea589294e698532 (patch)
tree92e82f58787576e018858939f97361b486d6bb6f /tcc.h
parent88a3ccab9f3c877e2ffb8fecc3303006e0640907 (diff)
downloadtinycc-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.h7
1 files changed, 7 insertions, 0 deletions
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 ----------------- */