forked from Imagelibrary/binutils-gdb
This commit brings all the changes made by running gdb/copyright.py as per GDB's Start of New Year Procedure. For the avoidance of doubt, all changes in this commits were performed by the script.
90 lines
2.6 KiB
Plaintext
90 lines
2.6 KiB
Plaintext
# Copyright 2019-2022 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/>.
|
|
|
|
if {[skip_shlib_tests]} {
|
|
return 0
|
|
}
|
|
|
|
load_lib "ada.exp"
|
|
|
|
if { [skip_ada_tests] } { return -1 }
|
|
|
|
standard_ada_testfile foo
|
|
|
|
set srcfile2 [file join [file dirname $srcfile] some_package.adb]
|
|
set sofile [standard_output_file libsome_package.so]
|
|
|
|
set outdir [file dirname $binfile]
|
|
|
|
# Create the shared library.
|
|
if {[gdb_compile_shlib $srcfile2 $sofile {ada debug}] != ""} {
|
|
return -1
|
|
}
|
|
|
|
# Set linkarg such that the executable can find the shared library.
|
|
if {[istarget "*-*-mingw*"]
|
|
|| [istarget *-*-cygwin*]
|
|
|| [istarget *-*-pe*]} {
|
|
# Do not need anything.
|
|
set linkarg ""
|
|
} elseif {[istarget *-*-freebsd*] || [istarget *-*-openbsd*]} {
|
|
set linkarg "-Wl,-rpath,$outdir"
|
|
} else {
|
|
set linkarg "-Wl,-rpath,\\\$ORIGIN"
|
|
}
|
|
|
|
# Make sure we link against the shared GNAT run time.
|
|
set gnatbind_options [list -bargs -shared -margs]
|
|
|
|
# Link against the shared library.
|
|
set gnatlink_options [list -largs $linkarg -Wl,-lsome_package -margs]
|
|
|
|
set options [list debug]
|
|
foreach option [concat $gnatbind_options $gnatlink_options] {
|
|
lappend options [concat "additional_flags=" $option]
|
|
}
|
|
|
|
# Create executable.
|
|
if {[gdb_compile_ada $srcfile $binfile executable $options] != ""} {
|
|
return -1
|
|
}
|
|
|
|
clean_restart ${testfile}
|
|
|
|
if {![runto_main]} then {
|
|
return 0
|
|
}
|
|
|
|
set can_catch_exceptions 0
|
|
gdb_test_multiple "catch exception some_kind_of_error" "" {
|
|
-re "Catchpoint \[0-9\]+: `some_kind_of_error' Ada exception\r\n$gdb_prompt $" {
|
|
pass $gdb_test_name
|
|
set can_catch_exceptions 1
|
|
}
|
|
|
|
-re "Your Ada runtime appears to be missing some debugging information.\r\nCannot insert Ada exception catchpoint in this configuration.\r\n$gdb_prompt $" {
|
|
unsupported $gdb_test_name
|
|
}
|
|
}
|
|
|
|
if { $can_catch_exceptions } {
|
|
gdb_test "cont" \
|
|
"Catchpoint \[0-9\]+, .* at .*foo\.adb:\[0-9\]+.*" \
|
|
"caught the exception"
|
|
|
|
gdb_test "print \$_ada_exception = some_package.some_kind_of_error'Address" \
|
|
" = true"
|
|
}
|