guile-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Guile-commits] 307/437: x86: Build and pass all tests on 32 bit cygwin


From: Andy Wingo
Subject: [Guile-commits] 307/437: x86: Build and pass all tests on 32 bit cygwin
Date: Mon, 2 Jul 2018 05:14:42 -0400 (EDT)

wingo pushed a commit to branch lightning
in repository guile.

commit 4d0e4b32a11fc621671b4d622043b380d42e8ae7
Author: Paulo Andrade <address@hidden>
Date:   Wed Sep 24 14:32:49 2014 -0300

    x86: Build and pass all tests on 32 bit cygwin
    
        * 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.
---
 ChangeLog         |  9 +++++++++
 check/lightning.c | 10 ++++++++++
 lib/jit_x86-cpu.c |  6 +++++-
 3 files changed, 24 insertions(+), 1 deletion(-)

diff --git a/ChangeLog b/ChangeLog
index 3e6e0db..059f0ac 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
 2014-09-24 Paulo Andrade <address@hidden>
 
+       * 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 <address@hidden>
+
         * check/lightning.c: Add a hopefully temporary kludge to not use
        sprintf and sscanf returned by dlsym. This is required to pass
        the varargs test.
diff --git a/check/lightning.c b/check/lightning.c
index 47e39a3..83b6ab7 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 c24ad16..8a0ce11 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
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]