honggfuzz/honggfuzz-binutils_2.29.patch
Martin Pluskal 35a7ecb683 - Update to version 1.1:
* Simplified and improved hfuzz_cc compiler
  * More string instrumentation in libhfuzz
  * Android: works with Android-NDK 15 and newer only
  * Dockerfile
  * Refreshed docs
  * Linux: Faster BTS/PT due to less PMU state resets
  * Linux: tests and by-pass for the Linux' fork-when-multithreaded
    problem
  * libFuzzer/AFL style dictionaries
  * Runnable under docker/oss-fuzz
- Changes for version 1.0:
  * Multiple stability improvements for most of the supported
    architectures
  * More examples in examples/ (e.g. Linux kernel IP for BTS/PT)
  * Documentation updates
  * Added honggfuzz compiler wrapper in hfuzz_cc/
  * Reworked buffer mangling logic
- Drope reproducible.patch and gcc7.patch
- Add honggfuzz-binutils_2.29.patch to fix building with latest
  binutils

OBS-URL: https://build.opensuse.org/package/show/devel:tools/honggfuzz?expand=0&rev=10
2017-10-02 09:26:20 +00:00

44 lines
1.4 KiB
Diff

From fe2934bd59e7a1dbe58dafcd71bb8383505de092 Mon Sep 17 00:00:00 2001
From: Robert Swiecki <robert@swiecki.net>
Date: Mon, 4 Sep 2017 15:23:14 +0200
Subject: [PATCH] Use different disassbler() prototype from binutils in case of
>= 2.29
---
linux/bfd.c | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/linux/bfd.c b/linux/bfd.c
index bcd247f7..f3e9b0b0 100644
--- a/linux/bfd.c
+++ b/linux/bfd.c
@@ -46,6 +46,14 @@ typedef struct {
asymbol **syms;
} bfd_t;
+/*
+ * This is probably the only define which was added with binutils 2.29, so we us
+ * it, do decide which disassembler() prototype from dis-asm.h to use
+ */
+#if defined(FOR_EACH_DISASSEMBLER_OPTION)
+#define _HF_BFD_GE_2_29
+#endif
+
static pthread_mutex_t arch_bfd_mutex = PTHREAD_MUTEX_INITIALIZER;
static bool arch_bfdInit(pid_t pid, bfd_t * bfdParams)
@@ -160,8 +168,12 @@ void arch_bfdDisasm(pid_t pid, uint8_t * mem, size_t size, char *instr)
LOG_W("bfd_check_format() failed");
return;
}
-
+#if defined(_HF_BFD_GE_2_29)
+ disassembler_ftype disassemble =
+ disassembler(bfd_get_arch(bfdh), bfd_little_endian(bfdh) ? FALSE : TRUE, 0, NULL);
+#else
disassembler_ftype disassemble = disassembler(bfdh);
+#endif // defined(_HD_BFD_GE_2_29)
if (disassemble == NULL) {
LOG_W("disassembler() failed");
return;