gdb.mi/mi-info-os.exp: Fix cross-debugger testing
authorPedro Alves <palves@redhat.com>
Thu, 9 Jan 2014 19:57:13 +0000 (19:57 +0000)
committerPedro Alves <palves@redhat.com>
Thu, 9 Jan 2014 19:57:13 +0000 (19:57 +0000)
A live target is required for `-info-os' to work in non-native
configurations.

 (gdb)
 Expecting: ^(-info-os[
 ]+)?(.*\^done,OSDataTable=.*[
 ]+[(]gdb[)]
 [ ]*)
 -info-os
 ^error,msg="Don't know how to get OS data.  Try \"help target\"."
 (gdb)
 FAIL: gdb.mi/mi-info-os.exp: -info-os

If GDB does have a native configuration included, but we're testing
remote, it'll be worse, as if we're not connected yet, -info-os will
run against the default run target, and pass, falsely giving the
impression the remote bits were exercised.

gdb/testsuite/
2014-01-09  Maciej W. Rozycki  <macro@codesourcery.com>
    Pedro Alves  <palves@redhat.com>

* gdb.mi/mi-info-os.exp: Connect to the target with
        mi_gdb_target_load.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.mi/mi-info-os.exp

index 9ba1192..4c4dcec 100644 (file)
@@ -1,3 +1,9 @@
+2014-01-09  Maciej W. Rozycki  <macro@codesourcery.com>
+           Pedro Alves  <palves@redhat.com>
+
+       * gdb.mi/mi-info-os.exp: Connect to the target with
+        mi_gdb_target_load.
+
 2014-01-08  Pedro Alves  <palves@redhat.com>
 
        * gdb.threads/reconnect-signal.c: New file.
index dfc49d1..aa6f4f1 100644 (file)
@@ -33,6 +33,26 @@ if [mi_gdb_start] {
     continue
 }
 
+standard_testfile basics.c
+
+if [build_executable "Failed to build $testfile" $testfile $srcfile \
+       debug] {
+    return -1;
+}
+if {[mi_gdb_load $binfile] < 0} {
+    return -1
+}
+# When testing a cross configuration, we need to be sure to first
+# connect to the target.  If we didn't do that, GDB would try running
+# the command against the default run target.  The usual way to do
+# that and cover all targets is to run to main, with mi_run_to_main.
+# However, with native configurations, -info-os should work before
+# running any program, so we want to avoid "run".  Using
+# mi_gdb_target_load directly instead achieves this.
+if {[mi_gdb_target_load] < 0} {
+    return -1
+}
+
 # Try the argument-less form that lists all the types in a table.
 
 mi_gdb_test "-info-os" ".*\\^done,OSDataTable=.*" "-info-os"