From 3704c60135f96c02079274dad1a00b2dc3f846c9 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Thu, 19 Oct 2017 11:06:05 +0200 Subject: executor: fix build breakages due to doexit Some standard libraries contain "using ::exit;", which breaks with the current redefinition of exit. --- pkg/csource/akaros_common.go | 17 ++++++++++++++++- pkg/csource/linux_common.go | 10 +++++----- 2 files changed, 21 insertions(+), 6 deletions(-) (limited to 'pkg/csource') diff --git a/pkg/csource/akaros_common.go b/pkg/csource/akaros_common.go index 669020aa8..88a80c638 100644 --- a/pkg/csource/akaros_common.go +++ b/pkg/csource/akaros_common.go @@ -31,7 +31,17 @@ var commonHeaderAkaros = ` #include #endif -#define doexit exit +#if defined(SYZ_EXECUTOR) || (defined(SYZ_REPEAT) && defined(SYZ_WAIT_REPEAT)) || \ + defined(SYZ_USE_TMP_DIR) || defined(SYZ_HANDLE_SEGV) || defined(SYZ_TUN_ENABLE) || \ + defined(SYZ_SANDBOX_NAMESPACE) || defined(SYZ_SANDBOX_SETUID) || \ + defined(SYZ_SANDBOX_NONE) || defined(SYZ_FAULT_INJECTION) || defined(__NR_syz_kvm_setup_cpu) +__attribute__((noreturn)) static void doexit(int status) +{ + _exit(status); + for (;;) { + } +} +#endif @@ -54,6 +64,11 @@ var commonHeaderAkaros = ` #include #endif +#if defined(SYZ_EXECUTOR) +#define exit vsnprintf +#define _exit vsnprintf +#endif + #if defined(SYZ_EXECUTOR) #if defined(__GNUC__) #define SYSCALLAPI diff --git a/pkg/csource/linux_common.go b/pkg/csource/linux_common.go index acc1647e4..2d84a9fbd 100644 --- a/pkg/csource/linux_common.go +++ b/pkg/csource/linux_common.go @@ -119,11 +119,6 @@ __attribute__((noreturn)) static void doexit(int status) } #endif -#if defined(SYZ_EXECUTOR) -#define exit use_doexit_instead -#define _exit use_doexit_instead -#endif - #include @@ -145,6 +140,11 @@ __attribute__((noreturn)) static void doexit(int status) #include #endif +#if defined(SYZ_EXECUTOR) +#define exit vsnprintf +#define _exit vsnprintf +#endif + #if defined(SYZ_EXECUTOR) #if defined(__GNUC__) #define SYSCALLAPI -- cgit mrf-deployment