Bug 90709

Summary: [meta-bug] GNU Objective C (C++) cannot consume current headers on Darwin platforms.
Product: gcc Reporter: Iain Sandoe <iains>
Component: objcAssignee: Not yet assigned to anyone <unassigned>
Status: NEW ---    
Severity: normal CC: dominiq, egallager, sjames
Priority: P3 Keywords: meta-bug
Version: 10.0   
Target Milestone: ---   
Host: Target:
Build: Known to work:
Known to fail: 10.3.1, 11.3.1, 12.3.1, 13.1.0 Last reconfirmed: 2019-06-01 00:00:00
Bug Depends on: 78352, 90707, 90708, 90835, 109877, 60512    
Bug Blocks:    

Description Iain Sandoe 2019-06-01 23:30:51 UTC
This is a place to gather the (several) contributing factors to the apparent regression in handling Darwin / MacOS X objective c headers.
Comment 1 Iain Sandoe 2019-06-01 23:40:20 UTC
The short list of major factors:

1.  (78352) GCC lacks support for the Apple "blocks" extension to the C family of languages.

 - block syntax appears without guards in many places in modern Darwin system headers.

2. (90707) - GNU Objective C (C++) does not support nullability syntax.

 - nullability introduces new keywords for objective c and, unlike the equivalent markup in C/C++, these cannot be worked around with preprocessor hacks,

3. (90708) - GNU Objective C (C++) does not support lightweight generics.

 - likewise this is an invasive syntax change that can't be worked around.

4. instancetype keyword (partially implemented, at least we can consume the syntax).

-----

However, taking these points aside - for the APIs currently implemented by GNNU objective c - we should seek a mechanism to monitor for regressions.
Comment 2 Iain Sandoe 2019-06-01 23:44:15 UTC
*** Bug 63651 has been marked as a duplicate of this bug. ***
Comment 3 Iain Sandoe 2019-06-15 13:55:07 UTC
Author: iains
Date: Sat Jun 15 13:54:36 2019
New Revision: 272325

URL: https://gcc.gnu.org/viewcvs?rev=272325&root=gcc&view=rev
Log:
[objective-c/c++, testsuite, 1/3] Workaround for PR90709.

Since we cannot parse the current NeXT headers, because of PR90709 and its
dependents, we have a large amount of testsuite noise for Darwin platforms.
In order to restore the usefulness of the testsuite, we are going add headers
without the modern syntax elements that trigger the bug, and use these for
test runs on newer Darwin.

The headers are imported from GNUStep, with some local modifications to make
sure that __BLOCKS__ is honoured as a gate for Apple-style blocks closures.

CF-CFString.h, F-NS*.h are proxy headers that use the installed CoreFoundation
or Foundation headers on systems <= Darwin12 and the GNUStep headers for newer.

2019-06-15  Iain Sandoe  <iain@sandoe.co.uk>

	PR objc/90709
	* objc-obj-c++-shared/CF-CFString.h: New.
	* objc-obj-c++-shared/F-NSArray.h: New.
	* objc-obj-c++-shared/F-NSAutoreleasePool.h: New.
	* objc-obj-c++-shared/F-NSObject.h: New.
	* objc-obj-c++-shared/F-NSString.h: New.
	* objc-obj-c++-shared/F-NSValue.h: New.
	* objc-obj-c++-shared/GNUStep/CoreFoundation/CFArray.h: New.
	* objc-obj-c++-shared/GNUStep/CoreFoundation/CFAvailability.h: New.
	* objc-obj-c++-shared/GNUStep/CoreFoundation/CFBase.h: New.
	* objc-obj-c++-shared/GNUStep/CoreFoundation/CFCharacterSet.h: New.
	* objc-obj-c++-shared/GNUStep/CoreFoundation/CFData.h: New.
	* objc-obj-c++-shared/GNUStep/CoreFoundation/CFDictionary.h: New.
	* objc-obj-c++-shared/GNUStep/CoreFoundation/CFLocale.h: New.
	* objc-obj-c++-shared/GNUStep/CoreFoundation/CFString.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSArray.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSAutoreleasePool.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSDate.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSEnumerator.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSGeometry.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSObjCRuntime.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSObject.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSRange.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSString.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSValue.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSZone.h: New.
	* objc-obj-c++-shared/GNUStep/GNUstepBase/GNUstep.h: New.
	* objc-obj-c++-shared/GNUStep/GNUstepBase/GSBlocks.h: New.
	* objc-obj-c++-shared/GNUStep/GNUstepBase/GSConfig.h: New.
	* objc-obj-c++-shared/GNUStep/GNUstepBase/GSObjCRuntime.h: New.
	* objc-obj-c++-shared/GNUStep/GNUstepBase/GSVersionMacros.h: New.
	* objc-obj-c++-shared/GNUStep/GNUstepBase/NSArray+GNUstepBase.h: New.
	* objc-obj-c++-shared/GNUStep/GNUstepBase/NSMutableString+GNUstepBase.h:
	New.
	* objc-obj-c++-shared/GNUStep/GNUstepBase/NSNumber+GNUstepBase.h: New.
	* objc-obj-c++-shared/GNUStep/GNUstepBase/NSObject+GNUstepBase.h: New.
	* objc-obj-c++-shared/GNUStep/GNUstepBase/NSString+GNUstepBase.h: New.


Added:
    trunk/gcc/testsuite/objc-obj-c++-shared/CF-CFString.h
    trunk/gcc/testsuite/objc-obj-c++-shared/F-NSArray.h
    trunk/gcc/testsuite/objc-obj-c++-shared/F-NSAutoreleasePool.h
    trunk/gcc/testsuite/objc-obj-c++-shared/F-NSObject.h
    trunk/gcc/testsuite/objc-obj-c++-shared/F-NSString.h
    trunk/gcc/testsuite/objc-obj-c++-shared/F-NSValue.h
    trunk/gcc/testsuite/objc-obj-c++-shared/GNUStep/
    trunk/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/
    trunk/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFArray.h
    trunk/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFAvailability.h
    trunk/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFBase.h
    trunk/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFCharacterSet.h
    trunk/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFData.h
    trunk/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFDictionary.h
    trunk/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFLocale.h
    trunk/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFString.h
    trunk/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/
    trunk/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSArray.h
    trunk/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSAutoreleasePool.h
    trunk/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSDate.h
    trunk/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSEnumerator.h
    trunk/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSGeometry.h
    trunk/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSObjCRuntime.h
    trunk/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSObject.h
    trunk/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSRange.h
    trunk/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSString.h
    trunk/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSValue.h
    trunk/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSZone.h
    trunk/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/
    trunk/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GNUstep.h
    trunk/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSBlocks.h
    trunk/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSConfig.h
    trunk/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSObjCRuntime.h
    trunk/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSVersionMacros.h
    trunk/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSArray+GNUstepBase.h
    trunk/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSMutableString+GNUstepBase.h
    trunk/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSNumber+GNUstepBase.h
    trunk/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSObject+GNUstepBase.h
    trunk/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSString+GNUstepBase.h
Modified:
    trunk/gcc/testsuite/ChangeLog
Comment 4 Iain Sandoe 2019-06-15 14:00:56 UTC
Author: iains
Date: Sat Jun 15 14:00:24 2019
New Revision: 272326

URL: https://gcc.gnu.org/viewcvs?rev=272326&root=gcc&view=rev
Log:
[objective-c/c++, testsuite, 2/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  <iain@sandoe.co.uk>

	PR objc/90709
	* objc.dg/encode-7-next-64bit.m: Use proxy headers.
	* objc.dg/image-info.m: Likewise.
	* objc.dg/method-6.m: Likewise.
	* objc.dg/no-extra-load.m: Likewise.
	* objc.dg/objc-foreach-4.m: Likewise.
	* objc.dg/objc-foreach-5.m: Likewise.
	* objc.dg/proto-lossage-7.m: Likewise.
	* objc.dg/strings/const-cfstring-2.m: Likewise.
	* objc.dg/strings/const-cfstring-5.m: Likewise.
	* objc.dg/strings/const-str-12b.m: Likewise.
	* objc.dg/symtab-1.m: Likewise.
	* objc.dg/torture/strings/const-cfstring-1.m: Likewise.
	* objc.dg/torture/strings/const-str-10.m: Likewise.
	* objc.dg/torture/strings/const-str-11.m: Likewise.
	* objc.dg/torture/strings/const-str-9.m: Likewise.
	* objc.dg/zero-link-1.m: Likewise.
	* objc.dg/zero-link-2.m: Likewise.
	* objc.dg/zero-link-3.m: Likewise.
	* objc.dg/isa-field-1.m: Suppress unwanted warning, add comment why.
	* objc.dg/headers.m: XFAIL for Darwin14-19.
	* objc.dg/objc-gc-4.m: Skip for Darwin > 16, the API use is an error
	there.


Modified:
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/objc.dg/encode-7-next-64bit.m
    trunk/gcc/testsuite/objc.dg/headers.m
    trunk/gcc/testsuite/objc.dg/image-info.m
    trunk/gcc/testsuite/objc.dg/isa-field-1.m
    trunk/gcc/testsuite/objc.dg/method-6.m
    trunk/gcc/testsuite/objc.dg/no-extra-load.m
    trunk/gcc/testsuite/objc.dg/objc-foreach-4.m
    trunk/gcc/testsuite/objc.dg/objc-foreach-5.m
    trunk/gcc/testsuite/objc.dg/objc-gc-4.m
    trunk/gcc/testsuite/objc.dg/proto-lossage-7.m
    trunk/gcc/testsuite/objc.dg/strings/const-cfstring-2.m
    trunk/gcc/testsuite/objc.dg/strings/const-cfstring-5.m
    trunk/gcc/testsuite/objc.dg/strings/const-str-12b.m
    trunk/gcc/testsuite/objc.dg/symtab-1.m
    trunk/gcc/testsuite/objc.dg/torture/strings/const-cfstring-1.m
    trunk/gcc/testsuite/objc.dg/torture/strings/const-str-10.m
    trunk/gcc/testsuite/objc.dg/torture/strings/const-str-11.m
    trunk/gcc/testsuite/objc.dg/torture/strings/const-str-9.m
    trunk/gcc/testsuite/objc.dg/zero-link-1.m
    trunk/gcc/testsuite/objc.dg/zero-link-2.m
    trunk/gcc/testsuite/objc.dg/zero-link-3.m
Comment 5 Iain Sandoe 2019-06-15 14:04:15 UTC
Author: iains
Date: Sat Jun 15 14:03:44 2019
New Revision: 272327

URL: https://gcc.gnu.org/viewcvs?rev=272327&root=gcc&view=rev
Log:
[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  <iain@sandoe.co.uk>

	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.


Modified:
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm
    trunk/gcc/testsuite/obj-c++.dg/isa-field-1.mm
    trunk/gcc/testsuite/obj-c++.dg/objc-gc-3.mm
    trunk/gcc/testsuite/obj-c++.dg/proto-lossage-7.mm
    trunk/gcc/testsuite/obj-c++.dg/qual-types-1.mm
    trunk/gcc/testsuite/obj-c++.dg/strings/const-cfstring-2.mm
    trunk/gcc/testsuite/obj-c++.dg/strings/const-cfstring-5.mm
    trunk/gcc/testsuite/obj-c++.dg/strings/const-str-12.mm
    trunk/gcc/testsuite/obj-c++.dg/stubify-1.mm
    trunk/gcc/testsuite/obj-c++.dg/stubify-2.mm
    trunk/gcc/testsuite/obj-c++.dg/syntax-error-1.mm
    trunk/gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-1.mm
    trunk/gcc/testsuite/obj-c++.dg/torture/strings/const-str-10.mm
    trunk/gcc/testsuite/obj-c++.dg/torture/strings/const-str-11.mm
    trunk/gcc/testsuite/obj-c++.dg/torture/strings/const-str-9.mm
    trunk/gcc/testsuite/obj-c++.dg/try-catch-1.mm
    trunk/gcc/testsuite/obj-c++.dg/try-catch-3.mm
Comment 6 Iain Sandoe 2019-08-04 13:34:51 UTC
Author: iains
Date: Sun Aug  4 13:34:19 2019
New Revision: 274095

URL: https://gcc.gnu.org/viewcvs?rev=274095&root=gcc&view=rev
Log:
Objective-C, NeXT, backport workaround for PR90709

Since we cannot parse the current NeXT headers, because of PR90709 and its
dependents, we have a large amount of testsuite noise for Darwin platforms.
In order to restore the usefulness of the testsuite, we are going add headers
without the modern syntax elements that trigger the bug, and use these for
test runs on newer Darwin.

The headers are imported from GNUStep, with some local modifications to make
sure that __BLOCKS__ is honoured as a gate for Apple-style blocks closures.

CF-CFString.h, F-NS*.h are proxy headers that use the installed CoreFoundation
or Foundation headers on systems <= Darwin12 and the GNUStep headers for newer.

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-08-04  Iain Sandoe  <iain@sandoe.co.uk>

	Backport from mainline.
	2019-06-15  Iain Sandoe  <iain@sandoe.co.uk>

	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.

	Backport from mainline.
	2019-06-15  Iain Sandoe  <iain@sandoe.co.uk>

	PR objc/90709
	* objc.dg/encode-7-next-64bit.m: Use proxy headers.
	* objc.dg/image-info.m: Likewise.
	* objc.dg/method-6.m: Likewise.
	* objc.dg/no-extra-load.m: Likewise.
	* objc.dg/objc-foreach-4.m: Likewise.
	* objc.dg/objc-foreach-5.m: Likewise.
	* objc.dg/proto-lossage-7.m: Likewise.
	* objc.dg/strings/const-cfstring-2.m: Likewise.
	* objc.dg/strings/const-cfstring-5.m: Likewise.
	* objc.dg/strings/const-str-12b.m: Likewise.
	* objc.dg/symtab-1.m: Likewise.
	* objc.dg/torture/strings/const-cfstring-1.m: Likewise.
	* objc.dg/torture/strings/const-str-10.m: Likewise.
	* objc.dg/torture/strings/const-str-11.m: Likewise.
	* objc.dg/torture/strings/const-str-9.m: Likewise.
	* objc.dg/zero-link-1.m: Likewise.
	* objc.dg/zero-link-2.m: Likewise.
	* objc.dg/zero-link-3.m: Likewise.
	* objc.dg/isa-field-1.m: Suppress unwanted warning, add comment why.
	* objc.dg/headers.m: XFAIL for Darwin14-19.
	* objc.dg/objc-gc-4.m: Skip for Darwin > 16, the API use is an error
	there.

	Backport from mainline.
	2019-06-15  Iain Sandoe  <iain@sandoe.co.uk>

	PR objc/90709
	* objc-obj-c++-shared/CF-CFString.h: New.
	* objc-obj-c++-shared/F-NSArray.h: New.
	* objc-obj-c++-shared/F-NSAutoreleasePool.h: New.
	* objc-obj-c++-shared/F-NSObject.h: New.
	* objc-obj-c++-shared/F-NSString.h: New.
	* objc-obj-c++-shared/F-NSValue.h: New.
	* objc-obj-c++-shared/GNUStep/CoreFoundation/CFArray.h: New.
	* objc-obj-c++-shared/GNUStep/CoreFoundation/CFAvailability.h: New.
	* objc-obj-c++-shared/GNUStep/CoreFoundation/CFBase.h: New.
	* objc-obj-c++-shared/GNUStep/CoreFoundation/CFCharacterSet.h: New.
	* objc-obj-c++-shared/GNUStep/CoreFoundation/CFData.h: New.
	* objc-obj-c++-shared/GNUStep/CoreFoundation/CFDictionary.h: New.
	* objc-obj-c++-shared/GNUStep/CoreFoundation/CFLocale.h: New.
	* objc-obj-c++-shared/GNUStep/CoreFoundation/CFString.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSArray.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSAutoreleasePool.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSDate.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSEnumerator.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSGeometry.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSObjCRuntime.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSObject.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSRange.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSString.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSValue.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSZone.h: New.
	* objc-obj-c++-shared/GNUStep/GNUstepBase/GNUstep.h: New.
	* objc-obj-c++-shared/GNUStep/GNUstepBase/GSBlocks.h: New.
	* objc-obj-c++-shared/GNUStep/GNUstepBase/GSConfig.h: New.
	* objc-obj-c++-shared/GNUStep/GNUstepBase/GSObjCRuntime.h: New.
	* objc-obj-c++-shared/GNUStep/GNUstepBase/GSVersionMacros.h: New.
	* objc-obj-c++-shared/GNUStep/GNUstepBase/NSArray+GNUstepBase.h: New.
	* objc-obj-c++-shared/GNUStep/GNUstepBase/NSMutableString+GNUstepBase.h:
	New.
	* objc-obj-c++-shared/GNUStep/GNUstepBase/NSNumber+GNUstepBase.h: New.
	* objc-obj-c++-shared/GNUStep/GNUstepBase/NSObject+GNUstepBase.h: New.
	* objc-obj-c++-shared/GNUStep/GNUstepBase/NSString+GNUstepBase.h: New.


Added:
    branches/gcc-9-branch/gcc/testsuite/objc-obj-c++-shared/CF-CFString.h
    branches/gcc-9-branch/gcc/testsuite/objc-obj-c++-shared/F-NSArray.h
    branches/gcc-9-branch/gcc/testsuite/objc-obj-c++-shared/F-NSAutoreleasePool.h
    branches/gcc-9-branch/gcc/testsuite/objc-obj-c++-shared/F-NSObject.h
    branches/gcc-9-branch/gcc/testsuite/objc-obj-c++-shared/F-NSString.h
    branches/gcc-9-branch/gcc/testsuite/objc-obj-c++-shared/F-NSValue.h
    branches/gcc-9-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/
    branches/gcc-9-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/
    branches/gcc-9-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFArray.h
    branches/gcc-9-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFAvailability.h
    branches/gcc-9-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFBase.h
    branches/gcc-9-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFCharacterSet.h
    branches/gcc-9-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFData.h
    branches/gcc-9-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFDictionary.h
    branches/gcc-9-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFLocale.h
    branches/gcc-9-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFString.h
    branches/gcc-9-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/
    branches/gcc-9-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSArray.h
    branches/gcc-9-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSAutoreleasePool.h
    branches/gcc-9-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSDate.h
    branches/gcc-9-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSEnumerator.h
    branches/gcc-9-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSGeometry.h
    branches/gcc-9-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSObjCRuntime.h
    branches/gcc-9-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSObject.h
    branches/gcc-9-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSRange.h
    branches/gcc-9-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSString.h
    branches/gcc-9-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSValue.h
    branches/gcc-9-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSZone.h
    branches/gcc-9-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/
    branches/gcc-9-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GNUstep.h
    branches/gcc-9-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSBlocks.h
    branches/gcc-9-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSConfig.h
    branches/gcc-9-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSObjCRuntime.h
    branches/gcc-9-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSVersionMacros.h
    branches/gcc-9-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSArray+GNUstepBase.h
    branches/gcc-9-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSMutableString+GNUstepBase.h
    branches/gcc-9-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSNumber+GNUstepBase.h
    branches/gcc-9-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSObject+GNUstepBase.h
    branches/gcc-9-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSString+GNUstepBase.h
Modified:
    branches/gcc-9-branch/gcc/testsuite/ChangeLog
    branches/gcc-9-branch/gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm
    branches/gcc-9-branch/gcc/testsuite/obj-c++.dg/isa-field-1.mm
    branches/gcc-9-branch/gcc/testsuite/obj-c++.dg/objc-gc-3.mm
    branches/gcc-9-branch/gcc/testsuite/obj-c++.dg/proto-lossage-7.mm
    branches/gcc-9-branch/gcc/testsuite/obj-c++.dg/qual-types-1.mm
    branches/gcc-9-branch/gcc/testsuite/obj-c++.dg/strings/const-cfstring-2.mm
    branches/gcc-9-branch/gcc/testsuite/obj-c++.dg/strings/const-cfstring-5.mm
    branches/gcc-9-branch/gcc/testsuite/obj-c++.dg/strings/const-str-12.mm
    branches/gcc-9-branch/gcc/testsuite/obj-c++.dg/stubify-1.mm
    branches/gcc-9-branch/gcc/testsuite/obj-c++.dg/stubify-2.mm
    branches/gcc-9-branch/gcc/testsuite/obj-c++.dg/syntax-error-1.mm
    branches/gcc-9-branch/gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-1.mm
    branches/gcc-9-branch/gcc/testsuite/obj-c++.dg/torture/strings/const-str-10.mm
    branches/gcc-9-branch/gcc/testsuite/obj-c++.dg/torture/strings/const-str-11.mm
    branches/gcc-9-branch/gcc/testsuite/obj-c++.dg/torture/strings/const-str-9.mm
    branches/gcc-9-branch/gcc/testsuite/obj-c++.dg/try-catch-1.mm
    branches/gcc-9-branch/gcc/testsuite/obj-c++.dg/try-catch-3.mm
    branches/gcc-9-branch/gcc/testsuite/objc.dg/encode-7-next-64bit.m
    branches/gcc-9-branch/gcc/testsuite/objc.dg/headers.m
    branches/gcc-9-branch/gcc/testsuite/objc.dg/image-info.m
    branches/gcc-9-branch/gcc/testsuite/objc.dg/isa-field-1.m
    branches/gcc-9-branch/gcc/testsuite/objc.dg/method-6.m
    branches/gcc-9-branch/gcc/testsuite/objc.dg/no-extra-load.m
    branches/gcc-9-branch/gcc/testsuite/objc.dg/objc-foreach-4.m
    branches/gcc-9-branch/gcc/testsuite/objc.dg/objc-foreach-5.m
    branches/gcc-9-branch/gcc/testsuite/objc.dg/objc-gc-4.m
    branches/gcc-9-branch/gcc/testsuite/objc.dg/proto-lossage-7.m
    branches/gcc-9-branch/gcc/testsuite/objc.dg/strings/const-cfstring-2.m
    branches/gcc-9-branch/gcc/testsuite/objc.dg/strings/const-cfstring-5.m
    branches/gcc-9-branch/gcc/testsuite/objc.dg/strings/const-str-12b.m
    branches/gcc-9-branch/gcc/testsuite/objc.dg/symtab-1.m
    branches/gcc-9-branch/gcc/testsuite/objc.dg/torture/strings/const-cfstring-1.m
    branches/gcc-9-branch/gcc/testsuite/objc.dg/torture/strings/const-str-10.m
    branches/gcc-9-branch/gcc/testsuite/objc.dg/torture/strings/const-str-11.m
    branches/gcc-9-branch/gcc/testsuite/objc.dg/torture/strings/const-str-9.m
    branches/gcc-9-branch/gcc/testsuite/objc.dg/zero-link-1.m
    branches/gcc-9-branch/gcc/testsuite/objc.dg/zero-link-2.m
    branches/gcc-9-branch/gcc/testsuite/objc.dg/zero-link-3.m
Comment 7 Iain Sandoe 2019-08-04 13:40:58 UTC
workaround is applied to trunk and for 9.2 (problem exists on all open branches)
Comment 8 Iain Sandoe 2019-09-01 19:31:06 UTC
Author: iains
Date: Sun Sep  1 19:30:35 2019
New Revision: 275281

URL: https://gcc.gnu.org/viewcvs?rev=275281&root=gcc&view=rev
Log:
[objective-c/c++, testsuite] Workaround for PR90709.

Since we cannot parse the current NeXT headers, because of PR90709 and its
dependents, we have a large amount of testsuite noise for Darwin platforms.
In order to restore the usefulness of the testsuite, we are going add headers
without the modern syntax elements that trigger the bug, and use these for
test runs on newer Darwin.

The headers are imported from GNUStep, with some local modifications to make
sure that __BLOCKS__ is honoured as a gate for Apple-style blocks closures.

CF-CFString.h, F-NS*.h are proxy headers that use the installed CoreFoundation
or Foundation headers on systems <= Darwin12 and the GNUStep headers for newer.

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-09-01  Iain Sandoe  <iain@sandoe.co.uk>

	Backport from mainline.
	2019-06-15  Iain Sandoe  <iain@sandoe.co.uk>

	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.

	Backport from mainline.
	2019-06-15  Iain Sandoe  <iain@sandoe.co.uk>

	PR objc/90709
	* objc.dg/encode-7-next-64bit.m: Use proxy headers.
	* objc.dg/image-info.m: Likewise.
	* objc.dg/method-6.m: Likewise.
	* objc.dg/no-extra-load.m: Likewise.
	* objc.dg/objc-foreach-4.m: Likewise.
	* objc.dg/objc-foreach-5.m: Likewise.
	* objc.dg/proto-lossage-7.m: Likewise.
	* objc.dg/strings/const-cfstring-2.m: Likewise.
	* objc.dg/strings/const-cfstring-5.m: Likewise.
	* objc.dg/strings/const-str-12b.m: Likewise.
	* objc.dg/symtab-1.m: Likewise.
	* objc.dg/torture/strings/const-cfstring-1.m: Likewise.
	* objc.dg/torture/strings/const-str-10.m: Likewise.
	* objc.dg/torture/strings/const-str-11.m: Likewise.
	* objc.dg/torture/strings/const-str-9.m: Likewise.
	* objc.dg/zero-link-1.m: Likewise.
	* objc.dg/zero-link-2.m: Likewise.
	* objc.dg/zero-link-3.m: Likewise.
	* objc.dg/isa-field-1.m: Suppress unwanted warning, add comment why.
	* objc.dg/headers.m: XFAIL for Darwin14-19.
	* objc.dg/objc-gc-4.m: Skip for Darwin > 16, the API use is an error
	there.

	Backport from mainline.
	2019-06-15  Iain Sandoe  <iain@sandoe.co.uk>

	PR objc/90709
	* objc-obj-c++-shared/CF-CFString.h: New.
	* objc-obj-c++-shared/F-NSArray.h: New.
	* objc-obj-c++-shared/F-NSAutoreleasePool.h: New.
	* objc-obj-c++-shared/F-NSObject.h: New.
	* objc-obj-c++-shared/F-NSString.h: New.
	* objc-obj-c++-shared/F-NSValue.h: New.
	* objc-obj-c++-shared/GNUStep/CoreFoundation/CFArray.h: New.
	* objc-obj-c++-shared/GNUStep/CoreFoundation/CFAvailability.h: New.
	* objc-obj-c++-shared/GNUStep/CoreFoundation/CFBase.h: New.
	* objc-obj-c++-shared/GNUStep/CoreFoundation/CFCharacterSet.h: New.
	* objc-obj-c++-shared/GNUStep/CoreFoundation/CFData.h: New.
	* objc-obj-c++-shared/GNUStep/CoreFoundation/CFDictionary.h: New.
	* objc-obj-c++-shared/GNUStep/CoreFoundation/CFLocale.h: New.
	* objc-obj-c++-shared/GNUStep/CoreFoundation/CFString.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSArray.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSAutoreleasePool.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSDate.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSEnumerator.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSGeometry.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSObjCRuntime.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSObject.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSRange.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSString.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSValue.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSZone.h: New.
	* objc-obj-c++-shared/GNUStep/GNUstepBase/GNUstep.h: New.
	* objc-obj-c++-shared/GNUStep/GNUstepBase/GSBlocks.h: New.
	* objc-obj-c++-shared/GNUStep/GNUstepBase/GSConfig.h: New.
	* objc-obj-c++-shared/GNUStep/GNUstepBase/GSObjCRuntime.h: New.
	* objc-obj-c++-shared/GNUStep/GNUstepBase/GSVersionMacros.h: New.
	* objc-obj-c++-shared/GNUStep/GNUstepBase/NSArray+GNUstepBase.h: New.
	* objc-obj-c++-shared/GNUStep/GNUstepBase/NSMutableString+GNUstepBase.h:
	New.
	* objc-obj-c++-shared/GNUStep/GNUstepBase/NSNumber+GNUstepBase.h: New.
	* objc-obj-c++-shared/GNUStep/GNUstepBase/NSObject+GNUstepBase.h: New.
	* objc-obj-c++-shared/GNUStep/GNUstepBase/NSString+GNUstepBase.h: New.


Added:
    branches/gcc-8-branch/gcc/testsuite/objc-obj-c++-shared/CF-CFString.h
    branches/gcc-8-branch/gcc/testsuite/objc-obj-c++-shared/F-NSArray.h
    branches/gcc-8-branch/gcc/testsuite/objc-obj-c++-shared/F-NSAutoreleasePool.h
    branches/gcc-8-branch/gcc/testsuite/objc-obj-c++-shared/F-NSObject.h
    branches/gcc-8-branch/gcc/testsuite/objc-obj-c++-shared/F-NSString.h
    branches/gcc-8-branch/gcc/testsuite/objc-obj-c++-shared/F-NSValue.h
    branches/gcc-8-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/
    branches/gcc-8-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/
    branches/gcc-8-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFArray.h
    branches/gcc-8-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFAvailability.h
    branches/gcc-8-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFBase.h
    branches/gcc-8-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFCharacterSet.h
    branches/gcc-8-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFData.h
    branches/gcc-8-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFDictionary.h
    branches/gcc-8-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFLocale.h
    branches/gcc-8-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFString.h
    branches/gcc-8-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/
    branches/gcc-8-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSArray.h
    branches/gcc-8-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSAutoreleasePool.h
    branches/gcc-8-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSDate.h
    branches/gcc-8-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSEnumerator.h
    branches/gcc-8-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSGeometry.h
    branches/gcc-8-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSObjCRuntime.h
    branches/gcc-8-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSObject.h
    branches/gcc-8-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSRange.h
    branches/gcc-8-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSString.h
    branches/gcc-8-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSValue.h
    branches/gcc-8-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSZone.h
    branches/gcc-8-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/
    branches/gcc-8-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GNUstep.h
    branches/gcc-8-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSBlocks.h
    branches/gcc-8-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSConfig.h
    branches/gcc-8-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSObjCRuntime.h
    branches/gcc-8-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSVersionMacros.h
    branches/gcc-8-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSArray+GNUstepBase.h
    branches/gcc-8-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSMutableString+GNUstepBase.h
    branches/gcc-8-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSNumber+GNUstepBase.h
    branches/gcc-8-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSObject+GNUstepBase.h
    branches/gcc-8-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSString+GNUstepBase.h
Modified:
    branches/gcc-8-branch/gcc/testsuite/ChangeLog
    branches/gcc-8-branch/gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm
    branches/gcc-8-branch/gcc/testsuite/obj-c++.dg/isa-field-1.mm
    branches/gcc-8-branch/gcc/testsuite/obj-c++.dg/objc-gc-3.mm
    branches/gcc-8-branch/gcc/testsuite/obj-c++.dg/proto-lossage-7.mm
    branches/gcc-8-branch/gcc/testsuite/obj-c++.dg/qual-types-1.mm
    branches/gcc-8-branch/gcc/testsuite/obj-c++.dg/strings/const-cfstring-2.mm
    branches/gcc-8-branch/gcc/testsuite/obj-c++.dg/strings/const-cfstring-5.mm
    branches/gcc-8-branch/gcc/testsuite/obj-c++.dg/strings/const-str-12.mm
    branches/gcc-8-branch/gcc/testsuite/obj-c++.dg/stubify-1.mm
    branches/gcc-8-branch/gcc/testsuite/obj-c++.dg/stubify-2.mm
    branches/gcc-8-branch/gcc/testsuite/obj-c++.dg/syntax-error-1.mm
    branches/gcc-8-branch/gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-1.mm
    branches/gcc-8-branch/gcc/testsuite/obj-c++.dg/torture/strings/const-str-10.mm
    branches/gcc-8-branch/gcc/testsuite/obj-c++.dg/torture/strings/const-str-11.mm
    branches/gcc-8-branch/gcc/testsuite/obj-c++.dg/torture/strings/const-str-9.mm
    branches/gcc-8-branch/gcc/testsuite/obj-c++.dg/try-catch-1.mm
    branches/gcc-8-branch/gcc/testsuite/obj-c++.dg/try-catch-3.mm
    branches/gcc-8-branch/gcc/testsuite/objc.dg/encode-7-next-64bit.m
    branches/gcc-8-branch/gcc/testsuite/objc.dg/headers.m
    branches/gcc-8-branch/gcc/testsuite/objc.dg/image-info.m
    branches/gcc-8-branch/gcc/testsuite/objc.dg/isa-field-1.m
    branches/gcc-8-branch/gcc/testsuite/objc.dg/method-6.m
    branches/gcc-8-branch/gcc/testsuite/objc.dg/no-extra-load.m
    branches/gcc-8-branch/gcc/testsuite/objc.dg/objc-foreach-4.m
    branches/gcc-8-branch/gcc/testsuite/objc.dg/objc-foreach-5.m
    branches/gcc-8-branch/gcc/testsuite/objc.dg/objc-gc-4.m
    branches/gcc-8-branch/gcc/testsuite/objc.dg/proto-lossage-7.m
    branches/gcc-8-branch/gcc/testsuite/objc.dg/strings/const-cfstring-2.m
    branches/gcc-8-branch/gcc/testsuite/objc.dg/strings/const-cfstring-5.m
    branches/gcc-8-branch/gcc/testsuite/objc.dg/strings/const-str-12b.m
    branches/gcc-8-branch/gcc/testsuite/objc.dg/symtab-1.m
    branches/gcc-8-branch/gcc/testsuite/objc.dg/torture/strings/const-cfstring-1.m
    branches/gcc-8-branch/gcc/testsuite/objc.dg/torture/strings/const-str-10.m
    branches/gcc-8-branch/gcc/testsuite/objc.dg/torture/strings/const-str-11.m
    branches/gcc-8-branch/gcc/testsuite/objc.dg/torture/strings/const-str-9.m
    branches/gcc-8-branch/gcc/testsuite/objc.dg/zero-link-1.m
    branches/gcc-8-branch/gcc/testsuite/objc.dg/zero-link-2.m
    branches/gcc-8-branch/gcc/testsuite/objc.dg/zero-link-3.m
Comment 9 Iain Sandoe 2019-09-15 02:38:57 UTC
Author: iains
Date: Sun Sep 15 02:38:25 2019
New Revision: 275724

URL: https://gcc.gnu.org/viewcvs?rev=275724&root=gcc&view=rev
Log:
[objective-c/c++, testsuite] Workaround for PR90709.

Since we cannot parse the current NeXT headers, because of PR90709 and its
dependents, we have a large amount of testsuite noise for Darwin platforms.
In order to restore the usefulness of the testsuite, we are going add headers
without the modern syntax elements that trigger the bug, and use these for
test runs on newer Darwin.

The headers are imported from GNUStep, with some local modifications to make
sure that __BLOCKS__ is honoured as a gate for Apple-style blocks closures.

CF-CFString.h, F-NS*.h are proxy headers that use the installed CoreFoundation
or Foundation headers on systems <= Darwin12 and the GNUStep headers for newer.

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-09-15  Iain Sandoe  <iain@sandoe.co.uk>

	Backport from mainline.
	2019-06-15  Iain Sandoe  <iain@sandoe.co.uk>

	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.

	Backport from mainline.
	2019-06-15  Iain Sandoe  <iain@sandoe.co.uk>

	PR objc/90709
	* objc.dg/encode-7-next-64bit.m: Use proxy headers.
	* objc.dg/image-info.m: Likewise.
	* objc.dg/method-6.m: Likewise.
	* objc.dg/no-extra-load.m: Likewise.
	* objc.dg/objc-foreach-4.m: Likewise.
	* objc.dg/objc-foreach-5.m: Likewise.
	* objc.dg/proto-lossage-7.m: Likewise.
	* objc.dg/strings/const-cfstring-2.m: Likewise.
	* objc.dg/strings/const-cfstring-5.m: Likewise.
	* objc.dg/strings/const-str-12b.m: Likewise.
	* objc.dg/symtab-1.m: Likewise.
	* objc.dg/torture/strings/const-cfstring-1.m: Likewise.
	* objc.dg/torture/strings/const-str-10.m: Likewise.
	* objc.dg/torture/strings/const-str-11.m: Likewise.
	* objc.dg/torture/strings/const-str-9.m: Likewise.
	* objc.dg/zero-link-1.m: Likewise.
	* objc.dg/zero-link-2.m: Likewise.
	* objc.dg/zero-link-3.m: Likewise.
	* objc.dg/isa-field-1.m: Suppress unwanted warning, add comment why.
	* objc.dg/headers.m: XFAIL for Darwin14-19.
	* objc.dg/objc-gc-4.m: Skip for Darwin > 16, the API use is an error
	there.

	Backport from mainline.
	2019-06-15  Iain Sandoe  <iain@sandoe.co.uk>

	PR objc/90709
	* objc-obj-c++-shared/CF-CFString.h: New.
	* objc-obj-c++-shared/F-NSArray.h: New.
	* objc-obj-c++-shared/F-NSAutoreleasePool.h: New.
	* objc-obj-c++-shared/F-NSObject.h: New.
	* objc-obj-c++-shared/F-NSString.h: New.
	* objc-obj-c++-shared/F-NSValue.h: New.
	* objc-obj-c++-shared/GNUStep/CoreFoundation/CFArray.h: New.
	* objc-obj-c++-shared/GNUStep/CoreFoundation/CFAvailability.h: New.
	* objc-obj-c++-shared/GNUStep/CoreFoundation/CFBase.h: New.
	* objc-obj-c++-shared/GNUStep/CoreFoundation/CFCharacterSet.h: New.
	* objc-obj-c++-shared/GNUStep/CoreFoundation/CFData.h: New.
	* objc-obj-c++-shared/GNUStep/CoreFoundation/CFDictionary.h: New.
	* objc-obj-c++-shared/GNUStep/CoreFoundation/CFLocale.h: New.
	* objc-obj-c++-shared/GNUStep/CoreFoundation/CFString.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSArray.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSAutoreleasePool.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSDate.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSEnumerator.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSGeometry.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSObjCRuntime.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSObject.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSRange.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSString.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSValue.h: New.
	* objc-obj-c++-shared/GNUStep/Foundation/NSZone.h: New.
	* objc-obj-c++-shared/GNUStep/GNUstepBase/GNUstep.h: New.
	* objc-obj-c++-shared/GNUStep/GNUstepBase/GSBlocks.h: New.
	* objc-obj-c++-shared/GNUStep/GNUstepBase/GSConfig.h: New.
	* objc-obj-c++-shared/GNUStep/GNUstepBase/GSObjCRuntime.h: New.
	* objc-obj-c++-shared/GNUStep/GNUstepBase/GSVersionMacros.h: New.
	* objc-obj-c++-shared/GNUStep/GNUstepBase/NSArray+GNUstepBase.h: New.
	* objc-obj-c++-shared/GNUStep/GNUstepBase/NSMutableString+GNUstepBase.h:
	New.
	* objc-obj-c++-shared/GNUStep/GNUstepBase/NSNumber+GNUstepBase.h: New.
	* objc-obj-c++-shared/GNUStep/GNUstepBase/NSObject+GNUstepBase.h: New.
	* objc-obj-c++-shared/GNUStep/GNUstepBase/NSString+GNUstepBase.h: New.


Added:
    branches/gcc-7-branch/gcc/testsuite/objc-obj-c++-shared/CF-CFString.h
    branches/gcc-7-branch/gcc/testsuite/objc-obj-c++-shared/F-NSArray.h
    branches/gcc-7-branch/gcc/testsuite/objc-obj-c++-shared/F-NSAutoreleasePool.h
    branches/gcc-7-branch/gcc/testsuite/objc-obj-c++-shared/F-NSObject.h
    branches/gcc-7-branch/gcc/testsuite/objc-obj-c++-shared/F-NSString.h
    branches/gcc-7-branch/gcc/testsuite/objc-obj-c++-shared/F-NSValue.h
    branches/gcc-7-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/
    branches/gcc-7-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/
    branches/gcc-7-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFArray.h
    branches/gcc-7-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFAvailability.h
    branches/gcc-7-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFBase.h
    branches/gcc-7-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFCharacterSet.h
    branches/gcc-7-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFData.h
    branches/gcc-7-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFDictionary.h
    branches/gcc-7-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFLocale.h
    branches/gcc-7-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/CoreFoundation/CFString.h
    branches/gcc-7-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/
    branches/gcc-7-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSArray.h
    branches/gcc-7-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSAutoreleasePool.h
    branches/gcc-7-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSDate.h
    branches/gcc-7-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSEnumerator.h
    branches/gcc-7-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSGeometry.h
    branches/gcc-7-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSObjCRuntime.h
    branches/gcc-7-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSObject.h
    branches/gcc-7-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSRange.h
    branches/gcc-7-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSString.h
    branches/gcc-7-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSValue.h
    branches/gcc-7-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/Foundation/NSZone.h
    branches/gcc-7-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/
    branches/gcc-7-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GNUstep.h
    branches/gcc-7-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSBlocks.h
    branches/gcc-7-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSConfig.h
    branches/gcc-7-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSObjCRuntime.h
    branches/gcc-7-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/GSVersionMacros.h
    branches/gcc-7-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSArray+GNUstepBase.h
    branches/gcc-7-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSMutableString+GNUstepBase.h
    branches/gcc-7-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSNumber+GNUstepBase.h
    branches/gcc-7-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSObject+GNUstepBase.h
    branches/gcc-7-branch/gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSString+GNUstepBase.h
Modified:
    branches/gcc-7-branch/gcc/testsuite/ChangeLog
    branches/gcc-7-branch/gcc/testsuite/obj-c++.dg/cxx-ivars-3.mm
    branches/gcc-7-branch/gcc/testsuite/obj-c++.dg/isa-field-1.mm
    branches/gcc-7-branch/gcc/testsuite/obj-c++.dg/objc-gc-3.mm
    branches/gcc-7-branch/gcc/testsuite/obj-c++.dg/proto-lossage-7.mm
    branches/gcc-7-branch/gcc/testsuite/obj-c++.dg/qual-types-1.mm
    branches/gcc-7-branch/gcc/testsuite/obj-c++.dg/strings/const-cfstring-2.mm
    branches/gcc-7-branch/gcc/testsuite/obj-c++.dg/strings/const-cfstring-5.mm
    branches/gcc-7-branch/gcc/testsuite/obj-c++.dg/strings/const-str-12.mm
    branches/gcc-7-branch/gcc/testsuite/obj-c++.dg/stubify-1.mm
    branches/gcc-7-branch/gcc/testsuite/obj-c++.dg/stubify-2.mm
    branches/gcc-7-branch/gcc/testsuite/obj-c++.dg/syntax-error-1.mm
    branches/gcc-7-branch/gcc/testsuite/obj-c++.dg/torture/strings/const-cfstring-1.mm
    branches/gcc-7-branch/gcc/testsuite/obj-c++.dg/torture/strings/const-str-10.mm
    branches/gcc-7-branch/gcc/testsuite/obj-c++.dg/torture/strings/const-str-11.mm
    branches/gcc-7-branch/gcc/testsuite/obj-c++.dg/torture/strings/const-str-9.mm
    branches/gcc-7-branch/gcc/testsuite/obj-c++.dg/try-catch-1.mm
    branches/gcc-7-branch/gcc/testsuite/obj-c++.dg/try-catch-3.mm
    branches/gcc-7-branch/gcc/testsuite/objc.dg/encode-7-next-64bit.m
    branches/gcc-7-branch/gcc/testsuite/objc.dg/headers.m
    branches/gcc-7-branch/gcc/testsuite/objc.dg/image-info.m
    branches/gcc-7-branch/gcc/testsuite/objc.dg/isa-field-1.m
    branches/gcc-7-branch/gcc/testsuite/objc.dg/method-6.m
    branches/gcc-7-branch/gcc/testsuite/objc.dg/no-extra-load.m
    branches/gcc-7-branch/gcc/testsuite/objc.dg/objc-foreach-4.m
    branches/gcc-7-branch/gcc/testsuite/objc.dg/objc-foreach-5.m
    branches/gcc-7-branch/gcc/testsuite/objc.dg/objc-gc-4.m
    branches/gcc-7-branch/gcc/testsuite/objc.dg/proto-lossage-7.m
    branches/gcc-7-branch/gcc/testsuite/objc.dg/strings/const-cfstring-2.m
    branches/gcc-7-branch/gcc/testsuite/objc.dg/strings/const-cfstring-5.m
    branches/gcc-7-branch/gcc/testsuite/objc.dg/strings/const-str-12b.m
    branches/gcc-7-branch/gcc/testsuite/objc.dg/symtab-1.m
    branches/gcc-7-branch/gcc/testsuite/objc.dg/torture/strings/const-cfstring-1.m
    branches/gcc-7-branch/gcc/testsuite/objc.dg/torture/strings/const-str-10.m
    branches/gcc-7-branch/gcc/testsuite/objc.dg/torture/strings/const-str-11.m
    branches/gcc-7-branch/gcc/testsuite/objc.dg/torture/strings/const-str-9.m
    branches/gcc-7-branch/gcc/testsuite/objc.dg/zero-link-1.m
    branches/gcc-7-branch/gcc/testsuite/objc.dg/zero-link-2.m
    branches/gcc-7-branch/gcc/testsuite/objc.dg/zero-link-3.m
Comment 10 Eric Gallager 2020-10-23 04:21:13 UTC
I just ran into this trying to compile my fork of emacs on Catalina; from looking at config.log (5.3MB!) it looks like the lack of support for "nullable" (bug 90707) is the biggest missing feature