- Fix buildid-loading libs w/matching name but different build-id (BZ

524572).
This commit is contained in:
Jan Kratochvil 2009-09-25 11:06:47 +00:00
parent 4d3aa56117
commit 580e05685a
3 changed files with 193 additions and 126 deletions

View File

@ -26,10 +26,10 @@
Fix scan_dyntag() for binaries provided by valgrind (BZ 460319). Fix scan_dyntag() for binaries provided by valgrind (BZ 460319).
Index: gdb-6.8.91.20090917/gdb/amd64-tdep.c Index: gdb-6.8.91.20090925/gdb/amd64-tdep.c
=================================================================== ===================================================================
--- gdb-6.8.91.20090917.orig/gdb/amd64-tdep.c 2009-09-17 12:48:49.000000000 +0200 --- gdb-6.8.91.20090925.orig/gdb/amd64-tdep.c 2009-09-25 10:25:39.000000000 +0200
+++ gdb-6.8.91.20090917/gdb/amd64-tdep.c 2009-09-17 12:50:07.000000000 +0200 +++ gdb-6.8.91.20090925/gdb/amd64-tdep.c 2009-09-25 10:25:45.000000000 +0200
@@ -36,6 +36,7 @@ @@ -36,6 +36,7 @@
#include "regcache.h" #include "regcache.h"
#include "regset.h" #include "regset.h"
@ -138,10 +138,10 @@ Index: gdb-6.8.91.20090917/gdb/amd64-tdep.c
return pc; return pc;
} }
Index: gdb-6.8.91.20090917/gdb/auxv.c Index: gdb-6.8.91.20090925/gdb/auxv.c
=================================================================== ===================================================================
--- gdb-6.8.91.20090917.orig/gdb/auxv.c 2009-07-02 19:25:52.000000000 +0200 --- gdb-6.8.91.20090925.orig/gdb/auxv.c 2009-07-02 19:25:52.000000000 +0200
+++ gdb-6.8.91.20090917/gdb/auxv.c 2009-09-17 12:50:07.000000000 +0200 +++ gdb-6.8.91.20090925/gdb/auxv.c 2009-09-25 10:25:45.000000000 +0200
@@ -78,7 +78,7 @@ procfs_xfer_auxv (struct target_ops *ops @@ -78,7 +78,7 @@ procfs_xfer_auxv (struct target_ops *ops
Return 1 if an entry was read into *TYPEP and *VALP. */ Return 1 if an entry was read into *TYPEP and *VALP. */
static int static int
@ -230,10 +230,10 @@ Index: gdb-6.8.91.20090917/gdb/auxv.c
break; break;
} }
Index: gdb-6.8.91.20090917/gdb/auxv.h Index: gdb-6.8.91.20090925/gdb/auxv.h
=================================================================== ===================================================================
--- gdb-6.8.91.20090917.orig/gdb/auxv.h 2009-06-07 21:07:08.000000000 +0200 --- gdb-6.8.91.20090925.orig/gdb/auxv.h 2009-06-07 21:07:08.000000000 +0200
+++ gdb-6.8.91.20090917/gdb/auxv.h 2009-09-17 12:50:07.000000000 +0200 +++ gdb-6.8.91.20090925/gdb/auxv.h 2009-09-25 10:25:45.000000000 +0200
@@ -31,14 +31,14 @@ @@ -31,14 +31,14 @@
Return 1 if an entry was read into *TYPEP and *VALP. */ Return 1 if an entry was read into *TYPEP and *VALP. */
extern int target_auxv_parse (struct target_ops *ops, extern int target_auxv_parse (struct target_ops *ops,
@ -251,10 +251,10 @@ Index: gdb-6.8.91.20090917/gdb/auxv.h
/* Print the contents of the target's AUXV on the specified file. */ /* Print the contents of the target's AUXV on the specified file. */
extern int fprint_target_auxv (struct ui_file *file, struct target_ops *ops); extern int fprint_target_auxv (struct ui_file *file, struct target_ops *ops);
Index: gdb-6.8.91.20090917/gdb/dwarf2read.c Index: gdb-6.8.91.20090925/gdb/dwarf2read.c
=================================================================== ===================================================================
--- gdb-6.8.91.20090917.orig/gdb/dwarf2read.c 2009-09-17 12:49:20.000000000 +0200 --- gdb-6.8.91.20090925.orig/gdb/dwarf2read.c 2009-09-25 10:25:39.000000000 +0200
+++ gdb-6.8.91.20090917/gdb/dwarf2read.c 2009-09-17 12:50:07.000000000 +0200 +++ gdb-6.8.91.20090925/gdb/dwarf2read.c 2009-09-25 10:25:45.000000000 +0200
@@ -1717,7 +1717,7 @@ dwarf2_build_psymtabs (struct objfile *o @@ -1717,7 +1717,7 @@ dwarf2_build_psymtabs (struct objfile *o
dwarf2_read_section (objfile, &dwarf2_per_objfile->eh_frame); dwarf2_read_section (objfile, &dwarf2_per_objfile->eh_frame);
dwarf2_read_section (objfile, &dwarf2_per_objfile->frame); dwarf2_read_section (objfile, &dwarf2_per_objfile->frame);
@ -264,10 +264,10 @@ Index: gdb-6.8.91.20090917/gdb/dwarf2read.c
|| (objfile->global_psymbols.size == 0 || (objfile->global_psymbols.size == 0
&& objfile->static_psymbols.size == 0)) && objfile->static_psymbols.size == 0))
{ {
Index: gdb-6.8.91.20090917/gdb/elfread.c Index: gdb-6.8.91.20090925/gdb/elfread.c
=================================================================== ===================================================================
--- gdb-6.8.91.20090917.orig/gdb/elfread.c 2009-09-17 12:47:07.000000000 +0200 --- gdb-6.8.91.20090925.orig/gdb/elfread.c 2009-09-25 10:25:38.000000000 +0200
+++ gdb-6.8.91.20090917/gdb/elfread.c 2009-09-17 12:50:07.000000000 +0200 +++ gdb-6.8.91.20090925/gdb/elfread.c 2009-09-25 10:25:45.000000000 +0200
@@ -681,7 +681,7 @@ elf_symfile_read (struct objfile *objfil @@ -681,7 +681,7 @@ elf_symfile_read (struct objfile *objfil
/* If we are reinitializing, or if we have never loaded syms yet, /* If we are reinitializing, or if we have never loaded syms yet,
set table to empty. MAINLINE is cleared so that *_read_psymtab set table to empty. MAINLINE is cleared so that *_read_psymtab
@ -277,10 +277,10 @@ Index: gdb-6.8.91.20090917/gdb/elfread.c
{ {
init_psymbol_list (objfile, 0); init_psymbol_list (objfile, 0);
mainline = 0; mainline = 0;
Index: gdb-6.8.91.20090917/gdb/infrun.c Index: gdb-6.8.91.20090925/gdb/infrun.c
=================================================================== ===================================================================
--- gdb-6.8.91.20090917.orig/gdb/infrun.c 2009-09-17 12:48:50.000000000 +0200 --- gdb-6.8.91.20090925.orig/gdb/infrun.c 2009-09-25 10:25:39.000000000 +0200
+++ gdb-6.8.91.20090917/gdb/infrun.c 2009-09-17 12:50:07.000000000 +0200 +++ gdb-6.8.91.20090925/gdb/infrun.c 2009-09-25 10:25:45.000000000 +0200
@@ -3659,6 +3659,10 @@ infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME ( @@ -3659,6 +3659,10 @@ infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME (
#endif #endif
target_terminal_inferior (); target_terminal_inferior ();
@ -292,10 +292,10 @@ Index: gdb-6.8.91.20090917/gdb/infrun.c
/* If requested, stop when the dynamic linker notifies /* If requested, stop when the dynamic linker notifies
gdb of events. This allows the user to get control gdb of events. This allows the user to get control
and place breakpoints in initializer routines for and place breakpoints in initializer routines for
Index: gdb-6.8.91.20090917/gdb/objfiles.c Index: gdb-6.8.91.20090925/gdb/objfiles.c
=================================================================== ===================================================================
--- gdb-6.8.91.20090917.orig/gdb/objfiles.c 2009-09-17 12:47:07.000000000 +0200 --- gdb-6.8.91.20090925.orig/gdb/objfiles.c 2009-09-25 10:25:38.000000000 +0200
+++ gdb-6.8.91.20090917/gdb/objfiles.c 2009-09-17 12:50:20.000000000 +0200 +++ gdb-6.8.91.20090925/gdb/objfiles.c 2009-09-25 10:25:45.000000000 +0200
@@ -53,6 +53,9 @@ @@ -53,6 +53,9 @@
#include "observer.h" #include "observer.h"
#include "complaints.h" #include "complaints.h"
@ -324,10 +324,10 @@ Index: gdb-6.8.91.20090917/gdb/objfiles.c
if (symfile_objfile == NULL) if (symfile_objfile == NULL)
return 0; return 0;
Index: gdb-6.8.91.20090917/gdb/solib-svr4.c Index: gdb-6.8.91.20090925/gdb/solib-svr4.c
=================================================================== ===================================================================
--- gdb-6.8.91.20090917.orig/gdb/solib-svr4.c 2009-09-17 12:48:50.000000000 +0200 --- gdb-6.8.91.20090925.orig/gdb/solib-svr4.c 2009-09-25 10:25:39.000000000 +0200
+++ gdb-6.8.91.20090917/gdb/solib-svr4.c 2009-09-17 12:50:07.000000000 +0200 +++ gdb-6.8.91.20090925/gdb/solib-svr4.c 2009-09-25 10:28:07.000000000 +0200
@@ -47,6 +47,7 @@ @@ -47,6 +47,7 @@
#include "exec.h" #include "exec.h"
#include "auxv.h" #include "auxv.h"
@ -704,11 +704,19 @@ Index: gdb-6.8.91.20090917/gdb/solib-svr4.c
target_read_string (LM_NAME (new), &buffer, target_read_string (LM_NAME (new), &buffer,
SO_NAME_MAX_PATH_SIZE - 1, &errcode); SO_NAME_MAX_PATH_SIZE - 1, &errcode);
if (errcode != 0) if (errcode != 0)
@@ -1101,47 +1336,60 @@ svr4_current_sos (void) @@ -1101,63 +1336,76 @@ svr4_current_sos (void)
safe_strerror (errcode)); safe_strerror (errcode));
else else
{ {
- struct build_id *build_id; - struct build_id *build_id;
-
- strncpy (new->so_original_name, buffer, SO_NAME_MAX_PATH_SIZE - 1);
- new->so_original_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0';
- /* May get overwritten below. */
- strcpy (new->so_name, new->so_original_name);
-
- build_id = build_id_addr_get (LM_DYNAMIC_FROM_LINK_MAP (new));
- if (build_id != NULL)
+ if (debug_solib) + if (debug_solib)
+ fprintf_unfiltered (gdb_stdlog, + fprintf_unfiltered (gdb_stdlog,
+ "svr4_current_sos: LM_NAME is <%s>\n", + "svr4_current_sos: LM_NAME is <%s>\n",
@ -718,25 +726,25 @@ Index: gdb-6.8.91.20090917/gdb/solib-svr4.c
+ if (strcmp (buffer, "") == 0) + if (strcmp (buffer, "") == 0)
+ free_so (new); + free_so (new);
+ else + else
+ { {
- char *name, *build_id_filename;
+ struct build_id *build_id; + struct build_id *build_id;
+
- strncpy (new->so_original_name, buffer, SO_NAME_MAX_PATH_SIZE - 1);
- new->so_original_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0';
- /* May get overwritten below. */
- strcpy (new->so_name, new->so_original_name);
+ strncpy (new->so_original_name, buffer, SO_NAME_MAX_PATH_SIZE - 1); + strncpy (new->so_original_name, buffer, SO_NAME_MAX_PATH_SIZE - 1);
+ new->so_original_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0'; + new->so_original_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0';
+ /* May get overwritten below. */ + /* May get overwritten below. */
+ strcpy (new->so_name, new->so_original_name); + strcpy (new->so_name, new->so_original_name);
- build_id = build_id_addr_get (LM_DYNAMIC_FROM_LINK_MAP (new)); - /* Missing the build-id matching separate debug info file
- if (build_id != NULL) - would be handled while SO_NAME gets loaded. */
- { - name = build_id_to_filename (build_id, &build_id_filename, 0);
- char *name, *build_id_filename; - if (name != NULL)
+ build_id = build_id_addr_get (LM_DYNAMIC_FROM_LINK_MAP (new)); + build_id = build_id_addr_get (LM_DYNAMIC_FROM_LINK_MAP (new));
+ if (build_id != NULL) + if (build_id != NULL)
+ { {
- strncpy (new->so_name, name, SO_NAME_MAX_PATH_SIZE - 1);
- new->so_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0';
- xfree (name);
+ char *name, *build_id_filename; + char *name, *build_id_filename;
+ +
+ /* Missing the build-id matching separate debug info file + /* Missing the build-id matching separate debug info file
@ -749,21 +757,46 @@ Index: gdb-6.8.91.20090917/gdb/solib-svr4.c
+ xfree (name); + xfree (name);
+ } + }
+ else + else
+ {
+ debug_print_missing (new->so_name, build_id_filename); + debug_print_missing (new->so_name, build_id_filename);
+ +
+ /* In the case the main executable was found according to
+ its build-id (from a core file) prevent loading
+ a different build of a library with accidentally the
+ same SO_NAME.
+
+ It suppresses bogus backtraces (and prints "??" there
+ instead) if the on-disk files no longer match the
+ running program version. */
+
+ if (symfile_objfile != NULL
+ && (symfile_objfile->flags
+ & OBJF_BUILD_ID_CORE_LOADED) != 0)
+ new->so_name[0] = 0;
+ }
+
+ xfree (build_id_filename); + xfree (build_id_filename);
+ xfree (build_id); + xfree (build_id);
+ } }
- else
- {
- debug_print_missing (new->so_name, build_id_filename);
- /* Missing the build-id matching separate debug info file - /* In the case the main executable was found according to
- would be handled while SO_NAME gets loaded. */ - its build-id (from a core file) prevent loading
- name = build_id_to_filename (build_id, &build_id_filename, 0); - a different build of a library with accidentally the
- if (name != NULL) - same SO_NAME.
-
- It suppresses bogus backtraces (and prints "??" there
- instead) if the on-disk files no longer match the
- running program version. */
-
- if (symfile_objfile != NULL
- && (symfile_objfile->flags
- & OBJF_BUILD_ID_CORE_LOADED) != 0)
- new->so_name[0] = 0;
+ if (debug_solib) + if (debug_solib)
{ + {
- strncpy (new->so_name, name, SO_NAME_MAX_PATH_SIZE - 1);
- new->so_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0';
- xfree (name);
+ fprintf_unfiltered (gdb_stdlog, + fprintf_unfiltered (gdb_stdlog,
+ "svr4_current_sos: Processing DSO: %s\n", + "svr4_current_sos: Processing DSO: %s\n",
+ new->so_name); + new->so_name);
@ -771,8 +804,6 @@ Index: gdb-6.8.91.20090917/gdb/solib-svr4.c
+ "svr4_current_sos: first link entry %d\n", + "svr4_current_sos: first link entry %d\n",
+ IGNORE_FIRST_LINK_MAP_ENTRY (new)); + IGNORE_FIRST_LINK_MAP_ENTRY (new));
} }
- else
- debug_print_missing (new->so_name, build_id_filename);
- xfree (build_id_filename); - xfree (build_id_filename);
- xfree (build_id); - xfree (build_id);
@ -798,7 +829,7 @@ Index: gdb-6.8.91.20090917/gdb/solib-svr4.c
} }
/* On Solaris, the dynamic linker is not in the normal list of /* On Solaris, the dynamic linker is not in the normal list of
@@ -1157,6 +1405,9 @@ svr4_current_sos (void) @@ -1173,6 +1421,9 @@ svr4_current_sos (void)
if (head == NULL) if (head == NULL)
return svr4_default_sos (); return svr4_default_sos ();
@ -808,7 +839,7 @@ Index: gdb-6.8.91.20090917/gdb/solib-svr4.c
return head; return head;
} }
@@ -1189,7 +1440,7 @@ svr4_fetch_objfile_link_map (struct objf @@ -1205,7 +1456,7 @@ svr4_fetch_objfile_link_map (struct objf
/* On some systems, the only way to recognize the link map entry for /* On some systems, the only way to recognize the link map entry for
the main executable file is by looking at its name. Return the main executable file is by looking at its name. Return
non-zero iff SONAME matches one of the known main executable names. */ non-zero iff SONAME matches one of the known main executable names. */
@ -817,7 +848,7 @@ Index: gdb-6.8.91.20090917/gdb/solib-svr4.c
static int static int
match_main (char *soname) match_main (char *soname)
{ {
@@ -1203,6 +1454,7 @@ match_main (char *soname) @@ -1219,6 +1470,7 @@ match_main (char *soname)
return (0); return (0);
} }
@ -825,7 +856,7 @@ Index: gdb-6.8.91.20090917/gdb/solib-svr4.c
/* Return 1 if PC lies in the dynamic symbol resolution code of the /* Return 1 if PC lies in the dynamic symbol resolution code of the
SVR4 run time loader. */ SVR4 run time loader. */
@@ -1354,15 +1606,29 @@ enable_break (struct svr4_info *info) @@ -1370,15 +1622,29 @@ enable_break (struct svr4_info *info)
/* Find the program interpreter; if not found, warn the user and drop /* Find the program interpreter; if not found, warn the user and drop
into the old breakpoint at symbol code. */ into the old breakpoint at symbol code. */
interp_name = find_program_interpreter (); interp_name = find_program_interpreter ();
@ -855,7 +886,7 @@ Index: gdb-6.8.91.20090917/gdb/solib-svr4.c
sym_addr = 0; sym_addr = 0;
@@ -1379,6 +1645,9 @@ enable_break (struct svr4_info *info) @@ -1395,6 +1661,9 @@ enable_break (struct svr4_info *info)
{ {
tmp_bfd = solib_bfd_open (interp_name); tmp_bfd = solib_bfd_open (interp_name);
} }
@ -865,7 +896,7 @@ Index: gdb-6.8.91.20090917/gdb/solib-svr4.c
if (tmp_bfd == NULL) if (tmp_bfd == NULL)
goto bkpt_at_symbol; goto bkpt_at_symbol;
@@ -1436,16 +1705,16 @@ enable_break (struct svr4_info *info) @@ -1452,16 +1721,16 @@ enable_break (struct svr4_info *info)
interp_sect = bfd_get_section_by_name (tmp_bfd, ".text"); interp_sect = bfd_get_section_by_name (tmp_bfd, ".text");
if (interp_sect) if (interp_sect)
{ {
@ -886,7 +917,7 @@ Index: gdb-6.8.91.20090917/gdb/solib-svr4.c
interp_plt_sect_high = interp_plt_sect_high =
interp_plt_sect_low + bfd_section_size (tmp_bfd, interp_sect); interp_plt_sect_low + bfd_section_size (tmp_bfd, interp_sect);
} }
@@ -1480,7 +1749,7 @@ enable_break (struct svr4_info *info) @@ -1496,7 +1765,7 @@ enable_break (struct svr4_info *info)
if (sym_addr != 0) if (sym_addr != 0)
{ {
@ -895,7 +926,7 @@ Index: gdb-6.8.91.20090917/gdb/solib-svr4.c
xfree (interp_name); xfree (interp_name);
return 1; return 1;
} }
@@ -1753,6 +2022,9 @@ svr4_solib_create_inferior_hook (void) @@ -1769,6 +2038,9 @@ svr4_solib_create_inferior_hook (void)
while (tp->stop_signal != TARGET_SIGNAL_TRAP); while (tp->stop_signal != TARGET_SIGNAL_TRAP);
inf->stop_soon = NO_STOP_QUIETLY; inf->stop_soon = NO_STOP_QUIETLY;
#endif /* defined(_SCO_DS) */ #endif /* defined(_SCO_DS) */
@ -905,7 +936,7 @@ Index: gdb-6.8.91.20090917/gdb/solib-svr4.c
} }
static void static void
@@ -1929,6 +2201,76 @@ svr4_lp64_fetch_link_map_offsets (void) @@ -1945,6 +2217,76 @@ svr4_lp64_fetch_link_map_offsets (void)
return lmp; return lmp;
} }
@ -982,7 +1013,7 @@ Index: gdb-6.8.91.20090917/gdb/solib-svr4.c
struct target_so_ops svr4_so_ops; struct target_so_ops svr4_so_ops;
@@ -1969,4 +2311,7 @@ _initialize_svr4_solib (void) @@ -1985,4 +2327,7 @@ _initialize_svr4_solib (void)
svr4_so_ops.same = svr4_same; svr4_so_ops.same = svr4_same;
observer_attach_inferior_exit (solib_svr4_inferior_exit); observer_attach_inferior_exit (solib_svr4_inferior_exit);
@ -990,10 +1021,10 @@ Index: gdb-6.8.91.20090917/gdb/solib-svr4.c
+ add_info ("linkmap", info_linkmap_command, + add_info ("linkmap", info_linkmap_command,
+ "Display the inferior's linkmap."); + "Display the inferior's linkmap.");
} }
Index: gdb-6.8.91.20090917/gdb/solib.c Index: gdb-6.8.91.20090925/gdb/solib.c
=================================================================== ===================================================================
--- gdb-6.8.91.20090917.orig/gdb/solib.c 2009-09-17 12:47:07.000000000 +0200 --- gdb-6.8.91.20090925.orig/gdb/solib.c 2009-09-25 10:25:38.000000000 +0200
+++ gdb-6.8.91.20090917/gdb/solib.c 2009-09-17 12:50:07.000000000 +0200 +++ gdb-6.8.91.20090925/gdb/solib.c 2009-09-25 10:25:45.000000000 +0200
@@ -82,6 +82,8 @@ set_solib_ops (struct gdbarch *gdbarch, @@ -82,6 +82,8 @@ set_solib_ops (struct gdbarch *gdbarch,
/* external data declarations */ /* external data declarations */
@ -1130,10 +1161,10 @@ Index: gdb-6.8.91.20090917/gdb/solib.c
+ NULL, NULL, + NULL, NULL,
+ &setdebuglist, &showdebuglist); + &setdebuglist, &showdebuglist);
} }
Index: gdb-6.8.91.20090917/gdb/solist.h Index: gdb-6.8.91.20090925/gdb/solist.h
=================================================================== ===================================================================
--- gdb-6.8.91.20090917.orig/gdb/solist.h 2009-09-17 12:47:07.000000000 +0200 --- gdb-6.8.91.20090925.orig/gdb/solist.h 2009-09-25 10:25:38.000000000 +0200
+++ gdb-6.8.91.20090917/gdb/solist.h 2009-09-17 12:50:07.000000000 +0200 +++ gdb-6.8.91.20090925/gdb/solist.h 2009-09-25 10:25:45.000000000 +0200
@@ -61,6 +61,8 @@ struct so_list @@ -61,6 +61,8 @@ struct so_list
bfd *abfd; bfd *abfd;
char symbols_loaded; /* flag: symbols read in yet? */ char symbols_loaded; /* flag: symbols read in yet? */
@ -1154,10 +1185,10 @@ Index: gdb-6.8.91.20090917/gdb/solist.h
+extern int debug_solib; +extern int debug_solib;
+ +
#endif #endif
Index: gdb-6.8.91.20090917/gdb/symfile-mem.c Index: gdb-6.8.91.20090925/gdb/symfile-mem.c
=================================================================== ===================================================================
--- gdb-6.8.91.20090917.orig/gdb/symfile-mem.c 2009-09-17 12:48:49.000000000 +0200 --- gdb-6.8.91.20090925.orig/gdb/symfile-mem.c 2009-09-25 10:25:38.000000000 +0200
+++ gdb-6.8.91.20090917/gdb/symfile-mem.c 2009-09-17 12:50:07.000000000 +0200 +++ gdb-6.8.91.20090925/gdb/symfile-mem.c 2009-09-25 10:25:45.000000000 +0200
@@ -115,7 +115,7 @@ symbol_file_add_from_memory (struct bfd @@ -115,7 +115,7 @@ symbol_file_add_from_memory (struct bfd
++i; ++i;
} }
@ -1167,10 +1198,10 @@ Index: gdb-6.8.91.20090917/gdb/symfile-mem.c
sai, OBJF_SHARED); sai, OBJF_SHARED);
/* This might change our ideas about frames already looked at. */ /* This might change our ideas about frames already looked at. */
Index: gdb-6.8.91.20090917/gdb/symfile.c Index: gdb-6.8.91.20090925/gdb/symfile.c
=================================================================== ===================================================================
--- gdb-6.8.91.20090917.orig/gdb/symfile.c 2009-09-17 12:48:50.000000000 +0200 --- gdb-6.8.91.20090925.orig/gdb/symfile.c 2009-09-25 10:25:39.000000000 +0200
+++ gdb-6.8.91.20090917/gdb/symfile.c 2009-09-17 12:50:07.000000000 +0200 +++ gdb-6.8.91.20090925/gdb/symfile.c 2009-09-25 10:25:45.000000000 +0200
@@ -49,6 +49,7 @@ @@ -49,6 +49,7 @@
#include "readline/readline.h" #include "readline/readline.h"
#include "gdb_assert.h" #include "gdb_assert.h"
@ -1250,7 +1281,7 @@ Index: gdb-6.8.91.20090917/gdb/symfile.c
free_all_objfiles (); free_all_objfiles ();
@@ -3369,6 +3378,8 @@ reread_symbols (void) @@ -3367,6 +3376,8 @@ reread_symbols (void)
/* Discard cleanups as symbol reading was successful. */ /* Discard cleanups as symbol reading was successful. */
discard_cleanups (old_cleanups); discard_cleanups (old_cleanups);
@ -1259,10 +1290,10 @@ Index: gdb-6.8.91.20090917/gdb/symfile.c
/* If the mtime has changed between the time we set new_modtime /* If the mtime has changed between the time we set new_modtime
and now, we *want* this to be out of date, so don't call stat and now, we *want* this to be out of date, so don't call stat
again now. */ again now. */
Index: gdb-6.8.91.20090917/gdb/target.h Index: gdb-6.8.91.20090925/gdb/target.h
=================================================================== ===================================================================
--- gdb-6.8.91.20090917.orig/gdb/target.h 2009-09-17 12:48:49.000000000 +0200 --- gdb-6.8.91.20090925.orig/gdb/target.h 2009-09-25 10:25:38.000000000 +0200
+++ gdb-6.8.91.20090917/gdb/target.h 2009-09-17 12:50:07.000000000 +0200 +++ gdb-6.8.91.20090925/gdb/target.h 2009-09-25 10:25:45.000000000 +0200
@@ -545,7 +545,7 @@ struct target_ops @@ -545,7 +545,7 @@ struct target_ops
Return -1 if there is insufficient buffer for a whole entry. Return -1 if there is insufficient buffer for a whole entry.
Return 1 if an entry was read into *TYPEP and *VALP. */ Return 1 if an entry was read into *TYPEP and *VALP. */
@ -1272,10 +1303,10 @@ Index: gdb-6.8.91.20090917/gdb/target.h
/* Search SEARCH_SPACE_LEN bytes beginning at START_ADDR for the /* Search SEARCH_SPACE_LEN bytes beginning at START_ADDR for the
sequence of bytes in PATTERN with length PATTERN_LEN. sequence of bytes in PATTERN with length PATTERN_LEN.
Index: gdb-6.8.91.20090917/gdb/symfile.h Index: gdb-6.8.91.20090925/gdb/symfile.h
=================================================================== ===================================================================
--- gdb-6.8.91.20090917.orig/gdb/symfile.h 2009-09-17 12:48:50.000000000 +0200 --- gdb-6.8.91.20090925.orig/gdb/symfile.h 2009-09-25 10:25:39.000000000 +0200
+++ gdb-6.8.91.20090917/gdb/symfile.h 2009-09-17 12:50:07.000000000 +0200 +++ gdb-6.8.91.20090925/gdb/symfile.h 2009-09-25 10:25:45.000000000 +0200
@@ -229,7 +229,13 @@ enum symfile_add_flags @@ -229,7 +229,13 @@ enum symfile_add_flags
SYMFILE_MAINLINE = 1 << 2, SYMFILE_MAINLINE = 1 << 2,
@ -1291,10 +1322,10 @@ Index: gdb-6.8.91.20090917/gdb/symfile.h
}; };
extern void syms_from_objfile (struct objfile *, extern void syms_from_objfile (struct objfile *,
Index: gdb-6.8.91.20090917/gdb/infcmd.c Index: gdb-6.8.91.20090925/gdb/infcmd.c
=================================================================== ===================================================================
--- gdb-6.8.91.20090917.orig/gdb/infcmd.c 2009-09-17 12:49:01.000000000 +0200 --- gdb-6.8.91.20090925.orig/gdb/infcmd.c 2009-09-25 10:25:39.000000000 +0200
+++ gdb-6.8.91.20090917/gdb/infcmd.c 2009-09-17 12:50:07.000000000 +0200 +++ gdb-6.8.91.20090925/gdb/infcmd.c 2009-09-25 10:25:45.000000000 +0200
@@ -2308,6 +2308,9 @@ attach_command_post_wait (char *args, in @@ -2308,6 +2308,9 @@ attach_command_post_wait (char *args, in
post_create_inferior (&current_target, from_tty); post_create_inferior (&current_target, from_tty);
@ -1305,10 +1336,10 @@ Index: gdb-6.8.91.20090917/gdb/infcmd.c
/* Install inferior's terminal modes. */ /* Install inferior's terminal modes. */
target_terminal_inferior (); target_terminal_inferior ();
Index: gdb-6.8.91.20090917/gdb/linux-tdep.c Index: gdb-6.8.91.20090925/gdb/linux-tdep.c
=================================================================== ===================================================================
--- gdb-6.8.91.20090917.orig/gdb/linux-tdep.c 2009-08-04 22:41:13.000000000 +0200 --- gdb-6.8.91.20090925.orig/gdb/linux-tdep.c 2009-08-04 22:41:13.000000000 +0200
+++ gdb-6.8.91.20090917/gdb/linux-tdep.c 2009-09-17 12:50:07.000000000 +0200 +++ gdb-6.8.91.20090925/gdb/linux-tdep.c 2009-09-25 10:25:45.000000000 +0200
@@ -163,5 +163,7 @@ in this session.\n")); @@ -163,5 +163,7 @@ in this session.\n"));
void void
_initialize_linux_tdep (void) _initialize_linux_tdep (void)

View File

@ -1,7 +1,7 @@
Index: gdb-6.8.50.20090909/gdb/corelow.c Index: gdb-6.8.91.20090925/gdb/corelow.c
=================================================================== ===================================================================
--- gdb-6.8.50.20090909.orig/gdb/corelow.c 2009-07-31 17:25:21.000000000 +0200 --- gdb-6.8.91.20090925.orig/gdb/corelow.c 2009-07-31 17:25:21.000000000 +0200
+++ gdb-6.8.50.20090909/gdb/corelow.c 2009-09-09 19:09:35.000000000 +0200 +++ gdb-6.8.91.20090925/gdb/corelow.c 2009-09-25 09:39:09.000000000 +0200
@@ -45,6 +45,10 @@ @@ -45,6 +45,10 @@
#include "exceptions.h" #include "exceptions.h"
#include "solib.h" #include "solib.h"
@ -13,7 +13,7 @@ Index: gdb-6.8.50.20090909/gdb/corelow.c
#ifndef O_LARGEFILE #ifndef O_LARGEFILE
@@ -273,6 +277,50 @@ add_to_thread_list (bfd *abfd, asection @@ -273,6 +277,52 @@ add_to_thread_list (bfd *abfd, asection
inferior_ptid = ptid; /* Yes, make it current */ inferior_ptid = ptid; /* Yes, make it current */
} }
@ -28,7 +28,7 @@ Index: gdb-6.8.50.20090909/gdb/corelow.c
+ char *build_id_filename; + char *build_id_filename;
+ struct cleanup *back_to; + struct cleanup *back_to;
+ +
+ if (exec_bfd != NULL) + if (exec_bfd != NULL || symfile_objfile != NULL)
+ return; + return;
+ +
+ if (target_auxv_search (&current_target, AT_ENTRY, &at_entry) <= 0) + if (target_auxv_search (&current_target, AT_ENTRY, &at_entry) <= 0)
@ -52,6 +52,8 @@ Index: gdb-6.8.50.20090909/gdb/corelow.c
+ make_cleanup (xfree, exec_filename); + make_cleanup (xfree, exec_filename);
+ exec_file_attach (exec_filename, from_tty); + exec_file_attach (exec_filename, from_tty);
+ symbol_file_add_main (exec_filename, from_tty); + symbol_file_add_main (exec_filename, from_tty);
+ if (symfile_objfile != NULL)
+ symfile_objfile->flags |= OBJF_BUILD_ID_CORE_LOADED;
+ } + }
+ else + else
+ debug_print_missing (_("the main executable file"), build_id_filename); + debug_print_missing (_("the main executable file"), build_id_filename);
@ -64,7 +66,7 @@ Index: gdb-6.8.50.20090909/gdb/corelow.c
/* This routine opens and sets up the core file bfd. */ /* This routine opens and sets up the core file bfd. */
static void static void
@@ -371,6 +419,12 @@ core_open (char *filename, int from_tty) @@ -371,6 +421,12 @@ core_open (char *filename, int from_tty)
push_target (&core_ops); push_target (&core_ops);
discard_cleanups (old_chain); discard_cleanups (old_chain);
@ -77,7 +79,7 @@ Index: gdb-6.8.50.20090909/gdb/corelow.c
add_inferior_silent (corelow_pid); add_inferior_silent (corelow_pid);
/* Do this before acknowledging the inferior, so if /* Do this before acknowledging the inferior, so if
@@ -878,4 +932,11 @@ _initialize_corelow (void) @@ -878,4 +934,11 @@ _initialize_corelow (void)
init_core_ops (); init_core_ops ();
add_target (&core_ops); add_target (&core_ops);
@ -89,11 +91,11 @@ Index: gdb-6.8.50.20090909/gdb/corelow.c
+ NULL, NULL, NULL, + NULL, NULL, NULL,
+ &setlist, &showlist); + &setlist, &showlist);
} }
Index: gdb-6.8.50.20090909/gdb/doc/gdb.texinfo Index: gdb-6.8.91.20090925/gdb/doc/gdb.texinfo
=================================================================== ===================================================================
--- gdb-6.8.50.20090909.orig/gdb/doc/gdb.texinfo 2009-09-09 19:09:31.000000000 +0200 --- gdb-6.8.91.20090925.orig/gdb/doc/gdb.texinfo 2009-09-25 09:29:58.000000000 +0200
+++ gdb-6.8.50.20090909/gdb/doc/gdb.texinfo 2009-09-09 19:09:35.000000000 +0200 +++ gdb-6.8.91.20090925/gdb/doc/gdb.texinfo 2009-09-25 09:29:58.000000000 +0200
@@ -13764,6 +13764,27 @@ information files. @@ -13895,6 +13895,27 @@ information files.
@end table @end table
@ -121,11 +123,11 @@ Index: gdb-6.8.50.20090909/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-6.8.50.20090909/gdb/solib-svr4.c Index: gdb-6.8.91.20090925/gdb/solib-svr4.c
=================================================================== ===================================================================
--- gdb-6.8.50.20090909.orig/gdb/solib-svr4.c 2009-09-09 19:05:56.000000000 +0200 --- gdb-6.8.91.20090925.orig/gdb/solib-svr4.c 2009-09-25 09:29:57.000000000 +0200
+++ gdb-6.8.50.20090909/gdb/solib-svr4.c 2009-09-09 19:09:35.000000000 +0200 +++ gdb-6.8.91.20090925/gdb/solib-svr4.c 2009-09-25 09:43:14.000000000 +0200
@@ -1101,9 +1101,33 @@ svr4_current_sos (void) @@ -1101,9 +1101,49 @@ svr4_current_sos (void)
safe_strerror (errcode)); safe_strerror (errcode));
else else
{ {
@ -154,18 +156,34 @@ Index: gdb-6.8.50.20090909/gdb/solib-svr4.c
+ xfree (name); + xfree (name);
+ } + }
+ else + else
+ {
+ debug_print_missing (new->so_name, build_id_filename); + debug_print_missing (new->so_name, build_id_filename);
+ +
+ /* In the case the main executable was found according to
+ its build-id (from a core file) prevent loading
+ a different build of a library with accidentally the
+ same SO_NAME.
+
+ It suppresses bogus backtraces (and prints "??" there
+ instead) if the on-disk files no longer match the
+ running program version. */
+
+ if (symfile_objfile != NULL
+ && (symfile_objfile->flags
+ & OBJF_BUILD_ID_CORE_LOADED) != 0)
+ new->so_name[0] = 0;
+ }
+
+ xfree (build_id_filename); + xfree (build_id_filename);
+ xfree (build_id); + xfree (build_id);
+ } + }
} }
xfree (buffer); xfree (buffer);
Index: gdb-6.8.50.20090909/gdb/symfile.c Index: gdb-6.8.91.20090925/gdb/symfile.c
=================================================================== ===================================================================
--- gdb-6.8.50.20090909.orig/gdb/symfile.c 2009-09-09 19:09:31.000000000 +0200 --- gdb-6.8.91.20090925.orig/gdb/symfile.c 2009-09-25 09:29:57.000000000 +0200
+++ gdb-6.8.50.20090909/gdb/symfile.c 2009-09-09 19:09:55.000000000 +0200 +++ gdb-6.8.91.20090925/gdb/symfile.c 2009-09-25 09:29:58.000000000 +0200
@@ -56,6 +56,7 @@ @@ -56,6 +56,7 @@
#include "elf-bfd.h" #include "elf-bfd.h"
#include "solib.h" #include "solib.h"
@ -174,7 +192,7 @@ Index: gdb-6.8.50.20090909/gdb/symfile.c
#include <sys/types.h> #include <sys/types.h>
#include <fcntl.h> #include <fcntl.h>
@@ -1174,16 +1175,65 @@ symbol_file_clear (int from_tty) @@ -1173,16 +1174,65 @@ symbol_file_clear (int from_tty)
printf_unfiltered (_("No symbol file now.\n")); printf_unfiltered (_("No symbol file now.\n"));
} }
@ -242,7 +260,7 @@ Index: gdb-6.8.50.20090909/gdb/symfile.c
{ {
struct build_id *retval; struct build_id *retval;
@@ -1199,6 +1249,348 @@ build_id_bfd_get (bfd *abfd) @@ -1198,6 +1248,348 @@ build_id_bfd_get (bfd *abfd)
return retval; return retval;
} }
@ -591,7 +609,7 @@ Index: gdb-6.8.50.20090909/gdb/symfile.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
@@ -1216,7 +1608,7 @@ build_id_verify (const char *filename, s @@ -1215,7 +1607,7 @@ build_id_verify (const char *filename, s
if (abfd == NULL) if (abfd == NULL)
return 0; return 0;
@ -600,7 +618,7 @@ Index: gdb-6.8.50.20090909/gdb/symfile.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);
@@ -1235,8 +1627,9 @@ build_id_verify (const char *filename, s @@ -1234,8 +1626,9 @@ build_id_verify (const char *filename, s
return retval; return retval;
} }
@ -612,7 +630,7 @@ Index: gdb-6.8.50.20090909/gdb/symfile.c
{ {
char *link, *s, *retval = NULL; char *link, *s, *retval = NULL;
gdb_byte *data = build_id->data; gdb_byte *data = build_id->data;
@@ -1244,7 +1637,9 @@ build_id_to_debug_filename (struct build @@ -1243,7 +1636,9 @@ build_id_to_debug_filename (struct build
/* DEBUG_FILE_DIRECTORY/.build-id/ab/cdef */ /* DEBUG_FILE_DIRECTORY/.build-id/ab/cdef */
link = xmalloc (strlen (debug_file_directory) + (sizeof "/.build-id/" - 1) + 1 link = xmalloc (strlen (debug_file_directory) + (sizeof "/.build-id/" - 1) + 1
@ -623,7 +641,7 @@ Index: gdb-6.8.50.20090909/gdb/symfile.c
s = link + sprintf (link, "%s/.build-id/", debug_file_directory); s = link + sprintf (link, "%s/.build-id/", debug_file_directory);
if (size > 0) if (size > 0)
{ {
@@ -1255,12 +1650,14 @@ build_id_to_debug_filename (struct build @@ -1254,12 +1649,14 @@ 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++);
@ -640,7 +658,7 @@ Index: gdb-6.8.50.20090909/gdb/symfile.c
if (retval != NULL && !build_id_verify (retval, build_id)) if (retval != NULL && !build_id_verify (retval, build_id))
{ {
@@ -1268,9 +1665,150 @@ build_id_to_debug_filename (struct build @@ -1267,9 +1664,150 @@ build_id_to_debug_filename (struct build
retval = NULL; retval = NULL;
} }
@ -791,7 +809,7 @@ Index: gdb-6.8.50.20090909/gdb/symfile.c
static char * static char *
get_debug_link_info (struct objfile *objfile, unsigned long *crc32_out) get_debug_link_info (struct objfile *objfile, unsigned long *crc32_out)
{ {
@@ -1353,32 +1891,36 @@ static char * @@ -1352,32 +1890,36 @@ static char *
find_separate_debug_file (struct objfile *objfile) find_separate_debug_file (struct objfile *objfile)
{ {
asection *sect; asection *sect;
@ -836,7 +854,7 @@ Index: gdb-6.8.50.20090909/gdb/symfile.c
} }
basename = get_debug_link_info (objfile, &crc32); basename = get_debug_link_info (objfile, &crc32);
@@ -1386,7 +1928,7 @@ find_separate_debug_file (struct objfile @@ -1385,7 +1927,7 @@ find_separate_debug_file (struct objfile
if (basename == NULL) if (basename == NULL)
/* There's no separate debug info, hence there's no way we could /* There's no separate debug info, hence there's no way we could
load it => no warning. */ load it => no warning. */
@ -845,7 +863,7 @@ Index: gdb-6.8.50.20090909/gdb/symfile.c
dir = xstrdup (objfile->name); dir = xstrdup (objfile->name);
@@ -1408,24 +1950,19 @@ find_separate_debug_file (struct objfile @@ -1407,24 +1949,19 @@ find_separate_debug_file (struct objfile
if (canon_name && strlen (canon_name) > i) if (canon_name && strlen (canon_name) > i)
i = strlen (canon_name); i = strlen (canon_name);
@ -877,7 +895,7 @@ Index: gdb-6.8.50.20090909/gdb/symfile.c
/* Then try in the subdirectory named DEBUG_SUBDIRECTORY. */ /* Then try in the subdirectory named DEBUG_SUBDIRECTORY. */
strcpy (debugfile, dir); strcpy (debugfile, dir);
@@ -1434,12 +1971,7 @@ find_separate_debug_file (struct objfile @@ -1433,12 +1970,7 @@ find_separate_debug_file (struct objfile
strcat (debugfile, basename); strcat (debugfile, basename);
if (separate_debug_file_exists (debugfile, crc32, objfile->name)) if (separate_debug_file_exists (debugfile, crc32, objfile->name))
@ -891,7 +909,7 @@ Index: gdb-6.8.50.20090909/gdb/symfile.c
/* Then try in the global debugfile directory. */ /* Then try in the global debugfile directory. */
strcpy (debugfile, debug_file_directory); strcpy (debugfile, debug_file_directory);
@@ -1448,12 +1980,7 @@ find_separate_debug_file (struct objfile @@ -1447,12 +1979,7 @@ find_separate_debug_file (struct objfile
strcat (debugfile, basename); strcat (debugfile, basename);
if (separate_debug_file_exists (debugfile, crc32, objfile->name)) if (separate_debug_file_exists (debugfile, crc32, objfile->name))
@ -905,7 +923,7 @@ Index: gdb-6.8.50.20090909/gdb/symfile.c
/* If the file is in the sysroot, try using its base path in the /* If the file is in the sysroot, try using its base path in the
global debugfile directory. */ global debugfile directory. */
@@ -1467,20 +1994,18 @@ find_separate_debug_file (struct objfile @@ -1466,20 +1993,18 @@ find_separate_debug_file (struct objfile
strcat (debugfile, basename); strcat (debugfile, basename);
if (separate_debug_file_exists (debugfile, crc32, objfile->name)) if (separate_debug_file_exists (debugfile, crc32, objfile->name))
@ -933,7 +951,7 @@ Index: gdb-6.8.50.20090909/gdb/symfile.c
} }
@@ -4231,4 +4756,16 @@ the global debug-file directory prepende @@ -4229,4 +4754,16 @@ the global debug-file directory prepende
NULL, NULL,
show_debug_file_directory, show_debug_file_directory,
&setlist, &showlist); &setlist, &showlist);
@ -950,10 +968,10 @@ Index: gdb-6.8.50.20090909/gdb/symfile.c
+ +
+ observer_attach_executable_changed (debug_print_executable_changed); + observer_attach_executable_changed (debug_print_executable_changed);
} }
Index: gdb-6.8.50.20090909/gdb/symfile.h Index: gdb-6.8.91.20090925/gdb/symfile.h
=================================================================== ===================================================================
--- gdb-6.8.50.20090909.orig/gdb/symfile.h 2009-09-09 19:05:56.000000000 +0200 --- gdb-6.8.91.20090925.orig/gdb/symfile.h 2009-09-25 09:29:57.000000000 +0200
+++ gdb-6.8.50.20090909/gdb/symfile.h 2009-09-09 19:09:35.000000000 +0200 +++ gdb-6.8.91.20090925/gdb/symfile.h 2009-09-25 09:29:58.000000000 +0200
@@ -381,6 +381,13 @@ extern int symfile_map_offsets_to_segmen @@ -381,6 +381,13 @@ extern int symfile_map_offsets_to_segmen
struct symfile_segment_data *get_symfile_segment_data (bfd *abfd); struct symfile_segment_data *get_symfile_segment_data (bfd *abfd);
void free_symfile_segment_data (struct symfile_segment_data *data); void free_symfile_segment_data (struct symfile_segment_data *data);
@ -968,10 +986,10 @@ Index: gdb-6.8.50.20090909/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-6.8.50.20090909/gdb/testsuite/lib/gdb.exp Index: gdb-6.8.91.20090925/gdb/testsuite/lib/gdb.exp
=================================================================== ===================================================================
--- gdb-6.8.50.20090909.orig/gdb/testsuite/lib/gdb.exp 2009-09-09 19:05:56.000000000 +0200 --- gdb-6.8.91.20090925.orig/gdb/testsuite/lib/gdb.exp 2009-09-25 09:29:57.000000000 +0200
+++ gdb-6.8.50.20090909/gdb/testsuite/lib/gdb.exp 2009-09-09 19:09:35.000000000 +0200 +++ gdb-6.8.91.20090925/gdb/testsuite/lib/gdb.exp 2009-09-25 09:29:58.000000000 +0200
@@ -1248,6 +1248,16 @@ proc default_gdb_start { } { @@ -1248,6 +1248,16 @@ proc default_gdb_start { } {
warning "Couldn't set the width to 0." warning "Couldn't set the width to 0."
} }
@ -989,10 +1007,10 @@ Index: gdb-6.8.50.20090909/gdb/testsuite/lib/gdb.exp
return 0; return 0;
} }
Index: gdb-6.8.50.20090909/gdb/testsuite/lib/mi-support.exp Index: gdb-6.8.91.20090925/gdb/testsuite/lib/mi-support.exp
=================================================================== ===================================================================
--- gdb-6.8.50.20090909.orig/gdb/testsuite/lib/mi-support.exp 2009-09-09 19:05:56.000000000 +0200 --- gdb-6.8.91.20090925.orig/gdb/testsuite/lib/mi-support.exp 2009-09-15 20:51:26.000000000 +0200
+++ gdb-6.8.50.20090909/gdb/testsuite/lib/mi-support.exp 2009-09-09 19:09:35.000000000 +0200 +++ gdb-6.8.91.20090925/gdb/testsuite/lib/mi-support.exp 2009-09-25 09:29:58.000000000 +0200
@@ -221,6 +221,16 @@ proc default_mi_gdb_start { args } { @@ -221,6 +221,16 @@ proc default_mi_gdb_start { args } {
} }
} }
@ -1010,3 +1028,18 @@ Index: gdb-6.8.50.20090909/gdb/testsuite/lib/mi-support.exp
detect_async detect_async
Index: gdb-6.8.91.20090925/gdb/objfiles.h
===================================================================
--- gdb-6.8.91.20090925.orig/gdb/objfiles.h 2009-09-25 09:29:57.000000000 +0200
+++ gdb-6.8.91.20090925/gdb/objfiles.h 2009-09-25 09:38:27.000000000 +0200
@@ -428,6 +428,10 @@ struct objfile
#define OBJF_MAIN (1 << 7)
+/* This file was loaded according to the BUILD_ID_CORE_LOADS rules. */
+
+#define OBJF_BUILD_ID_CORE_LOADED (1 << 12)
+
/* The object file that the main symbol table was loaded from (e.g. the
argument to the "symbol-file" or "file" command). */

View File

@ -14,7 +14,7 @@ Version: 6.8.91.20090925
# 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: 1%{?_with_upstream:.upstream}%{?dist} Release: 2%{?_with_upstream:.upstream}%{?dist}
License: GPLv3+ License: GPLv3+
Group: Development/Debuggers Group: Development/Debuggers
@ -847,6 +847,9 @@ fi
%endif %endif
%changelog %changelog
* Fri Sep 25 2009 Jan Kratochvil <jan.kratochvil@redhat.com> - 6.8.91.20090925-2
- Fix buildid-loading libs w/matching name but different build-id (BZ 524572).
* Fri Sep 25 2009 Jan Kratochvil <jan.kratochvil@redhat.com> - 6.8.91.20090925-1 * Fri Sep 25 2009 Jan Kratochvil <jan.kratochvil@redhat.com> - 6.8.91.20090925-1
- Upgrade to the FSF GDB gdb-7.0 snapshot: 6.8.91.20090925 - Upgrade to the FSF GDB gdb-7.0 snapshot: 6.8.91.20090925
- archer-jankratochvil-fedora12 commit: 4338ea85c798007c32594032f602db9fd230eba9 - archer-jankratochvil-fedora12 commit: 4338ea85c798007c32594032f602db9fd230eba9