Accepting request 792470 from devel:tools
OBS-URL: https://build.opensuse.org/request/show/792470 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/oprofile?expand=0&rev=53
This commit is contained in:
commit
f1d5780722
166
oprofile-handle-binutils-2_34.patch
Normal file
166
oprofile-handle-binutils-2_34.patch
Normal file
@ -0,0 +1,166 @@
|
|||||||
|
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.
|
||||||
|
---
|
||||||
|
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.26.0
|
||||||
|
|
@ -1,3 +1,10 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Apr 8 12:11:10 UTC 2020 - Christophe Giboudeaux <christophe@krop.fr>
|
||||||
|
|
||||||
|
- Add upstream patch:
|
||||||
|
* oprofile-handle-binutils-2_34.patch
|
||||||
|
- Spec cleanup
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Thu Jan 23 22:12:54 UTC 2020 - Stefan Brüns <stefan.bruens@rwth-aachen.de>
|
Thu Jan 23 22:12:54 UTC 2020 - Stefan Brüns <stefan.bruens@rwth-aachen.de>
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# spec file for package oprofile
|
# spec file for package oprofile
|
||||||
#
|
#
|
||||||
# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
|
# Copyright (c) 2020 SUSE LLC
|
||||||
#
|
#
|
||||||
# All modifications and additions to the file contributed by third parties
|
# All modifications and additions to the file contributed by third parties
|
||||||
# remain the property of their copyright owners, unless otherwise agreed
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
@ -22,7 +22,7 @@ Release: 0
|
|||||||
Summary: System-Wide Profiler for Linux Systems
|
Summary: System-Wide Profiler for Linux Systems
|
||||||
License: GPL-2.0-or-later AND LGPL-2.1-or-later
|
License: GPL-2.0-or-later AND LGPL-2.1-or-later
|
||||||
Group: Development/Tools/Other
|
Group: Development/Tools/Other
|
||||||
Url: http://oprofile.sourceforge.net/
|
URL: http://oprofile.sourceforge.net/
|
||||||
Source0: http://prdownloads.sourceforge.net/oprofile/oprofile-%{version}.tar.gz
|
Source0: http://prdownloads.sourceforge.net/oprofile/oprofile-%{version}.tar.gz
|
||||||
Source2: %{name}.rpmlintrc
|
Source2: %{name}.rpmlintrc
|
||||||
Source3: baselibs.conf
|
Source3: baselibs.conf
|
||||||
@ -31,6 +31,8 @@ Source5: README-BEFORE-ADDING-PATCHES
|
|||||||
Patch1: %{name}-no-libjvm-version.patch
|
Patch1: %{name}-no-libjvm-version.patch
|
||||||
Patch2: %{name}-pfm-ppc.patch
|
Patch2: %{name}-pfm-ppc.patch
|
||||||
Patch3: %{name}-handle-empty-event-name-spec-gracefully-for-ppc.patch
|
Patch3: %{name}-handle-empty-event-name-spec-gracefully-for-ppc.patch
|
||||||
|
# PATCH-FIX-UPSTREAM
|
||||||
|
Patch4: %{name}-handle-binutils-2_34.patch
|
||||||
BuildRequires: autoconf
|
BuildRequires: autoconf
|
||||||
BuildRequires: automake
|
BuildRequires: automake
|
||||||
BuildRequires: binutils-devel
|
BuildRequires: binutils-devel
|
||||||
@ -42,11 +44,11 @@ BuildRequires: java-devel
|
|||||||
BuildRequires: libICE-devel
|
BuildRequires: libICE-devel
|
||||||
BuildRequires: libtool
|
BuildRequires: libtool
|
||||||
BuildRequires: libxslt
|
BuildRequires: libxslt
|
||||||
BuildRequires: pkg-config
|
BuildRequires: pkgconfig
|
||||||
BuildRequires: popt-devel
|
BuildRequires: popt-devel
|
||||||
BuildRequires: zlib-devel
|
BuildRequires: zlib-devel
|
||||||
Requires(pre): %{_sbindir}/groupadd %{_sbindir}/useradd
|
Requires(pre): %{_sbindir}/groupadd
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
Requires(pre): %{_sbindir}/useradd
|
||||||
%ifarch ppc ppc64 ppc64le
|
%ifarch ppc ppc64 ppc64le
|
||||||
BuildRequires: libpfm-devel >= 4.3.0
|
BuildRequires: libpfm-devel >= 4.3.0
|
||||||
%endif
|
%endif
|
||||||
@ -99,10 +101,7 @@ This package contains the library needed at runtime when profiling JITed code
|
|||||||
from supported virtual machines.
|
from supported virtual machines.
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q
|
%autosetup -p1
|
||||||
%patch1 -p1
|
|
||||||
%patch2 -p1
|
|
||||||
%patch3 -p1
|
|
||||||
|
|
||||||
mkdir -p java/include
|
mkdir -p java/include
|
||||||
# copy files necessary to build Java agent libraries
|
# copy files necessary to build Java agent libraries
|
||||||
@ -122,7 +121,7 @@ DATE="\"$(date -d "${modified}" "+%%b %%e %%Y")\""
|
|||||||
TIME="\"$(date -d "${modified}" "+%%R")\""
|
TIME="\"$(date -d "${modified}" "+%%R")\""
|
||||||
find . -type f -regex ".*\.c\|.*\.cpp\|.*\.h" -exec grep -E -e __DATE__ -e __TIME__ {} +
|
find . -type f -regex ".*\.c\|.*\.cpp\|.*\.h" -exec grep -E -e __DATE__ -e __TIME__ {} +
|
||||||
find . -type f -regex ".*\.c\|.*\.cpp\|.*\.h" -exec sed -i "s/__DATE__/${DATE}/g;s/__TIME__/${TIME}/g" {} +
|
find . -type f -regex ".*\.c\|.*\.cpp\|.*\.h" -exec sed -i "s/__DATE__/${DATE}/g;s/__TIME__/${TIME}/g" {} +
|
||||||
make %{?_smp_mflags}
|
%make_build
|
||||||
|
|
||||||
%install
|
%install
|
||||||
make DESTDIR=%{buildroot} htmldir=%{_docdir}/oprofile install
|
make DESTDIR=%{buildroot} htmldir=%{_docdir}/oprofile install
|
||||||
@ -143,7 +142,6 @@ getent passwd oprofile >/dev/null || \
|
|||||||
%postun -n libopagent1 -p /sbin/ldconfig
|
%postun -n libopagent1 -p /sbin/ldconfig
|
||||||
|
|
||||||
%files
|
%files
|
||||||
%defattr(-,root,root)
|
|
||||||
%{_bindir}/ocount
|
%{_bindir}/ocount
|
||||||
%{_bindir}/ophelp
|
%{_bindir}/ophelp
|
||||||
%{_bindir}/opimport
|
%{_bindir}/opimport
|
||||||
@ -164,14 +162,12 @@ getent passwd oprofile >/dev/null || \
|
|||||||
%license COPYING
|
%license COPYING
|
||||||
|
|
||||||
%files devel
|
%files devel
|
||||||
%defattr(-,root,root)
|
|
||||||
%{_includedir}/*
|
%{_includedir}/*
|
||||||
%{_docdir}/%{name}/op-jit-devel.html
|
%{_docdir}/%{name}/op-jit-devel.html
|
||||||
%dir %{_libdir}/oprofile
|
%dir %{_libdir}/oprofile
|
||||||
%{_libdir}/oprofile/libopagent.so
|
%{_libdir}/oprofile/libopagent.so
|
||||||
|
|
||||||
%files -n libopagent1
|
%files -n libopagent1
|
||||||
%defattr(-,root,root)
|
|
||||||
%dir %{_libdir}/oprofile
|
%dir %{_libdir}/oprofile
|
||||||
%{_libdir}/oprofile/libopagent.so.1*
|
%{_libdir}/oprofile/libopagent.so.1*
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user