-# Copyright 2009, 2010 Free Software Foundation, Inc.
+# Copyright 2009-2020 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
set exec1 "hello"
set srcfile1 ${exec1}.c
-set binfile1 ${objdir}/${subdir}/${exec1}
+set binfile1 [standard_output_file ${exec1}]
set exec2 "hangout"
set srcfile2 ${exec2}.c
-set binfile2 ${objdir}/${subdir}/${exec2}
+set binfile2 [standard_output_file ${exec2}]
set exec3 "goodbye"
set srcfile3 ${exec3}.c
-set binfile3 ${objdir}/${subdir}/${exec3}
+set binfile3 [standard_output_file ${exec3}]
-if { [prepare_for_testing ${testfile}.exp ${exec1} "${srcfile1}" {debug nowarnings}] } {
+if { [build_executable ${testfile}.exp ${exec1} "${srcfile1}" {debug}] == -1 } {
return -1
}
-if { [prepare_for_testing ${testfile}.exp ${exec2} "${srcfile2}" {debug nowarnings}] } {
+if { [build_executable ${testfile}.exp ${exec2} "${srcfile2}" {debug}] == -1} {
return -1
}
-if { [prepare_for_testing ${testfile}.exp ${exec3} "${srcfile3}" {debug nowarnings}] } {
+if { [build_executable ${testfile}.exp ${exec3} "${srcfile3}" {debug}] == -1 } {
return -1
}
-gdb_exit
-gdb_start
-gdb_reinitialize_dir $srcdir/$subdir
-gdb_load ${binfile1}
+clean_restart ${exec1}
-# Add an empty inferior space, switch to it, and load a main
-# executable into it.
-gdb_test "add-inferior" "Added inferior 2.*"
-gdb_test "inferior 2" "Switching to inferior 2.*"
-gdb_test "file ${binfile2}" ""
+gdb_test {print $_inferior} " = 1"
-# Add a new inferior space and load a main executable into it in one
+# Add an empty inferior, switch to it, and load a main executable into
+# it.
+gdb_test "add-inferior" "Added inferior 2.*" "add empty inferior 2"
+gdb_test "inferior 2" "Switching to inferior 2.*" "switch to inferior 2"
+gdb_test "file ${binfile2}" ".*" "load ${exec2} file in inferior 2"
+
+gdb_test {print $_inferior} " = 2" "print \$_inferior after switching"
+
+# Add a new inferior and load a main executable into it in one
# command.
-gdb_test "add-inferior -exec ${binfile3}"
+gdb_test "add-inferior -exec ${binfile3}" \
+ "Added inferior 3.*" \
+ "add inferior 3 with -exec ${exec3}"
-# Check that we have multiple spaces.
+# Check that we have multiple inferiors.
gdb_test "info inferiors" \
- "Executable.*${exec3}.*${exec2}.*${exec1}.*"
+ "Executable.*${exec1}.*${exec2}.*${exec3}.*"
+
+# Test info inferiors with args
+
+set see1 0
+set see2 0
+set see3 0
+
+gdb_test_multiple "info inferior 2 3" "info inferior 2 3" {
+ -re ". 1 \[^\r\n\]*${exec1}" {
+ set see1 1
+ exp_continue
+ }
+ -re ". 2 \[^\r\n\]*${exec2}" {
+ set see2 1
+ exp_continue
+ }
+ -re ". 3 \[^\r\n\]*${exec3}" {
+ set see3 1
+ exp_continue
+ }
+ -re "$gdb_prompt $" {
+ if { !$see1 && $see2 && $see3 } then {
+ pass "info inferior 2 3"
+ } else {
+ fail "info inferior 2 3"
+ }
+ }
+}
-# Test that we have multiple symbol tables.
+set see1 0
+set see2 0
+set see3 0
+
+gdb_test_multiple "info inferior 1-2" "info inferior 1-2" {
+ -re ". 1 \[^\r\n\]*${exec1}" {
+ set see1 1
+ exp_continue
+ }
+ -re ". 2 \[^\r\n\]*${exec2}" {
+ set see2 1
+ exp_continue
+ }
+ -re ". 3 \[^\r\n\]*${exec3}" {
+ set see3 1
+ exp_continue
+ }
+ -re "$gdb_prompt $" {
+ if { $see1 && $see2 && !$see3 } then {
+ pass "info inferior 1-2"
+ } else {
+ fail "info inferior 1-2"
+ }
+ }
+}
-gdb_test "inferior 1"
-gdb_test "info functions commonfun" "${srcfile1}.*"
+# Test that we have multiple symbol tables.
-gdb_test "inferior 3"
-gdb_test "info functions commonfun" "${srcfile3}.*"
+gdb_test "inferior 1" ".*" "switch to inferior 1"
+gdb_test "info functions commonfun" \
+ "${srcfile1}.*" \
+ "'info functions commonfun' in inferior 1"
+gdb_test "inferior 3" ".*" "switch to inferior 3"
+gdb_test "info functions commonfun" \
+ "${srcfile3}.*" \
+ "'info functions commonfun' in inferior 3"
-gdb_test "inferior 1"
+gdb_test "inferior 1" ".*" "switch back to inferior 1"
-gdb_test "set listsize 1" ""
+gdb_test_no_output "set listsize 1"
-gdb_test "list commonfun" "from hello.*"
+gdb_test "list commonfun" "from hello.*" "list commonfun in hello"
gdb_test "print hglob" "1"
gdb_test "print glob" "92" "print glob (${exec1})"
-gdb_test "inferior 3"
+gdb_test "inferior 3" ".*" "switch to inferior 3 to print globals"
gdb_test "print gglob" "2"
gdb_test "print glob" "45" "print glob (${exec3})"
-gdb_test "list commonfun" "from goodbye.*"
+gdb_test "list commonfun" "from goodbye.*" "list commonfun in goodbye"
# Let's run the hello program.
-gdb_test "inferior 1"
+gdb_test "inferior 1" ".*" "switch to inferior 1 to run it"
if { ![runto_main] } then {
return -1
}
-gdb_test "break hello" ""
+gdb_test "break hello" ".*"
gdb_test "continue" "Breakpoint \[0-9\].*, hello.*"
+
+# Now let's remove the other two
+
+gdb_test_no_output "remove-inferiors 2-3" "remove-inferiors 2-3"
+
+set see1 0
+set see2 0
+set see3 0
+
+gdb_test_multiple "info inferiors" "check remove-inferiors" {
+ -re ". 3 \[^\r\n\]*${exec3}" {
+ set see3 1
+ exp_continue
+ }
+ -re ". 2 \[^\r\n\]*${exec2}" {
+ set see2 1
+ exp_continue
+ }
+ -re ". 1 \[^\r\n\]*${exec1}" {
+ set see1 1
+ exp_continue
+ }
+ -re "$gdb_prompt $" {
+ if { $see1 && !$see2 && !$see3 } then {
+ pass "check remove-inferiors"
+ } else {
+ fail "check remove-inferiors"
+ }
+ }
+}
+