Patchwork w32: Always compile with __builtin_ffs

login
register
mail settings
Submitter Stefan Weil
Date Feb. 16, 2013, 6:30 p.m.
Message ID <1361039412-4064-1-git-send-email-sw@weilnetz.de>
Download mbox | patch
Permalink /patch/221023/
State New
Headers show

Comments

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 <jacob.kroon@gmail.com>
Signed-off-by: Stefan Weil <sw@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(+)

Patch

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