# Copyright 2022-2024 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 . load_lib "ada.exp" require allow_ada_tests standard_ada_testfile caller # The ordering here works around a bug in older versions of dejagnu. # In particular we use "additional_flags" and not "ldflags" to ensure # the ordering (this is ok because the distinction doesn't really # matter for gnatmake anyway) and furthermore we take care to end with # "-margs" so that any flags appended by dejagnu are applied in the # correct mode. set options { debug optimize=-O2 additional_flags=-ffunction-sections additional_flags=-gnatn additional_flags=-largs additional_flags=-Wl,--gc-sections additional_flags=-margs } if {[gdb_compile_ada "${srcfile}" "${binfile}" executable $options] != ""} { return -1 } clean_restart ${testfile} # Depending on the version of gnat, the location of the set breakpoint may # be reported as being at the requested location in file callee.adb or in # file caller.adb where the callee function was inlined. Either way, only # one breakpoint should be reported and its address should not be at 0x0. set bp_location1 [gdb_get_line_number "BREAK" ${testdir}/callee.adb] set bp_location2 [gdb_get_line_number "CALLEE_LOC" ${testdir}/caller.adb] set test "break callee.adb:$bp_location1" set message "Breakpoint set" # The bug here was that gdb would set a breakpoint with two locations, # one of them at 0x0. gdb_test_multiple $test $message { -re "Breakpoint $decimal at $hex: file .*callee.adb, line $bp_location1." { pass $test } -re "Breakpoint $decimal at $hex: file .*caller.adb, line $bp_location2." { pass $test } }