This is the mail archive of the insight@sourceware.cygnus.com mailing list for the Insight project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Yet Another Register Window Patch


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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]