From 377610414fb6cd7ac30e4485d9d6482fcf29aca6 Mon Sep 17 00:00:00 2001
From: William Cohen <wcohen@redhat.com>
Date: Wed, 18 Mar 2020 21:19:16 -0400
Subject: [PATCH] Macro wrappers to handle the binutils 2.34 api changes

Changes in binutils 2.34 API prevented oprofile from compiling with
it.  This patch tests for the changes in the binutils API during
configuration and selects the appropiate wrappers to allow oprofile to
compile.  This allows oprofile to compile with both older and newer
versions of binutils.

Upstream: 377610414fb6cd7ac30e4485d9d6482fcf29aca6
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
---
 configure.ac              | 20 ++++++++++++++++++++
 libutil++/bfd_support.cpp | 11 ++++++-----
 libutil/op_bfd_wrappers.h | 28 ++++++++++++++++++++++++++++
 opjitconv/create_bfd.c    |  7 ++++---
 4 files changed, 58 insertions(+), 8 deletions(-)
 create mode 100644 libutil/op_bfd_wrappers.h

diff --git a/configure.ac b/configure.ac
index ac2fd35e..df032a78 100644
--- a/configure.ac
+++ b/configure.ac
@@ -224,6 +224,26 @@ if test "$host_cpu" = "powerpc64le" -o "$host_cpu" = "powerpc64"; then
 fi
 AC_SUBST(PFM_LIB)
 
+HAVE_BINUTILS_234='1'
+AC_MSG_CHECKING([whether binutils 2.34 is being used])
+rm -f test-for-BINUTILS
+AC_LANG_CONFTEST(
+	[AC_LANG_PROGRAM([[#include <bfd.h>]],
+		[[asection * sect;
+		bfd_size_type buildid_sect_size = bfd_section_size(sect);
+		return 0;]])
+	])
+$CC conftest.$ac_ext $CFLAGS $LDFLAGS $LIBS $PERF_EVENT_FLAGS -o test-for-BINUTILS  > /dev/null 2>&1
+if test -f test-for-BINUTILS; then
+	echo "yes"
+	HAVE_BINUTILS_234='1'
+else
+	echo "no"
+	HAVE_BINUTILS_234='0'
+fi
+AC_DEFINE_UNQUOTED(HAVE_BINUTILS_234, $HAVE_BINUTILS_234, [Using binutils 2.34])
+rm -f test-for-BINUTILS*
+
 AC_ARG_WITH(java,
 [  --with-java=java-home        Path to Java home directory (default is "no"; "yes" will use /usr as Java home)],
 JAVA_HOMEDIR=$with_java, [with_java=no])
diff --git a/libutil++/bfd_support.cpp b/libutil++/bfd_support.cpp
index fa904839..cd0f4f71 100644
--- a/libutil++/bfd_support.cpp
+++ b/libutil++/bfd_support.cpp
@@ -19,6 +19,7 @@
 #include "locate_images.h"
 #include "op_libiberty.h"
 #include "op_exception.h"
+#include "op_bfd_wrappers.h"
 
 #include <unistd.h>
 #include <errno.h>
@@ -137,7 +138,7 @@ static bool get_build_id(bfd * ibfd, unsigned char * build_id)
 		}
 	}
 
-	bfd_size_type buildid_sect_size = bfd_section_size(ibfd, sect);
+	bfd_size_type buildid_sect_size = op_bfd_section_size(ibfd, sect);
 	char * contents = (char *) xmalloc(buildid_sect_size);
 	errno = 0;
 	if (!bfd_get_section_contents(ibfd, sect,
@@ -188,7 +189,7 @@ bool get_debug_link_info(bfd * ibfd, string & filename, unsigned long & crc32)
 	if (sect == NULL)
 		return false;
 	
-	bfd_size_type debuglink_size = bfd_section_size(ibfd, sect);  
+	bfd_size_type debuglink_size = op_bfd_section_size(ibfd, sect);
 	char * contents = (char *) xmalloc(debuglink_size);
 	cverb << vbfd
 	      << ".gnu_debuglink section has size " << debuglink_size << endl;
@@ -346,7 +347,7 @@ void fixup_linenr(bfd * abfd, asection * section, asymbol ** syms,
 	// first restrict the search on a sensible range of vma, 16 is
 	// an intuitive value based on epilog code look
 	size_t max_search = 16;
-	size_t section_size = bfd_section_size(abfd, section);
+	size_t section_size = op_bfd_section_size(abfd, section);
 	if (pc + max_search > section_size)
 		max_search = section_size - pc;
 
@@ -819,10 +820,10 @@ find_nearest_line(bfd_info const & b, op_bfd_symbol const & sym,
 	else
 		pc = (sym.value() + offset) - sym.filepos();
 
-	if ((bfd_get_section_flags(abfd, section) & SEC_ALLOC) == 0)
+	if ((op_bfd_get_section_flags(abfd, section) & SEC_ALLOC) == 0)
 		goto fail;
 
-	if (pc >= bfd_section_size(abfd, section))
+	if (pc >= op_bfd_section_size(abfd, section))
 		goto fail;
 
 	ret = bfd_find_nearest_line(abfd, section, syms, pc, &cfilename,
diff --git a/libutil/op_bfd_wrappers.h b/libutil/op_bfd_wrappers.h
new file mode 100644
index 00000000..b229cc12
--- /dev/null
+++ b/libutil/op_bfd_wrappers.h
@@ -0,0 +1,28 @@
+/**
+ * @file op_bfd_wrappers.h
+ * Wrappers to hide API changes in binutils 2.34
+ *
+ * @remark Copyright 2020 OProfile authors
+ * @remark Read the file COPYING
+ *
+ * @author William Cohen
+ */
+
+#ifndef OP_BFD_WRAPPERS_H
+#define OP_BFD_WRAPPERS_H
+
+#if HAVE_BINUTILS_234
+#define op_bfd_section_size(ibfd, sec) bfd_section_size(sec)
+#define op_bfd_get_section_flags(abfd, sec) bfd_section_flags(sec)
+#define op_bfd_set_section_flags(abfd, sec, flags) bfd_set_section_flags(sec, flags)
+#define op_bfd_set_section_vma(abfd, sec, vma) bfd_set_section_vma(sec, vma)
+#define op_bfd_set_section_size(abfd, sec, size) bfd_set_section_size(sec, size)
+#else
+#define op_bfd_section_size(ibfd, sec) bfd_section_size(ibfd, sec)
+#define op_bfd_get_section_flags(abfd, sec) bfd_get_section_flags(abfd, sec)
+#define op_bfd_set_section_flags(abfd, sec, flags) bfd_set_section_flags(abfd, sec, flags)
+#define op_bfd_set_section_vma(abfd, sec, vma) bfd_set_section_vma(abfd, sec, vma)
+#define op_bfd_set_section_size(abfd, sec, size) bfd_set_section_size(abfd, sec, size)
+#endif
+
+#endif /* !OP_BFD_WRAPPERS_H */
diff --git a/opjitconv/create_bfd.c b/opjitconv/create_bfd.c
index 48db143b..da1e6d29 100644
--- a/opjitconv/create_bfd.c
+++ b/opjitconv/create_bfd.c
@@ -16,6 +16,7 @@
 
 #include "opjitconv.h"
 #include "op_libiberty.h"
+#include "op_bfd_wrappers.h"
 
 #include <bfd.h>
 #include <assert.h>
@@ -86,12 +87,12 @@ asection * create_section(bfd * abfd, char const * section_name,
 		bfd_perror("bfd_make_section");
 		goto error;
 	}
-	bfd_set_section_vma(abfd, section, vma);
-	if (bfd_set_section_size(abfd, section, size) == FALSE) {
+	op_bfd_set_section_vma(abfd, section, vma);
+	if (op_bfd_set_section_size(abfd, section, size) == FALSE) {
 		bfd_perror("bfd_set_section_size");
 		goto error;
 	}
-	if (bfd_set_section_flags(abfd, section, flags) == FALSE) {
+	if (op_bfd_set_section_flags(abfd, section, flags) == FALSE) {
 		bfd_perror("bfd_set_section_flags");
 		goto error;
 	}
-- 
2.25.1

