This is the mail archive of the
insight@sourceware.cygnus.com
mailing list for the Insight project.
Yet Another Register Window Patch
- To: Insight Mailing List <insight at sourceware dot cygnus dot com>
- Subject: Yet Another Register Window Patch
- From: Steven Johnson <sbjohnson at ozemail dot com dot au>
- Date: Wed, 05 Apr 2000 07:26:36 +1000
Hi All,
Following is a patch the fixes a problem with non sequential register
numbers (actually finalising a previous patch by someone else patch that
only half did this). The problem was that on such systems registers
could not be hidden as that code assumed sequential numbered registers.
I fixed that, as well as similar code in the Save State routine for the
registers. Because I was there, and i needed it I put a call in to the
function when the window is closed, so now the register window remebers
its state.
Anyway, Heres the patch.
2000-04-04 Steve Johnson <sbjohnson@ozemail.com.au>
* regwin.itb (destructor): Call save_reg_display_vars to save
the
state of the register window when exiting.
* regwin.itb (init_reg_display_vars): Count the number of
registers
actually available, instead of using the last real register
number.
* regwin.itb (save_reg_display_vars): allows register state to
be
saved when registers numbers are not sequential.
* regwin.itb (delete_from_display_list): allows registers to be
hidden when a target does not have sequentially numbered
registers.
diff -C2 -r -b ../gdb_cvs/src/gdb/gdbtk/library/regwin.itb
src/gdb/gdbtk/library/regwin.itb
*** ../gdb_cvs/src/gdb/gdbtk/library/regwin.itb Tue Apr 4 23:09:38 2000
--- src/gdb/gdbtk/library/regwin.itb Wed Apr 5 05:32:39 2000
***************
*** 12,16 ****
# GNU General Public License for more details.
-
# ------------------------------------------------------------------
# CONSTRUCTOR - create new register window
--- 12,15 ----
***************
*** 47,50 ****
--- 46,50 ----
body RegWin::destructor {} {
debug "RegWin::destructor"
+ save_reg_display_vars
remove_hook gdb_update_hook "$this update"
remove_hook gdb_busy_hook [list $this busy]
***************
*** 56,60 ****
-
# ------------------------------------------------------------------
# METHOD: build_win - build the main register window
--- 56,59 ----
***************
*** 188,192 ****
--- 187,193 ----
set regnames [gdb_regnames -numbers]
set i 1
+ set x 0
foreach r $regnames {
+ incr x
set name [lindex $r 0]
set rn [lindex $r 1]
***************
*** 204,208 ****
}
set num_regs [expr {$i - 1}]
! set max_regs $rn
set reg_names_dirty 0
}
--- 205,209 ----
}
set num_regs [expr {$i - 1}]
! set max_regs $x
set reg_names_dirty 0
}
***************
*** 225,230 ****
body RegWin::save_reg_display_vars {} {
global reg_display max_regs
! set rn 0
! while {$rn < $max_regs} {
set name $reg_display($rn,name)
if {$reg_display($rn,line) == 0} {
--- 226,232 ----
body RegWin::save_reg_display_vars {} {
global reg_display max_regs
! set regnames [gdb_regnames -numbers]
! foreach r $regnames {
! set rn [lindex $r 1]
set name $reg_display($rn,name)
if {$reg_display($rn,line) == 0} {
***************
*** 238,242 ****
pref setd gdb/reg/$name-format {}
}
- incr rn
}
pref_save ""
--- 240,243 ----
***************
*** 442,454 ****
set reg_display($rn,line) 0
set reg_display_list {}
! set rn 0
set i 0
! while {$rn < $max_regs} {
! if {$reg_display($rn,line) > 0} {
! lappend reg_display_list $rn
incr i
! set reg_display($rn,line) $i
}
- incr rn
}
set num_regs $i
--- 443,455 ----
set reg_display($rn,line) 0
set reg_display_list {}
! set regnames [gdb_regnames -numbers]
set i 0
! foreach r $regnames {
! set rnx [lindex $r 1]
! if {$reg_display($rnx,line) > 0} {
! lappend reg_display_list $rnx
incr i
! set reg_display($rnx,line) $i
}
}
set num_regs $i
***************
*** 457,460 ****
--- 458,463 ----
}
+
+
# ------------------------------------------------------------------
# PUBLIC METHOD: edit - edit a cell