|
@@ -0,0 +1,146 @@
|
|
|
+From a9d1b6adb4e47ae89d55274ff3f7121122e15975 Mon Sep 17 00:00:00 2001
|
|
|
+From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
|
|
+Date: Thu, 1 Aug 2019 17:42:16 +0200
|
|
|
+Subject: [PATCH] Make binutils optional
|
|
|
+
|
|
|
+Add an option to enable or disable bfd support to allow the user to use
|
|
|
+dropwatch without binutils
|
|
|
+
|
|
|
+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
|
|
+[Upstream status: https://github.com/nhorman/dropwatch/pull/10]
|
|
|
+---
|
|
|
+ configure.ac | 10 ++++++++++
|
|
|
+ src/Makefile.am | 9 +++++++--
|
|
|
+ src/lookup.c | 8 ++++++++
|
|
|
+ src/lookup.h | 4 ++++
|
|
|
+ src/lookup_kas.c | 1 -
|
|
|
+ 5 files changed, 29 insertions(+), 3 deletions(-)
|
|
|
+
|
|
|
+diff --git a/configure.ac b/configure.ac
|
|
|
+index 97e21fe..c01a9f4 100644
|
|
|
+--- a/configure.ac
|
|
|
++++ b/configure.ac
|
|
|
+@@ -17,6 +17,15 @@ PKG_CHECK_MODULES([LIBNL3], [libnl-3.0], [], [AC_MSG_ERROR([libnl-3.0 is require
|
|
|
+ # Fallback on using -lreadline as readline.pc is only available since version 8.0
|
|
|
+ PKG_CHECK_MODULES([READLINE], [readline], [], [READLINE_LIBS=-lreadline])
|
|
|
+
|
|
|
++AC_ARG_WITH([bfd],
|
|
|
++ [AS_HELP_STRING([--without-bfd], [Build without bfd library (default: yes)])],
|
|
|
++ [with_bfd=$withval],
|
|
|
++ [with_bfd=yes])
|
|
|
++AS_IF([test "x$with_bfd" != "xno"], [
|
|
|
++ AC_CHECK_HEADERS([bfd.h], [], [AC_MSG_ERROR([Couldn't find or include bfd.h])])
|
|
|
++])
|
|
|
++AM_CONDITIONAL(USE_BFD, test "x$with_bfd" != "xno")
|
|
|
++
|
|
|
+ AC_OUTPUT(Makefile src/Makefile doc/Makefile tests/Makefile)
|
|
|
+
|
|
|
+ AC_MSG_NOTICE()
|
|
|
+@@ -25,3 +34,4 @@ AC_MSG_NOTICE([Target: $target])
|
|
|
+ AC_MSG_NOTICE([Installation prefix: $prefix])
|
|
|
+ AC_MSG_NOTICE([Compiler: $CC])
|
|
|
+ AC_MSG_NOTICE([Compiler flags: $CFLAGS])
|
|
|
++AC_MSG_NOTICE([BFD library support: $with_bfd])
|
|
|
+diff --git a/src/Makefile.am b/src/Makefile.am
|
|
|
+index 16db0b4..994fbd8 100644
|
|
|
+--- a/src/Makefile.am
|
|
|
++++ b/src/Makefile.am
|
|
|
+@@ -2,7 +2,12 @@
|
|
|
+ bin_PROGRAMS = dropwatch
|
|
|
+
|
|
|
+ AM_CFLAGS = -g -Wall -Werror $(LIBNL3_CFLAGS) $(READLINE_CFLAGS)
|
|
|
+-AM_LDFLAGS = $(LIBNL3_LIBS) -lnl-genl-3 -lbfd $(READLINE_LIBS)
|
|
|
++AM_LDFLAGS = $(LIBNL3_LIBS) -lnl-genl-3 $(READLINE_LIBS)
|
|
|
+ AM_CPPFLAGS = -D_GNU_SOURCE
|
|
|
+
|
|
|
+-dropwatch_SOURCES = main.c lookup_bfd.c lookup.c lookup_kas.c
|
|
|
++dropwatch_SOURCES = main.c lookup.c lookup_kas.c
|
|
|
++
|
|
|
++if USE_BFD
|
|
|
++dropwatch_SOURCES += lookup_bfd.c
|
|
|
++AM_LDFLAGS += -lbfd
|
|
|
++endif
|
|
|
+diff --git a/src/lookup.c b/src/lookup.c
|
|
|
+index 521e292..ec5e847 100644
|
|
|
+--- a/src/lookup.c
|
|
|
++++ b/src/lookup.c
|
|
|
+@@ -30,7 +30,9 @@
|
|
|
+ #include <stdlib.h>
|
|
|
+ #include <stdio.h>
|
|
|
+ #include <sys/utsname.h>
|
|
|
++#ifdef HAVE_BFD_H
|
|
|
+ #include <bfd.h>
|
|
|
++#endif
|
|
|
+ #include <string.h>
|
|
|
+ #include <unistd.h>
|
|
|
+ #include <sys/types.h>
|
|
|
+@@ -38,7 +40,9 @@
|
|
|
+
|
|
|
+ #include "lookup.h"
|
|
|
+
|
|
|
++#ifdef HAVE_BFD_H
|
|
|
+ extern struct lookup_methods bfd_methods;
|
|
|
++#endif
|
|
|
+ extern struct lookup_methods kallsym_methods;
|
|
|
+
|
|
|
+ static int lookup_null_init(void)
|
|
|
+@@ -75,17 +79,21 @@ int init_lookup(lookup_init_method_t method)
|
|
|
+ methods = &null_methods;
|
|
|
+ break;
|
|
|
+ case METHOD_AUTO:
|
|
|
++#ifdef HAVE_BFD_H
|
|
|
+ methods = &bfd_methods;
|
|
|
+ if (methods->lookup_init() == 0)
|
|
|
+ return 0;
|
|
|
++#endif
|
|
|
+ methods = &kallsym_methods;
|
|
|
+ if (methods->lookup_init() == 0)
|
|
|
+ return 0;
|
|
|
+ methods = NULL;
|
|
|
+ return -1;
|
|
|
++#ifdef HAVE_BFD_H
|
|
|
+ case METHOD_DEBUGINFO:
|
|
|
+ methods = &bfd_methods;
|
|
|
+ break;
|
|
|
++#endif
|
|
|
+ case METHOD_KALLSYMS:
|
|
|
+ methods = &kallsym_methods;
|
|
|
+ break;
|
|
|
+diff --git a/src/lookup.h b/src/lookup.h
|
|
|
+index e6568d8..2c56a92 100644
|
|
|
+--- a/src/lookup.h
|
|
|
++++ b/src/lookup.h
|
|
|
+@@ -25,6 +25,8 @@
|
|
|
+ * 2) /proc/kallsyms
|
|
|
+ */
|
|
|
+
|
|
|
++#include "config.h"
|
|
|
++
|
|
|
+ #include <stdlib.h>
|
|
|
+ #include <asm/types.h>
|
|
|
+
|
|
|
+@@ -44,7 +46,9 @@
|
|
|
+ typedef enum {
|
|
|
+ METHOD_NULL = 0,
|
|
|
+ METHOD_AUTO,
|
|
|
++#ifdef HAVE_BFD_H
|
|
|
+ METHOD_DEBUGINFO,
|
|
|
++#endif
|
|
|
+ METHOD_KALLSYMS
|
|
|
+ } lookup_init_method_t;
|
|
|
+
|
|
|
+diff --git a/src/lookup_kas.c b/src/lookup_kas.c
|
|
|
+index 2300220..9a1a148 100644
|
|
|
+--- a/src/lookup_kas.c
|
|
|
++++ b/src/lookup_kas.c
|
|
|
+@@ -28,7 +28,6 @@
|
|
|
+ #include <stdio.h>
|
|
|
+ #include <stdint.h>
|
|
|
+ #include <sys/utsname.h>
|
|
|
+-#include <bfd.h>
|
|
|
+ #include <string.h>
|
|
|
+ #include <unistd.h>
|
|
|
+ #include <sys/types.h>
|
|
|
+--
|
|
|
+2.20.1
|
|
|
+
|