gdb/testsuite: Use 'array unset' instead of just 'unset'

Message ID 20200804113950.1346970-1-andrew.burgess@embecosm.com
State New
Headers show
Series
  • gdb/testsuite: Use 'array unset' instead of just 'unset'
Related show

Commit Message

Andrew Burgess Aug. 4, 2020, 11:39 a.m.
In the check-test-names.exp library 'unset' was being used to unset an
array variable.  Though this seems to work fine on tcl 8.6, it was
discovered on a CentOS 7.8.2003 machine, running tcl 8.5, that this
doesn't work and 'array unset' should be used instead.

Using 'array unset' should work fine for newer and older versions of
tcl (since 8.3, releases ~2000).

gdb/testsuite/ChangeLog:

	* lib/check-test-names.exp (do_reset_vars): Use 'array unset' to
	unset the array variable.
---
 gdb/testsuite/ChangeLog                | 5 +++++
 gdb/testsuite/lib/check-test-names.exp | 2 +-
 2 files changed, 6 insertions(+), 1 deletion(-)

-- 
2.25.4

Comments

Hannes Domani via Gdb-patches Aug. 4, 2020, 12:48 p.m. | #1
On 2020-08-04 7:39 a.m., Andrew Burgess wrote:
> In the check-test-names.exp library 'unset' was being used to unset an

> array variable.  Though this seems to work fine on tcl 8.6, it was

> discovered on a CentOS 7.8.2003 machine, running tcl 8.5, that this

> doesn't work and 'array unset' should be used instead.

> 

> Using 'array unset' should work fine for newer and older versions of

> tcl (since 8.3, releases ~2000).

> 

> gdb/testsuite/ChangeLog:

> 

> 	* lib/check-test-names.exp (do_reset_vars): Use 'array unset' to

> 	unset the array variable.

> ---

>  gdb/testsuite/ChangeLog                | 5 +++++

>  gdb/testsuite/lib/check-test-names.exp | 2 +-

>  2 files changed, 6 insertions(+), 1 deletion(-)

> 

> diff --git a/gdb/testsuite/lib/check-test-names.exp b/gdb/testsuite/lib/check-test-names.exp

> index 4c0fde6e4ea..d72de3cf821 100644

> --- a/gdb/testsuite/lib/check-test-names.exp

> +++ b/gdb/testsuite/lib/check-test-names.exp

> @@ -150,7 +150,7 @@ namespace eval ::CheckTestNames {

>  

>  	CheckTestNames::reset_vars

>  

> -	unset all_test_names

> +	array unset all_test_names

>  	foreach nm {paths duplicates} {

>  	    set counts($nm,count) 0

>  	}

> -- 

> 2.25.4

> 


Thanks, that makes it work.

For context (for others), I stumbled on this issue on machine gcc135 of the compile
farm, where running any test would give:

can't unset "all_test_names": no such variable
    while executing
"unset all_test_names"
    (procedure "CheckTestNames::do_reset_vars" line 7)
    invoked from within
"CheckTestNames::do_reset_vars"
    ("eval" body line 1)
    invoked from within
"eval "CheckTestNames::do_reset_vars""
    (procedure "reset_vars" line 2)
    invoked from within
"reset_vars"
    (procedure "runtest" line 10)
    invoked from within
"runtest $test_name"
    ("foreach" body line 42)
    invoked from within

Simon
Andrew Burgess Aug. 4, 2020, 2:56 p.m. | #2
* Simon Marchi <simon.marchi@polymtl.ca> [2020-08-04 08:48:27 -0400]:

> On 2020-08-04 7:39 a.m., Andrew Burgess wrote:

> > In the check-test-names.exp library 'unset' was being used to unset an

> > array variable.  Though this seems to work fine on tcl 8.6, it was

> > discovered on a CentOS 7.8.2003 machine, running tcl 8.5, that this

> > doesn't work and 'array unset' should be used instead.

> > 

> > Using 'array unset' should work fine for newer and older versions of

> > tcl (since 8.3, releases ~2000).

> > 

> > gdb/testsuite/ChangeLog:

> > 

> > 	* lib/check-test-names.exp (do_reset_vars): Use 'array unset' to

> > 	unset the array variable.

> > ---

> >  gdb/testsuite/ChangeLog                | 5 +++++

> >  gdb/testsuite/lib/check-test-names.exp | 2 +-

> >  2 files changed, 6 insertions(+), 1 deletion(-)

> > 

> > diff --git a/gdb/testsuite/lib/check-test-names.exp b/gdb/testsuite/lib/check-test-names.exp

> > index 4c0fde6e4ea..d72de3cf821 100644

> > --- a/gdb/testsuite/lib/check-test-names.exp

> > +++ b/gdb/testsuite/lib/check-test-names.exp

> > @@ -150,7 +150,7 @@ namespace eval ::CheckTestNames {

> >  

> >  	CheckTestNames::reset_vars

> >  

> > -	unset all_test_names

> > +	array unset all_test_names

> >  	foreach nm {paths duplicates} {

> >  	    set counts($nm,count) 0

> >  	}

> > -- 

> > 2.25.4

> > 

> 

> Thanks, that makes it work.


Excellent.  I've pushed this.

Thanks,
Andrew

Patch

diff --git a/gdb/testsuite/lib/check-test-names.exp b/gdb/testsuite/lib/check-test-names.exp
index 4c0fde6e4ea..d72de3cf821 100644
--- a/gdb/testsuite/lib/check-test-names.exp
+++ b/gdb/testsuite/lib/check-test-names.exp
@@ -150,7 +150,7 @@  namespace eval ::CheckTestNames {
 
 	CheckTestNames::reset_vars
 
-	unset all_test_names
+	array unset all_test_names
 	foreach nm {paths duplicates} {
 	    set counts($nm,count) 0
 	}