Search also for .<seqno> files in /usr/lib/debug/.build-id (BZ 641377).

This commit is contained in:
Jan Kratochvil 2011-05-03 05:23:10 +02:00
parent 7180591ac5
commit 4adfc8b85c
3 changed files with 143 additions and 94 deletions

View File

@ -1,7 +1,7 @@
Index: gdb-7.2.50.20110320/gdb/event-top.c Index: gdb-7.2.90.20110429/gdb/event-top.c
=================================================================== ===================================================================
--- gdb-7.2.50.20110320.orig/gdb/event-top.c 2011-03-16 16:18:58.000000000 +0100 --- gdb-7.2.90.20110429.orig/gdb/event-top.c 2011-03-16 16:18:58.000000000 +0100
+++ gdb-7.2.50.20110320/gdb/event-top.c 2011-03-20 15:22:51.000000000 +0100 +++ gdb-7.2.90.20110429/gdb/event-top.c 2011-05-03 05:21:11.000000000 +0200
@@ -33,6 +33,7 @@ @@ -33,6 +33,7 @@
#include "cli/cli-script.h" /* for reset_command_nest_depth */ #include "cli/cli-script.h" /* for reset_command_nest_depth */
#include "main.h" #include "main.h"
@ -28,19 +28,19 @@ Index: gdb-7.2.50.20110320/gdb/event-top.c
/* Each interpreter has its own rules on displaying the command /* Each interpreter has its own rules on displaying the command
prompt. */ prompt. */
if (!current_interp_display_prompt_p ()) if (!current_interp_display_prompt_p ())
Index: gdb-7.2.50.20110320/gdb/elfread.c Index: gdb-7.2.90.20110429/gdb/elfread.c
=================================================================== ===================================================================
--- gdb-7.2.50.20110320.orig/gdb/elfread.c 2011-03-20 15:22:34.000000000 +0100 --- gdb-7.2.90.20110429.orig/gdb/elfread.c 2011-05-03 05:19:27.000000000 +0200
+++ gdb-7.2.50.20110320/gdb/elfread.c 2011-03-20 15:22:51.000000000 +0100 +++ gdb-7.2.90.20110429/gdb/elfread.c 2011-05-03 05:21:22.000000000 +0200
@@ -49,6 +49,7 @@ @@ -53,6 +53,7 @@
#include "gdbcore.h" #include "gdbcore.h"
#include "gdbcmd.h" #include "gdbcmd.h"
#include "observer.h" #include "observer.h"
+#include "elf/external.h" +#include "elf/external.h"
#include <sys/stat.h>
extern void _initialize_elfread (void); extern void _initialize_elfread (void);
@@ -1655,8 +1656,361 @@ build_id_to_filename (struct build_id *b
@@ -1623,8 +1624,361 @@ build_id_to_filename (struct build_id *b
return retval; return retval;
} }
@ -403,7 +403,7 @@ Index: gdb-7.2.50.20110320/gdb/elfread.c
avoidance. */ avoidance. */
struct missing_filepair struct missing_filepair
@@ -1678,11 +2032,17 @@ missing_filepair_change (void) @@ -1710,11 +2064,17 @@ missing_filepair_change (void)
/* All their memory came just from missing_filepair_OBSTACK. */ /* All their memory came just from missing_filepair_OBSTACK. */
missing_filepair_hash = NULL; missing_filepair_hash = NULL;
} }
@ -421,7 +421,7 @@ Index: gdb-7.2.50.20110320/gdb/elfread.c
missing_filepair_change (); missing_filepair_change ();
} }
@@ -1749,14 +2109,35 @@ debug_print_missing (const char *binary, @@ -1781,14 +2141,35 @@ debug_print_missing (const char *binary,
*slot = missing_filepair; *slot = missing_filepair;
@ -464,11 +464,11 @@ Index: gdb-7.2.50.20110320/gdb/elfread.c
} }
static char * static char *
Index: gdb-7.2.50.20110320/gdb/symfile.h Index: gdb-7.2.90.20110429/gdb/symfile.h
=================================================================== ===================================================================
--- gdb-7.2.50.20110320.orig/gdb/symfile.h 2011-03-20 15:19:52.000000000 +0100 --- gdb-7.2.90.20110429.orig/gdb/symfile.h 2011-05-03 05:14:57.000000000 +0200
+++ gdb-7.2.50.20110320/gdb/symfile.h 2011-03-20 15:22:51.000000000 +0100 +++ gdb-7.2.90.20110429/gdb/symfile.h 2011-05-03 05:21:11.000000000 +0200
@@ -617,6 +617,8 @@ extern struct build_id *build_id_addr_ge @@ -611,6 +611,8 @@ extern struct build_id *build_id_addr_ge
extern char *build_id_to_filename (struct build_id *build_id, extern char *build_id_to_filename (struct build_id *build_id,
char **link_return, int add_debug_suffix); char **link_return, int add_debug_suffix);
extern void debug_print_missing (const char *binary, const char *debug); extern void debug_print_missing (const char *binary, const char *debug);
@ -477,11 +477,11 @@ Index: gdb-7.2.50.20110320/gdb/symfile.h
/* From dwarf2read.c */ /* From dwarf2read.c */
Index: gdb-7.2.50.20110320/gdb/testsuite/lib/gdb.exp Index: gdb-7.2.90.20110429/gdb/testsuite/lib/gdb.exp
=================================================================== ===================================================================
--- gdb-7.2.50.20110320.orig/gdb/testsuite/lib/gdb.exp 2011-03-20 15:19:52.000000000 +0100 --- gdb-7.2.90.20110429.orig/gdb/testsuite/lib/gdb.exp 2011-05-03 05:14:57.000000000 +0200
+++ gdb-7.2.50.20110320/gdb/testsuite/lib/gdb.exp 2011-03-20 15:22:51.000000000 +0100 +++ gdb-7.2.90.20110429/gdb/testsuite/lib/gdb.exp 2011-05-03 05:21:11.000000000 +0200
@@ -1397,7 +1397,7 @@ proc default_gdb_start { } { @@ -1381,7 +1381,7 @@ proc default_gdb_start { } {
warning "Couldn't set the width to 0." warning "Couldn't set the width to 0."
} }
} }
@ -490,10 +490,10 @@ Index: gdb-7.2.50.20110320/gdb/testsuite/lib/gdb.exp
send_gdb "set build-id-verbose 0\n" send_gdb "set build-id-verbose 0\n"
gdb_expect 10 { gdb_expect 10 {
-re "$gdb_prompt $" { -re "$gdb_prompt $" {
Index: gdb-7.2.50.20110320/gdb/testsuite/lib/mi-support.exp Index: gdb-7.2.90.20110429/gdb/testsuite/lib/mi-support.exp
=================================================================== ===================================================================
--- gdb-7.2.50.20110320.orig/gdb/testsuite/lib/mi-support.exp 2011-03-20 15:19:52.000000000 +0100 --- gdb-7.2.90.20110429.orig/gdb/testsuite/lib/mi-support.exp 2011-05-03 05:14:57.000000000 +0200
+++ gdb-7.2.50.20110320/gdb/testsuite/lib/mi-support.exp 2011-03-20 15:22:51.000000000 +0100 +++ gdb-7.2.90.20110429/gdb/testsuite/lib/mi-support.exp 2011-05-03 05:21:11.000000000 +0200
@@ -221,7 +221,7 @@ proc default_mi_gdb_start { args } { @@ -221,7 +221,7 @@ proc default_mi_gdb_start { args } {
} }
} }
@ -503,10 +503,10 @@ Index: gdb-7.2.50.20110320/gdb/testsuite/lib/mi-support.exp
send_gdb "190-gdb-set build-id-verbose 0\n" send_gdb "190-gdb-set build-id-verbose 0\n"
gdb_expect 10 { gdb_expect 10 {
-re ".*190-gdb-set build-id-verbose 0\r\n190\\\^done\r\n$mi_gdb_prompt$" { -re ".*190-gdb-set build-id-verbose 0\r\n190\\\^done\r\n$mi_gdb_prompt$" {
Index: gdb-7.2.50.20110320/gdb/tui/tui-interp.c Index: gdb-7.2.90.20110429/gdb/tui/tui-interp.c
=================================================================== ===================================================================
--- gdb-7.2.50.20110320.orig/gdb/tui/tui-interp.c 2011-01-01 16:33:52.000000000 +0100 --- gdb-7.2.90.20110429.orig/gdb/tui/tui-interp.c 2011-01-01 16:33:52.000000000 +0100
+++ gdb-7.2.50.20110320/gdb/tui/tui-interp.c 2011-03-20 15:22:51.000000000 +0100 +++ gdb-7.2.90.20110429/gdb/tui/tui-interp.c 2011-05-03 05:21:11.000000000 +0200
@@ -31,6 +31,7 @@ @@ -31,6 +31,7 @@
#include "tui/tui.h" #include "tui/tui.h"
#include "tui/tui-io.h" #include "tui/tui-io.h"
@ -524,10 +524,10 @@ Index: gdb-7.2.50.20110320/gdb/tui/tui-interp.c
/* Tell readline what the prompt to display is and what function /* Tell readline what the prompt to display is and what function
it will need to call after a whole line is read. This also it will need to call after a whole line is read. This also
displays the first prompt. */ displays the first prompt. */
Index: gdb-7.2.50.20110320/gdb/aclocal.m4 Index: gdb-7.2.90.20110429/gdb/aclocal.m4
=================================================================== ===================================================================
--- gdb-7.2.50.20110320.orig/gdb/aclocal.m4 2011-02-15 22:05:53.000000000 +0100 --- gdb-7.2.90.20110429.orig/gdb/aclocal.m4 2011-02-15 22:05:53.000000000 +0100
+++ gdb-7.2.50.20110320/gdb/aclocal.m4 2011-03-20 15:22:51.000000000 +0100 +++ gdb-7.2.90.20110429/gdb/aclocal.m4 2011-05-03 05:21:11.000000000 +0200
@@ -19,6 +19,162 @@ You have another version of autoconf. I @@ -19,6 +19,162 @@ You have another version of autoconf. I
If you have problems, you may need to regenerate the build system entirely. If you have problems, you may need to regenerate the build system entirely.
To do so, use the procedure documented by the package, typically `autoreconf'.])]) To do so, use the procedure documented by the package, typically `autoreconf'.])])
@ -691,10 +691,10 @@ Index: gdb-7.2.50.20110320/gdb/aclocal.m4
# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
Index: gdb-7.2.50.20110320/gdb/config.in Index: gdb-7.2.90.20110429/gdb/config.in
=================================================================== ===================================================================
--- gdb-7.2.50.20110320.orig/gdb/config.in 2011-03-17 14:19:09.000000000 +0100 --- gdb-7.2.90.20110429.orig/gdb/config.in 2011-03-17 14:19:09.000000000 +0100
+++ gdb-7.2.50.20110320/gdb/config.in 2011-03-20 15:22:51.000000000 +0100 +++ gdb-7.2.90.20110429/gdb/config.in 2011-05-03 05:21:11.000000000 +0200
@@ -46,6 +46,9 @@ @@ -46,6 +46,9 @@
/* Define to BFD's default target vector. */ /* Define to BFD's default target vector. */
#undef DEFAULT_BFD_VEC #undef DEFAULT_BFD_VEC
@ -715,10 +715,10 @@ Index: gdb-7.2.50.20110320/gdb/config.in
/* Define if libunwind library is being used. */ /* Define if libunwind library is being used. */
#undef HAVE_LIBUNWIND #undef HAVE_LIBUNWIND
Index: gdb-7.2.50.20110320/gdb/configure Index: gdb-7.2.90.20110429/gdb/configure
=================================================================== ===================================================================
--- gdb-7.2.50.20110320.orig/gdb/configure 2011-03-17 14:19:09.000000000 +0100 --- gdb-7.2.90.20110429.orig/gdb/configure 2011-04-03 18:32:40.000000000 +0200
+++ gdb-7.2.50.20110320/gdb/configure 2011-03-20 15:23:29.000000000 +0100 +++ gdb-7.2.90.20110429/gdb/configure 2011-05-03 05:21:11.000000000 +0200
@@ -682,6 +682,9 @@ REPORT_BUGS_TO @@ -682,6 +682,9 @@ REPORT_BUGS_TO
PKGVERSION PKGVERSION
TARGET_OBS TARGET_OBS
@ -1253,10 +1253,10 @@ Index: gdb-7.2.50.20110320/gdb/configure
subdirs="$subdirs testsuite" subdirs="$subdirs testsuite"
Index: gdb-7.2.50.20110320/gdb/configure.ac Index: gdb-7.2.90.20110429/gdb/configure.ac
=================================================================== ===================================================================
--- gdb-7.2.50.20110320.orig/gdb/configure.ac 2011-03-17 14:19:10.000000000 +0100 --- gdb-7.2.90.20110429.orig/gdb/configure.ac 2011-04-03 18:32:40.000000000 +0200
+++ gdb-7.2.50.20110320/gdb/configure.ac 2011-03-20 15:23:17.000000000 +0100 +++ gdb-7.2.90.20110429/gdb/configure.ac 2011-05-03 05:21:11.000000000 +0200
@@ -108,6 +108,199 @@ AS_HELP_STRING([--with-relocated-sources @@ -108,6 +108,199 @@ AS_HELP_STRING([--with-relocated-sources
[Relocated directory for source files. ]) [Relocated directory for source files. ])
]) ])
@ -1457,10 +1457,10 @@ Index: gdb-7.2.50.20110320/gdb/configure.ac
AC_CONFIG_SUBDIRS(testsuite) AC_CONFIG_SUBDIRS(testsuite)
# Check whether to support alternative target configurations # Check whether to support alternative target configurations
Index: gdb-7.2.50.20110320/gdb/acinclude.m4 Index: gdb-7.2.90.20110429/gdb/acinclude.m4
=================================================================== ===================================================================
--- gdb-7.2.50.20110320.orig/gdb/acinclude.m4 2010-05-27 05:40:45.000000000 +0200 --- gdb-7.2.90.20110429.orig/gdb/acinclude.m4 2010-05-27 05:40:45.000000000 +0200
+++ gdb-7.2.50.20110320/gdb/acinclude.m4 2011-03-20 15:22:51.000000000 +0100 +++ gdb-7.2.90.20110429/gdb/acinclude.m4 2011-05-03 05:21:11.000000000 +0200
@@ -1,3 +1,5 @@ @@ -1,3 +1,5 @@
+# serial 1 +# serial 1
+ +
@ -1476,10 +1476,10 @@ Index: gdb-7.2.50.20110320/gdb/acinclude.m4
# @defmac AC_PROG_CC_STDC # @defmac AC_PROG_CC_STDC
# @maindex PROG_CC_STDC # @maindex PROG_CC_STDC
# @ovindex CC # @ovindex CC
Index: gdb-7.2.50.20110320/gdb/corelow.c Index: gdb-7.2.90.20110429/gdb/corelow.c
=================================================================== ===================================================================
--- gdb-7.2.50.20110320.orig/gdb/corelow.c 2011-03-20 15:19:52.000000000 +0100 --- gdb-7.2.90.20110429.orig/gdb/corelow.c 2011-05-03 05:14:57.000000000 +0200
+++ gdb-7.2.50.20110320/gdb/corelow.c 2011-03-20 15:22:51.000000000 +0100 +++ gdb-7.2.90.20110429/gdb/corelow.c 2011-05-03 05:21:11.000000000 +0200
@@ -320,7 +320,7 @@ build_id_locate_exec (int from_tty) @@ -320,7 +320,7 @@ build_id_locate_exec (int from_tty)
symfile_objfile->flags |= OBJF_BUILD_ID_CORE_LOADED; symfile_objfile->flags |= OBJF_BUILD_ID_CORE_LOADED;
} }

View File

@ -1,7 +1,7 @@
Index: gdb-7.2.90.20110411/gdb/corelow.c Index: gdb-7.2.90.20110429/gdb/corelow.c
=================================================================== ===================================================================
--- gdb-7.2.90.20110411.orig/gdb/corelow.c 2011-02-26 03:07:07.000000000 +0100 --- gdb-7.2.90.20110429.orig/gdb/corelow.c 2011-02-26 03:07:07.000000000 +0100
+++ gdb-7.2.90.20110411/gdb/corelow.c 2011-04-11 19:16:15.000000000 +0200 +++ gdb-7.2.90.20110429/gdb/corelow.c 2011-05-03 05:14:57.000000000 +0200
@@ -47,6 +47,9 @@ @@ -47,6 +47,9 @@
#include "filenames.h" #include "filenames.h"
#include "progspace.h" #include "progspace.h"
@ -90,10 +90,10 @@ Index: gdb-7.2.90.20110411/gdb/corelow.c
+ NULL, NULL, NULL, + NULL, NULL, NULL,
+ &setlist, &showlist); + &setlist, &showlist);
} }
Index: gdb-7.2.90.20110411/gdb/doc/gdb.texinfo Index: gdb-7.2.90.20110429/gdb/doc/gdb.texinfo
=================================================================== ===================================================================
--- gdb-7.2.90.20110411.orig/gdb/doc/gdb.texinfo 2011-04-11 19:15:51.000000000 +0200 --- gdb-7.2.90.20110429.orig/gdb/doc/gdb.texinfo 2011-05-03 05:14:56.000000000 +0200
+++ gdb-7.2.90.20110411/gdb/doc/gdb.texinfo 2011-04-11 19:16:15.000000000 +0200 +++ gdb-7.2.90.20110429/gdb/doc/gdb.texinfo 2011-05-03 05:14:57.000000000 +0200
@@ -15356,6 +15356,27 @@ information files. @@ -15356,6 +15356,27 @@ information files.
@end table @end table
@ -122,10 +122,10 @@ Index: gdb-7.2.90.20110411/gdb/doc/gdb.texinfo
@cindex @code{.gnu_debuglink} sections @cindex @code{.gnu_debuglink} sections
@cindex debug link sections @cindex debug link sections
A debug link is a special section of the executable file named A debug link is a special section of the executable file named
Index: gdb-7.2.90.20110411/gdb/solib-svr4.c Index: gdb-7.2.90.20110429/gdb/solib-svr4.c
=================================================================== ===================================================================
--- gdb-7.2.90.20110411.orig/gdb/solib-svr4.c 2011-04-11 19:11:55.000000000 +0200 --- gdb-7.2.90.20110429.orig/gdb/solib-svr4.c 2011-05-03 05:14:56.000000000 +0200
+++ gdb-7.2.90.20110411/gdb/solib-svr4.c 2011-04-11 19:16:15.000000000 +0200 +++ gdb-7.2.90.20110429/gdb/solib-svr4.c 2011-05-03 05:14:57.000000000 +0200
@@ -1179,9 +1179,49 @@ svr4_current_sos (void) @@ -1179,9 +1179,49 @@ svr4_current_sos (void)
safe_strerror (errcode)); safe_strerror (errcode));
else else
@ -179,11 +179,11 @@ Index: gdb-7.2.90.20110411/gdb/solib-svr4.c
} }
xfree (buffer); xfree (buffer);
Index: gdb-7.2.90.20110411/gdb/elfread.c Index: gdb-7.2.90.20110429/gdb/elfread.c
=================================================================== ===================================================================
--- gdb-7.2.90.20110411.orig/gdb/elfread.c 2011-04-11 19:11:55.000000000 +0200 --- gdb-7.2.90.20110429.orig/gdb/elfread.c 2011-05-03 05:14:56.000000000 +0200
+++ gdb-7.2.90.20110411/gdb/elfread.c 2011-04-11 19:17:40.000000000 +0200 +++ gdb-7.2.90.20110429/gdb/elfread.c 2011-05-03 05:19:27.000000000 +0200
@@ -49,6 +49,10 @@ @@ -49,6 +49,11 @@
#include "infcall.h" #include "infcall.h"
#include "gdbthread.h" #include "gdbthread.h"
#include "regcache.h" #include "regcache.h"
@ -191,10 +191,11 @@ Index: gdb-7.2.90.20110411/gdb/elfread.c
+#include "gdbcore.h" +#include "gdbcore.h"
+#include "gdbcmd.h" +#include "gdbcmd.h"
+#include "observer.h" +#include "observer.h"
+#include <sys/stat.h>
extern void _initialize_elfread (void); extern void _initialize_elfread (void);
@@ -1077,16 +1081,65 @@ elf_gnu_ifunc_resolver_return_stop (stru @@ -1077,16 +1082,65 @@ elf_gnu_ifunc_resolver_return_stop (stru
update_breakpoint_locations (b, sals, sals_end); update_breakpoint_locations (b, sals, sals_end);
} }
@ -262,7 +263,7 @@ Index: gdb-7.2.90.20110411/gdb/elfread.c
{ {
struct build_id *retval; struct build_id *retval;
@@ -1102,6 +1155,348 @@ build_id_bfd_get (bfd *abfd) @@ -1102,6 +1156,348 @@ build_id_bfd_get (bfd *abfd)
return retval; return retval;
} }
@ -611,7 +612,7 @@ Index: gdb-7.2.90.20110411/gdb/elfread.c
/* Return if FILENAME has NT_GNU_BUILD_ID matching the CHECK value. */ /* Return if FILENAME has NT_GNU_BUILD_ID matching the CHECK value. */
static int static int
@@ -1116,7 +1511,7 @@ build_id_verify (const char *filename, s @@ -1116,7 +1512,7 @@ build_id_verify (const char *filename, s
if (abfd == NULL) if (abfd == NULL)
return 0; return 0;
@ -620,7 +621,7 @@ Index: gdb-7.2.90.20110411/gdb/elfread.c
if (found == NULL) if (found == NULL)
warning (_("File \"%s\" has no build-id, file skipped"), filename); warning (_("File \"%s\" has no build-id, file skipped"), filename);
@@ -1134,14 +1529,16 @@ build_id_verify (const char *filename, s @@ -1134,14 +1530,15 @@ build_id_verify (const char *filename, s
return retval; return retval;
} }
@ -636,24 +637,69 @@ Index: gdb-7.2.90.20110411/gdb/elfread.c
/* DEBUG_FILE_DIRECTORY/.build-id/ab/cdef */ /* DEBUG_FILE_DIRECTORY/.build-id/ab/cdef */
- link = alloca (strlen (debug_file_directory) + (sizeof "/.build-id/" - 1) + 1 - link = alloca (strlen (debug_file_directory) + (sizeof "/.build-id/" - 1) + 1
- + 2 * build_id->size + (sizeof ".debug" - 1) + 1); - + 2 * build_id->size + (sizeof ".debug" - 1) + 1);
+ link = xmalloc (strlen (debug_file_directory) + (sizeof "/.build-id/" - 1) + 1 + link = xmalloc (strlen (debug_file_directory) + 2 * build_id->size + 50);
+ + 2 * build_id->size + (sizeof ".debug" - 1) + 1);
/* Keep backward compatibility so that DEBUG_FILE_DIRECTORY being "" will /* Keep backward compatibility so that DEBUG_FILE_DIRECTORY being "" will
cause "/.build-id/..." lookups. */ cause "/.build-id/..." lookups. */
@@ -1172,7 +1569,10 @@ build_id_to_debug_filename (struct build @@ -1152,6 +1549,8 @@ build_id_to_debug_filename (struct build
char *s, *debugdir_end;
gdb_byte *data = build_id->data;
size_t size = build_id->size;
+ unsigned seqno;
+ struct stat statbuf_trash;
while (*debugdir == DIRNAME_SEPARATOR)
debugdir++;
@@ -1172,39 +1571,242 @@ build_id_to_debug_filename (struct build
*s++ = '/'; *s++ = '/';
while (size-- > 0) while (size-- > 0)
s += sprintf (s, "%02x", (unsigned) *data++); s += sprintf (s, "%02x", (unsigned) *data++);
- strcpy (s, ".debug"); - strcpy (s, ".debug");
+ if (add_debug_suffix) -
+ strcpy (s, ".debug"); - /* lrealpath() is expensive even for the usually non-existent files. */
+ else - if (access (link, F_OK) == 0)
+ *s = 0; - retval = lrealpath (link);
/* lrealpath() is expensive even for the usually non-existent files. */ - if (retval != NULL && !build_id_verify (retval, build_id))
if (access (link, F_OK) == 0) + for (seqno = 0;; seqno++)
@@ -1185,26 +1585,201 @@ build_id_to_debug_filename (struct build {
- xfree (retval);
- retval = NULL;
+ char *s2;
+
+ if (seqno)
+ {
+ /* There can be multiple build-id symlinks pointing to real files
+ with the same build-id (such as hard links). Some of the real
+ files may not be installed. */
+
+ s2 = s + sprintf (s, ".%u", seqno);
+ }
+ else
+ s2 = s;
+
+ if (add_debug_suffix)
+ strcpy (s2, ".debug");
+ else
+ *s2 = 0;
+
+ /* `access' automatically dereferences LINK. */
+ if (lstat (link, &statbuf_trash) != 0)
+ {
+ /* Stop increasing SEQNO. */
+ break;
+ }
+
+ retval = lrealpath (link);
+
+ if (retval != NULL && !build_id_verify (retval, build_id))
+ {
+ xfree (retval);
+ retval = NULL;
+ }
+
+ if (retval)
+ break;
} }
if (retval != NULL) if (retval != NULL)
@ -723,9 +769,9 @@ Index: gdb-7.2.90.20110411/gdb/elfread.c
+ +
+ retval = obstack_alloc (&missing_filepair_obstack, size); + retval = obstack_alloc (&missing_filepair_obstack, size);
+ memset (retval, 0, size); + memset (retval, 0, size);
+ return retval; return retval;
+} }
+
+static hashval_t +static hashval_t
+missing_filepair_hash_func (const struct missing_filepair *elem) +missing_filepair_hash_func (const struct missing_filepair *elem)
+{ +{
@ -735,9 +781,9 @@ Index: gdb-7.2.90.20110411/gdb/elfread.c
+ if (elem->debug != NULL) + if (elem->debug != NULL)
+ retval ^= htab_hash_string (elem->debug); + retval ^= htab_hash_string (elem->debug);
+ +
return retval; + return retval;
} +}
+
+static int +static int
+missing_filepair_eq (const struct missing_filepair *elem1, +missing_filepair_eq (const struct missing_filepair *elem1,
+ const struct missing_filepair *elem2) + const struct missing_filepair *elem2)
@ -859,7 +905,7 @@ Index: gdb-7.2.90.20110411/gdb/elfread.c
xfree (build_id); xfree (build_id);
/* Prevent looping on a stripped .debug file. */ /* Prevent looping on a stripped .debug file. */
if (build_id_name != NULL if (build_id_name != NULL
@@ -1215,7 +1790,7 @@ find_separate_debug_file_by_buildid (str @@ -1215,7 +1817,7 @@ find_separate_debug_file_by_buildid (str
xfree (build_id_name); xfree (build_id_name);
} }
else if (build_id_name != NULL) else if (build_id_name != NULL)
@ -868,7 +914,7 @@ Index: gdb-7.2.90.20110411/gdb/elfread.c
} }
return NULL; return NULL;
} }
@@ -1413,9 +1988,10 @@ elf_symfile_read (struct objfile *objfil @@ -1418,9 +2020,10 @@ elf_symfile_read (struct objfile *objfil
`.note.gnu.build-id'. */ `.note.gnu.build-id'. */
else if (!objfile_has_partial_symbols (objfile)) else if (!objfile_has_partial_symbols (objfile))
{ {
@ -881,7 +927,7 @@ Index: gdb-7.2.90.20110411/gdb/elfread.c
if (debugfile == NULL) if (debugfile == NULL)
debugfile = find_separate_debug_file_by_debuglink (objfile); debugfile = find_separate_debug_file_by_debuglink (objfile);
@@ -1427,6 +2003,12 @@ elf_symfile_read (struct objfile *objfil @@ -1432,6 +2035,12 @@ elf_symfile_read (struct objfile *objfil
symbol_file_add_separate (abfd, symfile_flags, objfile); symbol_file_add_separate (abfd, symfile_flags, objfile);
xfree (debugfile); xfree (debugfile);
} }
@ -894,7 +940,7 @@ Index: gdb-7.2.90.20110411/gdb/elfread.c
} }
} }
@@ -1906,4 +2488,16 @@ _initialize_elfread (void) @@ -1911,4 +2520,16 @@ _initialize_elfread (void)
elf_objfile_gnu_ifunc_cache_data = register_objfile_data (); elf_objfile_gnu_ifunc_cache_data = register_objfile_data ();
gnu_ifunc_fns_p = &elf_gnu_ifunc_fns; gnu_ifunc_fns_p = &elf_gnu_ifunc_fns;
@ -911,11 +957,11 @@ Index: gdb-7.2.90.20110411/gdb/elfread.c
+ +
+ observer_attach_executable_changed (debug_print_executable_changed); + observer_attach_executable_changed (debug_print_executable_changed);
} }
Index: gdb-7.2.90.20110411/gdb/symfile.h Index: gdb-7.2.90.20110429/gdb/symfile.h
=================================================================== ===================================================================
--- gdb-7.2.90.20110411.orig/gdb/symfile.h 2011-04-11 19:11:55.000000000 +0200 --- gdb-7.2.90.20110429.orig/gdb/symfile.h 2011-05-03 05:14:56.000000000 +0200
+++ gdb-7.2.90.20110411/gdb/symfile.h 2011-04-11 19:16:15.000000000 +0200 +++ gdb-7.2.90.20110429/gdb/symfile.h 2011-05-03 05:14:57.000000000 +0200
@@ -611,6 +611,13 @@ void free_symfile_segment_data (struct s @@ -605,6 +605,13 @@ void free_symfile_segment_data (struct s
extern struct cleanup *increment_reading_symtab (void); extern struct cleanup *increment_reading_symtab (void);
@ -929,10 +975,10 @@ Index: gdb-7.2.90.20110411/gdb/symfile.h
/* From dwarf2read.c */ /* From dwarf2read.c */
extern int dwarf2_has_info (struct objfile *); extern int dwarf2_has_info (struct objfile *);
Index: gdb-7.2.90.20110411/gdb/testsuite/lib/gdb.exp Index: gdb-7.2.90.20110429/gdb/testsuite/lib/gdb.exp
=================================================================== ===================================================================
--- gdb-7.2.90.20110411.orig/gdb/testsuite/lib/gdb.exp 2011-04-11 19:11:55.000000000 +0200 --- gdb-7.2.90.20110429.orig/gdb/testsuite/lib/gdb.exp 2011-05-03 05:14:56.000000000 +0200
+++ gdb-7.2.90.20110411/gdb/testsuite/lib/gdb.exp 2011-04-11 19:16:15.000000000 +0200 +++ gdb-7.2.90.20110429/gdb/testsuite/lib/gdb.exp 2011-05-03 05:14:57.000000000 +0200
@@ -1381,6 +1381,16 @@ proc default_gdb_start { } { @@ -1381,6 +1381,16 @@ proc default_gdb_start { } {
warning "Couldn't set the width to 0." warning "Couldn't set the width to 0."
} }
@ -950,10 +996,10 @@ Index: gdb-7.2.90.20110411/gdb/testsuite/lib/gdb.exp
return 0; return 0;
} }
Index: gdb-7.2.90.20110411/gdb/testsuite/lib/mi-support.exp Index: gdb-7.2.90.20110429/gdb/testsuite/lib/mi-support.exp
=================================================================== ===================================================================
--- gdb-7.2.90.20110411.orig/gdb/testsuite/lib/mi-support.exp 2011-03-07 17:03:04.000000000 +0100 --- gdb-7.2.90.20110429.orig/gdb/testsuite/lib/mi-support.exp 2011-03-07 17:03:04.000000000 +0100
+++ gdb-7.2.90.20110411/gdb/testsuite/lib/mi-support.exp 2011-04-11 19:16:15.000000000 +0200 +++ gdb-7.2.90.20110429/gdb/testsuite/lib/mi-support.exp 2011-05-03 05:14:57.000000000 +0200
@@ -221,6 +221,16 @@ proc default_mi_gdb_start { args } { @@ -221,6 +221,16 @@ proc default_mi_gdb_start { args } {
} }
} }
@ -971,10 +1017,10 @@ Index: gdb-7.2.90.20110411/gdb/testsuite/lib/mi-support.exp
detect_async detect_async
Index: gdb-7.2.90.20110411/gdb/objfiles.h Index: gdb-7.2.90.20110429/gdb/objfiles.h
=================================================================== ===================================================================
--- gdb-7.2.90.20110411.orig/gdb/objfiles.h 2011-03-07 17:17:29.000000000 +0100 --- gdb-7.2.90.20110429.orig/gdb/objfiles.h 2011-03-07 17:17:29.000000000 +0100
+++ gdb-7.2.90.20110411/gdb/objfiles.h 2011-04-11 19:16:15.000000000 +0200 +++ gdb-7.2.90.20110429/gdb/objfiles.h 2011-05-03 05:14:57.000000000 +0200
@@ -441,6 +441,10 @@ struct objfile @@ -441,6 +441,10 @@ struct objfile
#define OBJF_PSYMTABS_READ (1 << 4) #define OBJF_PSYMTABS_READ (1 << 4)

View File

@ -27,7 +27,7 @@ Version: 7.2.90.20110429
# The release always contains a leading reserved number, start it at 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. # `upstream' is not a part of `name' to stay fully rpm dependencies compatible for the testing.
Release: 36%{?_with_upstream:.upstream}%{?dist} Release: 37%{?_with_upstream:.upstream}%{?dist}
License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ and GPLv2+ with exceptions and GPL+ and LGPLv2+ and BSD and Public Domain License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ and GPLv2+ with exceptions and GPL+ and LGPLv2+ and BSD and Public Domain
Group: Development/Debuggers Group: Development/Debuggers
@ -1271,6 +1271,9 @@ fi
%{_infodir}/gdb.info* %{_infodir}/gdb.info*
%changelog %changelog
* Tue May 3 2011 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.2.90.20110429-37.fc15
- Search also for .<seqno> files in /usr/lib/debug/.build-id (BZ 641377).
* Mon May 2 2011 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.2.90.20110429-36.fc15 * Mon May 2 2011 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.2.90.20110429-36.fc15
- Bundle readline-6.2 with a workaround of skipped "ask" (BZ 701131). - Bundle readline-6.2 with a workaround of skipped "ask" (BZ 701131).
- Use --without-system-readline, disable Requires and BuildRequires of readline. - Use --without-system-readline, disable Requires and BuildRequires of readline.