From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28429 invoked by alias); 12 Apr 2015 17:22:28 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 28414 invoked by uid 89); 12 Apr 2015 17:22:27 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_LOW,SPF_PASS,T_RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-HELO: mail-qk0-f182.google.com Received: from mail-qk0-f182.google.com (HELO mail-qk0-f182.google.com) (209.85.220.182) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Sun, 12 Apr 2015 17:22:25 +0000 Received: by qkhg7 with SMTP id g7so135015001qkh.2 for ; Sun, 12 Apr 2015 10:22:23 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=tmvdcnUgyke7d0EpKoTl+7xtqRVEwHXmqGcWaPUa3ZI=; b=UK11z1SBqMPCorfxR3a3lUE/kKdYd5thTTa0Qcqp3bIL2QiuEmignGHj4uzAL753of zjXs1BGpr6ri7QSTgN3k47+CkqXoTy46jKjdcc9aRWMDVx6JKvM80JLAuOburVUtpwhp YZENaksFCVcnd5ojSJe6MTUdHHUyUO/fhvWHEODj3EHok31jSrcsOz7SGbEUwta1rJfk mHJC2JyGgdEVcMQZxdYSqkTs/j+rLsA47yD7XH0NCznl21rTwMJ3nUzIOUkgw3Z0mF/E gG1z8RZxkihaXXj4XzDrsfC4G0jJVgm/Nj53M9eIWQkFhIvvJrydW8H3YyxMW0lDWklo MG9w== X-Gm-Message-State: ALoCoQnobkvnTwgVzyakCuGM9tbpu3DNVTurbKNE98vhw6FnVApFadvtIUAQyAFsGAUSov7Ud3Nq MIME-Version: 1.0 X-Received: by 10.202.198.149 with SMTP id w143mr4937584oif.72.1428859343027; Sun, 12 Apr 2015 10:22:23 -0700 (PDT) Received: by 10.182.103.101 with HTTP; Sun, 12 Apr 2015 10:22:22 -0700 (PDT) In-Reply-To: <87r3rqppgq.fsf@redhat.com> References: <1428666671-12926-1-git-send-email-qiyaoltc@gmail.com> <87r3rqppgq.fsf@redhat.com> Date: Sun, 12 Apr 2015 17:22:00 -0000 Message-ID: Subject: Re: [RFC] Unset tcl variable addr to avoid clashing From: Doug Evans To: Sergio Durigan Junior Cc: Yao Qi , gdb-patches Content-Type: text/plain; charset=UTF-8 X-IsSubscribed: yes X-SW-Source: 2015-04/txt/msg00440.txt.bz2 On Sat, Apr 11, 2015 at 10:03 AM, Sergio Durigan Junior wrote: > On Friday, April 10 2015, Yao Qi wrote: > >> From: Yao Qi >> >> Hi, >> I see some tcl ERRORs in gdb.sum recently: >> >> ERROR: tcl error sourcing ../../../../../binutils-gdb/gdb/testsuite/gdb.base/dmsym.exp. >> ERROR: can't set "addr": variable is array >> while executing >> "set addr "0x\[0-9a-zA-Z\]+"" >> (file "../../../../../binutils-gdb/gdb/testsuite/gdb.base/dmsym.exp" line 45) >> invoked from within >> "source ../../../../../binutils-gdb/gdb/testsuite/gdb.base/dmsym.exp" >> ("uplevel" body line 1) >> invoked from within >> "uplevel #0 source ../../../../../binutils-gdb/gdb/testsuite/gdb.base/dmsym.exp" >> invoked from within >> "catch "uplevel #0 source $test_file_name"" >> >> It is OK to run single dmsym.exp. This error is caused by the name >> clashing with coredump-filter.exp, and it can be reproduced, > > It seems that coredump-filter.exp is causing lots of headaches > lately... Sorry about that. > >> $ make check RUNTESTFLAGS='coredump-filter.exp dmsym.exp exception.exp stepi-random-signal.exp' >> >> as variable addr is used in all of them. This patch is to unset array >> addr, but manually unset variables isn't good to me. Is there any >> approaches we can do to avoid name clashing? > > FWIW, there is not strong reason to keep the variable name as "addr" in > the testcase. So, an easier solution would be to rename the variable to > something else, like "coredump_var_addr" (I think this name is unique > enough). The patch below does that. > > WDYT? > > -- > Sergio > GPG key ID: 237A 54B1 0287 28BF 00EF 31F4 D0EB 7628 65FC 5E36 > Please send encrypted e-mail if possible > http://sergiodj.net/ > > gdb/testsuite/ChangeLog: > 2015-04-11 Sergio Durigan Junior > > * gdb.base/coredump-filter.exp: Rename variable "addr" to > "coredump_var_addr" to avoid naming conflict with other > testcases. Ok by me with one nit. There's an issue here that still needs to be documented so it becomes part of the collective lore. Can this include a note about the need to give global array variables unique names to either testsuite/README or https://sourceware.org/gdb/wiki/Internals%20GDB-Testsuite-Coding-Standards > > diff --git a/gdb/testsuite/gdb.base/coredump-filter.exp b/gdb/testsuite/gdb.base/coredump-filter.exp > index f3203be..8c94e94 100644 > --- a/gdb/testsuite/gdb.base/coredump-filter.exp > +++ b/gdb/testsuite/gdb.base/coredump-filter.exp > @@ -38,7 +38,7 @@ proc do_save_core { filter_flag core ipid } { > } > > proc do_load_and_test_core { core var working_var working_value } { > - global hex decimal addr > + global hex decimal coredump_var_addr > > set core_loaded [gdb_core_cmd "$core" "load core"] > if { $core_loaded == -1 } { > @@ -47,9 +47,9 @@ proc do_load_and_test_core { core var working_var working_value } { > } > > # Access the memory the addresses point to. > - gdb_test "print/x *(char *) $addr($var)" "\(\\\$$decimal = \)?" \ > + gdb_test "print/x *(char *) $coredump_var_addr($var)" "\(\\\$$decimal = \)?" \ > "printing $var when core is loaded (should not work)" > - gdb_test "print/x *(char *) $addr($working_var)" " = $working_value.*" \ > + gdb_test "print/x *(char *) $coredump_var_addr($working_var)" " = $working_value.*" \ > "print/x *$working_var ( = $working_value)" > } > > @@ -163,7 +163,7 @@ foreach item $all_anon_corefiles { > set test "print/x $name" > gdb_test_multiple $test $test { > -re " = \($hex\)\r\n$gdb_prompt $" { > - set addr($name) $expect_out(1,string) > + set coredump_var_addr($name) $expect_out(1,string) > } > } > }