I noticed that an early return in a foreach_with_prefix block does not
cause the outer scope to return, like:
  foreach_with_prefix var {"foo" "bar"} {
     return
  }
  # Control continues here, but it should not.
The problem is that we're missing the usual "return -code" treatment.
This commit fixes it.
gdb/testsuite/ChangeLog:
2019-07-03  Pedro Alves  <palves@redhat.com>
	* lib/gdb.exp (foreach_with_prefix): Use "catch" and
	"return -code".
+2019-07-03  Pedro Alves  <palves@redhat.com>
+
+       * lib/gdb.exp (foreach_with_prefix): Use "catch" and
+       "return -code".
+
 2019-07-03  Pedro Alves  <palves@redhat.com>
 
        PR cli/24732
 
     upvar 1 $var myvar
     foreach myvar $list {
        with_test_prefix "$var=$myvar" {
-           uplevel 1 $body
+           set code [catch {uplevel 1 $body} result]
+       }
+
+       if {$code == 1} {
+           global errorInfo errorCode
+           return -code $code -errorinfo $errorInfo -errorcode $errorCode $result
+       } else {
+           return -code $code $result
        }
     }
 }