- Rebase to FSF GDB 7.2.50.20110206 (which is a 7.3 pre-release).

This commit is contained in:
Jan Kratochvil 2011-02-06 22:46:57 +01:00
parent c00fd45a3e
commit cb641a7fa4
7 changed files with 158 additions and 213 deletions

2
.gitignore vendored
View File

@ -1,2 +1,2 @@
/libstdc++-v3-python-r155978.tar.bz2
/gdb-7.2.50.20110125.tar.bz2
/gdb-7.2.50.20110206.tar.bz2

View File

@ -1,8 +1,8 @@
Index: gdb-7.2.50.20101116/gdb/breakpoint.c
Index: gdb-7.2.50.20110206/gdb/breakpoint.c
===================================================================
--- gdb-7.2.50.20101116.orig/gdb/breakpoint.c 2010-11-16 07:53:58.000000000 +0100
+++ gdb-7.2.50.20101116/gdb/breakpoint.c 2010-11-16 08:28:53.000000000 +0100
@@ -10249,6 +10249,50 @@ update_breakpoint_locations (struct brea
--- gdb-7.2.50.20110206.orig/gdb/breakpoint.c 2011-02-06 20:39:24.000000000 +0100
+++ gdb-7.2.50.20110206/gdb/breakpoint.c 2011-02-06 20:39:44.000000000 +0100
@@ -10587,6 +10587,50 @@ update_breakpoint_locations (struct brea
update_global_location_list (1);
}
@ -53,23 +53,23 @@ Index: gdb-7.2.50.20101116/gdb/breakpoint.c
/* Reset a breakpoint given it's struct breakpoint * BINT.
The value we return ends up being the return value from catch_errors.
Unused in this case. */
Index: gdb-7.2.50.20101116/gdb/breakpoint.h
Index: gdb-7.2.50.20110206/gdb/breakpoint.h
===================================================================
--- gdb-7.2.50.20101116.orig/gdb/breakpoint.h 2010-11-16 07:53:58.000000000 +0100
+++ gdb-7.2.50.20101116/gdb/breakpoint.h 2010-11-16 08:29:06.000000000 +0100
@@ -1128,4 +1128,7 @@ extern void end_rbreak_breakpoints (void
extern struct breakpoint *iterate_over_breakpoints (int (*) (struct breakpoint *,
void *), void *);
--- gdb-7.2.50.20110206.orig/gdb/breakpoint.h 2011-02-06 20:39:24.000000000 +0100
+++ gdb-7.2.50.20110206/gdb/breakpoint.h 2011-02-06 20:40:00.000000000 +0100
@@ -1194,4 +1194,7 @@ extern struct breakpoint *iterate_over_b
extern int user_breakpoint_p (struct breakpoint *);
+extern void breakpoints_relocate (struct objfile *objfile,
+ struct section_offsets *delta);
+
#endif /* !defined (BREAKPOINT_H) */
Index: gdb-7.2.50.20101116/gdb/objfiles.c
Index: gdb-7.2.50.20110206/gdb/objfiles.c
===================================================================
--- gdb-7.2.50.20101116.orig/gdb/objfiles.c 2010-10-17 19:45:16.000000000 +0200
+++ gdb-7.2.50.20101116/gdb/objfiles.c 2010-11-16 08:28:53.000000000 +0100
@@ -844,6 +844,11 @@ objfile_relocate1 (struct objfile *objfi
--- gdb-7.2.50.20110206.orig/gdb/objfiles.c 2011-01-10 21:38:49.000000000 +0100
+++ gdb-7.2.50.20110206/gdb/objfiles.c 2011-02-06 20:39:44.000000000 +0100
@@ -846,6 +846,11 @@ objfile_relocate1 (struct objfile *objfi
obj_section_addr (s));
}

View File

@ -2,7 +2,7 @@ http://sourceware.org/gdb/wiki/ProjectArcher
http://sourceware.org/gdb/wiki/ArcherBranchManagement
GIT snapshot:
commit b3fa51e30637989ca4a8ee4763ba921322a1bd0d
commit 8d1fce85d351ec7fec64ed392932fe59148b83fc
branch `archer' - the merge of branches:
archer-jankratochvil-vla
@ -14,10 +14,10 @@ archer-tromey-python
diff --git a/gdb/Makefile.in b/gdb/Makefile.in
index 36cc734..977fe0c 100644
index 66521a2..66a6fc2 100644
--- a/gdb/Makefile.in
+++ b/gdb/Makefile.in
@@ -783,7 +783,8 @@ annotate.h sim-regno.h dictionary.h dfp.h main.h frame-unwind.h \
@@ -807,7 +807,8 @@ annotate.h sim-regno.h dictionary.h dfp.h main.h frame-unwind.h \
remote-fileio.h i386-linux-tdep.h vax-tdep.h objc-lang.h \
sentinel-frame.h bcache.h symfile.h windows-tdep.h linux-tdep.h \
gdb_usleep.h jit.h xml-syscall.h ada-operator.inc microblaze-tdep.h \
@ -27,7 +27,7 @@ index 36cc734..977fe0c 100644
# Header files that already have srcdir in them, or which are in objdir.
@@ -1289,6 +1290,12 @@ stamp-h: $(srcdir)/config.in config.status
@@ -1313,6 +1314,12 @@ stamp-h: $(srcdir)/config.in config.status
CONFIG_LINKS= \
$(SHELL) config.status
@ -392,7 +392,7 @@ index b9aaf54..e1f3242 100644
/* Return the innermost stack frame executing inside of BLOCK, or NULL
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index 8d0692b..373830f 100644
index 656dedd..2a5f761 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -62,6 +62,7 @@
@ -424,7 +424,7 @@ index 8d0692b..373830f 100644
/* Assuming we're creating a static tracepoint, does S look like a
static tracepoint marker spec ("-m MARKER_ID")? */
#define is_marker_spec(s) \
@@ -1269,6 +1277,22 @@ watchpoint_in_thread_scope (struct breakpoint *b)
@@ -1309,6 +1317,22 @@ watchpoint_in_thread_scope (struct breakpoint *b)
&& !is_executing (inferior_ptid)));
}
@ -447,7 +447,7 @@ index 8d0692b..373830f 100644
/* Assuming that B is a watchpoint:
- Reparse watchpoint expression, if REPARSE is non-zero
- Evaluate expression and store the result in B->val
@@ -1328,12 +1352,17 @@ update_watchpoint (struct breakpoint *b, int reparse)
@@ -1368,12 +1392,17 @@ update_watchpoint (struct breakpoint *b, int reparse)
struct frame_id saved_frame_id;
int frame_saved;
@ -462,10 +462,10 @@ index 8d0692b..373830f 100644
+ if (b->pspace != current_program_space)
+ return;
+
/* We don't free locations. They are stored in bp_location array
and update_global_locations will eventually delete them and
/* We don't free locations. They are stored in the bp_location array
and update_global_location_list will eventually delete them and
remove breakpoints if needed. */
@@ -1555,13 +1584,7 @@ update_watchpoint (struct breakpoint *b, int reparse)
@@ -1595,13 +1624,7 @@ update_watchpoint (struct breakpoint *b, int reparse)
Watchpoint %d deleted because the program has left the block\n\
in which its expression is valid.\n"),
b->number);
@ -480,7 +480,7 @@ index 8d0692b..373830f 100644
}
/* Restore the selected frame. */
@@ -1952,6 +1975,7 @@ insert_breakpoint_locations (void)
@@ -1992,6 +2015,7 @@ insert_breakpoint_locations (void)
int val = 0;
int disabled_breaks = 0;
int hw_breakpoint_error = 0;
@ -488,7 +488,7 @@ index 8d0692b..373830f 100644
struct ui_file *tmp_error_stream = mem_fileopen ();
struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
@@ -1979,9 +2003,13 @@ insert_breakpoint_locations (void)
@@ -2019,9 +2043,13 @@ insert_breakpoint_locations (void)
/* For targets that support global breakpoints, there's no need
to select an inferior to insert breakpoint to. In fact, even
if we aren't attached to any process yet, we should still
@ -504,7 +504,7 @@ index 8d0692b..373830f 100644
continue;
val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
@@ -2005,13 +2033,19 @@ insert_breakpoint_locations (void)
@@ -2045,13 +2073,19 @@ insert_breakpoint_locations (void)
if (bpt->disposition == disp_del_at_next_stop)
continue;
@ -530,7 +530,7 @@ index 8d0692b..373830f 100644
if (some_failed)
{
for (loc = bpt->loc; loc; loc = loc->next)
@@ -3461,6 +3495,8 @@ print_it_typical (bpstat bs)
@@ -3501,6 +3535,8 @@ print_it_typical (bpstat bs)
case bp_tracepoint:
case bp_fast_tracepoint:
case bp_jit_event:
@ -539,7 +539,7 @@ index 8d0692b..373830f 100644
default:
result = PRINT_UNKNOWN;
break;
@@ -3682,6 +3718,8 @@ watchpoint_check (void *p)
@@ -3722,6 +3758,8 @@ watchpoint_check (void *p)
gdb_assert (bs->breakpoint_at != NULL);
b = bs->breakpoint_at;
@ -548,7 +548,7 @@ index 8d0692b..373830f 100644
/* If this is a local watchpoint, we only want to check if the
watchpoint frame is in scope if the current thread is the thread
that was used to create the watchpoint. */
@@ -3791,13 +3829,7 @@ watchpoint_check (void *p)
@@ -3831,13 +3869,7 @@ watchpoint_check (void *p)
" deleted because the program has left the block in\n\
which its expression is valid.\n");
@ -563,7 +563,7 @@ index 8d0692b..373830f 100644
return WP_DELETED;
}
@@ -4002,9 +4034,7 @@ bpstat_check_watchpoint (bpstat bs)
@@ -4042,9 +4074,7 @@ bpstat_check_watchpoint (bpstat bs)
case 0:
/* Error from catch_errors. */
printf_filtered (_("Watchpoint %d deleted.\n"), b->number);
@ -574,7 +574,7 @@ index 8d0692b..373830f 100644
/* We've already printed what needs to be printed. */
bs->print_it = print_it_done;
break;
@@ -4210,7 +4240,7 @@ bpstat_stop_status (struct address_space *aspace,
@@ -4250,7 +4280,7 @@ bpstat_stop_status (struct address_space *aspace,
watchpoint as triggered so that we will handle the
out-of-scope event. We'll get to the watchpoint next
iteration. */
@ -583,7 +583,7 @@ index 8d0692b..373830f 100644
b->related_breakpoint->watchpoint_triggered = watch_triggered_yes;
}
}
@@ -4332,7 +4362,7 @@ handle_jit_event (void)
@@ -4372,7 +4402,7 @@ handle_jit_event (void)
/* Decide what infrun needs to do with this bpstat. */
struct bpstat_what
@ -592,7 +592,7 @@ index 8d0692b..373830f 100644
{
struct bpstat_what retval;
/* We need to defer calling `solib_add', as adding new symbols
@@ -4340,12 +4370,13 @@ bpstat_what (bpstat bs)
@@ -4380,12 +4410,13 @@ bpstat_what (bpstat bs)
and hence may clear unprocessed entries in the BS chain. */
int shlib_event = 0;
int jit_event = 0;
@ -607,7 +607,7 @@ index 8d0692b..373830f 100644
{
/* Extract this BS's action. After processing each BS, we check
if its action overrides all we've seem so far. */
@@ -4475,6 +4506,20 @@ bpstat_what (bpstat bs)
@@ -4515,6 +4546,20 @@ bpstat_what (bpstat bs)
out already. */
internal_error (__FILE__, __LINE__,
_("bpstat_what: tracepoint encountered"));
@ -628,7 +628,7 @@ index 8d0692b..373830f 100644
default:
internal_error (__FILE__, __LINE__,
_("bpstat_what: unhandled bptype %d"), (int) bptype);
@@ -4512,6 +4557,21 @@ bpstat_what (bpstat bs)
@@ -4552,6 +4597,21 @@ bpstat_what (bpstat bs)
handle_jit_event ();
}
@ -650,7 +650,7 @@ index 8d0692b..373830f 100644
return retval;
}
@@ -4633,6 +4693,8 @@ bptype_string (enum bptype type)
@@ -4673,6 +4733,8 @@ bptype_string (enum bptype type)
{bp_fast_tracepoint, "fast tracepoint"},
{bp_static_tracepoint, "static tracepoint"},
{bp_jit_event, "jit events"},
@ -659,7 +659,7 @@ index 8d0692b..373830f 100644
};
if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
@@ -4780,6 +4842,8 @@ print_one_breakpoint_location (struct breakpoint *b,
@@ -4820,6 +4882,8 @@ print_one_breakpoint_location (struct breakpoint *b,
case bp_fast_tracepoint:
case bp_static_tracepoint:
case bp_jit_event:
@ -668,7 +668,7 @@ index 8d0692b..373830f 100644
if (opts.addressprint)
{
annotate_field (4);
@@ -5061,7 +5125,8 @@ user_settable_breakpoint (const struct breakpoint *b)
@@ -5101,7 +5165,8 @@ user_settable_breakpoint (const struct breakpoint *b)
|| b->type == bp_catchpoint
|| b->type == bp_hardware_breakpoint
|| is_tracepoint (b)
@ -677,8 +677,8 @@ index 8d0692b..373830f 100644
+ || b->type == bp_gnu_ifunc_resolver);
}
/* Print information on user settable breakpoint (watchpoint, etc)
@@ -5543,6 +5608,8 @@ allocate_bp_location (struct breakpoint *bpt)
/* Return true if this breakpoint was set by the user, false if it is
@@ -5590,6 +5655,8 @@ allocate_bp_location (struct breakpoint *bpt)
case bp_longjmp_master:
case bp_std_terminate_master:
case bp_exception_master:
@ -687,7 +687,7 @@ index 8d0692b..373830f 100644
loc->loc_type = bp_loc_software_breakpoint;
break;
case bp_hardware_breakpoint:
@@ -5632,6 +5699,7 @@ set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
@@ -5679,6 +5746,7 @@ set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
b->ops = NULL;
b->condition_not_parsed = 0;
b->py_bp_object = NULL;
@ -695,7 +695,7 @@ index 8d0692b..373830f 100644
/* Add this breakpoint to the end of the chain so that a list of
breakpoints will come out in order of increasing numbers. */
@@ -5650,7 +5718,7 @@ set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
@@ -5697,7 +5765,7 @@ set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
/* Initialize loc->function_name. */
static void
@ -704,7 +704,7 @@ index 8d0692b..373830f 100644
{
gdb_assert (loc->owner != NULL);
@@ -5658,8 +5726,29 @@ set_breakpoint_location_function (struct bp_location *loc)
@@ -5705,8 +5773,29 @@ set_breakpoint_location_function (struct bp_location *loc)
|| loc->owner->type == bp_hardware_breakpoint
|| is_tracepoint (loc->owner))
{
@ -736,7 +736,7 @@ index 8d0692b..373830f 100644
if (loc->function_name)
loc->function_name = xstrdup (loc->function_name);
}
@@ -5734,7 +5823,8 @@ set_raw_breakpoint (struct gdbarch *gdbarch,
@@ -5781,7 +5870,8 @@ set_raw_breakpoint (struct gdbarch *gdbarch,
b->loc->section = sal.section;
b->line_number = sal.line;
@ -746,7 +746,7 @@ index 8d0692b..373830f 100644
breakpoints_changed ();
@@ -6838,7 +6928,7 @@ clone_momentary_breakpoint (struct breakpoint *orig)
@@ -6898,7 +6988,7 @@ clone_momentary_breakpoint (struct breakpoint *orig)
copy = set_raw_breakpoint_without_location (orig->gdbarch, orig->type);
copy->loc = allocate_bp_location (copy);
@ -755,7 +755,7 @@ index 8d0692b..373830f 100644
copy->loc->gdbarch = orig->loc->gdbarch;
copy->loc->requested_address = orig->loc->requested_address;
@@ -6938,6 +7028,7 @@ mention (struct breakpoint *b)
@@ -6998,6 +7088,7 @@ mention (struct breakpoint *b)
do_cleanups (ui_out_chain);
break;
case bp_breakpoint:
@ -763,7 +763,7 @@ index 8d0692b..373830f 100644
if (ui_out_is_mi_like_p (uiout))
{
say_where = 0;
@@ -6948,6 +7039,8 @@ mention (struct breakpoint *b)
@@ -7008,6 +7099,8 @@ mention (struct breakpoint *b)
else
printf_filtered (_("Breakpoint"));
printf_filtered (_(" %d"), b->number);
@ -772,7 +772,7 @@ index 8d0692b..373830f 100644
say_where = 1;
break;
case bp_hardware_breakpoint:
@@ -7007,6 +7100,7 @@ mention (struct breakpoint *b)
@@ -7067,6 +7160,7 @@ mention (struct breakpoint *b)
case bp_longjmp_master:
case bp_std_terminate_master:
case bp_exception_master:
@ -780,7 +780,7 @@ index 8d0692b..373830f 100644
break;
}
@@ -7067,7 +7161,8 @@ add_location_to_breakpoint (struct breakpoint *b,
@@ -7127,7 +7221,8 @@ add_location_to_breakpoint (struct breakpoint *b,
gdb_assert (loc->pspace != NULL);
loc->section = sal->section;
@ -790,7 +790,7 @@ index 8d0692b..373830f 100644
return loc;
}
@@ -8513,6 +8608,7 @@ watch_command_1 (char *arg, int accessflag, int from_tty,
@@ -8573,6 +8668,7 @@ watch_command_1 (char *arg, int accessflag, int from_tty,
b = set_raw_breakpoint_without_location (NULL, bp_type);
set_breakpoint_number (internal, b);
b->thread = thread;
@ -798,7 +798,7 @@ index 8d0692b..373830f 100644
b->disposition = disp_donttouch;
b->exp = exp;
b->exp_valid_block = exp_valid_block;
@@ -9684,6 +9780,9 @@ update_global_location_list (int should_insert)
@@ -9744,6 +9840,9 @@ update_global_location_list (int should_insert)
int keep_in_target = 0;
int removed = 0;
@ -808,7 +808,7 @@ index 8d0692b..373830f 100644
/* Skip LOCP entries which will definitely never be needed.
Stop either at or being the one matching OLD_LOC. */
while (locp < bp_location + bp_location_count
@@ -10000,12 +10099,22 @@ delete_breakpoint (struct breakpoint *bpt)
@@ -10060,12 +10159,20 @@ delete_breakpoint (struct breakpoint *bpt)
/* At least avoid this stale reference until the reference counting
of breakpoints gets resolved. */
@ -819,24 +819,22 @@ index 8d0692b..373830f 100644
- bpt->related_breakpoint->disposition = disp_del_at_next_stop;
- bpt->related_breakpoint->related_breakpoint = NULL;
- bpt->related_breakpoint = NULL;
+ struct breakpoint *related;
+
+ if (bpt->type == bp_watchpoint_scope)
+ watchpoint_del_at_next_stop (bpt->related_breakpoint);
+ else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
+ watchpoint_del_at_next_stop (bpt);
+ else
+ {
+ struct breakpoint *related;
+
+ /* Unlink bpt from the bpt->related_breakpoint ring. */
+ for (related = bpt; related->related_breakpoint != bpt;
+ related = related->related_breakpoint);
+ related->related_breakpoint = bpt->related_breakpoint;
+ bpt->related_breakpoint = bpt;
+ }
+ /* Unlink bpt from the bpt->related_breakpoint ring. */
+ for (related = bpt; related->related_breakpoint != bpt;
+ related = related->related_breakpoint);
+ related->related_breakpoint = bpt->related_breakpoint;
+ bpt->related_breakpoint = bpt;
}
observer_notify_breakpoint_deleted (bpt->number);
@@ -10336,6 +10445,9 @@ update_breakpoint_locations (struct breakpoint *b,
@@ -10396,6 +10503,9 @@ update_breakpoint_locations (struct breakpoint *b,
return;
b->loc = NULL;
@ -846,7 +844,7 @@ index 8d0692b..373830f 100644
for (i = 0; i < sals.nelts; ++i)
{
@@ -10363,11 +10475,7 @@ update_breakpoint_locations (struct breakpoint *b,
@@ -10423,11 +10533,7 @@ update_breakpoint_locations (struct breakpoint *b,
}
}
@ -859,7 +857,7 @@ index 8d0692b..373830f 100644
b->source_file = xstrdup (sals.sals[i].symtab->filename);
if (b->line_number == 0)
@@ -10450,6 +10558,7 @@ breakpoint_re_set_one (void *bint)
@@ -10510,6 +10616,7 @@ breakpoint_re_set_one (void *bint)
case bp_tracepoint:
case bp_fast_tracepoint:
case bp_static_tracepoint:
@ -867,7 +865,7 @@ index 8d0692b..373830f 100644
/* Do not attempt to re-set breakpoints disabled during startup. */
if (b->enable_state == bp_startup_disabled)
return 0;
@@ -10620,6 +10729,7 @@ breakpoint_re_set_one (void *bint)
@@ -10680,6 +10787,7 @@ breakpoint_re_set_one (void *bint)
case bp_exception:
case bp_exception_resume:
case bp_jit_event:
@ -875,7 +873,7 @@ index 8d0692b..373830f 100644
break;
}
@@ -10794,11 +10904,25 @@ map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *,
@@ -10847,11 +10955,25 @@ map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *,
ALL_BREAKPOINTS_SAFE (b, tmp)
if (b->number == num)
{
@ -905,7 +903,7 @@ index 8d0692b..373830f 100644
break;
}
if (match == 0)
@@ -11913,6 +12037,22 @@ all_tracepoints ()
@@ -11966,6 +12088,22 @@ all_tracepoints ()
return tp_vec;
}
@ -928,7 +926,7 @@ index 8d0692b..373830f 100644
/* This help string is used for the break, hbreak, tbreak and thbreak
commands. It is defined as a macro to prevent duplication.
@@ -11998,6 +12138,107 @@ iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
@@ -12051,6 +12189,107 @@ iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
return NULL;
}
@ -1036,14 +1034,14 @@ index 8d0692b..373830f 100644
void
_initialize_breakpoint (void)
{
@@ -12532,4 +12773,5 @@ inferior in all-stop mode, gdb behaves as if always-inserted mode is off."),
@@ -12585,4 +12824,5 @@ inferior in all-stop mode, gdb behaves as if always-inserted mode is off."),
automatic_hardware_breakpoints = 1;
observer_attach_about_to_proceed (breakpoint_about_to_proceed);
+ observer_attach_mark_used (breakpoint_types_mark_used);
}
diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h
index 69598a7..336faf7 100644
index 86fae66..ffef340 100644
--- a/gdb/breakpoint.h
+++ b/gdb/breakpoint.h
@@ -148,6 +148,9 @@ enum bptype
@ -1079,10 +1077,10 @@ index 9909e13..30c3dfe 100644
c_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream,
diff --git a/gdb/data-directory/Makefile.in b/gdb/data-directory/Makefile.in
index 565a837..c9ff0de 100644
index 11cf2e6..9a2a8f8 100644
--- a/gdb/data-directory/Makefile.in
+++ b/gdb/data-directory/Makefile.in
@@ -51,11 +51,23 @@ SYSCALLS_FILES = \
@@ -52,11 +52,23 @@ SYSCALLS_FILES = \
PYTHON_DIR = python
PYTHON_INSTALL_DIR = $(DESTDIR)$(GDB_DATADIR)/$(PYTHON_DIR)
PYTHON_FILES = \
@ -1123,7 +1121,7 @@ index 9409dde..f0fa4c7 100644
extern char *xfullpath (const char *);
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index cc2391b..161ac1f 100644
index 6a3c7de..b2165f8 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -1177,6 +1177,16 @@ for remote debugging.
@ -1183,7 +1181,7 @@ index cc2391b..161ac1f 100644
@cindex python pagination
At startup, @value{GDBN} overrides Python's @code{sys.stdout} and
diff --git a/gdb/doc/gdbint.texinfo b/gdb/doc/gdbint.texinfo
index 8149cb9..4812558 100644
index a494707..d5b9cf8 100644
--- a/gdb/doc/gdbint.texinfo
+++ b/gdb/doc/gdbint.texinfo
@@ -2104,6 +2104,18 @@ time, and so we attempt to handle symbols incrementally. For instance,
@ -1712,7 +1710,7 @@ index ee52506..6a77c3f 100644
#endif /* dwarf2loc.h */
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index 03bd331..0d4d4f9 100644
index f269dee..284a22f 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -1211,6 +1211,9 @@ static void fill_in_loclist_baton (struct dwarf2_cu *cu,
@ -1745,7 +1743,7 @@ index 03bd331..0d4d4f9 100644
static void dwarf2_release_queue (void *dummy);
static void queue_comp_unit (struct dwarf2_per_cu_data *per_cu,
@@ -7263,6 +7272,29 @@ process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
@@ -7312,6 +7321,29 @@ process_enumeration_scope (struct die_info *die, struct dwarf2_cu *cu)
new_symbol (die, this_type, cu);
}
@ -1775,7 +1773,7 @@ index 03bd331..0d4d4f9 100644
/* Extract all information from a DW_TAG_array_type DIE and put it in
the DIE's type field. For now, this only handles one dimensional
arrays. */
@@ -7276,7 +7308,7 @@ read_array_type (struct die_info *die, struct dwarf2_cu *cu)
@@ -7325,7 +7357,7 @@ read_array_type (struct die_info *die, struct dwarf2_cu *cu)
struct type *element_type, *range_type, *index_type;
struct type **range_types = NULL;
struct attribute *attr;
@ -1784,7 +1782,7 @@ index 03bd331..0d4d4f9 100644
struct cleanup *back_to;
char *name;
@@ -7329,17 +7361,11 @@ read_array_type (struct die_info *die, struct dwarf2_cu *cu)
@@ -7378,17 +7410,11 @@ read_array_type (struct die_info *die, struct dwarf2_cu *cu)
type = element_type;
if (read_array_order (die, cu) == DW_ORD_col_major)
@ -1807,7 +1805,7 @@ index 03bd331..0d4d4f9 100644
/* Understand Dwarf2 support for vector types (like they occur on
the PowerPC w/ AltiVec). Gcc just adds another attribute to the
@@ -7833,29 +7859,114 @@ read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
@@ -7882,29 +7908,114 @@ read_tag_string_type (struct die_info *die, struct dwarf2_cu *cu)
struct gdbarch *gdbarch = get_objfile_arch (objfile);
struct type *type, *range_type, *index_type, *char_type;
struct attribute *attr;
@ -1936,7 +1934,7 @@ index 03bd331..0d4d4f9 100644
char_type = language_string_char_type (cu->language_defn, gdbarch);
type = create_string_type (NULL, char_type, range_type);
@@ -8136,8 +8247,7 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
@@ -8185,8 +8296,7 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
struct type *base_type;
struct type *range_type;
struct attribute *attr;
@ -1946,7 +1944,7 @@ index 03bd331..0d4d4f9 100644
char *name;
LONGEST negative_mask;
@@ -8150,53 +8260,126 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
@@ -8199,53 +8309,126 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
if (range_type)
return range_type;
@ -2108,7 +2106,7 @@ index 03bd331..0d4d4f9 100644
}
/* Dwarf-2 specifications explicitly allows to create subrange types
@@ -8237,24 +8420,41 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
@@ -8286,24 +8469,41 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
}
}
@ -2166,7 +2164,7 @@ index 03bd331..0d4d4f9 100644
name = dwarf2_name (die, cu);
if (name)
@@ -10731,10 +10931,12 @@ var_decode_location (struct attribute *attr, struct symbol *sym,
@@ -10780,10 +10980,12 @@ var_decode_location (struct attribute *attr, struct symbol *sym,
(i.e. when the value of a register or memory location is
referenced, or a thread-local block, etc.). Then again, it might
not be worthwhile. I'm assuming that it isn't unless performance
@ -2181,7 +2179,7 @@ index 03bd331..0d4d4f9 100644
}
/* Given a pointer to a DWARF information entry, figure out if we need
@@ -10772,6 +10974,8 @@ new_symbol_full (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
@@ -10821,6 +11023,8 @@ new_symbol_full (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
else
sym = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct symbol);
OBJSTAT (objfile, n_syms++);
@ -2190,7 +2188,7 @@ index 03bd331..0d4d4f9 100644
/* Cache this symbol's name and the name's demangled form (if any). */
SYMBOL_SET_LANGUAGE (sym, cu->language);
@@ -11544,6 +11748,9 @@ read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
@@ -11593,6 +11797,9 @@ read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
break;
}
@ -2200,7 +2198,7 @@ index 03bd331..0d4d4f9 100644
return this_type;
}
@@ -14356,60 +14563,98 @@ fill_in_loclist_baton (struct dwarf2_cu *cu,
@@ -14405,61 +14612,99 @@ fill_in_loclist_baton (struct dwarf2_cu *cu,
baton->base_address = cu->base_address;
}
@ -2217,7 +2215,8 @@ index 03bd331..0d4d4f9 100644
- /* ".debug_loc" may not exist at all, or the offset may be outside
- the section. If so, fall through to the complaint in the
- other branch. */
- && DW_UNSND (attr) < dwarf2_per_objfile->loc.size)
- && DW_UNSND (attr) < dwarf2_section_size (dwarf2_per_objfile->objfile,
- &dwarf2_per_objfile->loc))
- {
- struct dwarf2_loclist_baton *baton;
+ struct dwarf2_locexpr_baton *baton;
@ -2264,7 +2263,8 @@ index 03bd331..0d4d4f9 100644
+ /* ".debug_loc" may not exist at all, or the offset may be outside
+ the section. If so, fall through to the complaint in the
+ other branch. */
+ && DW_UNSND (attr) < dwarf2_per_objfile->loc.size))
+ && DW_UNSND (attr) < dwarf2_section_size (dwarf2_per_objfile->objfile,
+ &dwarf2_per_objfile->loc)))
+ return NULL;
+
+ baton = obstack_alloc (&cu->objfile->objfile_obstack,
@ -2341,7 +2341,7 @@ index 03bd331..0d4d4f9 100644
}
}
@@ -14755,6 +15000,31 @@ offset_and_type_eq (const void *item_lhs, const void *item_rhs)
@@ -14805,6 +15050,31 @@ offset_and_type_eq (const void *item_lhs, const void *item_rhs)
return ofs_lhs->offset == ofs_rhs->offset;
}
@ -2373,7 +2373,7 @@ index 03bd331..0d4d4f9 100644
/* Set the type associated with DIE to TYPE. Save it in CU's hash
table if necessary. For convenience, return TYPE.
@@ -14780,6 +15050,8 @@ set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
@@ -14830,6 +15100,8 @@ set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
struct objfile *objfile = cu->objfile;
htab_t *type_hash_ptr;
@ -3254,7 +3254,7 @@ index ad988d2..985fef6 100644
{
case TYPE_CODE_ARRAY:
diff --git a/gdb/f-valprint.c b/gdb/f-valprint.c
index 94a70a1..7bb04e7 100644
index a15e777..4d133bc 100644
--- a/gdb/f-valprint.c
+++ b/gdb/f-valprint.c
@@ -54,15 +54,17 @@ int f77_array_offset_tbl[MAX_FORTRAN_DIMS + 1][2];
@ -5784,7 +5784,7 @@ index 8497991..4635853 100644
SYMBOL_LINKAGE_NAME (tsymbol)) == 0)
return SYMBOL_VALUE_ADDRESS (msymbol);
diff --git a/gdb/p-valprint.c b/gdb/p-valprint.c
index 34decb9..0399e0a 100644
index ca7606a..d73f54d 100644
--- a/gdb/p-valprint.c
+++ b/gdb/p-valprint.c
@@ -38,6 +38,7 @@
@ -6190,10 +6190,10 @@ index 0c5563e..e4f0b25 100644
return ret;
diff --git a/gdb/printcmd.c b/gdb/printcmd.c
index f435f6d..7bcb667 100644
index 29ffbf5..42b7821 100644
--- a/gdb/printcmd.c
+++ b/gdb/printcmd.c
@@ -974,6 +974,11 @@ print_command_1 (char *exp, int inspect, int voidprint)
@@ -964,6 +964,11 @@ print_command_1 (char *exp, int inspect, int voidprint)
else
val = access_value_history (0);
@ -6205,7 +6205,7 @@ index f435f6d..7bcb667 100644
if (voidprint || (val && value_type (val) &&
TYPE_CODE (value_type (val)) != TYPE_CODE_VOID))
{
@@ -1475,6 +1480,22 @@ x_command (char *exp, int from_tty)
@@ -1465,6 +1470,22 @@ x_command (char *exp, int from_tty)
set_internalvar (lookup_internalvar ("__"), last_examine_value);
}
}
@ -6228,7 +6228,7 @@ index f435f6d..7bcb667 100644
/* Add an expression to the auto-display chain.
@@ -2875,4 +2896,6 @@ Show printing of source filename and line number with <symbol>."), NULL,
@@ -2865,4 +2886,6 @@ Show printing of source filename and line number with <symbol>."), NULL,
add_com ("eval", no_class, eval_command, _("\
Convert \"printf format string\", arg1, arg2, arg3, ..., argn to\n\
a command line, and call it."));
@ -7064,7 +7064,7 @@ index 0000000..debb3bb
+
+InScope ()
diff --git a/gdb/python/py-type.c b/gdb/python/py-type.c
index 9a6b077..656d3a1 100644
index c010420..92073f6 100644
--- a/gdb/python/py-type.c
+++ b/gdb/python/py-type.c
@@ -29,6 +29,8 @@
@ -7250,7 +7250,7 @@ index 9a6b077..656d3a1 100644
diff --git a/gdb/python/py-value.c b/gdb/python/py-value.c
index 1aa9443..786c45a 100644
index 27bf101..8c08f39 100644
--- a/gdb/python/py-value.c
+++ b/gdb/python/py-value.c
@@ -28,6 +28,7 @@
@ -7261,7 +7261,7 @@ index 1aa9443..786c45a 100644
#ifdef HAVE_PYTHON
@@ -1222,6 +1223,17 @@ gdbpy_is_value_object (PyObject *obj)
@@ -1211,6 +1212,17 @@ gdbpy_is_value_object (PyObject *obj)
return PyObject_TypeCheck (obj, &value_object_type);
}
@ -7279,7 +7279,7 @@ index 1aa9443..786c45a 100644
void
gdbpy_initialize_values (void)
{
@@ -1232,6 +1244,8 @@ gdbpy_initialize_values (void)
@@ -1221,6 +1233,8 @@ gdbpy_initialize_values (void)
PyModule_AddObject (gdb_module, "Value", (PyObject *) &value_object_type);
values_in_python = NULL;
@ -7289,7 +7289,7 @@ index 1aa9443..786c45a 100644
diff --git a/gdb/python/python.c b/gdb/python/python.c
index 375042c..b6af645 100644
index b79504a..2011668 100644
--- a/gdb/python/python.c
+++ b/gdb/python/python.c
@@ -49,8 +49,11 @@ static int gdbpy_should_print_stack = 1;
@ -7304,7 +7304,7 @@ index 375042c..b6af645 100644
static PyMethodDef GdbMethods[];
@@ -728,6 +731,53 @@ gdbpy_print_stack (void)
@@ -722,6 +725,53 @@ gdbpy_print_stack (void)
/* Return the current Progspace.
There always is one. */
@ -7358,7 +7358,7 @@ index 375042c..b6af645 100644
static PyObject *
gdbpy_get_current_progspace (PyObject *unused1, PyObject *unused2)
@@ -1102,6 +1152,8 @@ static PyMethodDef GdbMethods[] =
@@ -1106,6 +1156,8 @@ static PyMethodDef GdbMethods[] =
"Get a value from history" },
{ "execute", (PyCFunction) execute_gdb_command, METH_VARARGS | METH_KEYWORDS,
"Execute a gdb command" },
@ -10678,7 +10678,7 @@ index 0000000..153c18b
+}
diff --git a/gdb/testsuite/gdb.multi/watchpoint-multi.exp b/gdb/testsuite/gdb.multi/watchpoint-multi.exp
new file mode 100644
index 0000000..3b5d040
index 0000000..97fa6cd
--- /dev/null
+++ b/gdb/testsuite/gdb.multi/watchpoint-multi.exp
@@ -0,0 +1,113 @@
@ -10773,7 +10773,7 @@ index 0000000..3b5d040
+ setup_kfail breakpoints/12312 *-*-*
+ pass $test
+ }
+ -re "Hardware access \\(read/write\\) watchpoint \[0-9\]+: c\r\n\r\nValue = 3\r\n.* in __nptl_death_event .*\r\n$gdb_prompt $" {
+ -re "Hardware access \\(read/write\\) watchpoint \[0-9\]+: c\r\n\r\nValue = 3\r\n(.* in )?__nptl_death_event .*\r\n$gdb_prompt $" {
+ setup_kfail breakpoints/12312 *-*-*
+ fail $test
+ }
@ -10789,7 +10789,7 @@ index 0000000..3b5d040
+ setup_kfail breakpoints/12312 *-*-*
+ pass $test
+ }
+ -re "Hardware access \\(read/write\\) watchpoint \[0-9\]+: b\r\n\r\nValue = 2\r\n.* in __nptl_death_event .*\r\n$gdb_prompt $" {
+ -re "Hardware access \\(read/write\\) watchpoint \[0-9\]+: b\r\n\r\nValue = 2\r\n(.* in )?__nptl_death_event .*\r\n$gdb_prompt $" {
+ setup_kfail breakpoints/12312 *-*-*
+ fail $test
+ }
@ -11846,7 +11846,7 @@ index 891da37..236c5ca 100644
set pascal_init_done 1
}
diff --git a/gdb/top.c b/gdb/top.c
index d14f308..7605f85 100644
index df2b163..a205d00 100644
--- a/gdb/top.c
+++ b/gdb/top.c
@@ -343,6 +343,7 @@ void
@ -11983,7 +11983,7 @@ index 265532c..1e419dd 100644
}
diff --git a/gdb/valops.c b/gdb/valops.c
index 19d5238..c9d721a 100644
index 24c2269..21fb35f 100644
--- a/gdb/valops.c
+++ b/gdb/valops.c
@@ -38,6 +38,7 @@
@ -12141,7 +12141,7 @@ index 19d5238..c9d721a 100644
{
int i;
diff --git a/gdb/valprint.c b/gdb/valprint.c
index c98e315..de9de10 100644
index b6b96d4..934bf9c 100644
--- a/gdb/valprint.c
+++ b/gdb/valprint.c
@@ -36,6 +36,7 @@
@ -12160,7 +12160,7 @@ index c98e315..de9de10 100644
case TYPE_CODE_BITSTRING:
return 0;
default:
@@ -1118,6 +1118,7 @@ val_print_array_elements (struct type *type,
@@ -1165,6 +1165,7 @@ val_print_array_elements (struct type *type,
{
unsigned int things_printed = 0;
unsigned len;
@ -12168,7 +12168,7 @@ index c98e315..de9de10 100644
struct type *elttype, *index_type;
unsigned eltlen;
/* Position of the array element we are examining to see
@@ -1126,9 +1127,33 @@ val_print_array_elements (struct type *type,
@@ -1173,9 +1174,33 @@ val_print_array_elements (struct type *type,
/* Number of repetitions we have detected so far. */
unsigned int reps;
LONGEST low_bound, high_bound;
@ -12204,7 +12204,7 @@ index c98e315..de9de10 100644
index_type = TYPE_INDEX_TYPE (type);
if (get_array_bounds (type, &low_bound, &high_bound))
@@ -1207,6 +1232,8 @@ val_print_array_elements (struct type *type,
@@ -1254,6 +1279,8 @@ val_print_array_elements (struct type *type,
{
fprintf_filtered (stream, "...");
}
@ -12214,7 +12214,7 @@ index c98e315..de9de10 100644
/* Read LEN bytes of target memory at address MEMADDR, placing the
diff --git a/gdb/value.c b/gdb/value.c
index db83ea2..3d47556 100644
index e26270c..29bb0ca 100644
--- a/gdb/value.c
+++ b/gdb/value.c
@@ -39,6 +39,7 @@
@ -12225,7 +12225,7 @@ index db83ea2..3d47556 100644
#include "python/python.h"
@@ -863,12 +864,15 @@ void
@@ -870,12 +871,15 @@ void
set_value_component_location (struct value *component,
const struct value *whole)
{
@ -12241,7 +12241,7 @@ index db83ea2..3d47556 100644
if (whole->lval == lval_computed)
{
struct lval_funcs *funcs = whole->location.computed.funcs;
@@ -876,6 +880,12 @@ set_value_component_location (struct value *component,
@@ -883,6 +887,12 @@ set_value_component_location (struct value *component,
if (funcs->copy_closure)
component->location.computed.closure = funcs->copy_closure (whole);
}
@ -12254,7 +12254,7 @@ index db83ea2..3d47556 100644
}
@@ -1009,6 +1019,29 @@ show_values (char *num_exp, int from_tty)
@@ -1016,6 +1026,29 @@ show_values (char *num_exp, int from_tty)
num_exp[1] = '\0';
}
}
@ -12284,7 +12284,7 @@ index db83ea2..3d47556 100644
/* Internal variables. These are variables within the debugger
that hold values assigned by debugger commands.
@@ -1504,6 +1537,40 @@ call_internal_function (struct gdbarch *gdbarch,
@@ -1511,6 +1544,40 @@ call_internal_function (struct gdbarch *gdbarch,
return (*ifn->handler) (gdbarch, language, ifn->cookie, argc, argv);
}
@ -12325,7 +12325,7 @@ index db83ea2..3d47556 100644
/* The 'function' command. This does nothing -- it is just a
placeholder to let "help function NAME" work. This is also used as
the implementation of the sub-command that is created when
@@ -1551,11 +1618,10 @@ preserve_one_value (struct value *value, struct objfile *objfile,
@@ -1558,11 +1625,10 @@ preserve_one_value (struct value *value, struct objfile *objfile,
htab_t copied_types)
{
if (TYPE_OBJFILE (value->type) == objfile)
@ -12339,7 +12339,7 @@ index db83ea2..3d47556 100644
copied_types);
}
@@ -1570,13 +1636,13 @@ preserve_one_internalvar (struct internalvar *var, struct objfile *objfile,
@@ -1577,13 +1643,13 @@ preserve_one_internalvar (struct internalvar *var, struct objfile *objfile,
case INTERNALVAR_INTEGER:
if (var->u.integer.type && TYPE_OBJFILE (var->u.integer.type) == objfile)
var->u.integer.type
@ -12355,7 +12355,7 @@ index db83ea2..3d47556 100644
break;
case INTERNALVAR_VALUE:
@@ -2442,7 +2508,24 @@ value_from_decfloat (struct type *type, const gdb_byte *dec)
@@ -2449,7 +2515,24 @@ value_from_decfloat (struct type *type, const gdb_byte *dec)
struct value *
coerce_ref (struct value *arg)
{
@ -12381,7 +12381,7 @@ index db83ea2..3d47556 100644
if (TYPE_CODE (value_type_arg_tmp) == TYPE_CODE_REF)
arg = value_at_lazy (TYPE_TARGET_TYPE (value_type_arg_tmp),
@@ -2540,4 +2623,8 @@ VARIABLE is already initialized."));
@@ -2547,4 +2630,8 @@ VARIABLE is already initialized."));
add_prefix_cmd ("function", no_class, function_command, _("\
Placeholder command for showing help on convenience functions."),
&functionlist, "function ", 0, &cmdlist);
@ -12391,10 +12391,10 @@ index db83ea2..3d47556 100644
+ observer_attach_mark_used (value_types_mark_used);
}
diff --git a/gdb/value.h b/gdb/value.h
index 16f4646..501df86 100644
index aa8ff3c..2b4543c 100644
--- a/gdb/value.h
+++ b/gdb/value.h
@@ -389,6 +389,10 @@ extern struct value *value_from_double (struct type *type, DOUBLEST num);
@@ -395,6 +395,10 @@ extern struct value *value_from_double (struct type *type, DOUBLEST num);
extern struct value *value_from_decfloat (struct type *type,
const gdb_byte *decbytes);

View File

@ -12,10 +12,10 @@
* gdb.python/pr10659.exp. New file.
* gdb.python/pr10659.py: New file.
Index: gdb-7.2.50.20101116/gdb/valprint.h
Index: gdb-7.2.50.20110206/gdb/valprint.h
===================================================================
--- gdb-7.2.50.20101116.orig/gdb/valprint.h 2010-11-03 15:21:57.000000000 +0100
+++ gdb-7.2.50.20101116/gdb/valprint.h 2010-11-16 08:31:56.000000000 +0100
--- gdb-7.2.50.20110206.orig/gdb/valprint.h 2011-01-25 18:59:00.000000000 +0100
+++ gdb-7.2.50.20110206/gdb/valprint.h 2011-02-06 20:55:59.000000000 +0100
@@ -90,6 +90,9 @@ struct value_print_options
/* If nonzero, print the value in "summary" form. */
@ -26,21 +26,20 @@ Index: gdb-7.2.50.20101116/gdb/valprint.h
};
/* The global print options set by the user. In general this should
Index: gdb-7.2.50.20101116/gdb/python/py-prettyprint.c
Index: gdb-7.2.50.20110206/gdb/python/py-prettyprint.c
===================================================================
--- gdb-7.2.50.20101116.orig/gdb/python/py-prettyprint.c 2010-11-12 21:49:42.000000000 +0100
+++ gdb-7.2.50.20101116/gdb/python/py-prettyprint.c 2010-11-16 08:36:32.000000000 +0100
@@ -499,7 +499,8 @@ print_children (PyObject *printer, const
--- gdb-7.2.50.20110206.orig/gdb/python/py-prettyprint.c 2011-01-26 21:58:48.000000000 +0100
+++ gdb-7.2.50.20110206/gdb/python/py-prettyprint.c 2011-02-06 20:56:30.000000000 +0100
@@ -501,7 +501,7 @@ print_children (PyObject *printer, const
/* Use the prettyprint_arrays option if we are printing an array,
and the pretty option otherwise. */
- pretty = is_array ? options->prettyprint_arrays : options->pretty;
+ pretty = (is_array || options->prettyprint_matrix) ?
+ options->prettyprint_arrays : options->pretty;
/* Manufacture a dummy Python frame to work around Python 2.4 bug,
where it insists on having a non-NULL tstate->frame when
@@ -511,6 +512,9 @@ print_children (PyObject *printer, const
- if (is_array)
+ if (is_array || options->prettyprint_matrix)
pretty = options->prettyprint_arrays;
else
{
@@ -521,6 +521,9 @@ print_children (PyObject *printer, const
goto done;
}
make_cleanup_py_decref (frame);
@ -50,7 +49,7 @@ Index: gdb-7.2.50.20101116/gdb/python/py-prettyprint.c
done_flag = 0;
for (i = 0; i < options->print_max; ++i)
@@ -545,12 +549,23 @@ print_children (PyObject *printer, const
@@ -555,12 +558,23 @@ print_children (PyObject *printer, const
3. Other. Always print a ",". */
if (i == 0)
{
@ -79,7 +78,7 @@ Index: gdb-7.2.50.20101116/gdb/python/py-prettyprint.c
else if (! is_map || i % 2 == 0)
fputs_filtered (pretty ? "," : ", ", stream);
@@ -579,6 +594,10 @@ print_children (PyObject *printer, const
@@ -589,6 +603,10 @@ print_children (PyObject *printer, const
if (is_map && i % 2 == 0)
fputs_filtered ("[", stream);
@ -90,7 +89,7 @@ Index: gdb-7.2.50.20101116/gdb/python/py-prettyprint.c
else if (is_array)
{
/* We print the index, not whatever the child method
@@ -655,7 +674,12 @@ print_children (PyObject *printer, const
@@ -667,7 +685,12 @@ print_children (PyObject *printer, const
fputs_filtered ("\n", stream);
print_spaces_filtered (2 * recurse, stream);
}
@ -104,7 +103,7 @@ Index: gdb-7.2.50.20101116/gdb/python/py-prettyprint.c
}
done:
@@ -678,6 +702,7 @@ apply_val_pretty_printer (struct type *t
@@ -690,6 +713,7 @@ apply_val_pretty_printer (struct type *t
struct cleanup *cleanups;
int result = 0;
enum string_repr_result print_result;
@ -112,7 +111,7 @@ Index: gdb-7.2.50.20101116/gdb/python/py-prettyprint.c
cleanups = ensure_python_env (gdbarch, language);
/* Instantiate the printer. */
@@ -709,9 +734,21 @@ apply_val_pretty_printer (struct type *t
@@ -721,9 +745,21 @@ apply_val_pretty_printer (struct type *t
/* If we are printing a map, we want some special formatting. */
hint = gdbpy_get_display_hint (printer);
@ -134,10 +133,10 @@ Index: gdb-7.2.50.20101116/gdb/python/py-prettyprint.c
print_result = print_string_repr (printer, hint, stream, recurse,
options, language, gdbarch);
if (print_result != string_repr_error)
Index: gdb-7.2.50.20101116/gdb/testsuite/gdb.python/pr10659.cc
Index: gdb-7.2.50.20110206/gdb/testsuite/gdb.python/pr10659.cc
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.2.50.20101116/gdb/testsuite/gdb.python/pr10659.cc 2010-11-16 08:31:56.000000000 +0100
+++ gdb-7.2.50.20110206/gdb/testsuite/gdb.python/pr10659.cc 2011-02-06 20:55:59.000000000 +0100
@@ -0,0 +1,43 @@
+#include <list>
+#include <vector> // /usr/include/c++/4.4.1/bits/vector.tcc
@ -182,10 +181,10 @@ Index: gdb-7.2.50.20101116/gdb/testsuite/gdb.python/pr10659.cc
+
+ return 0; // break
+}
Index: gdb-7.2.50.20101116/gdb/testsuite/gdb.python/pr10659.exp
Index: gdb-7.2.50.20110206/gdb/testsuite/gdb.python/pr10659.exp
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.2.50.20101116/gdb/testsuite/gdb.python/pr10659.exp 2010-11-16 08:31:56.000000000 +0100
+++ gdb-7.2.50.20110206/gdb/testsuite/gdb.python/pr10659.exp 2011-02-06 20:55:59.000000000 +0100
@@ -0,0 +1,82 @@
+#Copyright 2010 Free Software Foundation, Inc.
+
@ -269,10 +268,10 @@ Index: gdb-7.2.50.20101116/gdb/testsuite/gdb.python/pr10659.exp
+#
+
+
Index: gdb-7.2.50.20101116/gdb/testsuite/gdb.python/pr10659.py
Index: gdb-7.2.50.20110206/gdb/testsuite/gdb.python/pr10659.py
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ gdb-7.2.50.20101116/gdb/testsuite/gdb.python/pr10659.py 2010-11-16 08:31:56.000000000 +0100
+++ gdb-7.2.50.20110206/gdb/testsuite/gdb.python/pr10659.py 2011-02-06 20:55:59.000000000 +0100
@@ -0,0 +1,109 @@
+# Copyright (C) 2008, 2009 Free Software Foundation, Inc.
+
@ -383,10 +382,10 @@ Index: gdb-7.2.50.20101116/gdb/testsuite/gdb.python/pr10659.py
+fake_pretty_printers_dict = {}
+
+build_libfakecxx_dictionary ()
Index: gdb-7.2.50.20101116/gdb/valprint.c
Index: gdb-7.2.50.20110206/gdb/valprint.c
===================================================================
--- gdb-7.2.50.20101116.orig/gdb/valprint.c 2010-11-16 07:54:00.000000000 +0100
+++ gdb-7.2.50.20101116/gdb/valprint.c 2010-11-16 08:31:56.000000000 +0100
--- gdb-7.2.50.20110206.orig/gdb/valprint.c 2011-02-06 20:55:52.000000000 +0100
+++ gdb-7.2.50.20110206/gdb/valprint.c 2011-02-06 20:55:59.000000000 +0100
@@ -85,7 +85,8 @@ struct value_print_options user_print_op
1, /* static_field_print */
1, /* pascal_static_field_print */

View File

@ -1,52 +0,0 @@
http://sourceware.org/ml/gdb-cvs/2011-01/msg00169.html
### src/gdb/ChangeLog 2011/01/25 17:00:23 1.12503
### src/gdb/ChangeLog 2011/01/25 17:25:10 1.12504
## -1,3 +1,8 @@
+2011-01-25 Jan Kratochvil <jan.kratochvil@redhat.com>
+
+ * dwarf2read.c (dwarf2_read_index, write_psymtabs_to_index)
+ (save_gdb_index_command): Switch to .gdb_index version 4.
+
2011-01-25 Pedro Alves <pedro@codesourcery.com>
* mi/mi-main.c (get_register): Use get_frame_register_value rather
--- src/gdb/dwarf2read.c 2011/01/12 16:16:20 1.495
+++ src/gdb/dwarf2read.c 2011/01/25 17:25:12 1.496
@@ -2024,13 +2024,14 @@
/* Version check. */
version = MAYBE_SWAP (*(offset_type *) addr);
/* Versions earlier than 3 emitted every copy of a psymbol. This
- causes the index to behave very poorly for certain requests. So,
- it seems better to just ignore such indices. */
- if (version < 3)
+ causes the index to behave very poorly for certain requests. Version 4
+ contained incomplete addrmap. So, it seems better to just ignore such
+ indices. */
+ if (version < 4)
return 0;
/* Indexes with higher version than the one supported by GDB may be no
longer backward compatible. */
- if (version > 3)
+ if (version > 4)
return 0;
map = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct mapped_index);
@@ -15688,7 +15689,7 @@
total_len = size_of_contents;
/* The version number. */
- val = MAYBE_SWAP (3);
+ val = MAYBE_SWAP (4);
obstack_grow (&contents, &val, sizeof (val));
/* The offset of the CU list from the start of the file. */
@@ -15746,7 +15747,7 @@
1. The file header. This is a sequence of values, of offset_type
unless otherwise noted:
- [0] The version number, currently 3. Versions 1 and 2 are
+ [0] The version number, currently 4. Versions 1, 2 and 3 are
obsolete.
[1] The offset, from the start of the file, of the CU list.
[2] The offset, from the start of the file, of the types CU list.

View File

@ -23,11 +23,11 @@ Name: gdb%{?_with_debug:-debug}
# Set version to contents of gdb/version.in.
# NOTE: the FSF gdb versions are numbered N.M for official releases, like 6.3
# and, since January 2005, X.Y.Z.date for daily snapshots, like 6.3.50.20050112 # (daily snapshot from mailine), or 6.3.0.20040112 (head of the release branch).
Version: 7.2.50.20110125
Version: 7.2.50.20110206
# 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.
Release: 16%{?_with_upstream:.upstream}%{?dist}
Release: 17%{?_with_upstream:.upstream}%{?dist}
License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ and GPLv2+ with exceptions and GPL+ and LGPLv2+ and GFDL and BSD and Public Domain
Group: Development/Debuggers
@ -536,10 +536,6 @@ Patch547: gdb-test-dw2-aranges.patch
# =fedoratest
Patch548: gdb-test-expr-cumulative-archer.patch
# Fix discontiguous address ranges in .gdb_index - v3->v4 (BZ 672281).
# =push
Patch552: gdb-gdbindex-v4-2of3.patch
# Fix DWARF-3+ DW_AT_accessibility default assumption for F15 gcc-4.6.
# =push
Patch554: gdb-dwarf3-accessibility.patch
@ -805,7 +801,6 @@ rm -f gdb/jv-exp.c gdb/m2-exp.c gdb/objc-exp.c gdb/p-exp.c
%patch542 -p1
%patch547 -p1
%patch548 -p1
%patch552 -p1
%patch554 -p1
%patch555 -p1
%patch556 -p1
@ -1216,6 +1211,9 @@ fi
%endif
%changelog
* Thu Jan 27 2011 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.2.50.20110206-17.fc15
- Rebase to FSF GDB 7.2.50.20110206 (which is a 7.3 pre-release).
* Thu Jan 27 2011 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.2.50.20110125-16.fc15
- Fix Python new-backtrace command (BZ 672235, Phil Muldoon).

View File

@ -1,2 +1,2 @@
04e5c4b1b9e633422cc48990fe61958d libstdc++-v3-python-r155978.tar.bz2
525bcebaa799261486cb76ba9638636b gdb-7.2.50.20110125.tar.bz2
aadb7bb3d6f959ec04c381fef8103533 gdb-7.2.50.20110206.tar.bz2