This commit is contained in:
parent
9712638660
commit
549f54f140
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:03271e1e1892a04e57f7d702d20b3fd981846d6dc5cead52d5babed95052c7bc
|
||||
size 14273840
|
3
gdb-6.6.50.20070608-cvs.tar.bz2
Normal file
3
gdb-6.6.50.20070608-cvs.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6fc6022108ab443606c64552f208072dd90d59f4a031e62ec94963b99fe5a708
|
||||
size 14498976
|
@ -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
|
||||
|
||||
|
8
gdb.spec
8
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
|
||||
|
146
libunwind-frame.diff
Normal file
146
libunwind-frame.diff
Normal 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);
|
@ -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.
|
||||
|
Loading…
x
Reference in New Issue
Block a user