From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id O/BDIf96pV9eFgAAWB0awg (envelope-from ) for ; Fri, 06 Nov 2020 11:34:07 -0500 Received: by simark.ca (Postfix, from userid 112) id 79A741F08B; Fri, 6 Nov 2020 11:34:07 -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 644251E58F for ; Fri, 6 Nov 2020 11:34:06 -0500 (EST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id A99F23857806; Fri, 6 Nov 2020 16:34:05 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A99F23857806 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1604680445; bh=petYOkQiEfTSuhdFSTyvVfjFP4YqYjTp0uDF0B2mKI4=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:Cc:From; b=DaZ9QTOnfqVADhbMcxXqNVlo5owxAWC4xEi5tfvXUa1vLr6JpU1OLy9B3LN7Ekdl/ D6OzKucFHGbl0WerCzoaeqCHVF148d5vOIZi+pKYKF18UUgzd+Lis9C+6s2dzAgf4E wK057M2pTg4YK6M6kX6SyKsUOshO9p/O3ITr+vDY= Received: from barracuda.ebox.ca (barracuda.ebox.ca [96.127.255.19]) by sourceware.org (Postfix) with ESMTPS id 7C8003857C52 for ; Fri, 6 Nov 2020 16:34:01 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 7C8003857C52 X-ASG-Debug-ID: 1604680440-0c856e6cd614e70001-fS2M51 Received: from smtp.ebox.ca (smtp.ebox.ca [96.127.255.82]) by barracuda.ebox.ca with ESMTP id nbFmfNDBpvvozQOn (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 06 Nov 2020 11:34:00 -0500 (EST) X-Barracuda-Envelope-From: simon.marchi@efficios.com X-Barracuda-RBL-Trusted-Forwarder: 96.127.255.82 Received: from epycamd.internal.efficios.com (192-222-181-218.qc.cable.ebox.net [192.222.181.218]) by smtp.ebox.ca (Postfix) with ESMTP id 157DC441B21; Fri, 6 Nov 2020 11:34:00 -0500 (EST) X-Barracuda-RBL-IP: 192.222.181.218 X-Barracuda-Effective-Source-IP: 192-222-181-218.qc.cable.ebox.net[192.222.181.218] X-Barracuda-Apparent-Source-IP: 192.222.181.218 To: gdb-patches@sourceware.org Subject: [PATCH] gdb/testsuite: make DWARF assembler's ranges' "base" and "range" procs Date: Fri, 6 Nov 2020 11:33:59 -0500 X-ASG-Orig-Subj: [PATCH] gdb/testsuite: make DWARF assembler's ranges' "base" and "range" procs Message-Id: <20201106163359.2689648-1-simon.marchi@efficios.com> X-Mailer: git-send-email 2.28.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: smtp.ebox.ca[96.127.255.82] X-Barracuda-Start-Time: 1604680440 X-Barracuda-Encrypted: DHE-RSA-AES256-SHA X-Barracuda-URL: https://96.127.255.19:443/cgi-mod/mark.cgi X-Barracuda-BRTS-Status: 1 X-Virus-Scanned: by bsmtpd at ebox.ca X-Barracuda-Scan-Msg-Size: 10017 X-Barracuda-Spam-Score: 0.50 X-Barracuda-Spam-Status: No, SCORE=0.50 using global scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=8.0 tests=BSF_RULE7568M X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.85689 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M Custom Rule 7568M 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: , From: Simon Marchi via Gdb-patches Reply-To: Simon Marchi Cc: Simon Marchi Errors-To: gdb-patches-bounces@sourceware.org Sender: "Gdb-patches" 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. 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