summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/gdbtk/library/ChangeLog8
-rw-r--r--gdb/gdbtk/library/bpwin.itb7
-rw-r--r--gdb/gdbtk/library/download.itb2
-rw-r--r--gdb/gdbtk/library/interface.tcl15
-rw-r--r--gdb/gdbtk/library/managedwin.itb5
-rw-r--r--gdb/gdbtk/library/prefs.tcl56
-rw-r--r--gdb/gdbtk/library/session.tcl124
-rw-r--r--gdb/gdbtk/library/srcbar.tcl17
-rw-r--r--gdb/gdbtk/library/srctextwin.itb28
-rw-r--r--gdb/gdbtk/library/srctextwin.ith2
-rw-r--r--gdb/gdbtk/library/srcwin.itb160
-rw-r--r--gdb/gdbtk/library/srcwin.ith19
-rw-r--r--gdb/gdbtk/library/tclIndex24
13 files changed, 401 insertions, 66 deletions
diff --git a/gdb/gdbtk/library/ChangeLog b/gdb/gdbtk/library/ChangeLog
index 2ba1b0c3952..1803c672622 100644
--- a/gdb/gdbtk/library/ChangeLog
+++ b/gdb/gdbtk/library/ChangeLog
@@ -1,3 +1,11 @@
+2000-11-30 Tom Tromey <tromey@cygnus.com>
+
+ * prefs.tcl (pref_save): Put version number into file. Added
+ `session' to list of top-level keys. Allow keys with many `/'s.
+ (pref_read): Recognize version number.
+ (escape_value): Generate URL-style encoding.
+ (unescape_value): Added `version' argument. Handle URL decoding.
+
2000-11-29 Larry Smith <lsmith@redhat.com>
* regwin.itb (build_win,but3): Added "Double" menu entry to
diff --git a/gdb/gdbtk/library/bpwin.itb b/gdb/gdbtk/library/bpwin.itb
index 17f85c05dc0..ee895a9472a 100644
--- a/gdb/gdbtk/library/bpwin.itb
+++ b/gdb/gdbtk/library/bpwin.itb
@@ -688,10 +688,5 @@ body BpWin::goto_bp {r} {
}
set pc [lindex $bpinfo 3]
- # !! FIXME: multiple source windows?
- set src [lindex [ManagedWin::find SrcWin] 0]
- set info [gdb_loc *$pc]
- $src location BROWSE_TAG $info
+ SrcWin::choose_and_display BROWSE_TAG [gdb_loc *$pc]
}
-
-
diff --git a/gdb/gdbtk/library/download.itb b/gdb/gdbtk/library/download.itb
index d7dd915aabb..38d056e70b7 100644
--- a/gdb/gdbtk/library/download.itb
+++ b/gdb/gdbtk/library/download.itb
@@ -266,7 +266,7 @@ body Download::download_it { } {
catch {$download_dialog done}
}
}
-
+
foreach src [ManagedWin::find SrcWin] {
if {$download_error == "CANCEL"} {
$src download_progress CANCEL 1 1
diff --git a/gdb/gdbtk/library/interface.tcl b/gdb/gdbtk/library/interface.tcl
index 1669bf1466a..264ce13d58e 100644
--- a/gdb/gdbtk/library/interface.tcl
+++ b/gdb/gdbtk/library/interface.tcl
@@ -206,7 +206,7 @@ define_hook gdb_quit_hook
# PROCEDURE: gdbtk_quit_check - Ask if the user really wants to quit.
# ------------------------------------------------------------------
proc gdbtk_quit_check {} {
- global gdb_downloading gdb_running
+ global gdb_downloading gdb_running gdb_exe_name
if {$gdb_downloading} {
set msg "Downloading to target,\n really close the debugger?"
@@ -214,14 +214,16 @@ proc gdbtk_quit_check {} {
return 0
}
} elseif {$gdb_running} {
- # While we are running the inferior, gdb_cmd is fenceposted and returns
- # immediately. Therefore, we need to ask here. Do we need to stop the target,
- # too?
+ # While we are running the inferior, gdb_cmd is fenceposted and
+ # returns immediately. Therefore, we need to ask here. Do we need
+ # to stop the target, too?
set msg "A debugging session is active.\n"
append msg "Do you still want to close the debugger?"
if {![gdbtk_tcl_query $msg no]} {
return 0
}
+ } elseif {$gdb_exe_name != ""} {
+ session_save
}
return 1
}
@@ -736,6 +738,11 @@ proc gdbtk_locate_main {} {
proc set_exe_name {exe} {
global gdb_exe_name gdb_exe_changed
#debug "set_exe_name: exe=$exe gdb_exe_name=$gdb_exe_name"
+
+ if {$gdb_exe_name != ""} then {
+ session_save
+ }
+
set gdb_exe_name $exe
set gdb_exe_changed 1
}
diff --git a/gdb/gdbtk/library/managedwin.itb b/gdb/gdbtk/library/managedwin.itb
index 1bda9f59eda..e55b8230d47 100644
--- a/gdb/gdbtk/library/managedwin.itb
+++ b/gdb/gdbtk/library/managedwin.itb
@@ -40,11 +40,6 @@ body ManagedWin::reveal {} {
set top [winfo toplevel [namespace tail $this]]
raise $top
wm deiconify $top
-
- # I don't understand this next line and no one commented it, so it's gone.
- #focus -force [focus -lastfor $top]
-
- focus $top
}
body ManagedWin::restart {} {
diff --git a/gdb/gdbtk/library/prefs.tcl b/gdb/gdbtk/library/prefs.tcl
index b1639ce7dc8..26676c6a5f3 100644
--- a/gdb/gdbtk/library/prefs.tcl
+++ b/gdb/gdbtk/library/prefs.tcl
@@ -72,10 +72,15 @@ proc pref_read {} {
if {$file_opened == "1"} {
set section gdb
+ set version 0
while {[gets $fd line] >= 0} {
switch -regexp -- $line {
{^[ \t\n]*#.*} {
- ;# comment; ignore it
+ # Comment. We recognize one magic comment that includes
+ # the version number.
+ if {[regexp -- "^GDBtkInitVersion: (\[0-9\]+)\$" $line v]} {
+ set version $v
+ }
}
{^[ \t\n]*$} {
@@ -94,7 +99,7 @@ proc pref_read {} {
default {
regexp "\[ \t\n\]*\(.+\)=\(.+\)" $line a name val
# Must unescape equal signs in val
- set val [unescape_value $val]
+ set val [unescape_value $val $version]
if {$section == "gdb"} {
pref setd gdb/$name $val
} elseif {$section == "global" && [regexp "^font/" $name]} {
@@ -141,6 +146,7 @@ proc pref_save {{win {}}} {
}
puts $fd "\# GDBtk Init file"
+ puts $fd {# GDBtkInitVersion: 1}
set plist [pref list]
# write out global options
@@ -170,16 +176,18 @@ proc pref_save {{win {}}} {
}
}
- #now loop through all sections writing out values
+ # now loop through all sections writing out values
+ # FIXME: this is broken. We should discover the list
+ # dynamically.
lappend secs load console src reg stack locals watch bp search \
- process geometry help browser kod window
+ process geometry help browser kod window session
foreach section $secs {
puts $fd "\[$section\]"
foreach var $plist {
set t [split $var /]
if {[lindex $t 0] == "gdb" && [lindex $t 1] == $section} {
- set x [lindex $t 2]
+ set x [join [lrange $t 2 end] /]
set v [escape_value [pref get $var]]
if {$x != "" && $v != ""} {
puts $fd "\t$x=$v"
@@ -200,22 +208,40 @@ proc pref_save {{win {}}} {
# prefs to a file
# -------------------------------------------------------
proc escape_value {val} {
-
- if {[regsub -all -- = $val {!%} newval]} {
- return $newval
- }
-
- return $val
+ # We use a URL-style quoting. We encode `=', `%', the `[]'
+ # characters and newlines. We use a cute trick here: we regsub in
+ # command expressions which we then expand using subst.
+ regsub -all -- "(\[\]\[=%\n\])" $val \
+ {[format "%%%02x" [scan {\1} %c x; set x]]} newval
+ return [subst -nobackslashes -novariables $newval]
}
# -------------------------------------------------------
# PROC: unescape_value - unescape all equal signs for
-# reading prefs from a file
+# reading prefs from a file. VERSION is the version
+# number of the encoding.
+# version 0 only encoded `='.
+# version 1 correctly encoded more values
# -------------------------------------------------------
-proc unescape_value {val} {
+proc unescape_value {val version} {
+ switch -exact -- $version {
+ 0 {
+ # Old-style encoding.
+ if {[regsub -all -- {!%} $val = newval]} {
+ return $newval
+ }
+ }
+
+ 1 {
+ # Version 1 uses URL encoding.
+ regsub -all -- "%(..)" $val \
+ {[format %c 0x\1]} newval
+ return [subst -nobackslashes -novariables $newval]
+ }
- if {[regsub -all -- {!%} $val = newval]} {
- return $newval
+ default {
+ error "Unknown encoding version $version"
+ }
}
return $val
diff --git a/gdb/gdbtk/library/session.tcl b/gdb/gdbtk/library/session.tcl
new file mode 100644
index 00000000000..137794b9424
--- /dev/null
+++ b/gdb/gdbtk/library/session.tcl
@@ -0,0 +1,124 @@
+# Local preferences functions for GDBtk.
+# Copyright 2000 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License (GPL) as published by
+# the Free Software Foundation; either version 2 of the License, or (at
+# your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+#
+# This procedure decides what makes up a gdb `session'. Roughly a
+# session is whatever the user found useful when debugging a certain
+# executable.
+#
+# Eventually we should expand this procedure to know how to save
+# window placement and contents. That requires more work.
+#
+proc session_save {} {
+ global gdb_exe_name gdb_target_name
+ global gdb_current_directory gdb_source_path gdb_inferior_args
+
+ # gdb sessions are named after the executable.
+ set name $gdb_exe_name
+ set key gdb/session/$name
+
+ # We fill a hash and then use that to set the actual preferences.
+
+ # Always set the exe. name in case we later decide to change the
+ # interpretation of the session key.
+ set values(executable) $gdb_exe_name
+
+ # Some simple state the user wants. FIXME: these should have
+ # dedicated commands instead of using `gdb_cmd'.
+ set values(args) $gdb_inferior_args
+ set values(dirs) $gdb_source_path
+ set values(pwd) $gdb_current_directory
+
+ set values(target) $gdb_target_name
+
+ # Recompute list of recent sessions. Trim to no more than 5 sessions.
+ set recent [concat [list $name] \
+ [lremove [pref getd gdb/recent-projects] $name]]
+ if {[llength $recent] > 5} then {
+ set recent [lreplace $recent 5 end]
+ }
+ pref setd gdb/recent-projects $recent
+
+ foreach k [array names values] {
+ pref setd $key/$k $values($k)
+ }
+ pref setd $key/all-keys [array names values]
+}
+
+#
+# Load a session saved with session_save. NAME is the pretty name of
+# the session, as returned by session_list.
+#
+proc session_load {name} {
+ # gdb sessions are named after the executable.
+ set key gdb/session/$name
+
+ # Fetch all keys for this session into an array.
+ foreach k [pref getd $key/all-keys] {
+ set values($k) [pref getd $key/$k]
+ }
+
+ if {[info exists values(dirs)]} {
+ # FIXME: short-circuit confirmation.
+ gdb_cmd "directory"
+ gdb_cmd "directory $values(dirs)"
+ }
+
+ if {[info exists values(pwd)]} {
+ gdb_cmd "cd $values(pwd)"
+ }
+
+ if {[info exists values(args)]} {
+ gdb_cmd "set args $values(args)"
+ }
+
+ if {[info exists values(executable)]} {
+ gdb_clear_file
+ set_exe_name $values(executable)
+ set_exe
+ }
+
+ # FIXME: handle target
+}
+
+#
+# Delete a session. NAME is the internal name of the session.
+#
+proc session_delete {name} {
+ # FIXME: we can't yet fully define this because the libgui
+ # preference code doesn't supply a delete method.
+ set recent [lremove [pref getd gdb/recent-projects] $name]
+ pref setd gdb/recent-projects $recent
+}
+
+#
+# Return a list of all known sessions. This returns the `pretty name'
+# of the session -- something suitable for a menu.
+#
+proc session_list {} {
+ set newlist {}
+ set result {}
+ foreach name [pref getd gdb/recent-projects] {
+ set exe [pref getd gdb/session/$name/executable]
+ # Take this opportunity to prune the list.
+ if {[file exists $exe]} then {
+ lappend newlist $name
+ lappend result $exe
+ } else {
+ # FIXME: if we could delete keys we would delete all keys
+ # associated with NAME now.
+ }
+ }
+ pref setd gdb/recent-projects $newlist
+ return $result
+}
diff --git a/gdb/gdbtk/library/srcbar.tcl b/gdb/gdbtk/library/srcbar.tcl
index bfd1dcd82d9..8249a5fbf37 100644
--- a/gdb/gdbtk/library/srcbar.tcl
+++ b/gdb/gdbtk/library/srcbar.tcl
@@ -123,6 +123,17 @@ class GDBSrcBar {
add_menu_command Other "Source..." \
"source_file" -underline 0
+ set sessions [session_list]
+ if {[llength $sessions]} {
+ add_menu_separator
+ set i 1
+ foreach item $sessions {
+ add_menu_command Other "$i $item" \
+ [list session_load $item] \
+ -underline 0
+ }
+ }
+
add_menu_separator
if {$tcl_platform(platform) == "windows"} {
@@ -136,21 +147,19 @@ class GDBSrcBar {
"$this _apply_source print" \
-underline 0 -accelerator "Ctrl+P"
add_menu_separator
-
}
-
+
add_menu_command Other "Target Settings..." "set_target_name" \
-underline 0
add_menu_separator
add_menu_command None "Exit" gdbtk_quit -underline 1
-
+
create_run_menu
create_view_menu
if {[pref get gdb/control_target]} {
create_control_menu
-
}
if {[pref get gdb/mode]} {
diff --git a/gdb/gdbtk/library/srctextwin.itb b/gdb/gdbtk/library/srctextwin.itb
index a8c12a0ede3..393c0d649b4 100644
--- a/gdb/gdbtk/library/srctextwin.itb
+++ b/gdb/gdbtk/library/srctextwin.itb
@@ -692,6 +692,7 @@ body SrcTextWin::addPopup {menu label command {abg {}} {browse 1} {run 1}} {
}
}
+
# ------------------------------------------------------------------
# METHOD: handle_set_hook - Handle changes in the gdb variables
# changed through the "set" gdb command.
@@ -1139,6 +1140,22 @@ body SrcTextWin::_highlightAsmLine {win addr pc_addr tagname} {
}
# ------------------------------------------------------------------
+# METHOD: set_tag - update tag to STACK without making other changes
+# ------------------------------------------------------------------
+body SrcTextWin::set_tag_to_stack {} {
+ foreach window [list $twin $bwin] {
+ if {$window == ""} then {
+ continue
+ }
+ foreach {start end} [$window tag ranges PC_TAG] {
+ $window tag remove PC_TAG $start $end
+ $window tag add STACK_TAG $start $end
+ }
+ }
+ set current(tag) STACK_TAG
+}
+
+# ------------------------------------------------------------------
# METHOD: location - display a location in a file
# ------------------------------------------------------------------
body SrcTextWin::location {tagname filename funcname line addr pc_addr lib} {
@@ -1555,7 +1572,7 @@ body SrcTextWin::hasTP {win line} {
}
# ------------------------------------------------------------------
-# METHOD: report_current_location
+# METHOD: report_source_location
#
# This function reports the "current" location in the source
# window, where current means what gdb_loc would return, if
@@ -2726,6 +2743,13 @@ body SrcTextWin::test_get {var} {
}
# ------------------------------------------------------------------
+# METHOD: get_file - Return name of current file.
+# ------------------------------------------------------------------
+body SrcTextWin::get_file {} {
+ return $current(filename)
+}
+
+# ------------------------------------------------------------------
# METHOD: clear_file - Clear out state so that user may load
# new executable. For the SrcTextWin class, this means:
#
@@ -2801,5 +2825,3 @@ body SrcTextWin::_clear_cache {} {
}
}
}
-
-
diff --git a/gdb/gdbtk/library/srctextwin.ith b/gdb/gdbtk/library/srctextwin.ith
index acca6b0d15d..7b6e9438dee 100644
--- a/gdb/gdbtk/library/srctextwin.ith
+++ b/gdb/gdbtk/library/srctextwin.ith
@@ -86,6 +86,8 @@ class SrcTextWin {
method do_thread_bp {listbox}
method test_get {var}
method clear_file {}
+ method get_file {}
+ method set_tag_to_stack {}
}
protected {
diff --git a/gdb/gdbtk/library/srcwin.itb b/gdb/gdbtk/library/srcwin.itb
index 9388aa69aa1..ab54c2c2ceb 100644
--- a/gdb/gdbtk/library/srcwin.itb
+++ b/gdb/gdbtk/library/srcwin.itb
@@ -19,26 +19,29 @@ body SrcWin::constructor {args} {
debug "$args"
eval itk_initialize $args
set top [winfo toplevel $itk_interior]
-
+
_update_title ""
-
+
# On Windows, create a sizebox.
if {$::tcl_platform(platform) == "windows"} {
ide_sizebox $itk_interior.sizebox
}
-
+
set Tracing [pref get gdb/mode]
set current(filename) ""
-
+
if {[catch {_build_win} mssg]} {
dbug E "_build_win returned: $::errorInfo"
}
-
+
# add special delete handler
wm protocol $top WM_DELETE_WINDOW "[code $this _exit]"
-
+
# add hooks
- add_hook gdb_update_hook "$this update"
+ if {! $update_hook_init} then {
+ set update_hook_init 1
+ add_hook gdb_update_hook "SrcWin::choose_and_update"
+ }
add_hook gdb_busy_hook "$this busy"
add_hook gdb_idle_hook "$this idle"
add_hook gdb_no_inferior_hook "$this no_inferior"
@@ -48,6 +51,8 @@ body SrcWin::constructor {args} {
after idle "
update idletasks
$this sizeWinByChild toolbar"
+
+ lappend window_list $this
}
# ------------------------------------------------------------------
@@ -55,13 +60,16 @@ body SrcWin::constructor {args} {
# ------------------------------------------------------------------
body SrcWin::destructor {} {
debug
- remove_hook gdb_update_hook "$this update"
remove_hook gdb_busy_hook "$this busy"
remove_hook gdb_no_inferior_hook "$this no_inferior"
remove_hook gdb_idle_hook "$this idle"
remove_hook download_progress_hook "$this download_progress"
remove_hook state_hook [code $this _set_state]
remove_hook gdb_clear_file_hook [code $this clear_file]
+ set window_list [lremove $window_list $this]
+ if {$pc_window == $this} then {
+ set pc_window ""
+ }
}
# ------------------------------------------------------------------
@@ -463,19 +471,15 @@ body SrcWin::stack {cmd} {
}
# ------------------------------------------------------------------
-# PUBLIC METHOD: update - update widget when PC changes
+# METHOD: _update - update widget when PC changes
# ------------------------------------------------------------------
-body SrcWin::update {} {
- if {[catch {gdb_loc} loc]} {
- set_execution_status
- } else {
- debug "loc=$loc"
- # See if name combobox needs filled.
- if {$need_files} {
- fillNameCB
- }
- location "" $loc
+body SrcWin::_update {loc} {
+ debug "loc=$loc"
+ # See if name combobox needs filled.
+ if {$need_files} {
+ fillNameCB
}
+ location "" $loc
}
# ------------------------------------------------------------------
@@ -868,3 +872,121 @@ body SrcWin::clear_file {} {
# run srctextwin clear_file
$twin clear_file
}
+
+# ------------------------------------------------------------------
+# METHOD: get_file
+# Return name of displayed file, or empty string if no file.
+# ------------------------------------------------------------------
+body SrcWin::get_file {} {
+ if {$twin == ""} {
+ return ""
+ } else {
+ return [$twin get_file]
+ }
+}
+
+# ------------------------------------------------------------------
+# METHOD: is_fixed
+# Return boolean indicating whether this window is fixed.
+# ------------------------------------------------------------------
+body SrcWin::is_fixed {} {
+ return 0
+}
+
+# ------------------------------------------------------------------
+# METHOD: get_top
+# Return toplevel
+# ------------------------------------------------------------------
+body SrcWin::get_top {} {
+ return $top
+}
+
+# ------------------------------------------------------------------
+# METHOD: _set_tag_to_stack
+# Set tag to `stack' and update the underlying window.
+# ------------------------------------------------------------------
+body SrcWin::_set_tag_to_stack {} {
+ set tag STACK_TAG
+ if {$twin != ""} then {
+ $twin set_tag_to_stack
+ }
+}
+
+# ------------------------------------------------------------------
+# METHOD: _choose_window
+# Choose the right source window.
+# ------------------------------------------------------------------
+body SrcWin::_choose_window {file} {
+ # Find the next available source window. The rules are:
+ # 1. LRU overall
+ # 2. Skip iconified windows
+ # 3. If a window already shows the file, use it. Prefer the
+ # window currently showing the PC
+ # 4. If the window is fixed, skip it
+ if {$pc_window != ""} then {
+ if {[$pc_window get_file] == $file} then {
+ return $pc_window
+ }
+ }
+
+ set choice ""
+ foreach win $window_list {
+ if {[wm state [$win get_top]] != "normal"} then {
+ continue
+ }
+
+ if {[$win get_file] == ""
+ || [$win get_file] == $file
+ || ! [$win is_fixed]} then {
+ set choice $win
+ break
+ }
+ }
+
+ # If we didn't find an available window, then pick the current PC
+ # window.
+ if {$choice == ""} then {
+ set choice $pc_window
+ }
+
+ set window_list [lremove $window_list $choice]
+ lappend window_list $choice
+
+ return $choice
+}
+
+# ------------------------------------------------------------------
+# METHOD: choose_and_update
+# Choose the right source window and then cause it to be updated
+# ------------------------------------------------------------------
+body SrcWin::choose_and_update {} {
+ if {$pc_window == ""} then {
+ set pc_window [lindex $window_list 0]
+ }
+
+ if {$pc_window == ""} then {
+ # Nothing.
+ } elseif {[catch {gdb_loc} loc]} {
+ $pc_window set_execution_status
+ } else {
+ set prev $pc_window
+ set file [lindex $loc 2]
+ set pc_window [_choose_window $file]
+ debug "chose window $pc_window"
+ $pc_window _update $loc
+ if {$pc_window != $prev} then {
+ $pc_window reveal
+ $prev _set_tag_to_stack
+ }
+ }
+}
+
+# ------------------------------------------------------------------
+# METHOD: choose_and_display
+# Choose the right source window for a given file
+# ------------------------------------------------------------------
+body SrcWin::choose_and_display {tag linespec} {
+ set file [lindex $linespec 2]
+ set window [_choose_window $file]
+ $window location $tag $linespec
+}
diff --git a/gdb/gdbtk/library/srcwin.ith b/gdb/gdbtk/library/srcwin.ith
index f955158d445..5ad1da70a51 100644
--- a/gdb/gdbtk/library/srcwin.ith
+++ b/gdb/gdbtk/library/srcwin.ith
@@ -48,11 +48,14 @@ class SrcWin {
method stack {cmd}
method test_get {var {private_func 0}}
method toggle_updates {value}
- method update {}
method toolbar {state}
method inferior {action}
method clear_file {}
+ method get_file {}
+ method is_fixed {}
+ proc choose_and_update {}
+ proc choose_and_display {tag linespec}
proc point_to_main {}
}
@@ -64,6 +67,10 @@ class SrcWin {
method _set_name { val {found 1} }
method _set_state {varname}
method _update_title {name}
+ method _update {loc}
+ method get_top {}
+ method _set_tag_to_stack {}
+ proc _choose_window {file}
variable _statbar
variable _status
variable _toolbar
@@ -75,12 +82,18 @@ class SrcWin {
variable _mangled_func
variable Tracing
variable saved_msg "" ;# static
-
+
# statics used for downloads
variable last_section ""
variable last_section_start 0
variable last_done 0
-
+
+ # These keep track of the current PC window and the list of all
+ # source windows.
+ common window_list ""
+ common pc_window ""
+ common update_hook_init 0
+
# fenceposts
variable Running 0
variable NoRun 0
diff --git a/gdb/gdbtk/library/tclIndex b/gdb/gdbtk/library/tclIndex
index caaf35200c7..9a0dcd8b055 100644
--- a/gdb/gdbtk/library/tclIndex
+++ b/gdb/gdbtk/library/tclIndex
@@ -8,12 +8,10 @@
set auto_index(About) [list source [file join $dir about.tcl]]
set auto_index(ActionDlg) [list source [file join $dir actiondlg.tcl]]
-set auto_index(::tty::_xterm_rgb) [list source [file join $dir inferior_term.tcl]]
-set auto_index(::tty::create) [list source [file join $dir inferior_term.tcl]]
-set auto_index(::tty::destroy) [list source [file join $dir inferior_term.tcl]]
set auto_index(gdbtk_tcl_preloop) [list source [file join $dir interface.tcl]]
set auto_index(gdbtk_busy) [list source [file join $dir interface.tcl]]
set auto_index(gdbtk_update) [list source [file join $dir interface.tcl]]
+set auto_index(gdbtk_update_safe) [list source [file join $dir interface.tcl]]
set auto_index(gdbtk_idle) [list source [file join $dir interface.tcl]]
set auto_index(gdbtk_quit_check) [list source [file join $dir interface.tcl]]
set auto_index(gdbtk_quit) [list source [file join $dir interface.tcl]]
@@ -84,6 +82,10 @@ set auto_index(escape_value) [list source [file join $dir prefs.tcl]]
set auto_index(unescape_value) [list source [file join $dir prefs.tcl]]
set auto_index(pref_set_defaults) [list source [file join $dir prefs.tcl]]
set auto_index(pref_src-font_trace) [list source [file join $dir prefs.tcl]]
+set auto_index(session_save) [list source [file join $dir session.tcl]]
+set auto_index(session_load) [list source [file join $dir session.tcl]]
+set auto_index(session_delete) [list source [file join $dir session.tcl]]
+set auto_index(session_list) [list source [file join $dir session.tcl]]
set auto_index(GDBSrcBar) [list source [file join $dir srcbar.tcl]]
set auto_index(TdumpWin) [list source [file join $dir tdump.tcl]]
set auto_index(TfindArgs) [list source [file join $dir tfind_args.tcl]]
@@ -110,7 +112,6 @@ set auto_index(list_element_strcmp) [list source [file join $dir util.tcl]]
set auto_index(VariableWin) [list source [file join $dir variables.tcl]]
set auto_index(::VariableWin::getLocals) [list source [file join $dir variables.tcl]]
set auto_index(WarningDlg) [list source [file join $dir warning.tcl]]
-set auto_index(::WarningDlg::destructor) [list source [file join $dir warning.tcl]]
set auto_index(::WarningDlg::constructor) [list source [file join $dir warning.tcl]]
set auto_index(WatchWin) [list source [file join $dir watch.tcl]]
set auto_index(AttachDlg) [list source [file join $dir attachdlg.ith]]
@@ -312,6 +313,7 @@ set auto_index(::KodWin::_disable_buttons) [list source [file join $dir kod.itb]
set auto_index(::KodWin::_restore_buttons) [list source [file join $dir kod.itb]]
set auto_index(::ManagedWin::reconfig) [list source [file join $dir managedwin.itb]]
set auto_index(::ManagedWin::window_name) [list source [file join $dir managedwin.itb]]
+set auto_index(::ManagedWin::pickle) [list source [file join $dir managedwin.itb]]
set auto_index(::ManagedWin::reveal) [list source [file join $dir managedwin.itb]]
set auto_index(::ManagedWin::restart) [list source [file join $dir managedwin.itb]]
set auto_index(::ManagedWin::shutdown) [list source [file join $dir managedwin.itb]]
@@ -393,9 +395,9 @@ set auto_index(::RegWin::fixLength) [list source [file join $dir regwin.itb]]
set auto_index(::RegWin::but3) [list source [file join $dir regwin.itb]]
set auto_index(::RegWin::display_all) [list source [file join $dir regwin.itb]]
set auto_index(::RegWin::delete_from_display_list) [list source [file join $dir regwin.itb]]
-set auto_index(::RegWin::addToWatch) [list source [file join $dir regwin.itb]]
set auto_index(::RegWin::edit) [list source [file join $dir regwin.itb]]
set auto_index(::RegWin::acceptEdit) [list source [file join $dir regwin.itb]]
+set auto_index(::RegWin::addToWatch) [list source [file join $dir regwin.itb]]
set auto_index(::RegWin::unedit) [list source [file join $dir regwin.itb]]
set auto_index(::RegWin::update) [list source [file join $dir regwin.itb]]
set auto_index(::RegWin::idle) [list source [file join $dir regwin.itb]]
@@ -432,6 +434,7 @@ set auto_index(::SrcTextWin::FillSource) [list source [file join $dir srctextwin
set auto_index(::SrcTextWin::FillAssembly) [list source [file join $dir srctextwin.itb]]
set auto_index(::SrcTextWin::FillMixed) [list source [file join $dir srctextwin.itb]]
set auto_index(::SrcTextWin::_highlightAsmLine) [list source [file join $dir srctextwin.itb]]
+set auto_index(::SrcTextWin::set_tag_to_stack) [list source [file join $dir srctextwin.itb]]
set auto_index(::SrcTextWin::location) [list source [file join $dir srctextwin.itb]]
set auto_index(::SrcTextWin::LoadFile) [list source [file join $dir srctextwin.itb]]
set auto_index(::SrcTextWin::display_line) [list source [file join $dir srctextwin.itb]]
@@ -445,6 +448,7 @@ set auto_index(::SrcTextWin::hasTP) [list source [file join $dir srctextwin.itb]
set auto_index(::SrcTextWin::report_source_location) [list source [file join $dir srctextwin.itb]]
set auto_index(::SrcTextWin::lookup_line) [list source [file join $dir srctextwin.itb]]
set auto_index(::SrcTextWin::continue_to_here) [list source [file join $dir srctextwin.itb]]
+set auto_index(::SrcTextWin::jump_to_here) [list source [file join $dir srctextwin.itb]]
set auto_index(::SrcTextWin::set_bp_at_line) [list source [file join $dir srctextwin.itb]]
set auto_index(::SrcTextWin::remove_bp_at_line) [list source [file join $dir srctextwin.itb]]
set auto_index(::SrcTextWin::set_tp_at_line) [list source [file join $dir srctextwin.itb]]
@@ -471,6 +475,7 @@ set auto_index(::SrcTextWin::print) [list source [file join $dir srctextwin.itb]
set auto_index(::SrcTextWin::ask_thread_bp) [list source [file join $dir srctextwin.itb]]
set auto_index(::SrcTextWin::do_thread_bp) [list source [file join $dir srctextwin.itb]]
set auto_index(::SrcTextWin::test_get) [list source [file join $dir srctextwin.itb]]
+set auto_index(::SrcTextWin::get_file) [list source [file join $dir srctextwin.itb]]
set auto_index(::SrcTextWin::clear_file) [list source [file join $dir srctextwin.itb]]
set auto_index(::SrcTextWin::_initialize_srctextwin) [list source [file join $dir srctextwin.itb]]
set auto_index(::SrcTextWin::_clear_cache) [list source [file join $dir srctextwin.itb]]
@@ -487,7 +492,7 @@ set auto_index(::SrcWin::fillNameCB) [list source [file join $dir srcwin.itb]]
set auto_index(::SrcWin::fillFuncCB) [list source [file join $dir srcwin.itb]]
set auto_index(::SrcWin::location) [list source [file join $dir srcwin.itb]]
set auto_index(::SrcWin::stack) [list source [file join $dir srcwin.itb]]
-set auto_index(::SrcWin::update) [list source [file join $dir srcwin.itb]]
+set auto_index(::SrcWin::_update) [list source [file join $dir srcwin.itb]]
set auto_index(::SrcWin::idle) [list source [file join $dir srcwin.itb]]
set auto_index(::SrcWin::mode) [list source [file join $dir srcwin.itb]]
set auto_index(::SrcWin::_update_title) [list source [file join $dir srcwin.itb]]
@@ -507,6 +512,13 @@ set auto_index(::SrcWin::test_get) [list source [file join $dir srcwin.itb]]
set auto_index(::SrcWin::toolbar) [list source [file join $dir srcwin.itb]]
set auto_index(::SrcWin::inferior) [list source [file join $dir srcwin.itb]]
set auto_index(::SrcWin::clear_file) [list source [file join $dir srcwin.itb]]
+set auto_index(::SrcWin::get_file) [list source [file join $dir srcwin.itb]]
+set auto_index(::SrcWin::is_fixed) [list source [file join $dir srcwin.itb]]
+set auto_index(::SrcWin::get_top) [list source [file join $dir srcwin.itb]]
+set auto_index(::SrcWin::_set_tag_to_stack) [list source [file join $dir srcwin.itb]]
+set auto_index(::SrcWin::_choose_window) [list source [file join $dir srcwin.itb]]
+set auto_index(::SrcWin::choose_and_update) [list source [file join $dir srcwin.itb]]
+set auto_index(::SrcWin::choose_and_display) [list source [file join $dir srcwin.itb]]
set auto_index(::StackWin::constructor) [list source [file join $dir stackwin.itb]]
set auto_index(::StackWin::destructor) [list source [file join $dir stackwin.itb]]
set auto_index(::StackWin::build_win) [list source [file join $dir stackwin.itb]]