diff options
Diffstat (limited to 'executor')
| -rw-r--r-- | executor/common.h | 8 | ||||
| -rw-r--r-- | executor/common_windows.h | 1 | ||||
| -rw-r--r-- | executor/executor_windows.cc | 11 |
3 files changed, 13 insertions, 7 deletions
diff --git a/executor/common.h b/executor/common.h index f5b525cc4..a283f7fbe 100644 --- a/executor/common.h +++ b/executor/common.h @@ -23,7 +23,11 @@ #endif #if defined(SYZ_EXECUTOR) -typedef long (*syscall_t)(long, long, long, long, long, long, long, long, long); +#ifndef SYSCALLAPI +#define SYSCALLAPI +#endif + +typedef long(SYSCALLAPI* syscall_t)(long, long, long, long, long, long, long, long, long); struct call_t { const char* name; @@ -156,4 +160,4 @@ static uint16_t csum_inet_digest(struct csum_inet* csum) { return ~csum->acc; } -#endif
\ No newline at end of file +#endif diff --git a/executor/common_windows.h b/executor/common_windows.h index 80c197a4a..dbc6b67c3 100644 --- a/executor/common_windows.h +++ b/executor/common_windows.h @@ -7,6 +7,7 @@ #define doexit exit #define NORETURN +#define SYSCALLAPI WINAPI #include "common.h" diff --git a/executor/executor_windows.cc b/executor/executor_windows.cc index 7b30e1a96..862621951 100644 --- a/executor/executor_windows.cc +++ b/executor/executor_windows.cc @@ -52,10 +52,11 @@ int main(int argc, char** argv) long execute_syscall(call_t* c, long a0, long a1, long a2, long a3, long a4, long a5, long a6, long a7, long a8) { - debug("%s = %p\n", c->name, c->call); - long res = c->call(a0, a1, a2, a3, a4, a5, a6, a7, a8); - debug("%s = %ld\n", c->name, res); - return res; + __try { + return c->call(a0, a1, a2, a3, a4, a5, a6, a7, a8); + } __except (EXCEPTION_EXECUTE_HANDLER) { + return -1; + } } void cover_open() @@ -82,4 +83,4 @@ uint32_t* write_output(uint32_t v) void write_completed(uint32_t completed) { -}
\ No newline at end of file +} |
