0.155-4 Replace elfutils-0.155-binutils-pr-ld-13621.patch with upstream fix.

This commit is contained in:
Mark Wielaard 2013-02-22 15:35:05 +01:00
parent e43443132c
commit e86763bac2
2 changed files with 65 additions and 16 deletions

View File

@ -1,16 +1,62 @@
diff --git a/tests/run-elflint-self.sh b/tests/run-elflint-self.sh
index 4b01008..7a5f0c8 100755
--- a/tests/run-elflint-self.sh
+++ b/tests/run-elflint-self.sh
@@ -18,4 +18,11 @@
commit 3bdc16ce98295463c071192eab2ec611a8edc508
Author: Mark Wielaard <mjw@redhat.com>
Date: Wed Feb 6 16:20:17 2013 +0100
. $srcdir/test-subr.sh
elflint: Add two more symbols to gnuld list of allowed bad values.
+# Makes sure we exit cleanly even when we don't...
+clean_exit()
+{
+ if test $? != 0; then echo "binutils PR ld/13621 workaround"; exit 0; fi
+}
+trap clean_exit EXIT
Add __bss_start and __TMC_END__ to the list of symbols allowed to have
out of section values because of the following GNU ld bug:
http://sourceware.org/bugzilla/show_bug.cgi?id=13621.
Allow them to appear in either .symtab or .dynsym, but only when they
are zero sized. It is impossible to define a general rule for this bug,
but this should catch most common issues that are mostly harmless
because the symbols signify the removed section was empty to being with.
This catches at least all symbols often flagged in the tests.
Signed-off-by: Mark Wielaard <mjw@redhat.com>
diff --git a/src/ChangeLog b/src/ChangeLog
index f3f9b51..7d7b66f 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,10 @@
+2013-02-06 Mark Wielaard <mjw@redhat.com>
+
testrun_on_self ../src/elflint --quiet --gnu-ld
+ * elflint.c (check_symtab): Add __bss_start and __TMC_END__ to the
+ list of symbols allowed to have out of section values because of
+ GNU ld bugs in either .symtab or .dynsym, but only when they are
+ zero sized.
+
2012-08-27 Mark Wielaard <mjw@redhat.com>
* readelf.c (print_debug_macro_section): Print offset as PRIx64.
diff --git a/src/elflint.c b/src/elflint.c
index 4084987..bc5ed33 100644
--- a/src/elflint.c
+++ b/src/elflint.c
@@ -767,15 +767,22 @@ section [%2d] '%s': symbol %zu: function in COMMON section is nonsense\n"),
{
/* GNU ld has severe bugs. When it decides to remove
empty sections it leaves symbols referencing them
- behind. These are symbols in .symtab. */
+ behind. These are symbols in .symtab or .dynsym
+ and for the named symbols have zero size. See
+ sourceware PR13621. */
if (!gnuld
- || strcmp (section_name (ebl, idx), ".symtab")
+ || (strcmp (section_name (ebl, idx), ".symtab")
+ && strcmp (section_name (ebl, idx),
+ ".dynsym"))
+ || sym->st_size != 0
|| (strcmp (name, "__preinit_array_start") != 0
&& strcmp (name, "__preinit_array_end") != 0
&& strcmp (name, "__init_array_start") != 0
&& strcmp (name, "__init_array_end") != 0
&& strcmp (name, "__fini_array_start") != 0
- && strcmp (name, "__fini_array_end") != 0))
+ && strcmp (name, "__fini_array_end") != 0
+ && strcmp (name, "__bss_start") != 0
+ && strcmp (name, "__TMC_END__") != 0))
ERROR (gettext ("\
section [%2d] '%s': symbol %zu: st_value out of bounds\n"),
idx, section_name (ebl, idx), cnt);

View File

@ -1,7 +1,7 @@
Name: elfutils
Summary: A collection of utilities and DSOs to handle compiled objects
Version: 0.155
%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+)
@ -331,6 +331,9 @@ rm -rf ${RPM_BUILD_ROOT}
%{_libdir}/libelf.a
%changelog
* Fri Feb 22 2013 Mark Wielaard <mjw@redhat.com> - 0.155-4
- Replace elfutils-0.155-binutils-pr-ld-13621.patch with upstream fix.
* Thu Jan 24 2013 Mark Wielaard <mjw@redhat.com> - 0.155-3
- Backport sizeof-pointer-memaccess upstream fixes.