Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Tom de Vries <tdevries@suse.de>
To: gdb-patches@sourceware.org
Subject: Re: [PATCH][gdb/testsuite] Fix gdb.threads/omp-par-scope.exp XPASS
Date: Fri, 20 Mar 2020 15:34:10 +0100	[thread overview]
Message-ID: <1cd4b846-ba36-e742-91c3-078f79549566@suse.de> (raw)
In-Reply-To: <20200319100302.GA10681@delia>

On 19-03-2020 11:03, Tom de Vries wrote:
> Hi,
> 
> When running test-case gdb.threads/omp-par-scope.exp, I get this XPASS:
> ...
> XPASS: gdb.threads/omp-par-scope.exp: nested_parallel: outer_threads: \
>   outer stop: get valueof "num"
> ...
> for test:
> ...
>            set thread_num [get_valueof "" "num" "unknown"]
> ...
> 
> The intention of the test is to get the value of local variable num, which
> has been set to:
> ...
>     int num = omp_get_thread_num ();
> ...
> but the actually printed value is 'num':
> ...
> (gdb) print num^M
> $76 = num^M
> ...
> 
> This is due to the fact that num is missing in the locals, so instead we find
> the enum member 'num' of enum expression_operator in glibc/intl/plural-exp.h.
> 
> Fix this by getting the value using a new proc get_local_valueof, which uses
> the "info locals" commands to get the value.
> 

Alternatively, we could use "set auto-solib-add off".

Thanks,
- Tom

> Tested on x86_64-linux, with gcc 7.5.0 (where the test xfails) and gcc
> 10.0.1 (where the test passes).
> 
> OK for trunk?
> 
> Thanks,
> - Tom
> 
> [gdb/testsuite] Fix gdb.threads/omp-par-scope.exp XPASS
> 
> ---
>  gdb/testsuite/gdb.threads/omp-par-scope.exp |  2 +-
>  gdb/testsuite/lib/gdb.exp                   | 24 ++++++++++++++++++++++++
>  2 files changed, 25 insertions(+), 1 deletion(-)
> 
> diff --git a/gdb/testsuite/gdb.threads/omp-par-scope.exp b/gdb/testsuite/gdb.threads/omp-par-scope.exp
> index 16441d3ec6..890696200f 100644
> --- a/gdb/testsuite/gdb.threads/omp-par-scope.exp
> +++ b/gdb/testsuite/gdb.threads/omp-par-scope.exp
> @@ -273,7 +273,7 @@ with_test_prefix "nested_parallel" {
>  	    gdb_continue_to_breakpoint "at printf"
>  
>  	    if {$have_older_gcc} { setup_xfail "*-*-*" }
> -	    set thread_num [get_valueof "" "num" "unknown"]
> +	    set thread_num [get_local_valueof "num" "unknown"]
>  
>  	    gdb_test "print file_scope_var" "= 9876"
>  	    if {$have_older_gcc} { setup_xfail "*-*-*" }
> diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
> index b14b3a968e..e17ac0ef75 100644
> --- a/gdb/testsuite/lib/gdb.exp
> +++ b/gdb/testsuite/lib/gdb.exp
> @@ -6173,6 +6173,30 @@ proc get_valueof { fmt exp default {test ""} } {
>      return ${val}
>  }
>  
> +# Retrieve the value of local var EXP in the inferior.  DEFAULT is used as
> +# fallback if print fails.  TEST is the test message to use.  It can be
> +# omitted, in which case a test message is built from EXP.
> +
> +proc get_local_valueof { exp default {test ""} } {
> +    global gdb_prompt
> +
> +    if {$test == "" } {
> +	set test "get local valueof \"${exp}\""
> +    }
> +
> +    set val ${default}
> +    gdb_test_multiple "info locals ${exp}" "$test" {
> +	-re "$exp = (\[^\r\n\]*)\[\r\n\]*$gdb_prompt $" {
> +	    set val $expect_out(1,string)
> +	    pass "$test"
> +	}
> +	timeout {
> +	    fail "$test (timeout)"
> +	}
> +    }
> +    return ${val}
> +}
> +
>  # Retrieve the value of EXP in the inferior, as a signed decimal value
>  # (using "print /d").  DEFAULT is used as fallback if print fails.
>  # TEST is the test message to use.  It can be omitted, in which case
> 


  reply	other threads:[~2020-03-20 14:34 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-19 10:03 Tom de Vries
2020-03-20 14:34 ` Tom de Vries [this message]
2020-03-20 15:52 ` Tom Tromey

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=1cd4b846-ba36-e742-91c3-078f79549566@suse.de \
    --to=tdevries@suse.de \
    --cc=gdb-patches@sourceware.org \
    /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