Not all MinGW build environments include a library which provides ffs(),
and some versions of gcc create a function call instead of inline code.

When gcc is called with -ansi, it will always create a function call.
This usually results in an unresolved symbol "ffs" at link time.

The patch enforces inline code for this special case.

Cc: Jacob Kroon <jacob.kr...@gmail.com>
Signed-off-by: Stefan Weil <s...@weilnetz.de>
---

Hi Jacob,

please try the patch below. If it does not fix the linker problem,
you can define ffs unconditionally.

Regards
Stefan


 include/sysemu/os-win32.h |    3 +++
 1 file changed, 3 insertions(+)

diff --git a/include/sysemu/os-win32.h b/include/sysemu/os-win32.h
index bf9edeb..a885162 100644
--- a/include/sysemu/os-win32.h
+++ b/include/sysemu/os-win32.h
@@ -66,6 +66,9 @@
 
 /* Declaration of ffs() is missing in MinGW's strings.h. */
 int ffs(int i);
+#if defined(__STRICT_ANSI__)
+# define ffs(i) __builtin_ffs(i)
+#endif
 
 /* Missing POSIX functions. Don't use MinGW-w64 macros. */
 #undef gmtime_r
-- 
1.7.10.4


Reply via email to