diff --git a/ChangeLog b/ChangeLog index 3e6e0dbe8..059f0aca5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2014-09-24 Paulo Andrade + + * check/lightning.c: Add workaround to conflicting global + optind variable in cygwin binutils that have an internal + getopt* implementation. + + * lib/jit_x86-cpu.c: Add a simple define ffsl ffs if building + for 32 bit and there is no ffsl function. + 2014-09-24 Paulo Andrade * check/lightning.c: Add a hopefully temporary kludge to not use diff --git a/check/lightning.c b/check/lightning.c index 47e39a3c3..83b6ab778 100644 --- a/check/lightning.c +++ b/check/lightning.c @@ -3952,6 +3952,16 @@ main(int argc, char *argv[]) int opt_short; char cmdline[8192]; +#if __WORDSIZE == 32 && defined(__CYGWIN__) + /* Cause a compile warning about redefinition without dllimport + * attribute, *but* cause correct linkage if liblightning.a is + * linked to binutils (that happens to have an internal + * getopt* implementation and an apparently conflicting + * optind global variable) */ + extern int optind; + optind = 1; +#endif + progname = argv[0]; init_jit(progname); diff --git a/lib/jit_x86-cpu.c b/lib/jit_x86-cpu.c index c24ad16e8..8a0ce1149 100644 --- a/lib/jit_x86-cpu.c +++ b/lib/jit_x86-cpu.c @@ -639,8 +639,12 @@ static void _prolog(jit_state_t*, jit_node_t*); static void _epilog(jit_state_t*, jit_node_t*); # define patch_at(node, instr, label) _patch_at(_jit, node, instr, label) static void _patch_at(jit_state_t*, jit_node_t*, jit_word_t, jit_word_t); -# if __WORDSIZE == 64 && !defined(HAVE_FFSL) +# if !defined(HAVE_FFSL) +# if __WORDSIZE == 32 +# define ffsl(i) ffs(i) +# else static int ffsl(long); +# endif # endif #endif