From 2ca842aedb6fa2981e628ceac2e11789ce7b87ed Mon Sep 17 00:00:00 2001 From: Jan Kratochvil Date: Sun, 28 Feb 2010 23:28:44 +0000 Subject: [PATCH] - [delayed-symfile] Backport fix of reread_symbols (Tom Tromey, BZ 562517). - Fix false warning: section .gnu.liblist not found in ... --- ...bz562517-archer-reread-quick_addrmap.patch | 31 +++++ gdb-false-warning-gnu.liblist.patch | 114 ++++++++++++++++++ gdb.spec | 14 ++- 3 files changed, 158 insertions(+), 1 deletion(-) create mode 100644 gdb-bz562517-archer-reread-quick_addrmap.patch create mode 100644 gdb-false-warning-gnu.liblist.patch diff --git a/gdb-bz562517-archer-reread-quick_addrmap.patch b/gdb-bz562517-archer-reread-quick_addrmap.patch new file mode 100644 index 0000000..f565d90 --- /dev/null +++ b/gdb-bz562517-archer-reread-quick_addrmap.patch @@ -0,0 +1,31 @@ +Fix was a part of merge of master: +e421d7b026e77f4dc127de49c01e80d533eb6825 + +--- ./gdb/symfile.c 2010-02-28 23:22:31.000000000 +0100 ++++ ./gdb/symfile.c 2010-02-28 23:29:00.000000000 +0100 +@@ -3448,6 +3448,7 @@ reread_symbols (void) + objfile->symtabs = NULL; + objfile->psymtabs = NULL; + objfile->psymtabs_addrmap = NULL; ++ objfile->quick_addrmap = NULL; + objfile->free_psymtabs = NULL; + objfile->cp_namespace_symtab = NULL; + objfile->msymbols = NULL; +@@ -3458,6 +3459,8 @@ reread_symbols (void) + memset (&objfile->msymbol_demangled_hash, 0, + sizeof (objfile->msymbol_demangled_hash)); + ++ objfile->flags &= ~OBJF_SYMTABS_READ; ++ + objfile->psymbol_cache = bcache_xmalloc (); + objfile->macro_cache = bcache_xmalloc (); + /* obstack_init also initializes the obstack so it is +@@ -3502,8 +3505,6 @@ reread_symbols (void) + wrap_here (""); + } + +- objfile->flags &= ~OBJF_SYMTABS_READ; +- + /* We're done reading the symbol file; finish off complaints. */ + clear_complaints (&symfile_complaints, 0, 1); + diff --git a/gdb-false-warning-gnu.liblist.patch b/gdb-false-warning-gnu.liblist.patch new file mode 100644 index 0000000..7aae5da --- /dev/null +++ b/gdb-false-warning-gnu.liblist.patch @@ -0,0 +1,114 @@ +http://sourceware.org/ml/gdb-patches/2010-02/msg00713.html +Subject: Re: [patch] Fix false warning: section .gnu.liblist not found in ... [rediffed] + +Hi, + +only a technical rediff. + +------------------------------------------------------------------------------ + +On Sat, 13 Feb 2010 23:49:29 +0100, Jan Kratochvil wrote: +Hi, + +post-7.0 GDB started to print many false warnings on prelink-ed system: + +$ ./gdb -nx -ex r echo +... +Reading symbols from /bin/echo...Reading symbols from /usr/lib/debug/bin/echo.debug... +warning: section .gnu.liblist not found in /usr/lib/debug/bin/echo.debug +warning: section .gnu.conflict not found in /usr/lib/debug/bin/echo.debug +done. +done. +Starting program: /bin/echo +warning: section .gnu.liblist not found in /usr/lib/debug/bin/echo.debug +warning: section .gnu.conflict not found in /usr/lib/debug/bin/echo.debug +warning: section .gnu.liblist not found in /usr/lib/debug/bin/echo.debug +warning: section .gnu.conflict not found in /usr/lib/debug/bin/echo.debug +warning: section .gnu.liblist not found in /usr/lib/debug/bin/echo.debug +warning: section .gnu.conflict not found in /usr/lib/debug/bin/echo.debug + +These sections are from prelink and they are not present in the *.debug files. + +It is formally a regression by: + +commit 3bfec189bb0fa1a2a44f1645dd68a9572e7a841c + +2010-01-07 Tristan Gingold + + * symfile.c (build_section_addr_info_from_objfile): New function. + (symbol_file_add_separate): Don't use offsets from objfile but + built an addr info. + + +But I think would be unavoidable even for the unification of PIC+PIE handling. + +Found no usable section flag differences for .gnu.liblist vs. for example +.text so used just the section name for the exception. + +.gnu.liblist/.gnu.conflict related dumps: + +executable: +Section Headers: + [Nr] Name Type Address Off Size ES Flg Lk Inf Al + [ 6] .gnu.liblist GNU_LIBLIST 00000000004006b8 0006b8 000028 14 A 28 0 4 + [ 7] .gnu.conflict RELA 00000000004006e0 0006e0 0001c8 18 A 5 0 8 +Program Headers: + Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align + LOAD 0x000000 0x0000000000400000 0x0000000000400000 0x005254 0x005254 R E 0x200000 +Dynamic section at offset 0x52c8 contains 24 entries: + Tag Type Name/Value + 0x000000006ffffef9 (GNU_LIBLIST) 0x4006b8 + 0x000000006ffffdf7 (GNU_LIBLISTSZ) 40 (bytes) + 0x000000006ffffef8 (GNU_CONFLICT) 0x4006e0 + 0x000000006ffffdf6 (GNU_CONFLICTSZ) 456 (bytes) + +library: +Section Headers: + [Nr] Name Type Address Off Size ES Flg Lk Inf Al + [74] .gnu.liblist GNU_LIBLIST 0000000000000000 249940 000014 14 75 0 4 + + +No regressions on {x86_64,x86_64-m32,i686}-fedora12-linux-gnu. + + +Thanks, +Jan + + +2010-03-01 Jan Kratochvil + + * symfile.c (addr_info_make_relative): New variable sect_name, use it. + Do not warn on ".gnu.liblist" and ".gnu.conflict". + +--- a/gdb/symfile.c ++++ b/gdb/symfile.c +@@ -597,7 +597,8 @@ addr_info_make_relative (struct section_addr_info *addrs, bfd *abfd) + + for (i = 0; i < addrs->num_sections && addrs->other[i].name; i++) + { +- asection *sect = bfd_get_section_by_name (abfd, addrs->other[i].name); ++ const char *sect_name = addrs->other[i].name; ++ asection *sect = bfd_get_section_by_name (abfd, sect_name); + + if (sect) + { +@@ -614,8 +615,16 @@ addr_info_make_relative (struct section_addr_info *addrs, bfd *abfd) + } + else + { +- warning (_("section %s not found in %s"), addrs->other[i].name, +- bfd_get_filename (abfd)); ++ /* These two sections are intentionally loaded into memory from ++ the DYNAMIC segment and so they have both SEC_ALLOC and SEC_LOAD ++ set in the main executable (not in the library files). They ++ are not present in the separate debug info file, though. */ ++ ++ if (!(strcmp (sect_name, ".gnu.liblist") == 0 ++ || strcmp (sect_name, ".gnu.conflict") == 0)) ++ warning (_("section %s not found in %s"), sect_name, ++ bfd_get_filename (abfd)); ++ + addrs->other[i].addr = 0; + + /* SECTINDEX is invalid if ADDR is zero. */ + diff --git a/gdb.spec b/gdb.spec index f671624..e2ca9f5 100644 --- a/gdb.spec +++ b/gdb.spec @@ -36,7 +36,7 @@ Version: 7.0.1 # The release always contains a leading reserved number, start it at 1. # `upstream' is not a part of `name' to stay fully rpm dependencies compatible for the testing. -Release: 32%{?_with_upstream:.upstream}%{dist} +Release: 33%{?_with_upstream:.upstream}%{dist} License: GPLv3+ Group: Development/Debuggers @@ -468,6 +468,12 @@ Patch422: gdb-infcall-sp-underflow.patch # Workaround ia64 inferior calls clearing SP. Patch423: gdb-ia64-infcall-workaround.patch +# [delayed-symfile] Backport fix of reread_symbols (Tom Tromey, BZ 562517). +Patch424: gdb-bz562517-archer-reread-quick_addrmap.patch + +# Fix false warning: section .gnu.liblist not found in ... +Patch425: gdb-false-warning-gnu.liblist.patch + BuildRequires: ncurses-devel%{?_isa} texinfo gettext flex bison expat-devel%{?_isa} Requires: readline%{?_isa} BuildRequires: readline-devel%{?_isa} @@ -728,6 +734,8 @@ rm -f gdb/jv-exp.c gdb/m2-exp.c gdb/objc-exp.c gdb/p-exp.c %patch421 -p1 %patch422 -p1 %patch423 -p1 +%patch424 -p1 +%patch425 -p1 # Always verify their applicability. %patch393 -p1 %patch335 -p1 @@ -1053,6 +1061,10 @@ fi %endif %changelog +* Sun Feb 28 2010 Jan Kratochvil - 7.0.1-33.fc12 +- [delayed-symfile] Backport fix of reread_symbols (Tom Tromey, BZ 562517). +- Fix false warning: section .gnu.liblist not found in ... + * Fri Feb 26 2010 Jan Kratochvil - 7.0.1-32.fc12 - Fix gdb.ada/* regressions (Keith Seitz). - Disable addon (finish) due to inline-cmds.exp: up from outer_inline2 assert.