diff options
author | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-09-02 23:43:53 +0000 |
---|---|---|
committer | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-09-02 23:43:53 +0000 |
commit | ff79b0cf7660dfd068a1b0a08a865c881d55259d (patch) | |
tree | 6cfdb9bd065eef7534da1b9908a26bfd59f8a188 /gcc/testsuite/objc | |
parent | a95c0bd15ec9aa8b0004994564f48d57f6aba207 (diff) | |
download | gcc-ff79b0cf7660dfd068a1b0a08a865c881d55259d.tar.gz |
* lib/{objc.exp,objc-torture.exp}: New files for objc testing harness.
* objc: ObjC testsuite.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@22198 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite/objc')
-rw-r--r-- | gcc/testsuite/objc/execute/bf-1.m | 24 | ||||
-rw-r--r-- | gcc/testsuite/objc/execute/bf-10.m | 22 | ||||
-rw-r--r-- | gcc/testsuite/objc/execute/bf-11.m | 23 | ||||
-rw-r--r-- | gcc/testsuite/objc/execute/bf-12.m | 23 | ||||
-rw-r--r-- | gcc/testsuite/objc/execute/bf-13.m | 25 | ||||
-rw-r--r-- | gcc/testsuite/objc/execute/bf-14.m | 25 | ||||
-rw-r--r-- | gcc/testsuite/objc/execute/bf-15.m | 25 | ||||
-rw-r--r-- | gcc/testsuite/objc/execute/bf-16.m | 26 | ||||
-rw-r--r-- | gcc/testsuite/objc/execute/bf-17.m | 25 | ||||
-rw-r--r-- | gcc/testsuite/objc/execute/bf-18.m | 17 | ||||
-rw-r--r-- | gcc/testsuite/objc/execute/bf-19.m | 17 | ||||
-rw-r--r-- | gcc/testsuite/objc/execute/bf-2.m | 24 | ||||
-rw-r--r-- | gcc/testsuite/objc/execute/bf-3.m | 24 | ||||
-rw-r--r-- | gcc/testsuite/objc/execute/bf-4.m | 24 | ||||
-rw-r--r-- | gcc/testsuite/objc/execute/bf-5.m | 22 | ||||
-rw-r--r-- | gcc/testsuite/objc/execute/bf-6.m | 22 | ||||
-rw-r--r-- | gcc/testsuite/objc/execute/bf-7.m | 22 | ||||
-rw-r--r-- | gcc/testsuite/objc/execute/bf-8.m | 22 | ||||
-rw-r--r-- | gcc/testsuite/objc/execute/bf-9.m | 23 | ||||
-rw-r--r-- | gcc/testsuite/objc/execute/bf-common.h | 76 | ||||
-rw-r--r-- | gcc/testsuite/objc/execute/execute.exp | 42 |
21 files changed, 553 insertions, 0 deletions
diff --git a/gcc/testsuite/objc/execute/bf-1.m b/gcc/testsuite/objc/execute/bf-1.m new file mode 100644 index 00000000000..9a533a39b52 --- /dev/null +++ b/gcc/testsuite/objc/execute/bf-1.m @@ -0,0 +1,24 @@ +#include <objc/objc.h> +#include <objc/objc-api.h> +#include <objc/Object.h> + +@interface MyObject +{ + Class isa; + float f; + char a; + struct { + int i:2; + int j:3; + int k:12; + } flags; + char c; +// void *pointer; +} +@end + +@implementation MyObject +@end + +#include "bf-common.h" + diff --git a/gcc/testsuite/objc/execute/bf-10.m b/gcc/testsuite/objc/execute/bf-10.m new file mode 100644 index 00000000000..77076da51ed --- /dev/null +++ b/gcc/testsuite/objc/execute/bf-10.m @@ -0,0 +1,22 @@ +#include <objc/objc.h> +#include <objc/objc-api.h> +#include <objc/Object.h> + +@interface MyObject +{ + Class isa; + float f; + char a[3]; + int i:2; + int j:6; + char c; + int k:12; + char d; +} +@end + +@implementation MyObject +@end + +#include "bf-common.h" + diff --git a/gcc/testsuite/objc/execute/bf-11.m b/gcc/testsuite/objc/execute/bf-11.m new file mode 100644 index 00000000000..40d9b533a49 --- /dev/null +++ b/gcc/testsuite/objc/execute/bf-11.m @@ -0,0 +1,23 @@ +#include <objc/objc.h> +#include <objc/objc-api.h> +#include <objc/Object.h> + +@interface MyObject +{ + Class isa; + float f; + char a[3]; + int i:2; + int j:6; + short s; + int k:12; + char d; + void *pointer; +} +@end + +@implementation MyObject +@end + +#include "bf-common.h" + diff --git a/gcc/testsuite/objc/execute/bf-12.m b/gcc/testsuite/objc/execute/bf-12.m new file mode 100644 index 00000000000..9e0a989ee75 --- /dev/null +++ b/gcc/testsuite/objc/execute/bf-12.m @@ -0,0 +1,23 @@ +#include <objc/objc.h> +#include <objc/objc-api.h> +#include <objc/Object.h> + +@interface MyObject +{ + Class isa; + float f; + char a[3]; + int i:2; + int j:6; + int s; + int k:12; + char d; + void *pointer; +} +@end + +@implementation MyObject +@end + +#include "bf-common.h" + diff --git a/gcc/testsuite/objc/execute/bf-13.m b/gcc/testsuite/objc/execute/bf-13.m new file mode 100644 index 00000000000..f8349338b53 --- /dev/null +++ b/gcc/testsuite/objc/execute/bf-13.m @@ -0,0 +1,25 @@ +#include <objc/objc.h> +#include <objc/objc-api.h> +#include <objc/Object.h> + +@interface MyObject +{ + Class isa; + float f; + char a[3]; + struct { + int i:2; + int j:6; + char s; + int k:12; + } flags; + char d; + void *pointer; +} +@end + +@implementation MyObject +@end + +#include "bf-common.h" + diff --git a/gcc/testsuite/objc/execute/bf-14.m b/gcc/testsuite/objc/execute/bf-14.m new file mode 100644 index 00000000000..0ceedc08dd8 --- /dev/null +++ b/gcc/testsuite/objc/execute/bf-14.m @@ -0,0 +1,25 @@ +#include <objc/objc.h> +#include <objc/objc-api.h> +#include <objc/Object.h> + +@interface MyObject +{ + Class isa; + float f; + char a[3]; + struct { + int i:2; + int j:6; + short s; + int k:12; + } flags; + char d; + void *pointer; +} +@end + +@implementation MyObject +@end + +#include "bf-common.h" + diff --git a/gcc/testsuite/objc/execute/bf-15.m b/gcc/testsuite/objc/execute/bf-15.m new file mode 100644 index 00000000000..e6e7b30607d --- /dev/null +++ b/gcc/testsuite/objc/execute/bf-15.m @@ -0,0 +1,25 @@ +#include <objc/objc.h> +#include <objc/objc-api.h> +#include <objc/Object.h> + +@interface MyObject +{ + Class isa; + float f; + char a; + struct { + int i:2; + int j:6; + int s; + int k:12; + } flags; + char d; + void *pointer; +} +@end + +@implementation MyObject +@end + +#include "bf-common.h" + diff --git a/gcc/testsuite/objc/execute/bf-16.m b/gcc/testsuite/objc/execute/bf-16.m new file mode 100644 index 00000000000..fb8b0c38f51 --- /dev/null +++ b/gcc/testsuite/objc/execute/bf-16.m @@ -0,0 +1,26 @@ +#include <objc/objc.h> +#include <objc/objc-api.h> +#include <objc/Object.h> + +struct A { + int i; + float f; + int a:3; + int b:2; +}; + +@interface MyObject +{ + Class isa; + int i; + float f[3]; + struct A a, b; + char c; +} +@end + +@implementation MyObject +@end + +#include "bf-common.h" + diff --git a/gcc/testsuite/objc/execute/bf-17.m b/gcc/testsuite/objc/execute/bf-17.m new file mode 100644 index 00000000000..4c3b854962c --- /dev/null +++ b/gcc/testsuite/objc/execute/bf-17.m @@ -0,0 +1,25 @@ +#include <objc/objc.h> +#include <objc/objc-api.h> +#include <objc/Object.h> + +struct A { + int i; + float f; + int a:3; + int b:2; +}; + +@interface MyObject +{ + Class isa; + int i; + float f[3]; + struct A a; +} +@end + +@implementation MyObject +@end + +#include "bf-common.h" + diff --git a/gcc/testsuite/objc/execute/bf-18.m b/gcc/testsuite/objc/execute/bf-18.m new file mode 100644 index 00000000000..36a7ea6c61b --- /dev/null +++ b/gcc/testsuite/objc/execute/bf-18.m @@ -0,0 +1,17 @@ +#include <objc/objc.h> +#include <objc/objc-api.h> +#include <objc/Object.h> + +@interface MyObject +{ + Class isa; + int i; + char c[1]; +} +@end + +@implementation MyObject +@end + +#include "bf-common.h" + diff --git a/gcc/testsuite/objc/execute/bf-19.m b/gcc/testsuite/objc/execute/bf-19.m new file mode 100644 index 00000000000..21775e7c77e --- /dev/null +++ b/gcc/testsuite/objc/execute/bf-19.m @@ -0,0 +1,17 @@ +#include <objc/objc.h> +#include <objc/objc-api.h> +#include <objc/Object.h> + +@interface MyObject +{ + Class isa; + unsigned int i; + MyObject *object; +} +@end + +@implementation MyObject +@end + +#include "bf-common.h" + diff --git a/gcc/testsuite/objc/execute/bf-2.m b/gcc/testsuite/objc/execute/bf-2.m new file mode 100644 index 00000000000..eac0931549b --- /dev/null +++ b/gcc/testsuite/objc/execute/bf-2.m @@ -0,0 +1,24 @@ +#include <objc/objc.h> +#include <objc/objc-api.h> +#include <objc/Object.h> + +@interface MyObject +{ + Class isa; + float f; + char a[3]; + struct { + int i:2; + int j:3; + int k:12; + } flags; + char c; + void *pointer; +} +@end + +@implementation MyObject +@end + +#include "bf-common.h" + diff --git a/gcc/testsuite/objc/execute/bf-3.m b/gcc/testsuite/objc/execute/bf-3.m new file mode 100644 index 00000000000..04cf0836faa --- /dev/null +++ b/gcc/testsuite/objc/execute/bf-3.m @@ -0,0 +1,24 @@ +#include <objc/objc.h> +#include <objc/objc-api.h> +#include <objc/Object.h> + +@interface MyObject +{ + Class isa; + float f; + char a; + struct { + int i:2; + int j:6; + int k:12; + } flags; + char c; + void *pointer; +} +@end + +@implementation MyObject +@end + +#include "bf-common.h" + diff --git a/gcc/testsuite/objc/execute/bf-4.m b/gcc/testsuite/objc/execute/bf-4.m new file mode 100644 index 00000000000..ae8017c688e --- /dev/null +++ b/gcc/testsuite/objc/execute/bf-4.m @@ -0,0 +1,24 @@ +#include <objc/objc.h> +#include <objc/objc-api.h> +#include <objc/Object.h> + +@interface MyObject +{ + Class isa; + float f; + char a[3]; + struct { + int i:2; + int j:6; + int k:12; + } flags; + char c; + void *pointer; +} +@end + +@implementation MyObject +@end + +#include "bf-common.h" + diff --git a/gcc/testsuite/objc/execute/bf-5.m b/gcc/testsuite/objc/execute/bf-5.m new file mode 100644 index 00000000000..e61d71f9ced --- /dev/null +++ b/gcc/testsuite/objc/execute/bf-5.m @@ -0,0 +1,22 @@ +#include <objc/objc.h> +#include <objc/objc-api.h> +#include <objc/Object.h> + +@interface MyObject +{ + Class isa; + float f; + char a; + int i:2; + int j:3; + int k:12; + char c; + void *pointer; +} +@end + +@implementation MyObject +@end + +#include "bf-common.h" + diff --git a/gcc/testsuite/objc/execute/bf-6.m b/gcc/testsuite/objc/execute/bf-6.m new file mode 100644 index 00000000000..38222d3f676 --- /dev/null +++ b/gcc/testsuite/objc/execute/bf-6.m @@ -0,0 +1,22 @@ +#include <objc/objc.h> +#include <objc/objc-api.h> +#include <objc/Object.h> + +@interface MyObject +{ + Class isa; + float f; + char a[3]; + int i:2; + int j:3; + int k:12; + char c; + void *pointer; +} +@end + +@implementation MyObject +@end + +#include "bf-common.h" + diff --git a/gcc/testsuite/objc/execute/bf-7.m b/gcc/testsuite/objc/execute/bf-7.m new file mode 100644 index 00000000000..80ee6cef763 --- /dev/null +++ b/gcc/testsuite/objc/execute/bf-7.m @@ -0,0 +1,22 @@ +#include <objc/objc.h> +#include <objc/objc-api.h> +#include <objc/Object.h> + +@interface MyObject +{ + Class isa; + float f; + char a; + int i:2; + int j:6; + int k:12; + char c; + void *pointer; +} +@end + +@implementation MyObject +@end + +#include "bf-common.h" + diff --git a/gcc/testsuite/objc/execute/bf-8.m b/gcc/testsuite/objc/execute/bf-8.m new file mode 100644 index 00000000000..cc472f96130 --- /dev/null +++ b/gcc/testsuite/objc/execute/bf-8.m @@ -0,0 +1,22 @@ +#include <objc/objc.h> +#include <objc/objc-api.h> +#include <objc/Object.h> + +@interface MyObject +{ + Class isa; + float f; + char a[3]; + int i:2; + int j:6; + int k:12; + char c; + void *pointer; +} +@end + +@implementation MyObject +@end + +#include "bf-common.h" + diff --git a/gcc/testsuite/objc/execute/bf-9.m b/gcc/testsuite/objc/execute/bf-9.m new file mode 100644 index 00000000000..0f17727d6df --- /dev/null +++ b/gcc/testsuite/objc/execute/bf-9.m @@ -0,0 +1,23 @@ +#include <objc/objc.h> +#include <objc/objc-api.h> +#include <objc/Object.h> + +@interface MyObject +{ + Class isa; + float f; + char a[3]; + int i:2; + int j:3; + char c; + int k:12; + char d; + void *pointer; +} +@end + +@implementation MyObject +@end + +#include "bf-common.h" + diff --git a/gcc/testsuite/objc/execute/bf-common.h b/gcc/testsuite/objc/execute/bf-common.h new file mode 100644 index 00000000000..123a45413d0 --- /dev/null +++ b/gcc/testsuite/objc/execute/bf-common.h @@ -0,0 +1,76 @@ +#include <objc/encoding.h> + + +void print_ivars (Class class) +{ + struct objc_ivar_list* ivars = class->ivars; + int i; + + for (i = 0; i < ivars->ivar_count; i++) { + struct objc_ivar *ivar = &(ivars->ivar_list[i]); + printf ("ivar '%s', type '%s', offset %d\n", + ivar->ivar_name, ivar->ivar_type, ivar->ivar_offset); + } +} + +void compare_structures (Class class, const char* type) +{ + struct objc_struct_layout layout; + struct objc_ivar_list* ivars = class->ivars; + int i = 0; + int position; + + objc_layout_structure (type, &layout); + + while (objc_layout_structure_next_member (&layout)) + { + struct objc_ivar *ivar; + const char *ivar_type; + + if (i > ivars->ivar_count) + { + printf ("too many ivars in type %s, layout = %s\n", + type, layout.type); + exit (1); + } + + ivar = &(ivars->ivar_list[i]); + objc_layout_structure_get_info (&layout, &position, NULL, &ivar_type); + printf ("real ivar '%s' offset %d\n", + ivar->ivar_name, ivar->ivar_offset); + printf ("computed type '%s' offset %d\n", ivar_type, position); + if (position != ivar->ivar_offset) + { + printf ("offset %d and computed position %d don't match on ivar '%s'" + " (i = %d)\n", + ivar->ivar_offset, position, ivar->ivar_name, i); + exit (1); + } + i++; + } + + printf ("%d ivars checked\n", i); +} + +int main () +{ + struct class_vars + { + @defs (MyObject); + }; + int size1, size2; + Class class = [MyObject class]; + + printf ("type = %s\n", @encode (struct class_vars)); + print_ivars (class); + + compare_structures (class, @encode(struct class_vars)); + if ((size1 = objc_sizeof_type (@encode(struct class_vars))) + != (size2 = sizeof (struct class_vars))) + { + printf ("sizes don't match (computed %d, exact %d)\n", size1, size2); + abort (); + } + + exit (0); +} diff --git a/gcc/testsuite/objc/execute/execute.exp b/gcc/testsuite/objc/execute/execute.exp new file mode 100644 index 00000000000..0f598a3c5f4 --- /dev/null +++ b/gcc/testsuite/objc/execute/execute.exp @@ -0,0 +1,42 @@ +# Copyright (C) 1991, 1992, 1993, 1995, 1997 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 2 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, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +# Please email any bugs, comments, and/or additions to this file to: +# bug-gcc@prep.ai.mit.edu + +# This file was written by Rob Savoye. (rob@cygnus.com) +# Modified by Ovidiu Predescu (ovidiu@aracnet.com) + + +if $tracelevel then { + strace $tracelevel +} + +# load support procs +load_lib objc-torture.exp + +# +# main test loop +# + +foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.m]] { + # If we're only testing specific files and this isn't one of them, skip it. + if ![runtest_file_p $runtests $src] then { + continue + } + + objc-torture-execute $src +} |