# Copyright 2021-2025 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/>.  */
#
# Test support for jump in inline functions.

standard_testfile

if { [prepare_for_testing "failed to prepare" $testfile $srcfile] } {
    return -1
}

if { ![runto_main] } {
    return -1
}

gdb_breakpoint [gdb_get_line_number "inline-funct"]
gdb_continue_to_breakpoint "inline-funct" ".*inline-funct.*"

# Test jump to another function - main.
set out_func [gdb_get_line_number "out-of-func"]
gdb_test "jump $out_func" \
    "Not confirmed.*" \
    "aborted jump out of current function" \
    "Line $out_func is not in `function_inline.*'.  Jump anyway.*y or n. $" \
    "n"

# Test jump in the same inline function.
set increment [gdb_get_line_number "increment-funct"]
gdb_breakpoint $increment
gdb_test "jump $increment" "Breakpoint .* at .*:$increment.*"
gdb_test "next" ".*inline-funct.*"
gdb_test "print a" "= 5100"
