osdep: Work around MinGW assert
In several places we use assert(FEATURE), and assume that if FEATURE
is disabled, all following code is removed as unreachable. Which allows
us to compile-out functions that are only present with FEATURE, and
have a link-time failure if the functions remain used.
MinGW does not mark its internal function _assert() as noreturn, so the
compiler cannot see when code is unreachable, which leads to link errors
for this host that are not present elsewhere.
The current build-time failure concerns 62823083b8
, but I remember
having seen this same error before. Fix it once and for all for MinGW.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-id: 20181022181623.8810-1-richard.henderson@linaro.org
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
99e2487e00
commit
3ebee3b191
|
@ -122,6 +122,18 @@ extern int daemon(int, int);
|
||||||
#include "glib-compat.h"
|
#include "glib-compat.h"
|
||||||
#include "qemu/typedefs.h"
|
#include "qemu/typedefs.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* For mingw, as of v6.0.0, the function implementing the assert macro is
|
||||||
|
* not marked as noreturn, so the compiler cannot delete code following an
|
||||||
|
* assert(false) as unused. We rely on this within the code base to delete
|
||||||
|
* code that is unreachable when features are disabled.
|
||||||
|
* All supported versions of Glib's g_assert() satisfy this requirement.
|
||||||
|
*/
|
||||||
|
#ifdef __MINGW32__
|
||||||
|
#undef assert
|
||||||
|
#define assert(x) g_assert(x)
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* According to waitpid man page:
|
* According to waitpid man page:
|
||||||
* WCOREDUMP
|
* WCOREDUMP
|
||||||
|
|
Loading…
Reference in a new issue