lightning
[Top][All Lists]
Advanced

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

[PATCH 2/2] jit_disasm: Add support for new binutils 2.38


From: Paul Cercueil
Subject: [PATCH 2/2] jit_disasm: Add support for new binutils 2.38
Date: Sat, 10 Sep 2022 10:29:26 +0100

The INIT_DISASSEMBLE_INFO() macro changed starting from binutils 2.38.

Update the configure script to auto-detect the binutils version and use
the right format.

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
---
 configure.ac     | 12 ++++++++++++
 lib/jit_disasm.c | 19 +++++++++++++++++++
 2 files changed, 31 insertions(+)

diff --git a/configure.ac b/configure.ac
index 5b582d2..8200651 100644
--- a/configure.ac
+++ b/configure.ac
@@ -136,10 +136,22 @@ if test "x$DISASSEMBLER" != "xno"; then
                return 0;
        }
     )], [ac_cv_test_new_disassembler=no],,)
+    AC_COMPILE_IFELSE([AC_LANG_SOURCE(
+       #include <dis-asm.h>
+       int main(int argc, char *argv[])
+       {
+               struct disassemble_info dinfo;
+               INIT_DISASSEMBLE_INFO(dinfo, NULL, NULL, NULL);
+               return 0;
+       }
+    )], 
[ac_cv_test_new_disassemble_info=yes],[ac_cv_test_new_disassemble_info=no],)
     CFLAGS="$save_CFLAGS"
     if test "x$ac_cv_test_new_disassembler" != "xno"; then
        LIGHTNING_CFLAGS="$LIGHTNING_CFLAGS -DBINUTILS_2_29=1"
     fi
+    if test "x$ac_cv_test_new_disassemble_info" != "xno"; then
+       LIGHTNING_CFLAGS="$LIGHTNING_CFLAGS -DBINUTILS_2_38=1"
+    fi
 fi
 
 AC_ARG_ENABLE(devel-disassembler,
diff --git a/lib/jit_disasm.c b/lib/jit_disasm.c
index b2ceba0..d61ba47 100644
--- a/lib/jit_disasm.c
+++ b/lib/jit_disasm.c
@@ -53,6 +53,20 @@ static jit_state_t            *disasm_jit;
 static FILE                     *disasm_stream;
 #endif
 
+#if BINUTILS_2_38
+static int fprintf_styled(void *, enum disassembler_style, const char* fmt, 
...)
+{
+  va_list args;
+  int r;
+
+  va_start(args, fmt);
+  r = vprintf(fmt, args);
+  va_end(args);
+
+  return r;
+}
+#endif
+
 /*
  * Implementation
  */
@@ -76,7 +90,12 @@ jit_init_debug(const char *progname)
     bfd_check_format(disasm_bfd, bfd_archive);
     if (!disasm_stream)
        disasm_stream = stderr;
+
+#if BINUTILS_2_38
+    INIT_DISASSEMBLE_INFO(disasm_info, disasm_stream, fprintf, fprintf_styled);
+#else
     INIT_DISASSEMBLE_INFO(disasm_info, disasm_stream, fprintf);
+#endif
     disasm_info.arch = bfd_get_arch(disasm_bfd);
     disasm_info.mach = bfd_get_mach(disasm_bfd);
 
-- 
2.35.1




reply via email to

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