wingo pushed a commit to branch lightning
in repository guile.
commit 361caf28545aa0c2b2ab8d1cbd334fbdd952f373
Author: Paulo Andrade <[email protected]>
Date: Thu Jan 15 14:56:38 2015 -0200
PPC: Only call binutils function if it is available
* configure.ac, lib/jit_disasm.c: Rewrite workaround
to apparent problem to initialize powerpc disassembler.
---
ChangeLog | 5 +++++
configure.ac | 7 +++++++
lib/jit_disasm.c | 8 ++++++++
3 files changed, 20 insertions(+)
diff --git a/ChangeLog b/ChangeLog
index 3c13109..f78f581 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
2015-01-15 Paulo Andrade <[email protected]>
+ * configure.ac, lib/jit_disasm.c: Rewrite workaround
+ to apparent problem to initialize powerpc disassembler.
+
+2015-01-15 Paulo Andrade <[email protected]>
+
* include/lightning.h, lib/jit_aarch64.c,
lib/jit_alpha.c, lib/jit_arm.c, lib/jit_hppa.c,
lib/jit_ia64.c, lib/jit_mips.c, lib/jit_ppc.c,
diff --git a/configure.ac b/configure.ac
index 749659b..d26e777 100644
--- a/configure.ac
+++ b/configure.ac
@@ -230,6 +230,13 @@ elif test $cpu = arm; then
return 1;
}
]])],[ac_cv_test_arm_swf=yes],[],[ac_cv_test_arm_swf=no])
+elif test $cpu = ppc; then
+ if test "x$DISASSEMBLER" != "xno"; then
+ save_LIBS="$LIBS"
+ LIBS="$LIBS $SHLIB"
+ AC_CHECK_FUNCS(disassemble_init_for_target disassemble_init_powerpc)
+ LIBS="$save_LIBS"
+ fi
fi
CFLAGS=$save_CFLAGS
diff --git a/lib/jit_disasm.c b/lib/jit_disasm.c
index 01158de..86e5441 100644
--- a/lib/jit_disasm.c
+++ b/lib/jit_disasm.c
@@ -91,11 +91,19 @@ jit_init_debug(const char *progname)
# if defined(__powerpc__)
disasm_info.arch = bfd_arch_powerpc;
disasm_info.mach = bfd_mach_ppc64;
+# if HAVE_DISASSEMBLE_INIT_FOR_TARGET
+ disassemble_init_for_target(&disasm_info);
+# elif HAVE_DISASSEMBLE_INIT_POWERPC
disassemble_init_powerpc(&disasm_info);
+# endif
# if defined(__powerpc64__)
disasm_info.disassembler_options = "64";
# endif
+# if HAVE_DISASSEMBLE_INIT_FOR_TARGET
+ disassemble_init_for_target(&disasm_info);
+# elif HAVE_DISASSEMBLE_INIT_POWERPC
disassemble_init_powerpc(&disasm_info);
+# endif
# endif
# if defined(__sparc__)
disasm_info.endian = disasm_info.display_endian = BFD_ENDIAN_BIG;