diff options
Diffstat (limited to 'gdb/testsuite/gdb.ada')
-rw-r--r-- | gdb/testsuite/gdb.ada/exception-lto.c | 40 | ||||
-rw-r--r-- | gdb/testsuite/gdb.ada/exception-lto.exp | 35 |
2 files changed, 75 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.ada/exception-lto.c b/gdb/testsuite/gdb.ada/exception-lto.c new file mode 100644 index 0000000..c5ee69d --- /dev/null +++ b/gdb/testsuite/gdb.ada/exception-lto.c @@ -0,0 +1,40 @@ +/* This test program is part of GDB, the GNU debugger. + + Copyright 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 <http://www.gnu.org/licenses/>. */ + +/* We need a few extra functions here to ensure that the dictionary + for the global block has more than one slot. */ + +void f1 () { } +void f2 () { } +void f3 () { } +void f4 () { } + +void +__gnat_debug_raise_exception () +{ +} + +void +__gnat_begin_handler_v1 () +{ +} + +int +main () +{ + return 0; +} diff --git a/gdb/testsuite/gdb.ada/exception-lto.exp b/gdb/testsuite/gdb.ada/exception-lto.exp new file mode 100644 index 0000000..21059a3 --- /dev/null +++ b/gdb/testsuite/gdb.ada/exception-lto.exp @@ -0,0 +1,35 @@ +# Copyright 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 <http://www.gnu.org/licenses/>. + +# This test mimics the situation where an Ada program (including the +# runtime) is built with -flto. In this situation, gcc emits the +# exception handling functions in the DWARF -- but in a CU that is +# marked as coming from "C". This then triggered a bug causing the +# Ada catchpoint code not to find the underlying runtime functions. + +require allow_ada_tests + +standard_testfile .c + +if {[build_executable "failed to prepare" $testfile $srcfile] == -1} { + return -1 +} + +# Try this test in both the C and Ada language modes. +foreach_with_prefix lang {c ada} { + clean_restart $testfile + gdb_test_no_output "set lang $lang" + gdb_test "catch exception" "Catchpoint 1: all Ada exceptions" +} |