diff --git a/gdb-6.6.50.20070511-cvs.tar.bz2 b/gdb-6.6.50.20070511-cvs.tar.bz2 deleted file mode 100644 index 97135f3..0000000 --- a/gdb-6.6.50.20070511-cvs.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:03271e1e1892a04e57f7d702d20b3fd981846d6dc5cead52d5babed95052c7bc -size 14273840 diff --git a/gdb-6.6.50.20070608-cvs.tar.bz2 b/gdb-6.6.50.20070608-cvs.tar.bz2 new file mode 100644 index 0000000..d9d16be --- /dev/null +++ b/gdb-6.6.50.20070608-cvs.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6fc6022108ab443606c64552f208072dd90d59f4a031e62ec94963b99fe5a708 +size 14498976 diff --git a/gdb.changes b/gdb.changes index 5af49f5..f5ce113 100644 --- a/gdb.changes +++ b/gdb.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Fri Jun 8 17:15:17 CEST 2007 - schwab@suse.de + +- Update to head of trunk. + ------------------------------------------------------------------- Fri May 11 15:22:37 CEST 2007 - schwab@suse.de diff --git a/gdb.spec b/gdb.spec index 0e5fb24..2e95c43 100644 --- a/gdb.spec +++ b/gdb.spec @@ -1,5 +1,5 @@ # -# spec file for package gdb (Version 6.6.50.20070511) +# spec file for package gdb (Version 6.6.50.20070608) # # Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany. # This file and all modifications and additions to the pristine @@ -23,7 +23,7 @@ License: GNU General Public License (GPL) Group: Development/Tools/Debuggers Autoreqprov: on PreReq: %{install_info_prereq} -Version: 6.6.50.20070511 +Version: 6.6.50.20070608 Release: 1 Summary: The GNU Debugger Source: gdb-%{version}-cvs.tar.bz2 @@ -39,6 +39,7 @@ Patch9: loader_break.diff Patch10: ppc-long-double.diff Patch11: elf-symtab-read.diff Patch12: find-pc-sect-line.diff +Patch13: libunwind-frame.diff BuildRoot: %{_tmppath}/%{name}-%{version}-build %description @@ -81,6 +82,7 @@ cd .. %patch10 %patch11 %patch12 +%patch13 %build CFLAGS="$RPM_OPT_FLAGS" \ @@ -136,6 +138,8 @@ rm -rf $RPM_BUILD_ROOT %endif %changelog +* Fri Jun 08 2007 - schwab@suse.de +- Update to head of trunk. * Fri May 11 2007 - schwab@suse.de - Update to head of trunk. * Fri Apr 13 2007 - schwab@suse.de diff --git a/libunwind-frame.diff b/libunwind-frame.diff new file mode 100644 index 0000000..48d05c7 --- /dev/null +++ b/libunwind-frame.diff @@ -0,0 +1,146 @@ +2007-06-08 Andreas Schwab + + * frame-unwind.h (frame_dealloc_cache_ftype): Define. + (struct frame_unwind): Add dealloc_cache. + * frame.c (reinit_frame_cache): Call dealloc_cache on all caches. + + * libunwind-frame.h (libunwind_frame_dealloc_cache): Declare. + * libunwind-frame.c (libunwind_frame_dealloc_cache): Define. + (libunwind_frame_unwind): Set dealloc_cache. + * ia64-tdep.c (ia64_libunwind_frame_unwind): Set dealloc_cache. + +Index: gdb/frame-unwind.h +=================================================================== +RCS file: /cvs/src/src/gdb/frame-unwind.h,v +retrieving revision 1.16 +diff -u -a -p -r1.16 gdb/frame-unwind.h +--- gdb/frame-unwind.h 9 Jan 2007 17:58:50 -0000 1.16 ++++ gdb/frame-unwind.h 8 Jun 2007 14:25:33 -0000 +@@ -125,6 +125,10 @@ typedef void (frame_prev_register_ftype) + typedef CORE_ADDR (frame_prev_pc_ftype) (struct frame_info *next_frame, + void **this_prologue_cache); + ++/* Deallocate extra memory associated with the frame cache if any. */ ++ ++typedef void (frame_dealloc_cache_ftype) (struct frame_info *self, ++ void *this_cache); + + struct frame_unwind + { +@@ -138,6 +142,7 @@ struct frame_unwind + const struct frame_data *unwind_data; + frame_sniffer_ftype *sniffer; + frame_prev_pc_ftype *prev_pc; ++ frame_dealloc_cache_ftype *dealloc_cache; + }; + + /* Register a frame unwinder, _prepending_ it to the front of the +Index: gdb/frame.c +=================================================================== +RCS file: /cvs/src/src/gdb/frame.c,v +retrieving revision 1.227 +diff -u -a -p -r1.227 gdb/frame.c +--- gdb/frame.c 6 Jun 2007 15:26:28 -0000 1.227 ++++ gdb/frame.c 8 Jun 2007 14:25:33 -0000 +@@ -1077,6 +1077,17 @@ frame_observer_target_changed (struct ta + void + reinit_frame_cache (void) + { ++ struct frame_info *fi; ++ ++ /* Tear down all frame caches. */ ++ for (fi = current_frame; fi != NULL; fi = fi->prev) ++ { ++ if (fi->prologue_cache && fi->unwind->dealloc_cache) ++ fi->unwind->dealloc_cache (fi, fi->prologue_cache); ++ if (fi->base_cache && fi->base->unwind->dealloc_cache) ++ fi->base->unwind->dealloc_cache (fi, fi->base_cache); ++ } ++ + /* Since we can't really be sure what the first object allocated was */ + obstack_free (&frame_cache_obstack, 0); + obstack_init (&frame_cache_obstack); +Index: gdb/ia64-tdep.c +=================================================================== +RCS file: /cvs/src/src/gdb/ia64-tdep.c,v +retrieving revision 1.151 +diff -u -a -p -r1.151 gdb/ia64-tdep.c +--- gdb/ia64-tdep.c 12 May 2007 00:07:45 -0000 1.151 ++++ gdb/ia64-tdep.c 8 Jun 2007 14:25:33 -0000 +@@ -2778,7 +2778,11 @@ static const struct frame_unwind ia64_li + { + NORMAL_FRAME, + ia64_libunwind_frame_this_id, +- ia64_libunwind_frame_prev_register ++ ia64_libunwind_frame_prev_register, ++ NULL, ++ NULL, ++ NULL, ++ libunwind_frame_dealloc_cache + }; + + static const struct frame_unwind * +Index: gdb/libunwind-frame.c +=================================================================== +RCS file: /cvs/src/src/gdb/libunwind-frame.c,v +retrieving revision 1.15 +diff -u -a -p -r1.15 gdb/libunwind-frame.c +--- gdb/libunwind-frame.c 6 Jun 2007 19:35:02 -0000 1.15 ++++ gdb/libunwind-frame.c 8 Jun 2007 14:25:34 -0000 +@@ -65,6 +65,7 @@ struct libunwind_frame_cache + CORE_ADDR base; + CORE_ADDR func_addr; + unw_cursor_t cursor; ++ unw_addr_space_t as; + }; + + /* We need to qualify the function names with a platform-specific prefix to match +@@ -187,11 +188,20 @@ libunwind_frame_cache (struct frame_info + } + + cache->base = (CORE_ADDR)fp; ++ cache->as = as; + + *this_cache = cache; + return cache; + } + ++void ++libunwind_frame_dealloc_cache (struct frame_info *self, void *this_cache) ++{ ++ struct libunwind_frame_cache *cache = this_cache; ++ if (cache->as) ++ unw_destroy_addr_space_p (cache->as); ++} ++ + unw_word_t + libunwind_find_dyn_list (unw_addr_space_t as, unw_dyn_info_t *di, void *arg) + { +@@ -202,7 +212,11 @@ static const struct frame_unwind libunwi + { + NORMAL_FRAME, + libunwind_frame_this_id, +- libunwind_frame_prev_register ++ libunwind_frame_prev_register, ++ NULL, ++ NULL, ++ NULL, ++ libunwind_frame_dealloc_cache + }; + + /* Verify if there is sufficient libunwind information for the frame to use +Index: gdb/libunwind-frame.h +=================================================================== +RCS file: /cvs/src/src/gdb/libunwind-frame.h,v +retrieving revision 1.8 +diff -u -a -p -r1.8 gdb/libunwind-frame.h +--- gdb/libunwind-frame.h 12 May 2007 00:07:45 -0000 1.8 ++++ gdb/libunwind-frame.h 8 Jun 2007 14:25:34 -0000 +@@ -53,6 +53,7 @@ void libunwind_frame_prev_register (stru + int regnum, int *optimizedp, + enum lval_type *lvalp, CORE_ADDR *addrp, + int *realnump, gdb_byte *valuep); ++void libunwind_frame_dealloc_cache (struct frame_info *self, void *cache); + CORE_ADDR libunwind_frame_base_address (struct frame_info *next_frame, void **this_cache); + + int libunwind_is_initialized (void); diff --git a/pie-relocate.diff b/pie-relocate.diff index d7fb321..6b70d48 100644 --- a/pie-relocate.diff +++ b/pie-relocate.diff @@ -1,6 +1,6 @@ --- gdb/Makefile.in +++ gdb/Makefile.in -@@ -2430,7 +2430,7 @@ +@@ -2426,7 +2426,7 @@ $(objfiles_h) $(gdb_stabs_h) $(target_h) $(bcache_h) $(mdebugread_h) \ $(gdb_assert_h) $(gdb_stat_h) $(gdb_obstack_h) $(gdb_string_h) \ $(hashtab_h) $(breakpoint_h) $(block_h) $(dictionary_h) $(source_h) \ @@ -9,7 +9,7 @@ observer.o: observer.c $(defs_h) $(observer_h) $(command_h) $(gdbcmd_h) \ $(observer_inc) obsd-tdep.o: obsd-tdep.c $(defs_h) $(frame_h) $(symtab_h) $(obsd_tdep_h) -@@ -2618,9 +2618,9 @@ +@@ -2612,9 +2612,9 @@ $(bcache_h) $(regcache_h) solib-svr4.o: solib-svr4.c $(defs_h) $(elf_external_h) $(elf_common_h) \ $(elf_mips_h) $(symtab_h) $(bfd_h) $(symfile_h) $(objfiles_h) \ @@ -20,10 +20,10 @@ + $(exec_h) $(auxv_h) sol-thread.o: sol-thread.c $(defs_h) $(gdbthread_h) $(target_h) \ $(inferior_h) $(gdb_stat_h) $(gdbcmd_h) $(gdbcore_h) $(regcache_h) \ - $(solib_h) $(symfile_h) $(gdb_string_h) $(gregset_h) + $(solib_h) $(symfile_h) $(observer_h) $(gdb_string_h) $(gregset_h) --- gdb/breakpoint.c +++ gdb/breakpoint.c -@@ -3912,6 +3912,7 @@ +@@ -3900,6 +3900,7 @@ printf_filtered ("%s%s ", ((b->enable_state == bp_disabled || b->enable_state == bp_shlib_disabled || @@ -31,7 +31,7 @@ b->enable_state == bp_call_disabled) ? " (disabled)" : b->enable_state == bp_permanent -@@ -4588,6 +4589,60 @@ +@@ -4586,6 +4587,60 @@ } } @@ -92,7 +92,7 @@ static void solib_load_unload_1 (char *hookname, int tempflag, char *dll_pathname, char *cond_string, enum bptype bp_kind) -@@ -7025,6 +7080,7 @@ +@@ -7023,6 +7078,7 @@ && !b->loc->duplicate && b->enable_state != bp_disabled && b->enable_state != bp_shlib_disabled @@ -100,7 +100,7 @@ && !b->pending && b->enable_state != bp_call_disabled) { -@@ -7243,7 +7299,8 @@ +@@ -7241,7 +7297,8 @@ break; save_enable = b->enable_state; @@ -120,7 +120,7 @@ bp_permanent /* There is a breakpoint instruction hard-wired into the target's code. Don't try to write another breakpoint instruction on top of it, or restore -@@ -797,8 +798,12 @@ +@@ -793,8 +794,12 @@ extern void disable_breakpoints_in_shlibs (int silent); @@ -135,7 +135,7 @@ extern void create_solib_unload_event_breakpoint (char *, int, --- gdb/dwarf2read.c +++ gdb/dwarf2read.c -@@ -1230,7 +1230,7 @@ +@@ -1237,7 +1237,7 @@ else dwarf2_per_objfile->loc_buffer = NULL; @@ -157,7 +157,7 @@ mainline = 0; --- gdb/infrun.c +++ gdb/infrun.c -@@ -2239,6 +2239,11 @@ +@@ -2223,6 +2223,11 @@ code segments in shared libraries might be mapped in now. */ re_enable_breakpoints_in_shlibs (); @@ -352,7 +352,7 @@ /* Return 1 if PC lies in the dynamic symbol resolution code of the SVR4 run time loader. */ static CORE_ADDR interp_text_sect_low; -@@ -1378,6 +1416,8 @@ +@@ -1374,6 +1412,8 @@ while (stop_signal != TARGET_SIGNAL_TRAP); stop_soon = NO_STOP_QUIETLY; #endif /* defined(_SCO_DS) */ @@ -363,7 +363,7 @@ static void --- gdb/solib.c +++ gdb/solib.c -@@ -384,15 +384,37 @@ +@@ -394,15 +394,37 @@ /* Have we already loaded this shared object? */ ALL_OBJFILES (so->objfile) { @@ -404,7 +404,7 @@ free_section_addr_info (sap); return (1); -@@ -573,28 +595,7 @@ +@@ -583,28 +605,7 @@ /* Fill in the rest of each of the `struct so_list' nodes. */ for (i = inferior; i; i = i->next) { @@ -434,7 +434,7 @@ /* Notify any observer that the shared object has been loaded now that we've added it to GDB's tables. */ -@@ -690,6 +691,39 @@ +@@ -700,6 +701,39 @@ } } @@ -509,7 +509,7 @@ reinit_frame_cache (); --- gdb/symfile.c +++ gdb/symfile.c -@@ -709,7 +709,7 @@ +@@ -708,7 +708,7 @@ /* Now either addrs or offsets is non-zero. */ @@ -518,7 +518,7 @@ { /* We will modify the main symbol table, make sure that all its users will be cleaned up if an error occurs during symbol reading. */ -@@ -737,7 +737,7 @@ +@@ -736,7 +736,7 @@ We no longer warn if the lowest section is not a text segment (as happens for the PA64 port. */ @@ -527,7 +527,7 @@ { asection *lower_sect; asection *sect; -@@ -906,14 +906,14 @@ +@@ -905,14 +905,14 @@ /* If this is the main symbol file we have to clean up all users of the old main symbol file. Otherwise it is sufficient to fixup all the breakpoints that may have been redefined by this symbol file. */ @@ -544,7 +544,7 @@ { breakpoint_re_set (); } -@@ -959,7 +959,7 @@ +@@ -958,7 +958,7 @@ interactively wiping out any existing symbols. */ if ((have_full_symbols () || have_partial_symbols ()) @@ -553,7 +553,7 @@ && from_tty && !query ("Load new symbol table from \"%s\"? ", name)) error (_("Not confirmed.")); -@@ -1140,6 +1140,11 @@ +@@ -1138,6 +1138,11 @@ symfile_objfile->name) : !query (_("Discard symbol table? ")))) error (_("Not confirmed.")); @@ -565,7 +565,7 @@ free_all_objfiles (); /* solib descriptors may have handles to objfiles. Since their -@@ -2279,6 +2284,8 @@ +@@ -2277,6 +2282,8 @@ /* Discard cleanups as symbol reading was successful. */ discard_cleanups (old_cleanups); @@ -574,10 +574,10 @@ /* 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 again now. */ -@@ -2646,6 +2653,7 @@ +@@ -2643,6 +2650,7 @@ + set_default_breakpoint (0, 0, 0, 0); clear_pc_function_cache (); - if (deprecated_target_new_objfile_hook) - deprecated_target_new_objfile_hook (NULL); + observer_notify_new_objfile (NULL); + varobj_refresh (); /* Clear globals which might have pointed into a removed objfile.