- Rebase to FSF GDB 7.2.50.20110206 (which is a 7.3 pre-release).
This commit is contained in:
parent
c00fd45a3e
commit
cb641a7fa4
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,2 +1,2 @@
|
||||
/libstdc++-v3-python-r155978.tar.bz2
|
||||
/gdb-7.2.50.20110125.tar.bz2
|
||||
/gdb-7.2.50.20110206.tar.bz2
|
||||
|
@ -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));
|
||||
}
|
||||
|
||||
|
220
gdb-archer.patch
220
gdb-archer.patch
@ -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);
|
||||
|
||||
|
@ -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 */
|
||||
|
@ -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.
|
12
gdb.spec
12
gdb.spec
@ -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).
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user