From patchwork Sat Feb 16 18:30:12 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: w32: Always compile with __builtin_ffs Date: Sat, 16 Feb 2013 08:30:12 -0000 From: Stefan Weil X-Patchwork-Id: 221023 Message-Id: <1361039412-4064-1-git-send-email-sw@weilnetz.de> To: qemu-devel@nongnu.org Cc: Stefan Weil , Jacob Kroon , afaerber@suse.de 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. 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