Re: [PATCH] Update gdb.ada/unchecked_union.exp for gnat-llvm

Andrew Burgess <[email protected]>
Newsgroups gmane.comp.gdb.patches
Message-ID <[email protected]>
Tom Tromey <[email protected]> writes:

> gnat-llvm emits a slightly different encoding for Ada unchecked
> unions.  In particular this will let gdb show the discrminant for some
> branches of a union which currently cannot be seen in GCC's output.

I found this text really hard to understand initially.  I initially
thought the "this" in the second sentence was talking about "this
patch", the encoding change.  I also assumed the talk about "GCC's
output" was a typo for "GDB's output", but you really mean "GDB's output
when compiling with GCC's GNAT".

Could I suggest a rewording:

  gnat-llvm emits a slightly different encoding for Ada unchecked
  unions. This encoding lets GDB resolve the discriminant for some
  branches that appear as "?" when compiled with GCC's GNAT.

I do wish the quotemeta system didn't do hungry white space matching by
default, especially as it's use expands through the testsuite.  But
that's out of scope for this patch, which looks good.

Approved-By: Andrew Burgess <[email protected]>

Thanks,
Andrew


>
> This patch updates gdb.ada/unchecked_union.exp to allow this.
> ---
>  gdb/testsuite/gdb.ada/unchecked_union.exp | 14 ++++++++++----
>  1 file changed, 10 insertions(+), 4 deletions(-)
>
> diff --git a/gdb/testsuite/gdb.ada/unchecked_union.exp b/gdb/testsuite/gdb.ada/unchecked_union.exp
> index 6a54e606712..ef9da787e65 100644
> --- a/gdb/testsuite/gdb.ada/unchecked_union.exp
> +++ b/gdb/testsuite/gdb.ada/unchecked_union.exp
> @@ -24,20 +24,23 @@ standard_ada_testfile unchecked_union
>  proc multi_line_string {str} {
>      set result {}
>      foreach line $str {
> -	lappend result [string_to_regexp $line]
> +	lappend result [quotemeta $line]
>      }
>      set res [multi_line {*}$result]
>      verbose -log "RES: '$res'"
>      return $res
>  }
>  
> +# Note the quotemeta expression here.  gnat-llvm emits slightly a
> +# different encoding here, which lets gdb see the discriminant for a
> +# branch.
>  set inner_string \
>      [list \
>  	 "    case ? is" \
>  	 "        when 0 =>" \
>  	 "            small: range 0 .. 255;" \
>  	 "            second: range 0 .. 255;" \
> -	 "        when ? =>" \
> +	 "        when @/\[1?\]/ =>" \
>  	 "            bval: range 0 .. 255;" \
>  	 "        when others =>" \
>  	 "            large: range 255 .. 510;" \
> @@ -50,12 +53,15 @@ set inner_full \
>  	 $inner_string \
>  	 [list "end record"]]
>  
> +# Note the quotemeta expression here.  gnat-llvm emits slightly a
> +# different encoding here, which lets gdb see the discriminant for a
> +# branch.
>  set pair_string \
>      [list \
>  	 "    case ? is" \
> -	 "        when ? =>" \
> +	 "        when @/\[0?\]/ =>" \
>  	 "            field_one: range 0 .. 255;" \
> -	 "        when ? =>" \
> +	 "        when @/(\\?|others)/ =>" \
>  	 "            field_two: range 255 .. 510;" \
>  	 "    end case;"]
>  
>
> base-commit: 0f9faaebc91bc1886a563bde6c178601b4be743b
> -- 
> 2.55.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.