This patch (written with Iain) fixes all the testsuite failiures on Darwin8. It includes the previous one.
OK to commit ? Thanks Index: ChangeLog =================================================================== --- ChangeLog (revision 174760) +++ ChangeLog (working copy) @@ -1,3 +1,18 @@ +2011-06-07 Nicola Pero <nicola.p...@meta-innovation.com> + Iain Sandoe <ia...@gcc.gnu.org> + + * objc-obj-c++-shared/runtime.h (protocol_getMethodDescription): + Added code to deal with the case when [Protocol + -descriptionForInstanceMethod:] or [Protocol + -descriptionForClassMethod:] returns NULL. + +2011-06-07 Nicola Pero <nicola.p...@meta-innovation.com> + Iain Sandoe <ia...@gcc.gnu.org> + + * objc-obj-c++-shared/TestsuiteObject.h ([-free]): Return 'id'. + * objc-obj-c++-shared/TestsuiteObject.m ([-free]): Return 'id'. + Added cast. + 2011-06-07 Rainer Orth <r...@cebitec.uni-bielefeld.de> gcc/testsuite: Index: objc-obj-c++-shared/TestsuiteObject.h =================================================================== --- objc-obj-c++-shared/TestsuiteObject.h (revision 174761) +++ objc-obj-c++-shared/TestsuiteObject.h (working copy) @@ -35,7 +35,7 @@ along with GCC; see the file COPYING3. If not see + (id) new; + (id) alloc; - (id) init; -- (void) free; +- (id) free; /* Auxiliary methods. */ + (Class) class; Index: objc-obj-c++-shared/runtime.h =================================================================== --- objc-obj-c++-shared/runtime.h (revision 174761) +++ objc-obj-c++-shared/runtime.h (working copy) @@ -93,14 +93,16 @@ struct objc_method_description protocol_getMethodD struct objc_method_description result; if (instanceMethod) - { - tmp = [protocol descriptionForInstanceMethod: selector]; - result = *tmp; - } + tmp = [protocol descriptionForInstanceMethod: selector]; else + tmp = [protocol descriptionForClassMethod: selector]; + + if (tmp) + result = *tmp; + else { - tmp = [protocol descriptionForClassMethod: selector]; - result = *tmp; + result.name = (SEL)0; + result.types = (char *)0; } return result; Index: objc-obj-c++-shared/TestsuiteObject.m =================================================================== --- objc-obj-c++-shared/TestsuiteObject.m (revision 174761) +++ objc-obj-c++-shared/TestsuiteObject.m (working copy) @@ -41,9 +41,14 @@ along with GCC; see the file COPYING3. If not see { return self; } -- (void) free +/* We return 'id' to have the same signature as [Object -free] in + older runtimes and avoid warnings about conflicting signatures. */ +- (id) free { - object_dispose (self); + /* Cast 'self' to 'id' because the NeXT runtime in darwin8 (Apple + Mac OS X 10.4) declares object_dispose to take an "Object *" + argument. */ + return object_dispose ((id)self); } + (Class) class {