author | pcpa <paulo.cesar.pereira.de.andrade@gmail.com> | 2017年09月13日 11:39:30 -0400 |
---|---|---|
committer | pcpa <paulo.cesar.pereira.de.andrade@gmail.com> | 2017年09月13日 11:39:30 -0400 |
commit | 7259f9dc8a24279d50ed05d2eb92add4fcce723a (patch) | |
tree | 5624935c28fbfecb3bddb405490a584302a50a35 | |
parent | d7614993153b4e4da323b52acf78bd4dc3cbcfa7 (diff) | |
download | lightning-7259f9dc8a24279d50ed05d2eb92add4fcce723a.tar.gz |
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | configure.ac | 18 | ||||
-rw-r--r-- | lib/jit_disasm.c | 10 |
@@ -1,3 +1,9 @@ +2017-13-09 Paulo Andrade <pcpa@gnu.org> + + * 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 <pcpa@gnu.org> * 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; |