+++ /dev/null
-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
-