1# Copyright 2003-2023 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# This file tests decoding of Objective-C symbols 17 18# This file was written by Adam Fedor (fedor@gnu.org) 19 20standard_testfile .m 21 22# 23# Objective-C program compilation isn't standard. We need to figure out 24# which libraries to link in. Most of the time it uses pthread 25# 26if {[gdb_compile_objc "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [list debug ]] != "" } { 27 return -1 28} 29 30proc do_objc_tests {} { 31 global subdir 32 global srcdir 33 global binfile 34 global gdb_prompt 35 36 37 # Start with a fresh gdb. 38 39 gdb_exit 40 gdb_start 41 gdb_reinitialize_dir $srcdir/$subdir 42 gdb_load $binfile 43 44} 45 46do_objc_tests 47 48gdb_test_no_output "set multiple-symbols ask" 49 50# 51# Break on multiply defined method (PR objc/1236) 52# 53set name "break on multiply defined method" 54gdb_test_multiple "break multipleDef" $name \ 55{ 56 -re "\\\[0\\\] cancel\r\n\\\[1\\\] all\r\n\\\[2\\\] .*${srcfile}:-.Decode multipleDef.\r\n\\\[3\\\] .*${srcfile}:multipleDef\r\n> $" { 57 send_gdb "3\n" 58 exp_continue 59 } 60 -re "Breakpoint \[0-9\]+ at 0x\[0-9a-f\]+: .*\r\n$gdb_prompt $" { pass $name } 61 -re ".*$gdb_prompt $" { kfail "gdb/1236" $name } 62} 63 64set name "continue after break on multiply defined symbol" 65gdb_run_cmd 66gdb_test_multiple "" $name \ 67{ 68 -re "Breakpoint \[0-9\]+, multipleDef \\\(\\\) at .*\r\n$gdb_prompt $" { 69 pass $name 70 } 71 -re "\\\[0\\\] cancel\r\n\\\[1\\\] all\r\n\\\[2\\\] -.Decode multipleDef. at .*\r\n\\\[3\\\] multipleDef at .*\r\n> $" { 72 send_gdb "0\n" 73 kfail "gdb/1238" $name 74 # gdb is in a bad state here. 75 # It would be difficult to do any more tests after this. 76 } 77} 78