diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 741fb74c159..8b7ea124e53 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2005-10-21 David Ayers + + * obj-c++.dg/except-1.mm: Generalize for both Objective-C runtimes. + 2005-10-21 Jakub Jelinek * gfortran.dg/assumed_dummy_2.f90: New test. diff --git a/gcc/testsuite/obj-c++.dg/except-1.mm b/gcc/testsuite/obj-c++.dg/except-1.mm index 79eaf12ddd0..d92ac795e85 100644 --- a/gcc/testsuite/obj-c++.dg/except-1.mm +++ b/gcc/testsuite/obj-c++.dg/except-1.mm @@ -1,5 +1,4 @@ -/* { dg-do run { target "*-*-darwin*" } } */ -/* { dg-options "-framework Foundation" } */ +/* { dg-do run } */ /* This tests that exceptions work. It used to fail because objc_msgSend was marked with DECL_NOTHROW. @@ -7,12 +6,30 @@ that file includes objc/objc-runtime.h which explicitly prototypes objc_msgSend without 'nothrow'. */ -#include #include #include +#ifndef __NEXT_RUNTIME__ +extern "C" { + extern id class_create_instance(Class _class); +} +#else +extern "C" { + extern id (*_zoneAlloc)(Class, unsigned int, void *); + extern void *malloc_default_zone(void); +} +#endif + +@interface RObject { + Class isa; +} ++ initialize; ++ alloc; +- init; +@end + // ObjectiveC class header -@interface ObjCclass : NSObject { +@interface ObjCclass : RObject { } -(void)method1; -(void)method2; @@ -63,3 +80,24 @@ void CPPclass::function1() /* Shouldn't be here because we threw. */ abort (); } + +@implementation RObject ++ initialize +{ + return self; +} + +- init +{ + return self; +} + ++ alloc +{ +#ifndef __NEXT_RUNTIME__ + return class_create_instance(self); +#else + return (*_zoneAlloc)((Class)self, 0, malloc_default_zone()); +#endif +} +@end