[elfutils] 0.156-4 - Add elfutils-0.156-et_dyn-kernels.patch.

Mark Wielaard mjw at fedoraproject.org
Mon Aug 26 14:41:26 UTC 2013


commit d0217a57196563719b7829480a05527cbc4a86f4
Author: Mark Wielaard <mjw at redhat.com>
Date:   Mon Aug 26 16:40:11 2013 +0200

    0.156-4 - Add elfutils-0.156-et_dyn-kernels.patch.
    
    Fixes an issue on ppc64 with systemtap kernel address placement.

 elfutils-0.156-et_dyn-kernels.patch |   47 +++++++++++++++++++++++++++++++++++
 elfutils.spec                       |   10 ++++++-
 2 files changed, 56 insertions(+), 1 deletions(-)
---
diff --git a/elfutils-0.156-et_dyn-kernels.patch b/elfutils-0.156-et_dyn-kernels.patch
new file mode 100644
index 0000000..8638df4
--- /dev/null
+++ b/elfutils-0.156-et_dyn-kernels.patch
@@ -0,0 +1,47 @@
+commit 16fa414aff02365534b7bbeab281c731b9c4497d
+Author: Mark Wielaard <mjw at redhat.com>
+Date:   Thu Aug 22 13:45:16 2013 +0200
+
+    libdwfl/linux-kernel-modules.c (report_kernel): Pass add_p_vaddr as true.
+    
+    On some architectures (e.g. x86_64) the vmlinux is ET_EXEC, while on
+    others (e.g. ppc64) it is ET_DYN.  In both cases the phdr p_vaddr will
+    be non-zero.  We want the image to be placed as if it was ET_DYN, so
+    pass true for add_p_vaddr which will do the right thing (in combination
+    with a zero base) in either case.
+    
+    Signed-off-by: Mark Wielaard <mjw at redhat.com>
+
+diff --git a/libdwfl/ChangeLog b/libdwfl/ChangeLog
+index 88bdfc6..90ba686 100644
+--- a/libdwfl/ChangeLog
++++ b/libdwfl/ChangeLog
+@@ -1,3 +1,8 @@
++2013-08-25  Mark Wielaard  <mjw at redhat.com>
++
++	* linux-kernel-modules.c (report_kernel): Pass add_p_vaddr as true
++	to dwfl_report_elf.
++
+ 2013-07-25  Jan Kratochvil  <jan.kratochvil at redhat.com>
+ 
+ 	* dwfl_segment_report_module.c (dwfl_segment_report_module): Check for
+diff --git a/libdwfl/linux-kernel-modules.c b/libdwfl/linux-kernel-modules.c
+index dec1a59..fe01028 100644
+--- a/libdwfl/linux-kernel-modules.c
++++ b/libdwfl/linux-kernel-modules.c
+@@ -216,8 +216,14 @@ report_kernel (Dwfl *dwfl, const char **release,
+ 
+       if (report)
+ 	{
++	  /* Note that on some architectures (e.g. x86_64) the vmlinux
++	     is ET_EXEC, while on others (e.g. ppc64) it is ET_DYN.
++	     In both cases the phdr p_vaddr load address will be non-zero.
++	     We want the image to be placed as if it was ET_DYN, so
++	     pass true for add_p_vaddr which will do the right thing
++	     (in combination with a zero base) in either case.  */
+ 	  Dwfl_Module *mod = INTUSE(dwfl_report_elf) (dwfl, KERNEL_MODNAME,
+-						      fname, fd, 0, false);
++						      fname, fd, 0, true);
+ 	  if (mod == NULL)
+ 	    result = -1;
+ 	  else
diff --git a/elfutils.spec b/elfutils.spec
index decabfc..76b810d 100644
--- a/elfutils.spec
+++ b/elfutils.spec
@@ -1,7 +1,7 @@
 Name: elfutils
 Summary: A collection of utilities and DSOs to handle compiled objects
 Version: 0.156
-%global baserelease 3
+%global baserelease 4
 URL: https://fedorahosted.org/elfutils/
 %global source_url http://fedorahosted.org/releases/e/l/elfutils/%{version}/
 License: GPLv3+ and (GPLv2+ or LGPLv3+)
@@ -46,6 +46,8 @@ Source: %{?source_url}%{name}-%{version}.tar.bz2
 Patch1: %{?source_url}elfutils-robustify.patch
 Patch2: %{?source_url}elfutils-portability.patch
 
+Patch3: elfutils-0.156-et_dyn-kernels.patch
+
 %if !%{compat}
 Release: %{baserelease}%{?dist}
 %else
@@ -209,6 +211,8 @@ sed -i.scanf-m -e 's/%m/%a/g' src/addr2line.c tests/line2addr.c
 %endif
 %endif
 
+%patch3 -p1 -b .et_dyn-kernel
+
 find . -name \*.sh ! -perm -0100 -print | xargs chmod +x
 
 %build
@@ -323,6 +327,10 @@ rm -rf ${RPM_BUILD_ROOT}
 %{_libdir}/libelf.a
 
 %changelog
+* Mon Aug 26 2013 Mark Wielaard <mjw at redhat.com> 0.156-4
+- Add elfutils-0.156-et_dyn-kernels.patch.
+  Fixes an issue on ppc64 with systemtap kernel address placement.
+
 * Thu Aug  8 2013 Mark Wielaard <mjw at redhat.com> 0.156-3
 - Make check can now also be ran in parallel.
 


More information about the scm-commits mailing list