find-debuginfo.sh: Remove non-allocated NOBITS sections from minisymtab.

This commit is contained in:
Mark Wielaard 2017-07-21 16:13:51 +02:00
parent 85793f4048
commit b7548d7b53
2 changed files with 51 additions and 1 deletions

View File

@ -0,0 +1,46 @@
From 1fb19a11f6d6a4c221f2e1c08fe246761a4d1e82 Mon Sep 17 00:00:00 2001
From: Mark Wielaard <mark@klomp.org>
Date: Wed, 19 Jul 2017 14:53:53 +0200
Subject: [PATCH] find-debuginfo.sh: Remove non-allocated NOBITS sections from
minisymtab.
In the minisymtab section (the .gnu_debugdata embedded ELF image) we
do not need unallocated sections (except for the SYMTAB and STRTAB
sections we are creating). We already remove PROGBITS and NOTES. Also
remove NOBITS sections. They should not really take up much (any) space
but they still add to the section tables. These sections might be created
with the new --keep-section support (which puts the actual section in
the main ELF binary, and a NOBITS variant in the .debug file).
Also binutils objcopy seems to sometimes add them anyway filled with
zeros instead of marking them NOBITS.
Signed-off-by: Mark Wielaard <mark@klomp.org>
(cherry picked from commit 860c04e0c3603f4697b7be5fe15ad325369f082c)
---
scripts/find-debuginfo.sh | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/scripts/find-debuginfo.sh b/scripts/find-debuginfo.sh
index 5ec52d3..b83e4c6 100644
--- a/scripts/find-debuginfo.sh
+++ b/scripts/find-debuginfo.sh
@@ -247,12 +247,16 @@ add_minidebug()
local mini_debuginfo=`mktemp`
# In the minisymtab we don't need the .debug_ sections (already removed
- # by -S) but also not any other non-allocated PROGBITS or NOTE sections.
+ # by -S) but also not other non-allocated PROGBITS, NOTE or NOBITS sections.
# List and remove them explicitly. We do want to keep the allocated,
# symbol and NOBITS sections so cannot use --keep-only because that is
# too agressive. Field $2 is the section name, $3 is the section type
# and $8 are the section flags.
- local remove_sections=`readelf -W -S "$debuginfo" | awk '{ if (index($2,".debug_") != 1 && ($3 == "PROGBITS" || $3 == "NOTE") && index($8,"A") == 0) printf "--remove-section "$2" " }'`
+ local remove_sections=`readelf -W -S "$debuginfo" \
+ | awk '{ if (index($2,".debug_") != 1 \
+ && ($3 == "PROGBITS" || $3 == "NOTE" || $3 == "NOBITS") \
+ && index($8,"A") == 0) \
+ printf "--remove-section "$2" " }'`
# Extract the dynamic symbols from the main binary, there is no need to also have these
# in the normal symbol table

View File

@ -29,7 +29,7 @@
Summary: The RPM package management system
Name: rpm
Version: %{rpmver}
Release: %{?snapver:0.%{snapver}.}33%{?dist}
Release: %{?snapver:0.%{snapver}.}34%{?dist}
Group: System Environment/Base
Url: http://www.rpm.org/
Source0: http://ftp.rpm.org/releases/%{srcdir}/%{name}-%{srcver}.tar.bz2
@ -146,6 +146,7 @@ Patch331: 0055-let-debuginfo-packages-provide-the-build-id.patch
# find-debuginfo.sh: Add --keep-section and --remove-section for eu-strip.
# https://bugzilla.redhat.com/show_bug.cgi?id=1465997
Patch332: 0056-find-debuginfo.sh-Add-keep-section-and-remove-sectio.patch
Patch333: 0057-find-debuginfo.sh-Remove-non-allocated-NOBITS-sectio.patch
# These are not yet upstream
Patch902: rpm-4.7.1-geode-i686.patch
@ -643,6 +644,9 @@ exit 0
%doc doc/librpm/html/*
%changelog
* Fri Jul 21 2017 Mark Wielaard <mjw@fedoraproject.org> - 4.13.0.1-34
- find-debuginfo.sh: Remove non-allocated NOBITS sections from minisymtab.
* Thu Jul 20 2017 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 4.13.0.1-33
- Remove strict requirement on python libs