# Copyright 2019-2021 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
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

# Check that "show remote exec-file" displays each inferior's
# exec-file.  Regression test for a bug where "show remote exec-file"
# would show the last exec-file set, irrespective of the current
# inferior.

clean_restart

# Set remote exec-file in inferior 1.
with_test_prefix "set inf 1" {
    gdb_test_no_output "set remote exec-file prog1"
}

# Set remote exec-file in inferior 2.
with_test_prefix "set inf 2" {
    gdb_test "add-inferior" "Added inferior 2.*" "add inferior 2"
    gdb_test "inferior 2" "Switching to inferior 2.*"
    gdb_test_no_output "set remote exec-file prog2"
}

# Check that "show remote exec-file" diplays each inferior's
# exec-file.

with_test_prefix "show inf 1" {
    gdb_test "inferior 1" "Switching to inferior 1.*"
    gdb_test "show remote exec-file" "prog1"
}

with_test_prefix "show inf 2" {
    gdb_test "inferior 2" "Switching to inferior 2.*"
    gdb_test "show remote exec-file" "prog2"
}
