diff --git a/gdb/infcmd.c b/gdb/infcmd.c
index 15702f84894..96c5feafb1a 100644
--- a/gdb/infcmd.c
+++ b/gdb/infcmd.c
@@ -1068,7 +1068,7 @@ jump_command (const char *arg, int from_tty)
     error_no_arg (_("starting address"));
 
   std::vector<symtab_and_line> sals
-    = decode_line_with_last_displayed (arg, DECODE_LINE_FUNFIRSTLINE);
+    = decode_line_with_current_source (arg, DECODE_LINE_FUNFIRSTLINE);
   if (sals.size () != 1)
     {
       /* If multiple sal-objects were found, try dropping those that aren't
diff --git a/gdb/linespec.c b/gdb/linespec.c
index 7d969f37fbf..afa9eb4d3ac 100644
--- a/gdb/linespec.c
+++ b/gdb/linespec.c
@@ -3220,7 +3220,8 @@ decode_line_with_current_source (const char *string, int flags)
   location_spec_up locspec = string_to_location_spec (&string,
 						      current_language);
   std::vector<symtab_and_line> sals
-    = decode_line_1 (locspec.get (), flags, NULL, cursal.symtab, cursal.line);
+    = decode_line_1 (locspec.get (), flags, cursal.pspace, cursal.symtab,
+		    cursal.line);
 
   if (*string)
     error (_("Junk at end of line specification: %s"), string);
diff --git a/gdb/testsuite/gdb.base/jump.exp b/gdb/testsuite/gdb.base/jump.exp
index 032c4a6279d..77765db15ef 100644
--- a/gdb/testsuite/gdb.base/jump.exp
+++ b/gdb/testsuite/gdb.base/jump.exp
@@ -18,99 +18,109 @@ clear_xfail "*-*-*"
 
 standard_testfile .c
 
-# Build the test case
-if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug nowarnings}] != "" } {
-     untested "failed to compile"
-     return -1
-    }
+if {[prepare_for_testing "failed to prepare" $testfile $srcfile]} {
+    return -1
+}
 
 
-# Start with a fresh gdb
+proc do_tests {} {
+    global decimal srcfile
+
+    # Set a breakpoint on the statement that we're about to jump to.
+    # The statement doesn't contain a function call.
+    set non_call_line [gdb_get_line_number "bp-on-non-call"]
+    gdb_breakpoint "$non_call_line"
+    set bp_on_non_call \
+	[get_integer_valueof "\$bpnum" "INVALID" "bp_on_non_call"]
+
+    # Can we jump to the statement?  Do we stop there?
+    gdb_test "jump $non_call_line" \
+	"Breakpoint ${bp_on_non_call}(\.${decimal})?, .*${srcfile}:$non_call_line.*" \
+	"jump to non-call"
+
+    # Set a breakpoint on the statement that we're about to jump to.
+    # The statement does contain a function call.
+    set call_line [gdb_get_line_number "bp-on-call"]
+    gdb_breakpoint "$call_line"
+    set bp_on_call [get_integer_valueof "\$bpnum" "INVALID" "bp_on_call"]
+
+    # Can we jump to the statement?  Do we stop there?
+    gdb_test "jump $call_line" \
+	"Breakpoint ${bp_on_call}(\.${decimal})?, .*${srcfile}:$call_line.*" \
+	"jump to call"
+
+    # If we disable the breakpoint at the function call, and then
+    # if we jump to that statement, do we not stop there, but at
+    # the following breakpoint?
+    gdb_test_no_output "disable $bp_on_call" "disable breakpoint on call"
+
+    gdb_test "jump $call_line" \
+	"Breakpoint ${bp_on_non_call}(\.${decimal})?, .*${srcfile}:$non_call_line.*" \
+	"jump to call with disabled breakpoint"
+
+    # Disable the breakpoint at the non-function call, so it won't hit
+    # if do_test is called again.
+    gdb_test_no_output "disable ${bp_on_non_call}" "disable bp_on_non_call"
+
+    # Verify that GDB responds gracefully to the "jump" command without
+    # an argument.
+    gdb_test "jump" "Argument required .starting address.*" \
+	"jump without argument disallowed"
+
+    # Verify that GDB responds gracefully to the "jump" command with
+    # trailing junk.
+    gdb_test "jump $call_line 100" \
+	"malformed linespec error: unexpected number, \"100\"" \
+	"jump with trailing argument junk"
+
+    # Verify that GDB responds gracefully to a request to jump out of
+    # the current function.  (Note that this will very likely cause the
+    # inferior to die.  Be prepared to rerun the inferior, if further
+    # testing is desired.)
+    # Try it both ways: confirming and not confirming the jump.
+    set out_line [gdb_get_line_number "out-of-func"]
+    gdb_test "jump $out_line" \
+	"Not confirmed.*" \
+	"aborted jump out of current function" \
+	"Line $out_line is not in `main'.  Jump anyway.*y or n. $" \
+	"n"
+
+    gdb_test "jump $out_line" \
+	"Continuing at.*" \
+	"jump out of current function" \
+	"Line $out_line is not in `main'.  Jump anyway.*y or n. $" \
+	"y"
+}
 
-clean_restart ${binfile}
 
-if {![runto_main]} {
-  return -1
+set num_inferiors 1
+if {![use_gdb_stub]} {
+    set num_inferiors 2
 }
 
-# Set a breakpoint on the statement that we're about to jump to.
-# The statement doesn't contain a function call.
-#
-set bp_on_non_call 0
-set non_call_line [gdb_get_line_number "bp-on-non-call"]
-gdb_test_multiple "break $non_call_line" "break before jump to non-call" {
-    -re "\[Bb\]reakpoint (${decimal}) at ${hex}: file .*${srcfile}, line $non_call_line.*$gdb_prompt $" {
-	set bp_on_non_call $expect_out(1,string)
-	pass "break before jump to non-call"
+# Run to main, add inferiors if needed.
+if {![runto_main]} {
+    return -1
+}
+for {set inf 2} {$inf <= $num_inferiors} {incr inf} {
+    # Start a new inferior, and run it with the same executable.
+    gdb_test "add-inferior -exec ${binfile}" \
+	"Added inferior ${inf}.*" \
+	"add inferior ${inf} with -exec "
+    gdb_test "inferior ${inf}" \
+	"Switching to inferior ${inf} .*" \
+	"switch to inferior ${inf}"
+    if {![runto_main]} {
+	return -1
     }
 }
 
-# Can we jump to the statement?  Do we stop there?
-#
-gdb_test "jump $non_call_line" "Breakpoint ${decimal}, .*${srcfile}:$non_call_line.*" \
-    "jump to non-call"
-
-# Set a breakpoint on the statement that we're about to jump to.
-# The statement does contain a function call.
-#
-set bp_on_call 0
-set call_line [gdb_get_line_number "bp-on-call"]
-gdb_test_multiple "break $call_line" "break before jump to call" {
-    -re "\[Bb\]reakpoint (${decimal}) at ${hex}: file .*${srcfile}, line $call_line.*$gdb_prompt $" {
-	set bp_on_call $expect_out(1,string)
-	pass "break before jump to call"
+# Run tests on all inferiors.
+for {set inf 1} {$inf <= $num_inferiors} {incr inf} {
+    with_test_prefix "inferior $inf" {
+	# Switch to the target inferior.
+	gdb_test "inferior $inf" ".*Switching to inferior $inf .*"
+	# Run the tests.
+	do_tests
     }
 }
-
-# Can we jump to the statement?  Do we stop there?
-#
-gdb_test "jump $call_line" \
-    "Breakpoint ${decimal}, .*${srcfile}:$call_line.*" \
-    "jump to call"
-
-# If we disable the breakpoint at the function call, and then
-# if we jump to that statement, do we not stop there, but at
-# the following breakpoint?
-#
-gdb_test_no_output "disable $bp_on_call" "disable breakpoint on call"
-
-gdb_test "jump $call_line" "Breakpoint ${decimal}, .*${srcfile}:$non_call_line.*" \
-    "jump to call with disabled breakpoint"
-
-# Verify that GDB responds gracefully to the "jump" command without
-# an argument.
-#
-gdb_test "jump" "Argument required .starting address.*" \
-    "jump without argument disallowed"
-
-
-# Verify that GDB responds gracefully to the "jump" command with
-# trailing junk.
-#
-gdb_test "jump $call_line 100" \
-    "malformed linespec error: unexpected number, \"100\"" \
-    "jump with trailing argument junk"
-
-
-# Verify that GDB responds gracefully to a request to jump out of
-# the current function.  (Note that this will very likely cause the
-# inferior to die.  Be prepared to rerun the inferior, if further
-# testing is desired.)
-#
-# Try it both ways: confirming and not confirming the jump.
-#
-
-set out_line [gdb_get_line_number "out-of-func"]
-gdb_test "jump $out_line" \
-    "Not confirmed.*" \
-    "aborted jump out of current function" \
-    "Line $out_line is not in `main'.  Jump anyway.*y or n. $" \
-    "n"
-
-gdb_test "jump $out_line" \
-    "Continuing at.*" \
-    "jump out of current function" \
-    "Line $out_line is not in `main'.  Jump anyway.*y or n. $" \
-    "y"
-
-gdb_exit
