1*b725ae77Skettenis# Copyright 2003 Free Software Foundation, Inc. 2*b725ae77Skettenis 3*b725ae77Skettenis# This program is free software; you can redistribute it and/or modify 4*b725ae77Skettenis# it under the terms of the GNU General Public License as published by 5*b725ae77Skettenis# the Free Software Foundation; either version 2 of the License, or 6*b725ae77Skettenis# (at your option) any later version. 7*b725ae77Skettenis# 8*b725ae77Skettenis# This program is distributed in the hope that it will be useful, 9*b725ae77Skettenis# but WITHOUT ANY WARRANTY; without even the implied warranty of 10*b725ae77Skettenis# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11*b725ae77Skettenis# GNU General Public License for more details. 12*b725ae77Skettenis# 13*b725ae77Skettenis# You should have received a copy of the GNU General Public License 14*b725ae77Skettenis# along with this program; if not, write to the Free Software 15*b725ae77Skettenis# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 16*b725ae77Skettenis 17*b725ae77Skettenis# This file tests decoding non-debuggable Objective-C symbols 18*b725ae77Skettenis 19*b725ae77Skettenis# This file was written by Adam Fedor (fedor@gnu.org) 20*b725ae77Skettenis 21*b725ae77Skettenisif $tracelevel then { 22*b725ae77Skettenis strace $tracelevel 23*b725ae77Skettenis} 24*b725ae77Skettenis 25*b725ae77Skettenisset testfile "nondebug" 26*b725ae77Skettenisset srcfile ${testfile}.m 27*b725ae77Skettenisset binfile ${objdir}/${subdir}/${testfile} 28*b725ae77Skettenis 29*b725ae77Skettenis# 30*b725ae77Skettenis# Objective-C program compilation isn't standard. We need to figure out 31*b725ae77Skettenis# which libraries to link in. Most of the time it uses pthread 32*b725ae77Skettenis# 33*b725ae77Skettenisif {[gdb_compile_objc "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [list ] ] != "" } { 34*b725ae77Skettenis return -1 35*b725ae77Skettenis} 36*b725ae77Skettenis 37*b725ae77Skettenisproc do_objc_tests {} { 38*b725ae77Skettenis global prms_id 39*b725ae77Skettenis global bug_id 40*b725ae77Skettenis global subdir 41*b725ae77Skettenis global objdir 42*b725ae77Skettenis global srcdir 43*b725ae77Skettenis global binfile 44*b725ae77Skettenis global gdb_prompt 45*b725ae77Skettenis 46*b725ae77Skettenis set prms_id 0 47*b725ae77Skettenis set bug_id 0 48*b725ae77Skettenis 49*b725ae77Skettenis # Start with a fresh gdb. 50*b725ae77Skettenis 51*b725ae77Skettenis gdb_exit 52*b725ae77Skettenis gdb_start 53*b725ae77Skettenis gdb_reinitialize_dir $srcdir/$subdir 54*b725ae77Skettenis gdb_load $binfile 55*b725ae77Skettenis 56*b725ae77Skettenis} 57*b725ae77Skettenis 58*b725ae77Skettenisdo_objc_tests 59*b725ae77Skettenis 60*b725ae77Skettenis# 61*b725ae77Skettenis# Break on multiply defined non-debuggable symbol (PR objc/1236) 62*b725ae77Skettenis# 63*b725ae77Skettenisset name "break on non-debuggable method" 64*b725ae77Skettenisgdb_test_multiple "break someMethod" $name \ 65*b725ae77Skettenis{ 66*b725ae77Skettenis -re "\\\[0\\\] cancel\r\n\\\[1\\\] all\r\n\\\[2\\\]\[ \]+-.NonDebug someMethod.*\\\[3\\\]\[ \]+-.NonDebug2 someMethod.*" { 67*b725ae77Skettenis send_gdb "2\n" 68*b725ae77Skettenis exp_continue 69*b725ae77Skettenis } 70*b725ae77Skettenis -re "\\\[0\\\] cancel\r\n\\\[1\\\] all\r\n> " { 71*b725ae77Skettenis gdb_test "0" "" "" 72*b725ae77Skettenis kfail "gdb/1236" $name 73*b725ae77Skettenis } 74*b725ae77Skettenis -re "Breakpoint \[0-9\]+ at 0x\[0-9a-f\]+.*$gdb_prompt $" { pass $name } 75*b725ae77Skettenis -re ".*$gdb_prompt $" { kfail "gdb/1236" $name } 76*b725ae77Skettenis} 77*b725ae77Skettenis 78