wingo pushed a commit to branch lightning
in repository guile.
commit 7259f9dc8a24279d50ed05d2eb92add4fcce723a
Author: pcpa <[email protected]>
Date: Wed Sep 13 11:39:30 2017 -0400
Adapt for binutils 2.29
* configure.ac: Add check for binutils 2.29 prototype to the
disassembler function.
* lib/jit_disasm.c: Adapt for binutils 2.29 change.
---
ChangeLog | 6 ++++++
configure.ac | 18 ++++++++++++++++++
lib/jit_disasm.c | 10 ++++++++--
3 files changed, 32 insertions(+), 2 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 97263f7..42d6129 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2017-13-09 Paulo Andrade <[email protected]>
+
+ * configure.ac: Add check for binutils 2.29 prototype to the
+ disassembler function.
+ * lib/jit_disasm.c: Adapt for binutils 2.29 change.
+
2017-06-09 Paulo Andrade <[email protected]>
* include/lightning/jit_private.h, lib/lightning.c: Add a
diff --git a/configure.ac b/configure.ac
index f5a0fb5..289083b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -93,6 +93,24 @@ fi
AM_CONDITIONAL(with_disassembler, [test "x$DISASSEMBLER" != "xno"])
if test "x$DISASSEMBLER" != "xno"; then
LIGHTNING_CFLAGS="$LIGHTNING_CFLAGS -DDISASSEMBLER=1"
+ save_CFLAGS=$CFLAGS
+ AC_COMPILE_IFELSE([AC_LANG_SOURCE(
+ #include <lightning.h>
+ #include <lightning/jit_private.h>
+ #include <dis-asm.h>
+ int main(int argc, char *argv[])
+ {
+ disassembler_ftype print;
+ bdf *abfd;
+ print = disassembler(abfd);
+ return 0;
+ }
+ )], [ac_cv_test_new_disassembler=no],,)
+ CFLAGS="$CFLAGS -I$PWD/include -D_GNU_SOURCE"
+ CFLAGS="$save_CFLAGS"
+ if test "x$ac_cv_test_new_disassembler" != "xno"; then
+ LIGHTNING_CFLAGS="$LIGHTNING_CFLAGS -DBINUTILS_2_29=1"
+ fi
fi
AC_ARG_ENABLE(devel-disassembler,
diff --git a/lib/jit_disasm.c b/lib/jit_disasm.c
index e3773a7..cc623b6 100644
--- a/lib/jit_disasm.c
+++ b/lib/jit_disasm.c
@@ -73,8 +73,6 @@ jit_init_debug(const char *progname)
}
bfd_check_format(disasm_bfd, bfd_object);
bfd_check_format(disasm_bfd, bfd_archive);
- disasm_print = disassembler(disasm_bfd);
- assert(disasm_print);
INIT_DISASSEMBLE_INFO(disasm_info, disasm_stream, fprintf);
# if defined(__i386__) || defined(__x86_64__)
disasm_info.arch = bfd_arch_i386;
@@ -124,6 +122,14 @@ jit_init_debug(const char *progname)
# endif
disasm_info.print_address_func = disasm_print_address;
+# if BINUTILS_2_29
+ disasm_print = disassembler(disasm_info.arch, __BYTE_ORDER == __BIG_ENDIAN,
+ disasm_info.mach, disasm_bfd);
+# else
+ disasm_print = disassembler(disasm_bfd);
+# endif
+ assert(disasm_print);
+
if (bfd_get_file_flags(disasm_bfd) & HAS_SYMS) {
asymbol **in;
asymbol **out;