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

* Re: [PATCH] gdb/testsuite: make DWARF assembler's ranges' "base" and "range" procs
  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
  0 siblings, 1 reply; 3+ messages in thread
From: Andrew Burgess @ 2020-11-06 18:08 UTC (permalink / raw)
  To: Simon Marchi; +Cc: gdb-patches

* Simon Marchi via Gdb-patches <gdb-patches@sourceware.org> [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
> 

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

* Re: [PATCH] gdb/testsuite: make DWARF assembler's ranges' "base" and "range" procs
  2020-11-06 18:08 ` Andrew Burgess
@ 2020-11-06 18:11   ` Simon Marchi via Gdb-patches
  0 siblings, 0 replies; 3+ messages in thread
From: Simon Marchi via Gdb-patches @ 2020-11-06 18:11 UTC (permalink / raw)
  To: Andrew Burgess; +Cc: gdb-patches

On 2020-11-06 1:08 p.m., Andrew Burgess wrote:
> This seems like a good change to me.
> 
> Thanks for doing this.
> 
> Andrew

I pushed it, thanks.

Simon

^ 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