Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* [PATCH] gdb/testsuite: make DWARF assembler's ranges' "base" and "range" procs
@ 2020-11-06 16:33 Simon Marchi via Gdb-patches
  2020-11-06 18:08 ` Andrew Burgess
  0 siblings, 1 reply; 3+ messages in thread
From: Simon Marchi via Gdb-patches @ 2020-11-06 16:33 UTC (permalink / raw)
  To: gdb-patches; +Cc: Simon Marchi

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


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-11-06 18:11 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-06 16:33 [PATCH] gdb/testsuite: make DWARF assembler's ranges' "base" and "range" procs Simon Marchi via Gdb-patches
2020-11-06 18:08 ` Andrew Burgess
2020-11-06 18:11   ` Simon Marchi via Gdb-patches

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox