From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id Rx+JGTORpV/CGAAAWB0awg (envelope-from ) for ; Fri, 06 Nov 2020 13:08:51 -0500 Received: by simark.ca (Postfix, from userid 112) id 5BC021F08B; Fri, 6 Nov 2020 13:08:51 -0500 (EST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-1.1 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,MAILING_LIST_MULTI,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 Received: from sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 6AD331E58E for ; Fri, 6 Nov 2020 13:08:50 -0500 (EST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id E1CB33851C20; Fri, 6 Nov 2020 18:08:49 +0000 (GMT) Received: from mail-wr1-x441.google.com (mail-wr1-x441.google.com [IPv6:2a00:1450:4864:20::441]) by sourceware.org (Postfix) with ESMTPS id ADB7E3851C20 for ; Fri, 6 Nov 2020 18:08:46 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org ADB7E3851C20 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=embecosm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=andrew.burgess@embecosm.com Received: by mail-wr1-x441.google.com with SMTP id n15so2250878wrq.2 for ; Fri, 06 Nov 2020 10:08:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=embecosm.com; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=Mluf6l35zpuoMRCZaDPPj6FXYBj59RFs7dOphZ/lwA8=; b=QEIdpfPPDxHbQ0rL18zkjxssE9fgE1JzH4JmA5JGk7VOXI9HjFNK25XSqlYaorC3vI nd8v37Iv3PhevokU8093hF3RFUx+YLT9XKMlHnhzDaqUwhj7ouUugEHYBdfLPEgw8KkT OxIYbkjRe7bjab81WFvGybRmr4bNJ4Xd3uoLv1BjEqQ0QWXq3kgeSYOkZGSfXVfYu9BF sEia7oJOxsW8sFFzmTwusKT4xOxXTqETHygndB5Fy4YROqXe7PJ3pI6TwjyxqCNF6riE +HsJo5B+y9kVvu4ZRRrEMItSYzDbu99obbuvXx1YO6rTXO6+sxmlH3Li4SF5fpfxXKBL b8tg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=Mluf6l35zpuoMRCZaDPPj6FXYBj59RFs7dOphZ/lwA8=; b=neP0wg0z5RilcopZvDukcXP+aJBoRP6R/SM81coAKIMUzSHSdHpqXDaWhYR9kHyR3n OQLBGuema2Vy9WDhNmy8Krt0nc8PNO4SAHd1Jw36VzE5ME5Kmrh3kH1Us4gZSbKVS/Mf cIeRURyAs5Mwr8VAAzZsJWQFzvgDIBdfzIO7YXP+p1OErga4fZh1PB32eEB1swIpHi9g SfprgLL4aieOH/d9haypPJjrg/BxGK/djPJB1vBfm6qBPpUUUbGIlJPxOid/87BPJtIN +er6OUTJDt/hC4Odv07d5reRa+a7uT8UB7SH6u1rxDc28ReJo8oYqOoXYUH8ElAj4KuD Mc4Q== X-Gm-Message-State: AOAM532BfqWNGfVxptiMtag7lF3Qm8+m1H1hVM5MmQICHsyvRepqQhqP RvlFugykw4njzltUCZ9G+2rRx5VWKBsnoQ== X-Google-Smtp-Source: ABdhPJw3lDBhIt/mNrgCRUJFnF8RvluBt8IBI/rh7zFVjKSd6rdO5S2LG0KZn+1OxOyMlg4zC4fCQw== X-Received: by 2002:adf:db03:: with SMTP id s3mr4254580wri.152.1604686125690; Fri, 06 Nov 2020 10:08:45 -0800 (PST) Received: from localhost (host109-154-72-197.range109-154.btcentralplus.com. [109.154.72.197]) by smtp.gmail.com with ESMTPSA id o63sm3441163wmo.2.2020.11.06.10.08.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Nov 2020 10:08:45 -0800 (PST) Date: Fri, 6 Nov 2020 18:08:44 +0000 From: Andrew Burgess To: Simon Marchi Subject: Re: [PATCH] gdb/testsuite: make DWARF assembler's ranges' "base" and "range" procs Message-ID: <20201106180844.GI2729@embecosm.com> References: <20201106163359.2689648-1-simon.marchi@efficios.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20201106163359.2689648-1-simon.marchi@efficios.com> X-Operating-System: Linux/5.8.13-100.fc31.x86_64 (x86_64) X-Uptime: 18:07:33 up 12 days, 9:10, X-Editor: GNU Emacs [ http://www.gnu.org/software/emacs ] X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: gdb-patches@sourceware.org Errors-To: gdb-patches-bounces@sourceware.org Sender: "Gdb-patches" * Simon Marchi via Gdb-patches [2020-11-06 11:33:59 -0500]: > When creating a .debug_ranges section using the testsuite's DWARF > assembler, it currently looks like this: > > ranges { > sequence { > {base ...} > {range ...} > {range ...} > } > } > > The sub-tree of sequence is manually traversed as a list of lists. I > think it would be nicer if `base` and `range` where procedure, just like > the other levels: > > ranges { > sequence { > base ... > range ... > range ... > } > } > > That makes the implementation more robust, and the usage a bit nicer > (less special characters). It also allows having comments in between > the range list entries: > > ranges { > sequence { > base ... > range ... > > # Hello world. > range ... > } > } > > ... which doesn't work with the current approach. > > gdb/testsuite/ChangeLog: > > * lib/dwarf.exp (ranges): Handle "base" and "range" as > proceduresu. > * gdb.dwarf/dw2-bad-elf.exp: Adjust. > * gdb.dwarf2/dw2-inline-many-frames.exp: Adjust. > * gdb.dwarf2/dw2-inline-stepping.exp: Adjust. > * gdb.dwarf2/dw2-ranges-base.exp: Adjust. > * gdb.dwarf2/dw2-ranges-func.exp: Adjust. > * gdb.dwarf2/dw2-ranges-overlap.exp: Adjust. > * gdb.dwarf2/dw2-ranges-psym.exp: Adjust. > * gdb.dwarf2/enqueued-cu-base-addr.exp: Adjust. This seems like a good change to me. Thanks for doing this. Andrew > > Change-Id: I0b2af480faff54d0fd4214e0cc8d042d9583a865 > --- > gdb/testsuite/gdb.dwarf2/dw2-bad-elf.exp | 8 +-- > .../gdb.dwarf2/dw2-inline-many-frames.exp | 12 ++-- > .../gdb.dwarf2/dw2-inline-stepping.exp | 4 +- > gdb/testsuite/gdb.dwarf2/dw2-ranges-base.exp | 12 ++-- > gdb/testsuite/gdb.dwarf2/dw2-ranges-func.exp | 14 ++--- > .../gdb.dwarf2/dw2-ranges-overlap.exp | 8 +-- > gdb/testsuite/gdb.dwarf2/dw2-ranges-psym.exp | 12 ++-- > .../gdb.dwarf2/enqueued-cu-base-addr.exp | 2 +- > gdb/testsuite/lib/dwarf.exp | 55 +++++++++---------- > 9 files changed, 61 insertions(+), 66 deletions(-) > > diff --git a/gdb/testsuite/gdb.dwarf2/dw2-bad-elf.exp b/gdb/testsuite/gdb.dwarf2/dw2-bad-elf.exp > index e939046e961..20ecd68e7f1 100644 > --- a/gdb/testsuite/gdb.dwarf2/dw2-bad-elf.exp > +++ b/gdb/testsuite/gdb.dwarf2/dw2-bad-elf.exp > @@ -107,12 +107,12 @@ Dwarf::assemble $asm_file { > > ranges {is_64 [is_64_target]} { > ranges_label_1: sequence { > - {base [lindex $main_result 0]} > - {range 0 [lindex $main_result 1]} > + base [lindex $main_result 0] > + range 0 [lindex $main_result 1] > } > ranges_label_2: sequence { > - {base some_func} > - {range 0 64} > + base some_func > + range 0 64 > } > } > > diff --git a/gdb/testsuite/gdb.dwarf2/dw2-inline-many-frames.exp b/gdb/testsuite/gdb.dwarf2/dw2-inline-many-frames.exp > index 935d519934c..591a9276577 100644 > --- a/gdb/testsuite/gdb.dwarf2/dw2-inline-many-frames.exp > +++ b/gdb/testsuite/gdb.dwarf2/dw2-inline-many-frames.exp > @@ -281,12 +281,12 @@ Dwarf::assemble $asm_file { > > ranges {is_64 [is_64_target]} { > ranges_label: sequence { > - {range {${main_start}} ${main_end}} > - {range {${ddd_start}} ${ddd_end}} > - {range {${eee_start}} ${eee_end}} > - {range {${fff_start}} ${fff_end}} > - {range {${jjj_start}} ${jjj_end}} > - {range {${kkk_start}} ${kkk_end}} > + range ${main_start} ${main_end} > + range ${ddd_start} ${ddd_end} > + range ${eee_start} ${eee_end} > + range ${fff_start} ${fff_end} > + range ${jjj_start} ${jjj_end} > + range ${kkk_start} ${kkk_end} > } > } > } > diff --git a/gdb/testsuite/gdb.dwarf2/dw2-inline-stepping.exp b/gdb/testsuite/gdb.dwarf2/dw2-inline-stepping.exp > index 24fbb717b22..a5853242dc5 100644 > --- a/gdb/testsuite/gdb.dwarf2/dw2-inline-stepping.exp > +++ b/gdb/testsuite/gdb.dwarf2/dw2-inline-stepping.exp > @@ -122,8 +122,8 @@ Dwarf::assemble $asm_file { > > ranges {is_64 [is_64_target]} { > ranges_label: sequence { > - {range {${main_start}} ${main_end}} > - {range {${bar_start}} ${bar_end}} > + range ${main_start} ${main_end} > + range ${bar_start} ${bar_end} > } > } > } > diff --git a/gdb/testsuite/gdb.dwarf2/dw2-ranges-base.exp b/gdb/testsuite/gdb.dwarf2/dw2-ranges-base.exp > index 3f03fa6f7ec..3164a908e70 100644 > --- a/gdb/testsuite/gdb.dwarf2/dw2-ranges-base.exp > +++ b/gdb/testsuite/gdb.dwarf2/dw2-ranges-base.exp > @@ -115,12 +115,12 @@ Dwarf::assemble $asm_file { > # base for each function. > ranges {is_64 [is_64_target]} { > ranges_label: sequence { > - {base [lindex $main_func 0]} > - {range 0 [lindex $main_func 1]} > - {base [lindex $frame2_func 0]} > - {range 0 [lindex $frame2_func 1]} > - {base [lindex $frame3_func 0]} > - {range 0 [lindex $frame3_func 1]} > + base [lindex $main_func 0] > + range 0 [lindex $main_func 1] > + base [lindex $frame2_func 0] > + range 0 [lindex $frame2_func 1] > + base [lindex $frame3_func 0] > + range 0 [lindex $frame3_func 1] > } > } > } > diff --git a/gdb/testsuite/gdb.dwarf2/dw2-ranges-func.exp b/gdb/testsuite/gdb.dwarf2/dw2-ranges-func.exp > index ac37b24285a..504b4049c2f 100644 > --- a/gdb/testsuite/gdb.dwarf2/dw2-ranges-func.exp > +++ b/gdb/testsuite/gdb.dwarf2/dw2-ranges-func.exp > @@ -199,15 +199,15 @@ proc do_test {suffix} { > # Generate ranges data. > ranges {is_64 [is_64_target]} { > func_ranges_label: sequence { > - {range {$foo_start } $foo_end} > - {range {$foo_cold_start} $foo_cold_end} > + range $foo_start $foo_end > + range $foo_cold_start $foo_cold_end > } > cu_ranges_label: sequence { > - {range {$foo_start } $foo_end} > - {range {$foo_cold_start} $foo_cold_end} > - {range {$main_start} $main_end} > - {range {$bar_start} $bar_end} > - {range {$baz_start} $baz_end} > + range $foo_start $foo_end > + range $foo_cold_start $foo_cold_end > + range $main_start $main_end > + range $bar_start $bar_end > + range $baz_start $baz_end > } > } > } > diff --git a/gdb/testsuite/gdb.dwarf2/dw2-ranges-overlap.exp b/gdb/testsuite/gdb.dwarf2/dw2-ranges-overlap.exp > index 59c10c8ae24..485f5c04f1f 100644 > --- a/gdb/testsuite/gdb.dwarf2/dw2-ranges-overlap.exp > +++ b/gdb/testsuite/gdb.dwarf2/dw2-ranges-overlap.exp > @@ -66,10 +66,10 @@ Dwarf::assemble $asm_file { > > ranges {is_64 [is_64_target]} { > ranges_label: sequence { > - {base [lindex $main_func 0]} > - {range 0 [lindex $main_func 1]} > - {base [lindex $bar_func 0]} > - {range 0 [lindex $bar_func 1]} > + base [lindex $main_func 0] > + range 0 [lindex $main_func 1] > + base [lindex $bar_func 0] > + range 0 [lindex $bar_func 1] > } > } > } > diff --git a/gdb/testsuite/gdb.dwarf2/dw2-ranges-psym.exp b/gdb/testsuite/gdb.dwarf2/dw2-ranges-psym.exp > index 4ced125cd18..1be27c2622b 100644 > --- a/gdb/testsuite/gdb.dwarf2/dw2-ranges-psym.exp > +++ b/gdb/testsuite/gdb.dwarf2/dw2-ranges-psym.exp > @@ -108,14 +108,14 @@ Dwarf::assemble $asm_file { > # Generate ranges data. > ranges {is_64 [is_64_target]} { > func_ranges_label: sequence { > - {range {$foo_start } $foo_end} > - {range {$foo_low_start} $foo_low_end} > + range $foo_start $foo_end > + range $foo_low_start $foo_low_end > } > cu_ranges_label: sequence { > - {range {$foo_start } $foo_end} > - {range {$foo_low_start} $foo_low_end} > - {range {$bar_start} $bar_end} > - {range {$baz_start} $baz_end} > + range $foo_start $foo_end > + range $foo_low_start $foo_low_end > + range $bar_start $bar_end > + range $baz_start $baz_end > } > } > } > diff --git a/gdb/testsuite/gdb.dwarf2/enqueued-cu-base-addr.exp b/gdb/testsuite/gdb.dwarf2/enqueued-cu-base-addr.exp > index 77fe6ff5e94..e4ac1c9851e 100644 > --- a/gdb/testsuite/gdb.dwarf2/enqueued-cu-base-addr.exp > +++ b/gdb/testsuite/gdb.dwarf2/enqueued-cu-base-addr.exp > @@ -73,7 +73,7 @@ Dwarf::assemble $asm_file { > > ranges {is_64 [is_64_target]} { > ranges_label: sequence { > - {range 0 [lindex $main_func 1]} > + range 0 [lindex $main_func 1] > } > } > } > diff --git a/gdb/testsuite/lib/dwarf.exp b/gdb/testsuite/lib/dwarf.exp > index c585621ac48..c1596df58be 100644 > --- a/gdb/testsuite/lib/dwarf.exp > +++ b/gdb/testsuite/lib/dwarf.exp > @@ -1247,42 +1247,37 @@ namespace eval Dwarf { > set section ".debug_ranges" > _section $section > > - proc sequence {{ranges {}}} { > + proc sequence { body } { > variable _debug_ranges_64_bit > > # Emit the sequence of addresses. > - set base "" > - foreach range $ranges { > - set range [uplevel 1 "subst \"$range\""] > - set type [lindex $range 0] > - switch -exact -- $type { > - base { > - set base [lrange $range 1 end] > - > - if { $_debug_ranges_64_bit } then { > - _op .8byte 0xffffffffffffffff "Base Marker" > - _op .8byte $base "Base Address" > - } else { > - _op .4byte 0xffffffff "Base Marker" > - _op .4byte $base "Base Address" > - } > - } > - range { > - set start [lindex $range 1] > - set end [lrange $range 2 end] > - > - if { $_debug_ranges_64_bit } then { > - _op .8byte $start "Start Address" > - _op .8byte $end "End Address" > - } else { > - _op .4byte $start "Start Address" > - _op .4byte $end "End Address" > - } > - } > - default { error "unknown range type: $type " } > + > + proc base { addr } { > + variable _debug_ranges_64_bit > + > + if { $_debug_ranges_64_bit } then { > + _op .8byte 0xffffffffffffffff "Base Marker" > + _op .8byte $addr "Base Address" > + } else { > + _op .4byte 0xffffffff "Base Marker" > + _op .4byte $addr "Base Address" > } > } > > + proc range { start end } { > + variable _debug_ranges_64_bit > + > + if { $_debug_ranges_64_bit } then { > + _op .8byte $start "Start Address" > + _op .8byte $end "End Address" > + } else { > + _op .4byte $start "Start Address" > + _op .4byte $end "End Address" > + } > + } > + > + uplevel $body > + > # End of the sequence. > if { $_debug_ranges_64_bit } then { > _op .8byte 0x0 "End of Sequence Marker (Part 1)" > -- > 2.28.0 >