From mboxrd@z Thu Jan 1 00:00:00 1970 From: Steven Johnson To: Insight Mailing List Subject: Yet Another Register Window Patch Date: Wed, 05 Apr 2000 00:30:00 -0000 Message-id: <38EA5E0C.E8427338@ozemail.com.au> X-SW-Source: 2000-q2/msg00014.html 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 * 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