public inbox for insight@sourceware.org
 help / color / mirror / Atom feed
* Yet Another Register Window Patch
@ 2000-04-05  0:30 Steven Johnson
  2000-04-05 11:22 ` James Ingham
  0 siblings, 1 reply; 3+ messages in thread
From: Steven Johnson @ 2000-04-05  0:30 UTC (permalink / raw)
  To: Insight Mailing List

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

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Yet Another Register Window Patch
  2000-04-05  0:30 Yet Another Register Window Patch Steven Johnson
@ 2000-04-05 11:22 ` James Ingham
  2000-04-05 15:20   ` Steven Johnson
  0 siblings, 1 reply; 3+ messages in thread
From: James Ingham @ 2000-04-05 11:22 UTC (permalink / raw)
  To: Steven Johnson; +Cc: Insight Mailing List

Steven,

This looks good, thanks for catching this.  If you are going to save
away the hidden registers, then you need to make sure that the
"Display All Registers" menu item is activated whenever there are
missing registers.  As it now stands, it only turns on when you
actually remove one from the UI.  The following patch adds this bit
too (it is against the sourceware cvs.)  Does this look okay to you?
If so, I will check it in.

Jim

Index: regwin.ith
===================================================================
RCS file: /cvs/src/src/gdb/gdbtk/library/regwin.ith,v
retrieving revision 1.1.1.1
diff -p -c -r1.1.1.1 regwin.ith
*** regwin.ith	2000/02/07 00:19:42	1.1.1.1
--- regwin.ith	2000/04/05 18:19:36
*************** class RegWin {
*** 17,22 ****
--- 17,24 ----
    
    private {
      variable reg_display_list {}
+     variable all_regs_shown    1
+     variable disp_all_menu_item
      variable num_regs 0
      variable nRows
      variable nCols
Index: regwin.itb
===================================================================
RCS file: /cvs/src/src/gdb/gdbtk/library/regwin.itb,v
retrieving revision 1.3
diff -p -c -r1.3 regwin.itb
*** regwin.itb	2000/04/04 00:17:47	1.3
--- regwin.itb	2000/04/05 18:18:12
***************
*** 11,17 ****
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  # GNU General Public License for more details.
  
- 
  # ------------------------------------------------------------------
  #  CONSTRUCTOR - create new register window
  # ------------------------------------------------------------------
--- 11,16 ----
*************** body RegWin::constructor {args} {
*** 46,51 ****
--- 45,51 ----
  # ------------------------------------------------------------------
  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]
    remove_hook gdb_idle_hook [list $this idle]
*************** body RegWin::destructor {} {
*** 55,61 ****
  }
    
  
- 
  # ------------------------------------------------------------------
  #  METHOD:  build_win - build the main register window
  # ------------------------------------------------------------------
--- 55,60 ----
*************** body RegWin::build_win {} {
*** 160,166 ****
      $m add command -label "Remove from Display" -underline 0 -state disabled
      $m add separator
      $m add command -label "Display All Registers" -underline 0 -state disabled \
!       -command "$this display_all"
    }
    
    set Menu [menu $ScrolledWin.pop -tearoff 0]
--- 159,170 ----
      $m add command -label "Remove from Display" -underline 0 -state disabled
      $m add separator
      $m add command -label "Display All Registers" -underline 0 -state disabled \
! 			      -command "$this display_all"
!     set disp_all_menu_item [$m index last]
! 
!     if {!$all_regs_shown} {
!       $m entryconfigure $disp_all_menu_item -state normal
!     }
    }
    
    set Menu [menu $ScrolledWin.pop -tearoff 0]
*************** body RegWin::init_reg_display_vars {args
*** 187,193 ****
--- 191,199 ----
    set reg_display_list {}
    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]
      set reg_display($rn,name) $name
*************** body RegWin::init_reg_display_vars {args
*** 195,200 ****
--- 201,207 ----
      if {$format == ""} { set format x }
      set reg_display($rn,format) $format
      if {$args != "" && [pref getd gdb/reg/$name] == "no"} {
+       set all_regs_shown 0
        set reg_display($rn,line) 0
      } else {
        set reg_display($rn,line) $i
*************** body RegWin::init_reg_display_vars {args
*** 203,209 ****
      }
    }
    set num_regs [expr {$i - 1}]
!   set max_regs $rn
    set reg_names_dirty 0
  }
  
--- 210,216 ----
      }
    }
    set num_regs [expr {$i - 1}]
!   set max_regs $x
    set reg_names_dirty 0
  }
  
*************** body RegWin::disassembly_changed {} {
*** 224,231 ****
  # ------------------------------------------------------------------------------
  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} {
        pref setd gdb/reg/$name no
--- 231,239 ----
  # ------------------------------------------------------------------------------
  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} {
        pref setd gdb/reg/$name no
*************** body RegWin::save_reg_display_vars {} {
*** 237,243 ****
      } else {
        pref setd gdb/reg/$name-format {}
      }
-     incr rn
    }
    pref_save ""
  }
--- 245,250 ----
*************** body RegWin::but3 {rn X Y} {
*** 429,435 ****
  # ------------------------------------------------------------------
  body RegWin::display_all {} {
    init_reg_display_vars
!   $itk_interior.m.reg entryconfigure 4 -state disabled
    reconfig
  }
  
--- 436,443 ----
  # ------------------------------------------------------------------
  body RegWin::display_all {} {
    init_reg_display_vars
!   $itk_interior.m.reg entryconfigure $disp_all_menu_item -state disabled
!   set all_regs_shown 1
    reconfig
  }
  
*************** body RegWin::delete_from_display_list {r
*** 441,460 ****
    global reg_display max_regs
    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
    reconfig
    $itk_interior.m.reg entryconfigure 4 -state normal
  }
  
  # ------------------------------------------------------------------
  #  PUBLIC METHOD:  edit - edit a cell
--- 449,470 ----
    global reg_display max_regs
    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
    reconfig
    $itk_interior.m.reg entryconfigure 4 -state normal
  }
+ 
+ 
  
  # ------------------------------------------------------------------
  #  PUBLIC METHOD:  edit - edit a cell


 > 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
 > 

-- 
++==++==++==++==++==++==++==++==++==++==++==++==++==++==++==++==++==++==++
Jim Ingham                                              jingham@cygnus.com
Cygnus Solutions, a Red Hat Company                      

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Yet Another Register Window Patch
  2000-04-05 11:22 ` James Ingham
@ 2000-04-05 15:20   ` Steven Johnson
  0 siblings, 0 replies; 3+ messages in thread
From: Steven Johnson @ 2000-04-05 15:20 UTC (permalink / raw)
  To: James Ingham; +Cc: Insight Mailing List

Jim,
  Looks OK to me.

Steven.

James Ingham wrote:
> 
> Steven,
> 
> This looks good, thanks for catching this.  If you are going to save
> away the hidden registers, then you need to make sure that the
> "Display All Registers" menu item is activated whenever there are
> missing registers.  As it now stands, it only turns on when you
> actually remove one from the UI.  The following patch adds this bit
> too (it is against the sourceware cvs.)  Does this look okay to you?
> If so, I will check it in.
> 
> Jim
>

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2000-04-05 15:20 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2000-04-05  0:30 Yet Another Register Window Patch Steven Johnson
2000-04-05 11:22 ` James Ingham
2000-04-05 15:20   ` Steven Johnson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).