Use GCC5/DWARF5 DW_AT_noreturn to mark functions that don't return normally.
[external/binutils.git] / gdb / testsuite / gdb.base / noreturn-return.exp
1 # Copyright 2015 Free Software Foundation, Inc.
2
3 # This program is free software; you can redistribute it and/or modify
4 # it under the terms of the GNU General Public License as published by
5 # the Free Software Foundation; either version 3 of the License, or
6 # (at your option) any later version.
7 #
8 # This program is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 # GNU General Public License for more details.
12 #
13 # You should have received a copy of the GNU General Public License
14 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
15
16 standard_testfile
17
18 if [prepare_for_testing "failed to prepare" ${testfile} ${srcfile} {debug}] {
19     return -1
20 }
21
22 proc noreturn_test { } {
23     global gdb_prompt
24
25     if { ! [ runto_main ] } then {
26         untested ${testfile}.exp
27         return -1
28     }
29
30     gdb_breakpoint "noreturn_func"
31     gdb_continue_to_breakpoint "noreturn_func"
32
33     set test "cancel return from noreturn_func"
34     gdb_test_multiple "return" $test {
35         -re "warning: Function does not return normally to caller" {
36             verbose -log "saw warning"
37             exp_continue
38         }
39         -re "Make noreturn_func return now.*y or n. $" {
40             send_gdb "n\n"
41             exp_continue
42         }
43         -re "Not confirmed.*$gdb_prompt $" {
44             pass $test
45         }
46    }
47 }
48
49 clean_restart ${binfile}
50
51 noreturn_test