From 3a24ea2669c07948cd199afce2d860898c86afd6 Mon Sep 17 00:00:00 2001 From: Iain Sandoe Date: Sat, 15 Jun 2019 14:03:44 +0000 Subject: [PATCH] [objective-c/c++, testsuite, 3/3] Workaround for PR90709. Use the CF-CFString.h, F-NS*.h proxy headers where needed in the objective-c++ testsuite. Make minor adjustments to tests as required, providing that those do not alter the test intent. 2019-06-15 Iain Sandoe PR objc/90709 * obj-c++.dg/proto-lossage-7.mm: Use proxy headers. * obj-c++.dg/strings/const-cfstring-2.mm: Likewise. * obj-c++.dg/strings/const-cfstring-5.mm: Likewise * obj-c++.dg/strings/const-str-12.mm: Likewise. * obj-c++.dg/syntax-error-1.mm: Likewise. * obj-c++.dg/torture/strings/const-cfstring-1.mm: Likewise. * obj-c++.dg/torture/strings/const-str-10.mm: Likewise. * obj-c++.dg/torture/strings/const-str-11.mm: Likewise. * obj-c++.dg/torture/strings/const-str-9.mm: Likewise. * obj-c++.dg/cxx-ivars-3.mm: Skip on later Darwin, where the 10.4 API in no longer supported, also on m64 where there's no meaning to it. * obj-c++.dg/isa-field-1.mm: Suppress unwanted warning, add comment why. * obj-c++.dg/objc-gc-3.mm: Skip for Darwin > 16, the API use is an error there. * obj-c++.dg/qual-types-1.mm: Prune a spurious l64 warning. * obj-c++.dg/stubify-1.mm: Tidy up after better compiler warnings. * obj-c++.dg/stubify-2.mm: Likewise. * obj-c++.dg/try-catch-1.mm: Likewise. * obj-c++.dg/try-catch-3.mm: Likewise. From-SVN: r272327 --- gcc/testsuite/ChangeLog | 23 +++++++++++++++++++ gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm | 5 ++-- gcc/testsuite/obj-c++.dg/isa-field-1.mm | 2 ++ gcc/testsuite/obj-c++.dg/objc-gc-3.mm | 1 + gcc/testsuite/obj-c++.dg/proto-lossage-7.mm | 4 +++- gcc/testsuite/obj-c++.dg/qual-types-1.mm | 2 ++ .../obj-c++.dg/strings/const-cfstring-2.mm | 4 ++-- .../obj-c++.dg/strings/const-cfstring-5.mm | 2 +- .../obj-c++.dg/strings/const-str-12.mm | 2 +- gcc/testsuite/obj-c++.dg/stubify-1.mm | 8 +++---- gcc/testsuite/obj-c++.dg/stubify-2.mm | 6 ++--- gcc/testsuite/obj-c++.dg/syntax-error-1.mm | 4 +++- .../torture/strings/const-cfstring-1.mm | 12 +++++----- .../torture/strings/const-str-10.mm | 2 +- .../torture/strings/const-str-11.mm | 2 +- .../obj-c++.dg/torture/strings/const-str-9.mm | 2 +- gcc/testsuite/obj-c++.dg/try-catch-1.mm | 1 + gcc/testsuite/obj-c++.dg/try-catch-3.mm | 1 + 18 files changed, 59 insertions(+), 24 deletions(-) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 9b2dcf0d7e5..7efcfd9b3f9 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,26 @@ +2019-06-15 Iain Sandoe + + PR objc/90709 + * obj-c++.dg/proto-lossage-7.mm: Use proxy headers. + * obj-c++.dg/strings/const-cfstring-2.mm: Likewise. + * obj-c++.dg/strings/const-cfstring-5.mm: Likewise + * obj-c++.dg/strings/const-str-12.mm: Likewise. + * obj-c++.dg/syntax-error-1.mm: Likewise. + * obj-c++.dg/torture/strings/const-cfstring-1.mm: Likewise. + * obj-c++.dg/torture/strings/const-str-10.mm: Likewise. + * obj-c++.dg/torture/strings/const-str-11.mm: Likewise. + * obj-c++.dg/torture/strings/const-str-9.mm: Likewise. + * obj-c++.dg/cxx-ivars-3.mm: Skip on later Darwin, where the 10.4 API + in no longer supported, also on m64 where there's no meaning to it. + * obj-c++.dg/isa-field-1.mm: Suppress unwanted warning, add comment why. + * obj-c++.dg/objc-gc-3.mm: Skip for Darwin > 16, the API use is an error + there. + * obj-c++.dg/qual-types-1.mm: Prune a spurious l64 warning. + * obj-c++.dg/stubify-1.mm: Tidy up after better compiler warnings. + * obj-c++.dg/stubify-2.mm: Likewise. + * obj-c++.dg/try-catch-1.mm: Likewise. + * obj-c++.dg/try-catch-3.mm: Likewise. + 2019-06-15 Iain Sandoe PR objc/90709 diff --git a/gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm b/gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm index 0098349cbce..18b671d122a 100644 --- a/gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm +++ b/gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm @@ -2,13 +2,14 @@ // { dg-do run { target *-*-darwin* } } // { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } +// { dg-skip-if "Headers incompatible with 10.4 APIs" { *-*-darwin1[3-8]* } { "-fnext-runtime" } { "" } } // { dg-additional-options "-fobjc-call-cxx-cdtors -mmacosx-version-min=10.4 -framework Foundation" } // This test has no equivalent or meaning for m64/ABI V2 -// { dg-xfail-run-if "No Test Avail" { *-*-darwin* && lp64 } { "-fnext-runtime" } { "" } } +// { dg-xfail-run-if "No Test Avail" { *-*-darwin* && lp64 } { "-fnext-runtime" } { "" } } #include #include -#include +#include "../objc-obj-c++-shared/F-NSObject.h" //extern "C" { int printf(const char *,...); } #define CHECK_IF(expr) if(!(expr)) abort() diff --git a/gcc/testsuite/obj-c++.dg/isa-field-1.mm b/gcc/testsuite/obj-c++.dg/isa-field-1.mm index 4501d01a11e..3fb27d5f641 100644 --- a/gcc/testsuite/obj-c++.dg/isa-field-1.mm +++ b/gcc/testsuite/obj-c++.dg/isa-field-1.mm @@ -1,5 +1,7 @@ /* Ensure there are no bizarre difficulties with accessing the 'isa' field of objects. */ /* { dg-do compile } */ +/* The use of isa is deprecated, but we still want to test that is works. */ +/* { dg-additional-options "-Wno-deprecated-declarations" } */ #include "../objc-obj-c++-shared/TestsuiteObject.h" #include "../objc-obj-c++-shared/runtime.h" diff --git a/gcc/testsuite/obj-c++.dg/objc-gc-3.mm b/gcc/testsuite/obj-c++.dg/objc-gc-3.mm index 430e5832eb6..68bebf8fc96 100644 --- a/gcc/testsuite/obj-c++.dg/objc-gc-3.mm +++ b/gcc/testsuite/obj-c++.dg/objc-gc-3.mm @@ -3,6 +3,7 @@ /* Contributed by Ziemowit Laski */ /* { dg-do compile } */ +/* { dg-skip-if "GC API is an error from Darwin16." { *-*-darwin1[6-8]* } { "-fnext-runtime" } { "" } } */ /* { dg-options "-fobjc-gc" } */ /* { dg-prune-output "cc1objplus: warning: '-fobjc-gc' is ignored for '-fgnu-runtime'" } */ diff --git a/gcc/testsuite/obj-c++.dg/proto-lossage-7.mm b/gcc/testsuite/obj-c++.dg/proto-lossage-7.mm index b32cfd8a0dd..d136af92d67 100644 --- a/gcc/testsuite/obj-c++.dg/proto-lossage-7.mm +++ b/gcc/testsuite/obj-c++.dg/proto-lossage-7.mm @@ -1,9 +1,11 @@ /* Check that typedefs of ObjC classes preserve any @protocol qualifiers. */ /* { dg-do compile } */ +/* Suppress warnings that the GNUStep headers introduce. */ +/* { dg-additional-options "-std=gnu++11 -Wno-expansion-to-defined -Wno-variadic-macros" { target *-*-darwin* } } */ #ifdef __NEXT_RUNTIME__ -#include +#include "../objc-obj-c++-shared/F-NSObject.h" #define OBJECT NSObject #else #include diff --git a/gcc/testsuite/obj-c++.dg/qual-types-1.mm b/gcc/testsuite/obj-c++.dg/qual-types-1.mm index dd0eb42bc4f..2fe06e4c80d 100644 --- a/gcc/testsuite/obj-c++.dg/qual-types-1.mm +++ b/gcc/testsuite/obj-c++.dg/qual-types-1.mm @@ -4,6 +4,8 @@ /* { dg-do run } */ /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ +/* { dg-prune-output ".*ld: warning: direct access in.*" } */ + #include "../objc-obj-c++-shared/TestsuiteObject.m" #include diff --git a/gcc/testsuite/obj-c++.dg/strings/const-cfstring-2.mm b/gcc/testsuite/obj-c++.dg/strings/const-cfstring-2.mm index b4fc9e6ed4f..e81f4713828 100644 --- a/gcc/testsuite/obj-c++.dg/strings/const-cfstring-2.mm +++ b/gcc/testsuite/obj-c++.dg/strings/const-cfstring-2.mm @@ -8,8 +8,8 @@ /* { dg-skip-if "NeXT only" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-options "-ftrack-macro-expansion=0 -mconstant-cfstrings -Wnonportable-cfstrings" } */ -#import -#import +#include "../../objc-obj-c++-shared/F-NSString.h" +#include "../../objc-obj-c++-shared/CF-CFString.h" #ifndef __CONSTANT_CFSTRINGS__ #error The -fconstant-cfstrings option is not functioning properly diff --git a/gcc/testsuite/obj-c++.dg/strings/const-cfstring-5.mm b/gcc/testsuite/obj-c++.dg/strings/const-cfstring-5.mm index 98bb7c5bddc..762afb6b1ba 100644 --- a/gcc/testsuite/obj-c++.dg/strings/const-cfstring-5.mm +++ b/gcc/testsuite/obj-c++.dg/strings/const-cfstring-5.mm @@ -6,7 +6,7 @@ /* { dg-skip-if "NeXT only" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-options "-mconstant-cfstrings" } */ -#include +#include "../../objc-obj-c++-shared/F-NSObject.h" @interface Foo: NSObject { char *cString; diff --git a/gcc/testsuite/obj-c++.dg/strings/const-str-12.mm b/gcc/testsuite/obj-c++.dg/strings/const-str-12.mm index d0dfb668ea9..ade24b3a22c 100644 --- a/gcc/testsuite/obj-c++.dg/strings/const-str-12.mm +++ b/gcc/testsuite/obj-c++.dg/strings/const-str-12.mm @@ -6,7 +6,7 @@ /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=Foo" { target *-*-darwin* } } */ #ifdef __NEXT_RUNTIME__ -#include +#include "../../objc-obj-c++-shared/F-NSObject.h" #define OBJECT NSObject #else #include diff --git a/gcc/testsuite/obj-c++.dg/stubify-1.mm b/gcc/testsuite/obj-c++.dg/stubify-1.mm index 687739ceccd..c2355437afc 100644 --- a/gcc/testsuite/obj-c++.dg/stubify-1.mm +++ b/gcc/testsuite/obj-c++.dg/stubify-1.mm @@ -10,7 +10,7 @@ typedef struct objc_object { } *id ; int x = 41 ; extern "C" { - extern id objc_msgSend(id self, char * op, ...); + extern id objc_msgSend(id self, objc_selector* op, ...); extern int bogonic (int, int, int); } @@ -20,9 +20,9 @@ extern "C" { - (Document *) close; @end @implementation Document -- (Document *) class { } -- (Document *) close { } -- (Document *) window { } +- (Document *) class { return (Document *)0; } +- (Document *) close { return (Document *)0; } +- (Document *) window { return (Document *)0; } - (void)willEndCloseSheet:(void *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo { [[self window] close]; ((void (*)(id, char *, int))objc_msgSend)([self class], (char *)contextInfo, 1); diff --git a/gcc/testsuite/obj-c++.dg/stubify-2.mm b/gcc/testsuite/obj-c++.dg/stubify-2.mm index 9968672ed34..a9f66cac5d2 100644 --- a/gcc/testsuite/obj-c++.dg/stubify-2.mm +++ b/gcc/testsuite/obj-c++.dg/stubify-2.mm @@ -16,9 +16,9 @@ extern int bogonic (int, int, int) ; - (Document *) close; @end @implementation Document -- (Document *) class { } -- (Document *) close { } -- (Document *) window { } +- (Document *) class { return (Document *)0; } +- (Document *) close { return (Document *)0; } +- (Document *) window { return (Document *)0; } - (void)willEndCloseSheet:(void *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo { [[self window] close]; ((void (*)(id, char *, int))objc_msgSend)([self class], (char *)contextInfo, 1); diff --git a/gcc/testsuite/obj-c++.dg/syntax-error-1.mm b/gcc/testsuite/obj-c++.dg/syntax-error-1.mm index 320d56c5ec1..edbd9efc964 100644 --- a/gcc/testsuite/obj-c++.dg/syntax-error-1.mm +++ b/gcc/testsuite/obj-c++.dg/syntax-error-1.mm @@ -1,8 +1,10 @@ /* Graceful handling of a syntax error. */ /* { dg-do compile } */ +/* Suppress warnings that the GNUStep headers introduce. */ +/* { dg-additional-options "-std=gnu++11 -Wno-expansion-to-defined -Wno-variadic-macros" { target *-*-darwin* } } */ #ifdef __NEXT_RUNTIME__ -#include +#include "../objc-obj-c++-shared/F-NSObject.h" #define OBJECT NSObject #else #include diff --git a/gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-1.mm b/gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-1.mm index 2983c43c445..0f1d92bb5ce 100644 --- a/gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-1.mm +++ b/gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-1.mm @@ -13,8 +13,8 @@ well, we don't implement writable ones at this juncture. */ /* { dg-options "-mconstant-cfstrings -framework Cocoa -Wl,-w" { target *-*-darwin[123]* } } */ -#import -#import +#include "../../../objc-obj-c++-shared/F-NSString.h" +#include "../../../objc-obj-c++-shared/CF-CFString.h" #include void printOut(NSString *str) { @@ -47,10 +47,10 @@ int main(void) { checkNSRange([@"Hello World" rangeOfString:(id)CFSTR("World")]); checkNSRange([(id)CFSTR("Hello World") rangeOfString:(id)CFSTR("World")]); - checkCFRange(CFStringFind((CFStringRef)@"Hello World", (CFStringRef)@"World", 0)); - checkCFRange(CFStringFind(CFSTR("Hello World"), (CFStringRef)@"World", 0)); - checkCFRange(CFStringFind((CFStringRef)@"Hello World", CFSTR("World"), 0)); - checkCFRange(CFStringFind(CFSTR("Hello World"), CFSTR("World"), 0)); + checkCFRange(CFStringFind((CFStringRef)@"Hello World", (CFStringRef)@"World", (CFStringCompareFlags)0)); + checkCFRange(CFStringFind(CFSTR("Hello World"), (CFStringRef)@"World", (CFStringCompareFlags)0)); + checkCFRange(CFStringFind((CFStringRef)@"Hello World", CFSTR("World"), (CFStringCompareFlags)0)); + checkCFRange(CFStringFind(CFSTR("Hello World"), CFSTR("World"), (CFStringCompareFlags)0)); /* Check for string uniquing. */ if (s0a != s0b || s0a != s2 || s1 != (id)s2) { diff --git a/gcc/testsuite/obj-c++.dg/torture/strings/const-str-10.mm b/gcc/testsuite/obj-c++.dg/torture/strings/const-str-10.mm index f2e912beb0a..e1dad124cd6 100644 --- a/gcc/testsuite/obj-c++.dg/torture/strings/const-str-10.mm +++ b/gcc/testsuite/obj-c++.dg/torture/strings/const-str-10.mm @@ -6,7 +6,7 @@ /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */ -#include +#include "../../../objc-obj-c++-shared/F-NSObject.h" #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE. */ @interface NSString: NSObject diff --git a/gcc/testsuite/obj-c++.dg/torture/strings/const-str-11.mm b/gcc/testsuite/obj-c++.dg/torture/strings/const-str-11.mm index 7e5d9b61e71..30a9228a64e 100644 --- a/gcc/testsuite/obj-c++.dg/torture/strings/const-str-11.mm +++ b/gcc/testsuite/obj-c++.dg/torture/strings/const-str-11.mm @@ -7,7 +7,7 @@ /* { dg-options "-fconstant-string-class=XStr" } */ /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=XStr" { target *-*-darwin* } } */ -#include +#include "../../../objc-obj-c++-shared/F-NSObject.h" #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE. */ @interface XString: NSObject { diff --git a/gcc/testsuite/obj-c++.dg/torture/strings/const-str-9.mm b/gcc/testsuite/obj-c++.dg/torture/strings/const-str-9.mm index d78dc73f937..a1a14295e90 100644 --- a/gcc/testsuite/obj-c++.dg/torture/strings/const-str-9.mm +++ b/gcc/testsuite/obj-c++.dg/torture/strings/const-str-9.mm @@ -5,7 +5,7 @@ /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */ /* { dg-options "-mno-constant-cfstrings" { target *-*-darwin* } } */ -#include +#include "../../../objc-obj-c++-shared/F-NSObject.h" #include "../../../objc-obj-c++-shared/runtime.h" /* For NEXT_OBJC_USE_NEW_INTERFACE. */ @interface NSConstantString: NSObject { diff --git a/gcc/testsuite/obj-c++.dg/try-catch-1.mm b/gcc/testsuite/obj-c++.dg/try-catch-1.mm index cbdace62d43..1688995a2bf 100644 --- a/gcc/testsuite/obj-c++.dg/try-catch-1.mm +++ b/gcc/testsuite/obj-c++.dg/try-catch-1.mm @@ -39,4 +39,5 @@ int foo() @finally { printf("In @finally block (%d)... ", exc_control); } + return -1; } diff --git a/gcc/testsuite/obj-c++.dg/try-catch-3.mm b/gcc/testsuite/obj-c++.dg/try-catch-3.mm index b0822d3d7c7..e6868a350eb 100644 --- a/gcc/testsuite/obj-c++.dg/try-catch-3.mm +++ b/gcc/testsuite/obj-c++.dg/try-catch-3.mm @@ -15,4 +15,5 @@ const char *foo(void) @catch (TestsuiteObject* theException) { return [theException name]; } + return (const char *)0; }