Fix addr2line to use dynamic symbols if it failed to canonicalize ordinary symbols.

Might resolve: #920542
This commit is contained in:
Nick Clifton 2013-03-13 17:19:21 +00:00
parent 162c1fc381
commit 79e98a9f2d
3 changed files with 30 additions and 1 deletions

1
.gitignore vendored
View File

@ -1,6 +1,7 @@
binutils-2.*/ binutils-2.*/
i386 i386
i686 i686
x86_64
/binutils-*.tar.bz2 /binutils-*.tar.bz2
.build-* .build-*
*.src.rpm *.src.rpm

View File

@ -0,0 +1,22 @@
*** ../binutils-2.23.52.0.1/binutils/addr2line.c 2013-02-27 20:28:03.000000000 +0000
--- binutils/addr2line.c 2013-03-13 16:46:36.109519735 +0000
*************** slurp_symtab (bfd *abfd)
*** 130,135 ****
--- 130,146 ----
symcount = bfd_canonicalize_symtab (abfd, syms);
if (symcount < 0)
bfd_fatal (bfd_get_filename (abfd));
+
+ /* If there are no symbols left after canonicalization and
+ we have not tried the dynamic symbols then give them a go. */
+ if (symcount == 0
+ && ! dynamic
+ && (storage = bfd_get_dynamic_symtab_upper_bound (abfd)) > 0)
+ {
+ free (syms);
+ syms = xmalloc (storage);
+ symcount = bfd_canonicalize_dynamic_symtab (abfd, syms);
+ }
}
/* These global variables are used to pass information between

View File

@ -17,7 +17,7 @@
Summary: A GNU collection of binary utilities Summary: A GNU collection of binary utilities
Name: %{?cross}binutils%{?_with_debug:-debug} Name: %{?cross}binutils%{?_with_debug:-debug}
Version: 2.23.52.0.1 Version: 2.23.52.0.1
Release: 7%{?dist} Release: 8%{?dist}
License: GPLv3+ License: GPLv3+
Group: Development/Tools Group: Development/Tools
URL: http://sources.redhat.com/binutils URL: http://sources.redhat.com/binutils
@ -46,6 +46,8 @@ Patch11: binutils-2.23.52.0.1-64-bit-thin-archives.patch
Patch12: binutils-2.23.52.0.1-as-doc-texinfo-fixes.patch Patch12: binutils-2.23.52.0.1-as-doc-texinfo-fixes.patch
# Revert HJ's patch for PR15149. This stops the reporting of weak DT_NEEDED symbols. # Revert HJ's patch for PR15149. This stops the reporting of weak DT_NEEDED symbols.
Patch13: binutils-2.23.52.0.1-revert-pr15149.patch Patch13: binutils-2.23.52.0.1-revert-pr15149.patch
# Fix addr2line to use the dynamic symbol table if it could not find any ordinary symbols.
Patch14: binutils-2.23.52.0.1-addr2line-dynsymtab.patch
Provides: bundled(libiberty) Provides: bundled(libiberty)
@ -157,6 +159,7 @@ using libelf instead of BFD.
%patch11 -p0 -b .64bit-thin-archives~ %patch11 -p0 -b .64bit-thin-archives~
%patch12 -p0 -b .gas-texinfo~ %patch12 -p0 -b .gas-texinfo~
%patch13 -p0 -b .revert-pr15149~ %patch13 -p0 -b .revert-pr15149~
%patch14 -p0 -b .addr2line~
# We cannot run autotools as there is an exact requirement of autoconf-2.59. # We cannot run autotools as there is an exact requirement of autoconf-2.59.
@ -456,6 +459,9 @@ exit 0
%endif # %{isnative} %endif # %{isnative}
%changelog %changelog
* Wed Mar 13 2013 Nick Clifton <nickc@redhat.com> - 2.23.52.0.1-8
- Fix addr2line to use dynamic symbols if it failed to canonicalize ordinary symbols. (#920542)
* Wed Mar 13 2013 Nick Clifton <nickc@redhat.com> - 2.23.52.0.1-7 * Wed Mar 13 2013 Nick Clifton <nickc@redhat.com> - 2.23.52.0.1-7
- Change requirement to explicitly depend upon /usr/bin/pod2man. (#920545) - Change requirement to explicitly depend upon /usr/bin/pod2man. (#920545)