mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-23 11:39:26 +08:00
[gdb/testsuite] Remove dependence on tcl_unknown
In gdb_init we install a local version of ::unknown, which relies on ::tcl_unknown, which is defined by dejagnu. This proc may be moved into a namespace, or disappear altogether, as indicated by dejagnu maintainers, so we can't rely on it. Fix this by recreating tcl's version of unknown, and using that instead. Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2020-06-17 Tom de Vries <tdevries@suse.de> * lib/gdb.exp (gdb_tcl_unknown): New proc. (gdb_init): Use gdb_tcl_unknown for ::unknown override. Make override conditional on presence of gdb_tcl_unknown. (gdb_finish): Make override undo conditional on presence of gdb_tcl_unknown.
This commit is contained in:
@ -1,3 +1,11 @@
|
|||||||
|
2020-06-17 Tom de Vries <tdevries@suse.de>
|
||||||
|
|
||||||
|
* lib/gdb.exp (gdb_tcl_unknown): New proc.
|
||||||
|
(gdb_init): Use gdb_tcl_unknown for ::unknown override. Make override
|
||||||
|
conditional on presence of gdb_tcl_unknown.
|
||||||
|
(gdb_finish): Make override undo conditional on presence of
|
||||||
|
gdb_tcl_unknown.
|
||||||
|
|
||||||
2020-06-16 Tom Tromey <tom@tromey.com>
|
2020-06-16 Tom Tromey <tom@tromey.com>
|
||||||
|
|
||||||
* gdb.python/tui-window.py (failwin): New function. Register it
|
* gdb.python/tui-window.py (failwin): New function. Register it
|
||||||
|
@ -5177,6 +5177,17 @@ proc gdb_cleanup_globals {} {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Create gdb_tcl_unknown, a copy tcl's ::unknown, provided it's present as a
|
||||||
|
# proc.
|
||||||
|
set temp [interp create]
|
||||||
|
if { [interp eval $temp "info procs ::unknown"] != "" } {
|
||||||
|
set old_args [interp eval $temp "info args ::unknown"]
|
||||||
|
set old_body [interp eval $temp "info body ::unknown"]
|
||||||
|
eval proc gdb_tcl_unknown {$old_args} {$old_body}
|
||||||
|
}
|
||||||
|
interp delete $temp
|
||||||
|
unset temp
|
||||||
|
|
||||||
proc gdb_init { test_file_name } {
|
proc gdb_init { test_file_name } {
|
||||||
# Reset the timeout value to the default. This way, any testcase
|
# Reset the timeout value to the default. This way, any testcase
|
||||||
# that changes the timeout value without resetting it cannot affect
|
# that changes the timeout value without resetting it cannot affect
|
||||||
@ -5283,14 +5294,16 @@ proc gdb_init { test_file_name } {
|
|||||||
|
|
||||||
gdb_setup_known_globals
|
gdb_setup_known_globals
|
||||||
|
|
||||||
|
if { [info procs ::gdb_tcl_unknown] != "" } {
|
||||||
# Dejagnu overrides proc unknown. The dejagnu version may trigger in a
|
# Dejagnu overrides proc unknown. The dejagnu version may trigger in a
|
||||||
# test-case but abort the entire test run. To fix this, we install a
|
# test-case but abort the entire test run. To fix this, we install a
|
||||||
# local version here, which reverts dejagnu's override, and restore
|
# local version here, which reverts dejagnu's override, and restore
|
||||||
# dejagnu's version in gdb_finish.
|
# dejagnu's version in gdb_finish.
|
||||||
rename ::unknown ::dejagnu_unknown
|
rename ::unknown ::dejagnu_unknown
|
||||||
proc unknown { args } {
|
proc unknown { args } {
|
||||||
# Dejagnu saves the original version in ::tcl_unknown, use it.
|
# Use tcl's unknown.
|
||||||
return [uplevel 1 ::tcl_unknown $args]
|
return [uplevel 1 ::gdb_tcl_unknown $args]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $res
|
return $res
|
||||||
@ -5302,9 +5315,11 @@ proc gdb_finish { } {
|
|||||||
global cleanfiles
|
global cleanfiles
|
||||||
global known_globals
|
global known_globals
|
||||||
|
|
||||||
|
if { [info procs ::gdb_tcl_unknown] != "" } {
|
||||||
# Restore dejagnu's version of proc unknown.
|
# Restore dejagnu's version of proc unknown.
|
||||||
rename ::unknown ""
|
rename ::unknown ""
|
||||||
rename ::dejagnu_unknown ::unknown
|
rename ::dejagnu_unknown ::unknown
|
||||||
|
}
|
||||||
|
|
||||||
# Exit first, so that the files are no longer in use.
|
# Exit first, so that the files are no longer in use.
|
||||||
gdb_exit
|
gdb_exit
|
||||||
|
Reference in New Issue
Block a user