[gdb/testsuite] Allow some tests in gdb.base/restore.exp to be unsupported
authorTom de Vries <tdevries@suse.de>
Sun, 22 Sep 2019 04:14:29 +0000 (06:14 +0200)
committerTom de Vries <tdevries@suse.de>
Sun, 22 Sep 2019 04:14:29 +0000 (06:14 +0200)
We currently run into:
...
248       n = callee1 (n + l5);
(gdb) PASS: gdb.base/restore.exp: caller5 calls callee1; return callee now
print l1
$51 = <optimized out>
(gdb) FAIL: gdb.base/restore.exp: caller5 calls callee1; return restored l1 \
  to 32492
...

The problem is that we try to access the value of l1 in function caller5, but
variable l1 has no DW_AT_location attribute.  Since l1 is declared using the
register keyword, it's valid for gcc to emit no DW_AT_location at -O0.

Change the FAIL into an UNSUPPORTED.

Tested on x86_64-linux.

gdb/testsuite/ChangeLog:

2019-09-22  Tom de Vries  <tdevries@suse.de>

* gdb.base/restore.exp: Allow register variables to be optimized out at
-O0.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/restore.exp

index 64c7d388619a05ec8b29509105bd915489bdd2e8..37e323f747c69804939755d5c171283847953afc 100644 (file)
@@ -1,3 +1,8 @@
+2019-09-22  Tom de Vries  <tdevries@suse.de>
+
+       * gdb.base/restore.exp: Allow register variables to be optimized out at
+       -O0.
+
 2019-09-20  Ulrich Weigand  <uweigand@de.ibm.com>
 
        * gdb.arch/spu-info.exp: Remove file.
index 947fe58be47a2d0366682486df7c30aa39c831e5..56c2f5e3dce238c097de8eccc265b4182506863e 100644 (file)
@@ -73,8 +73,17 @@ proc restore_tests { } {
            # they should be.
             for {set var 1} {$var <= $c} {incr var} {
                 set expected [expr 0x7eeb + $var]
-               gdb_test "print l$var" " = $expected" \
-                   "caller$c calls callee$e; return restored l$var to $expected"
+               set test "caller$c calls callee$e; return restored l$var to $expected"
+               set pass_pattern " = $expected"
+               set unsupported_pattern " = <optimized out>"
+               gdb_test_multiple "print l$var" $test {
+                   -re "\[\r\n\]*(?:$pass_pattern)\[\r\n\]+$gdb_prompt $" {
+                       pass $test
+                   }
+                   -re "\[\r\n\]*(?:$unsupported_pattern)\[\r\n\]+$gdb_prompt $" {
+                       unsupported $test
+                   }
+               }
             }
         }
     }