[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH, build fix] osdep: Work around MinGW assert
From: |
Richard Henderson |
Subject: |
[Qemu-devel] [PATCH, build fix] osdep: Work around MinGW assert |
Date: |
Tue, 23 Oct 2018 08:02:44 +0100 |
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 62823083b8a2, but I remember
having seen this same error before. Fix it once and for all for MinGW.
Signed-off-by: Richard Henderson <address@hidden>
---
include/qemu/osdep.h | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h
index 4f8559e550..0c1e335a43 100644
--- a/include/qemu/osdep.h
+++ b/include/qemu/osdep.h
@@ -122,6 +122,18 @@ extern int daemon(int, int);
#include "glib-compat.h"
#include "qemu/typedefs.h"
+/*
+ * For mingw, as of v6.0.0, the function implementing the assert macro is
+ * not marked a 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:
* WCOREDUMP
--
2.17.2
- [Qemu-devel] [PATCH 01/10] cputlb: Move tlb_lock to CPUTLBCommon, (continued)
- [Qemu-devel] [PATCH 01/10] cputlb: Move tlb_lock to CPUTLBCommon, Richard Henderson, 2018/10/23
- [Qemu-devel] [PATCH 06/10] cputlb: Merge tlb_flush_nocheck into tlb_flush_by_mmuidx_async_work, Richard Henderson, 2018/10/23
- [Qemu-devel] [PATCH 02/10] cputlb: Remove tcg_enabled hack from tlb_flush_nocheck, Richard Henderson, 2018/10/23
- [Qemu-devel] [PATCH 03/10] cputlb: Move cpu->pending_tlb_flush to env->tlb_c.pending_flush, Richard Henderson, 2018/10/23
- [Qemu-devel] [PATCH 08/10] cputlb: Count "partial" and "elided" tlb flushes, Richard Henderson, 2018/10/23
- [Qemu-devel] [PATCH 09/10] cputlb: Filter flushes on already clean tlbs, Richard Henderson, 2018/10/23
- [Qemu-devel] [PATCH 04/10] cputlb: Split large page tracking per mmu_idx, Richard Henderson, 2018/10/23
- [Qemu-devel] [PATCH, build fix] osdep: Work around MinGW assert,
Richard Henderson <=
- [Qemu-devel] [PATCH 07/10] cputlb: Merge tlb_flush_page into tlb_flush_page_by_mmuidx, Richard Henderson, 2018/10/23
- [Qemu-devel] [PATCH 05/10] cputlb: Move env->vtlb_index to env->tlb_d.vindex, Richard Henderson, 2018/10/23
- Re: [Qemu-devel] [PATCH 00/10] cputlb: track dirty tlbs and general cleanup, Emilio G. Cota, 2018/10/23