URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
Compare Revisions
- This comparison shows the changes necessary to convert path
/openrisc/trunk/gnu-old/gdb-7.1/gdb/testsuite/gdb.objc
- from Rev 227 to Rev 816
- ↔ Reverse comparison
Rev 227 → Rev 816
/Makefile.in
0,0 → 1,22
VPATH = @srcdir@ |
srcdir = @srcdir@ |
|
EXECUTABLES = basicclass |
|
all: |
@echo "Nothing to be done for all..." |
|
info: |
install-info: |
dvi: |
install: |
uninstall: force |
installcheck: |
check: |
|
clean mostlyclean: |
-rm -f *~ *.o *.ci |
-rm -f core ${EXECUTABLES} |
|
distclean maintainer-clean realclean: clean |
-rm -f Makefile config.status config.log |
/basicclass.exp
0,0 → 1,200
# Copyright 2003, 2004, 2006, 2007, 2008, 2009, 2010 |
# 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 file was written by Adam Fedor (fedor@gnu.org) |
|
if $tracelevel then { |
strace $tracelevel |
} |
|
set testfile "basicclass" |
set srcfile ${testfile}.m |
set binfile ${objdir}/${subdir}/${testfile} |
|
# |
# Objective-C program compilation isn't standard. We need to figure out |
# which libraries to link in. Most of the time it uses pthread |
# |
if {[gdb_compile_objc "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [list debug ]] != "" } { |
return -1 |
} |
|
# |
# Deduce language of main() |
# |
|
proc deduce_language_of_main {} { |
global gdb_prompt |
|
# See what language gdb thinks main() is, prior to reading full symbols. |
# I think this fails for COFF targets. |
send_gdb "show language\n" |
gdb_expect { |
-re ".* source language is \"auto; currently objective-c\".*$gdb_prompt $" { |
pass "deduced language is Objective-C, before full symbols" |
} |
-re ".*$gdb_prompt $" { |
fail "source language not correct for Objective-C (psymtabs only)" |
return |
} |
timeout { |
fail "can't show language (timeout)" |
return |
} |
} |
|
runto_main |
|
# See if our idea of the language has changed. |
|
send_gdb "show language\n" |
gdb_expect { |
-re ".* source language is \"auto; currently objective-c\".*$gdb_prompt $" { |
pass "deduced language is Objective-C, after full symbols" |
} |
-re ".*$gdb_prompt $" { |
fail "source language not correct for Objective-C (full symbols)" |
return |
} |
timeout { |
fail "can't show language (timeout)" |
return |
} |
} |
} |
|
proc do_objc_tests {} { |
global prms_id |
global bug_id |
global subdir |
global objdir |
global srcdir |
global binfile |
global gdb_prompt |
|
set prms_id 0 |
set bug_id 0 |
|
# Start with a fresh gdb. |
|
gdb_exit |
gdb_start |
gdb_reinitialize_dir $srcdir/$subdir |
gdb_load $binfile |
|
deduce_language_of_main |
} |
|
do_objc_tests |
|
# |
# Breakpoint tests |
# |
|
# Disable pending breakpoint query to avoid timeouts |
# if Obj-C symbols cannot be found |
gdb_test "set breakpoint pending off" "" "set breakpoint pending" |
|
gdb_test "break doIt" \ |
"Breakpoint.*at.* file .*$srcfile, line.29.*" \ |
"breakpoint method" |
|
gdb_test "break takeArg:" \ |
"Breakpoint.*at.* file .*$srcfile, line.34.*" \ |
"breakpoint method with colon" |
|
gdb_test "break newWithArg:" \ |
"Breakpoint.*at.* file .*$srcfile, line.22.*" \ |
"breakpoint class method with colon" |
|
# |
# Continue until breakpoint (test re-setting breakpoint) |
# |
gdb_test continue \ |
"Continuing\\..*Breakpoint \[0-9\]+, -.BasicClass takeArg:. \\(self=.*, _cmd=.*, arg=.*\\) at .*$srcfile:34.*" \ |
"continue until method breakpoint" |
|
# |
# Test resetting breakpoints when re-running program |
# |
gdb_run_cmd |
gdb_expect { |
-re "Breakpoint \[0-9\]+,.*main .*argc.*argv.* at .*$srcfile:.*$gdb_prompt $"\ |
{ pass "resetting breakpoints when rerunning" } |
-re ".*$gdb_prompt $" { fail "resetting breakpoints when rerunning" } |
timeout { fail "resetting breakpoints when rerunning" } |
} |
|
# |
# Continue until breakpoint (test re-setting breakpoint) |
# |
gdb_test continue \ |
"Continuing\\..*Breakpoint \[0-9\]+, -.BasicClass takeArg:. \\(self=.*, _cmd=.*, arg=.*\\) at .*$srcfile:34.*" \ |
"continue until method breakpoint" |
|
# |
# Test printing objects |
# |
gdb_test "print object" \ |
"\\$\[0-9\] = .*0x0" \ |
" print an ivar of self" |
|
gdb_test "print self" \ |
"\\$\[0-9\] = \\(.*BasicClass \\*\\) 0x\[0-9a-f\]+" \ |
" print self" |
|
gdb_test "print \*self" \ |
"\\$\[0-9\] = \{{?isa = 0x\[0-9a-f\]+}?, object = 0x0\}" \ |
" print contents of self" |
|
# |
# Break in a category |
# |
gdb_test "break hiddenMethod" \ |
"Breakpoint.*at.* file .*$srcfile, line.61." \ |
"breakpoint in category method" |
|
|
# |
# Continue until breakpoint (test re-setting category breakpoint) |
# |
gdb_test continue \ |
"Continuing\\..*Breakpoint \[0-9\]+, -.BasicClass\\(Private\\) hiddenMethod. \\(self=.*, _cmd=.*\\) at .*$srcfile:61.*" \ |
"continue until category method" |
|
# |
# Test calling Objective-C methods |
# |
gdb_test "print \[self printHi\]" \ |
"Hi.*\\$\[0-9\] = \\(.*objc_object \\*\\) 0x\[0-9a-f\]+" \ |
"Call an Objective-C method with no arguments" |
|
gdb_test "print \[self printNumber: 42\]" \ |
"42.*\\$\[0-9\] = 43" \ |
"Call an Objective-C method with one argument" |
|
# |
# Test printing the object description |
# |
gdb_test "print-object object" \ |
"BasicClass gdb test object" \ |
"Use of the print-object command" |
|
gdb_test "po self" \ |
"BasicClass gdb test object" \ |
"Use of the po (print-object) command" |
|
|
/basicclass.m
0,0 → 1,81
#include <objc/Object.h> |
|
@interface BasicClass: Object |
{ |
id object; |
} |
+ newWithArg: arg; |
- doIt; |
- takeArg: arg; |
- printHi; |
- (int) printNumber: (int)number; |
- (const char *) myDescription; |
@end |
|
@interface BasicClass (Private) |
- hiddenMethod; |
@end |
|
@implementation BasicClass |
+ newWithArg: arg |
{ |
id obj = [self new]; |
[obj takeArg: arg]; |
return obj; |
} |
|
- doIt |
{ |
return self; |
} |
|
- takeArg: arg |
{ |
object = arg; |
[self hiddenMethod]; |
return self; |
} |
|
- printHi |
{ |
printf("Hi\n"); |
return self; |
} |
|
- (int) printNumber: (int)number |
{ |
printf("%d\n", number); |
return number+1; |
} |
|
- (const char *) myDescription |
{ |
return "BasicClass gdb test object"; |
} |
|
@end |
|
@implementation BasicClass (Private) |
- hiddenMethod |
{ |
return self; |
} |
@end |
|
int main (int argc, const char *argv[]) |
{ |
id obj; |
obj = [BasicClass new]; |
[obj takeArg: obj]; |
return 0; |
} |
|
const char *_NSPrintForDebugger(id object) |
{ |
/* This is not really what _NSPrintForDebugger should do, but it |
is a simple test if gdb can call this function */ |
if (object && [object respondsTo: @selector(myDescription)]) |
return [object myDescription]; |
|
return NULL; |
} |
/nondebug.exp
0,0 → 1,80
# Copyright 2003, 2007, 2008, 2009, 2010 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 file tests decoding non-debuggable Objective-C symbols |
|
# This file was written by Adam Fedor (fedor@gnu.org) |
|
if $tracelevel then { |
strace $tracelevel |
} |
|
set testfile "nondebug" |
set srcfile ${testfile}.m |
set binfile ${objdir}/${subdir}/${testfile} |
|
# |
# Objective-C program compilation isn't standard. We need to figure out |
# which libraries to link in. Most of the time it uses pthread |
# |
if {[gdb_compile_objc "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [list ] ] != "" } { |
return -1 |
} |
|
proc do_objc_tests {} { |
global prms_id |
global bug_id |
global subdir |
global objdir |
global srcdir |
global binfile |
global gdb_prompt |
|
set prms_id 0 |
set bug_id 0 |
|
# Start with a fresh gdb. |
|
gdb_exit |
gdb_start |
gdb_reinitialize_dir $srcdir/$subdir |
gdb_load $binfile |
|
} |
|
do_objc_tests |
|
# Disable pending breakpoint query to avoid timeouts |
# if Obj-C symbols cannot be found |
gdb_test "set breakpoint pending off" "" "set breakpoint pending" |
|
# |
# Break on multiply defined non-debuggable symbol (PR objc/1236) |
# |
set name "break on non-debuggable method" |
gdb_test_multiple "break someMethod" $name \ |
{ |
-re "\\\[0\\\] cancel\r\n\\\[1\\\] all\r\n\\\[2\\\]\[ \]+-.NonDebug someMethod.*\\\[3\\\]\[ \]+-.NonDebug2 someMethod.*" { |
send_gdb "2\n" |
exp_continue |
} |
-re "\\\[0\\\] cancel\r\n\\\[1\\\] all\r\n> " { |
gdb_test "0" "" "" |
kfail "gdb/1236" $name |
} |
-re "Breakpoint \[0-9\]+ at 0x\[0-9a-f\]+.*$gdb_prompt $" { pass $name } |
-re ".*$gdb_prompt $" { kfail "gdb/1236" $name } |
} |
|
/nondebug.m
0,0 → 1,38
#include <objc/Object.h> |
|
@interface NonDebug: Object |
{ |
} |
@end |
@interface NonDebug2: Object |
{ |
} |
@end |
|
@implementation NonDebug |
|
- someMethod |
{ |
printf("method someMethod\n"); |
return self; |
} |
|
@end |
@implementation NonDebug2 |
|
- someMethod |
{ |
printf("method2 someMethod\n"); |
return self; |
} |
|
@end |
|
|
int main (int argc, const char *argv[]) |
{ |
id obj; |
obj = [NonDebug new]; |
[obj someMethod]; |
return 0; |
} |
/objcdecode.exp
0,0 → 1,86
# Copyright 2003, 2007, 2008, 2009, 2010 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 file tests decoding of Objective-C symbols |
|
# This file was written by Adam Fedor (fedor@gnu.org) |
|
if $tracelevel then { |
strace $tracelevel |
} |
|
set testfile "objcdecode" |
set srcfile ${testfile}.m |
set binfile ${objdir}/${subdir}/${testfile} |
|
# |
# Objective-C program compilation isn't standard. We need to figure out |
# which libraries to link in. Most of the time it uses pthread |
# |
if {[gdb_compile_objc "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [list debug ]] != "" } { |
return -1 |
} |
|
proc do_objc_tests {} { |
global prms_id |
global bug_id |
global subdir |
global objdir |
global srcdir |
global binfile |
global gdb_prompt |
|
set prms_id 0 |
set bug_id 0 |
|
# Start with a fresh gdb. |
|
gdb_exit |
gdb_start |
gdb_reinitialize_dir $srcdir/$subdir |
gdb_load $binfile |
|
} |
|
do_objc_tests |
|
# |
# Break on multiply defined method (PR objc/1236) |
# |
set name "break on multiply defined method" |
gdb_test_multiple "break multipleDef" $name \ |
{ |
-re "\\\[0\\\] cancel\r\n\\\[1\\\] all\r\n\\\[2\\\] -.Decode multipleDef. at .*\r\n\\\[3\\\] multipleDef at .*\r\n> $" { |
send_gdb "3\n" |
exp_continue |
} |
-re "Breakpoint \[0-9\]+ at 0x\[0-9a-f\]+: file .*\r\n$gdb_prompt $" { pass $name } |
-re ".*$gdb_prompt $" { kfail "gdb/1236" $name } |
} |
|
set name "continue after break on multiply defined symbol" |
gdb_run_cmd |
gdb_test_multiple "" $name \ |
{ |
-re "Breakpoint \[0-9\]+, multipleDef \\\(\\\) at .*\r\n$gdb_prompt $" { |
pass $name |
} |
-re "\\\[0\\\] cancel\r\n\\\[1\\\] all\r\n\\\[2\\\] -.Decode multipleDef. at .*\r\n\\\[3\\\] multipleDef at .*\r\n> $" { |
send_gdb "0\n" |
kfail "gdb/1238" $name |
# gdb is in a bad state here. |
# It would be difficult to do any more tests after this. |
} |
} |
/objcdecode.m
0,0 → 1,49
#include <objc/Object.h> |
|
@interface Decode: Object |
{ |
} |
- multipleDef; |
- (const char *) myDescription; |
@end |
|
@implementation Decode |
|
- multipleDef |
{ |
printf("method multipleDef\n"); |
return self; |
} |
|
- (const char *) myDescription |
{ |
return "Decode gdb test object"; |
} |
|
@end |
|
int |
multipleDef() |
{ |
printf("function multipleDef\n"); |
return 0; |
} |
|
int main (int argc, const char *argv[]) |
{ |
id obj; |
obj = [Decode new]; |
multipleDef(); |
[obj multipleDef]; |
return 0; |
} |
|
const char *_NSPrintForDebugger(id object) |
{ |
/* This is not really what _NSPrintForDebugger should do, but it |
is a simple test if gdb can call this function */ |
if (object && [object respondsTo: @selector(myDescription)]) |
return [object myDescription]; |
|
return NULL; |
} |