Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Simon Marchi via Gdb-patches <gdb-patches@sourceware.org>
To: gdb-patches@sourceware.org
Cc: Simon Marchi <simon.marchi@efficios.com>
Subject: [PATCH] gdb/testsuite: make DWARF assembler's ranges' "base" and "range" procs
Date: Fri,  6 Nov 2020 11:33:59 -0500	[thread overview]
Message-ID: <20201106163359.2689648-1-simon.marchi@efficios.com> (raw)

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


             reply	other threads:[~2020-11-06 16:34 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-06 16:33 Simon Marchi via Gdb-patches [this message]
2020-11-06 18:08 ` Andrew Burgess
2020-11-06 18:11   ` Simon Marchi via Gdb-patches

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20201106163359.2689648-1-simon.marchi@efficios.com \
    --to=gdb-patches@sourceware.org \
    --cc=simon.marchi@efficios.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox