Patchwork w32: Always compile with __builtin_ffs

mail settings
Submitter Stefan Weil
Date Feb. 16, 2013, 6:30 p.m.
Message ID <>
Download mbox | patch
Permalink /patch/221023/
State New
Headers show


Stefan Weil - Feb. 16, 2013, 6:30 p.m.
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 <>
Signed-off-by: Stefan Weil <>

Hi Jacob,

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


 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)
 /* Missing POSIX functions. Don't use MinGW-w64 macros. */
 #undef gmtime_r