OBS User unknown 2007-06-08 15:35:24 +00:00 committed by Git OBS Bridge
parent 9712638660
commit 549f54f140
6 changed files with 183 additions and 28 deletions

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:03271e1e1892a04e57f7d702d20b3fd981846d6dc5cead52d5babed95052c7bc
size 14273840

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6fc6022108ab443606c64552f208072dd90d59f4a031e62ec94963b99fe5a708
size 14498976

View File

@ -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

View File

@ -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

146
libunwind-frame.diff Normal file
View File

@ -0,0 +1,146 @@
2007-06-08 Andreas Schwab <schwab@suse.de>
* 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);

View File

@ -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.