[gdb/testsuite] Fix gdb.threads/omp-par-scope.exp XPASS
authorTom de Vries <tdevries@suse.de>
Fri, 20 Mar 2020 18:32:07 +0000 (19:32 +0100)
committerTom de Vries <tdevries@suse.de>
Fri, 20 Mar 2020 18:32:07 +0000 (19:32 +0100)
commitc623cc90890de9958bcee382cc60ff1b605532ab
tree25fb53e368a2d236887304a82d9618e61c7419fa
parentc884cc46193c98fd0b90ce8a79c081f6a1c18cc6
[gdb/testsuite] Fix gdb.threads/omp-par-scope.exp XPASS

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.

Tested on x86_64-linux, with gcc 7.5.0 (where the test xfails) and gcc
10.0.1 (where the test passes).
gdb/testsuite/gdb.threads/omp-par-scope.exp
gdb/testsuite/lib/gdb.exp