- Fix register assignments with no GDB stack frames, Denys Vlasenko (BZ

436037).
This commit is contained in:
Jan Kratochvil 2008-08-01 06:37:43 +00:00
parent d03bbcd3a1
commit 3f974e0437
3 changed files with 119 additions and 1 deletions

View File

@ -0,0 +1,24 @@
diff -d -urpN src.0/gdb/valops.c src.1/gdb/valops.c
--- src.0/gdb/valops.c 2008-07-27 04:00:03.000000000 +0200
+++ src.1/gdb/valops.c 2008-07-31 15:17:42.000000000 +0200
@@ -813,10 +813,18 @@ value_assign (struct value *toval, struc
struct frame_info *frame;
int value_reg;
- /* Figure out which frame this is in currently. */
- frame = frame_find_by_id (VALUE_FRAME_ID (toval));
value_reg = VALUE_REGNUM (toval);
+ /* Figure out which frame this is in currently. */
+ frame = frame_find_by_id (VALUE_FRAME_ID (toval));
+ /* "set $reg+=1" should work on programs with no debug info,
+ but frame_find_by_id returns NULL here (RH bug 436037).
+ Use current frame, it represents CPU state in this case.
+ If frame_find_by_id is changed to do it internally
+ (it is contemplated there), remove this. */
+ if (!frame)
+ frame = get_current_frame ();
+ /* Probably never happens. */
if (!frame)
error (_("Value being assigned to is no longer active."));

View File

@ -1638,3 +1638,83 @@ gdb/
/* Shared library handling. */
set_gdbarch_skip_trampoline_code (gdbarch, ppc64_skip_trampoline_code);
set_solib_svr4_fetch_link_map_offsets
http://sourceware.org/ml/gdb-cvs/2008-04/msg00100.html
2008-04-17 Joel Brobecker <brobecker@adacore.com>
* breakpoint.c (print_one_breakpoint_location): Make sure to print
the breakpoint address only once.
===================================================================
RCS file: /cvs/src/src/gdb/breakpoint.c,v
retrieving revision 1.308
retrieving revision 1.309
diff -u -r1.308 -r1.309
--- src/gdb/breakpoint.c 2008/04/15 14:32:12 1.308
+++ src/gdb/breakpoint.c 2008/04/17 22:43:17 1.309
@@ -3607,7 +3607,7 @@
annotate_field (4);
if (header_of_multiple)
ui_out_field_string (uiout, "addr", "<MULTIPLE>");
- if (b->loc == NULL || loc->shlib_disabled)
+ else if (b->loc == NULL || loc->shlib_disabled)
ui_out_field_string (uiout, "addr", "<PENDING>");
else
ui_out_field_core_addr (uiout, "addr", loc->address);
http://sourceware.org/ml/gdb-cvs/2008-04/msg00148.html
gdb/
2008-04-24 Vladimir Prus <vladimir@codesourcery.com>
* breakpoint.c (print_one_breakpoint_location): In MI
mode, report the location string the breakpoint was
originally created with.
gdb/testsuite/
2008-04-24 Vladimir Prus <vladimir@codesourcery.com>
* lib/mi-support.exp (mi_runto_helper): Adjust
for the original-location field.
(mi_create_breakpoint, mi_list_breakpoints): New.
* gdb.mi/mi-break.exp: Adjust.
* gdb.mi/mi2-break.exp: Adjust.
* gdb.mi/mi-pending.exp: Adjust.
* gdb.mi/mi-simplerun.exp: Adjust.
* gdb.mi/mi2-simplerun.exp: Adjust.
* gdb.mi/mi-syn-frame.exp: Adjust.
* gdb.mi/mi2-syn-frame.exp: Adjust.
* gdb.mi/mi-until.exp: Adjust.
* gdb.mi/mi2-until.exp: Adjust.
* gdb.mi/mi-var-display.exp: Adjust.
* gdb.mi/mi2-var-display.exp: Adjust.
* gdb.mi/mi-watch.exp: Adjust.
* gdb.mi/mi2-watch.exp: Adjust.
[ REMOVED ]
===================================================================
RCS file: /cvs/src/src/gdb/breakpoint.c,v
retrieving revision 1.310
retrieving revision 1.311
diff -u -r1.310 -r1.311
--- src/gdb/breakpoint.c 2008/04/18 00:41:28 1.310
+++ src/gdb/breakpoint.c 2008/04/24 08:46:18 1.311
@@ -3696,6 +3696,15 @@
print_command_lines (uiout, l, 4);
do_cleanups (script_chain);
}
+
+ if (ui_out_is_mi_like_p (uiout) && !part_of_multiple)
+ {
+ if (b->addr_string)
+ ui_out_field_string (uiout, "original-location", b->addr_string);
+ else if (b->exp_string)
+ ui_out_field_string (uiout, "original-location", b->exp_string);
+ }
+
do_cleanups (bkpt_chain);
do_cleanups (old_chain);
}

View File

@ -6,6 +6,9 @@
Summary: A GNU source-level debugger for C, C++, Java and other languages
Name: gdb%{?_with_debug:-debug}
# Compatibility with F-10 rpmbuild:
%define _default_patch_fuzz 2
# 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).
@ -13,7 +16,7 @@ Version: 6.8
# 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: 13%{?_with_upstream:.upstream}%{?dist}
Release: 15%{?_with_upstream:.upstream}%{?dist}
License: GPLv3+
Group: Development/Debuggers
@ -358,6 +361,9 @@ Patch317: gdb-6.8-sparc64-silence-memcpy-check.patch
# Fix memory trashing on binaries from GCC Ada (workaround GCC PR 35998).
Patch318: gdb-6.8-gcc35998-ada-memory-trash.patch
# Fix register assignments with no GDB stack frames (BZ 436037).
Patch330: gdb-6.8-bz436037-reg-no-longer-active.patch
BuildRequires: ncurses-devel glibc-devel gcc make gzip texinfo dejagnu gettext
BuildRequires: flex bison sharutils expat-devel
Requires: readline
@ -536,6 +542,7 @@ rm -f gdb/jv-exp.c gdb/m2-exp.c gdb/objc-exp.c gdb/p-exp.c
%patch316 -p1
%patch317 -p1
%patch318 -p1
%patch330 -p1
%patch124 -p1
find -name "*.orig" | xargs rm -f
@ -788,6 +795,13 @@ fi
%endif
%changelog
* Fri Aug 1 2008 Jan Kratochvil <jan.kratochvil@redhat.com> - 6.8-15
- Fix register assignments with no GDB stack frames, Denys Vlasenko (BZ 436037).
* Fri Jul 25 2008 Jan Kratochvil <jan.kratochvil@redhat.com> - 6.8-14
- Backpoint `original-location' for multi-PC breakpoints (for Nemiver).
- Include _default_patch_fuzz for builds on F-10.
* Fri Jul 25 2008 Jan Kratochvil <jan.kratochvil@redhat.com> - 6.8-13
- Fix powerpc recent secure PLTs handling (shared library calls) (BZ 452960).
- Fix the testsuite .spec runner to run biarch also on ppc.