diff options
author | Iain Sandoe <iain@sandoe.co.uk> | 2023-01-18 23:25:36 +0000 |
---|---|---|
committer | Iain Sandoe <iain@sandoe.co.uk> | 2023-05-16 20:05:49 +0100 |
commit | d1c9077b8b9370825dd8c5758433d06d6bd954a2 (patch) | |
tree | 1536ebe72b7cab272d558dff7f64e287bf109e75 | |
parent | f4ad0b2287a334613f570c69b7c5320a5a7d7554 (diff) | |
download | gcc-d1c9077b8b9370825dd8c5758433d06d6bd954a2.tar.gz |
Darwin, fixincludes: Handle Apple Blocks in objc/runtime.h.
The macOS 13 SDK has unguarded Apple Blocks use in objc/runtime.h which
causes most of the objective-c tests to fail.
Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>
fixincludes/ChangeLog:
* fixincl.x: Regenerate.
* inclhack.def (darwin_objc_runtime_1): New hack.
* tests/base/objc/runtime.h: New file.
(cherry picked from commit 046dc9d0d4683bab99d28983d8841ba3c56ef744)
-rw-r--r-- | fixincludes/fixincl.x | 63 | ||||
-rw-r--r-- | fixincludes/inclhack.def | 35 | ||||
-rw-r--r-- | fixincludes/tests/base/objc/runtime.h | 24 |
3 files changed, 117 insertions, 5 deletions
diff --git a/fixincludes/fixincl.x b/fixincludes/fixincl.x index bacbb9c06f2..57bc3fa5489 100644 --- a/fixincludes/fixincl.x +++ b/fixincludes/fixincl.x @@ -2,11 +2,11 @@ * * DO NOT EDIT THIS FILE (fixincl.x) * - * It has been AutoGen-ed May 15, 2023 at 11:53:17 PM by AutoGen 5.18.7 + * It has been AutoGen-ed May 15, 2023 at 11:55:05 PM by AutoGen 5.18.7 * From the definitions inclhack.def * and the template file fixincl */ -/* DO NOT SVN-MERGE THIS FILE, EITHER Mon May 15 23:53:17 BST 2023 +/* DO NOT SVN-MERGE THIS FILE, EITHER Mon May 15 23:55:05 BST 2023 * * You must regenerate it. Use the ./genfixes script. * @@ -15,7 +15,7 @@ * certain ANSI-incompatible system header files which are fixed to work * correctly with ANSI C and placed in a directory that GNU C will search. * - * This file contains 261 fixup descriptions. + * This file contains 262 fixup descriptions. * * See README for more information. * @@ -3086,6 +3086,53 @@ static const char* apzDarwin_Os_Trace_2Patch[] = { /* * * * * * * * * * * * * * * * * * * * * * * * * * * + * Description of Darwin_Objc_Runtime_1 fix + */ +tSCC zDarwin_Objc_Runtime_1Name[] = + "darwin_objc_runtime_1"; + +/* + * File name selection pattern + */ +tSCC zDarwin_Objc_Runtime_1List[] = + "objc/runtime.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzDarwin_Objc_Runtime_1Machs[] = { + "*-*-darwin2*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zDarwin_Objc_Runtime_1Select0[] = + "OBJC_EXPORT void.*\n\ +objc_enumerateClasses.*\n\ +.*\n\ +.*\n\ +.*\n\ +.*void \\(\\^ _Nonnull block.*\n\ +.*\n\ +.*\n\ +.*OBJC_REFINED_FOR_SWIFT.*"; + +#define DARWIN_OBJC_RUNTIME_1_TEST_CT 1 +static tTestDesc aDarwin_Objc_Runtime_1Tests[] = { + { TT_EGREP, zDarwin_Objc_Runtime_1Select0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Darwin_Objc_Runtime_1 + */ +static const char* apzDarwin_Objc_Runtime_1Patch[] = { + "format", + "#if __BLOCKS__\n\ +%0\n\ +#endif", + (char*)NULL }; + +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * * Description of Darwin_Os_Trace_3 fix */ tSCC zDarwin_Os_Trace_3Name[] = @@ -10600,9 +10647,9 @@ static const char* apzX11_SprintfPatch[] = { * * List of all fixes */ -#define REGEX_COUNT 299 +#define REGEX_COUNT 300 #define MACH_LIST_SIZE_LIMIT 187 -#define FIX_COUNT 261 +#define FIX_COUNT 262 /* * Enumerate the fixes @@ -10681,6 +10728,7 @@ typedef enum { DARWIN_LONGJMP_NORETURN_FIXIDX, DARWIN_OS_TRACE_1_FIXIDX, DARWIN_OS_TRACE_2_FIXIDX, + DARWIN_OBJC_RUNTIME_1_FIXIDX, DARWIN_OS_TRACE_3_FIXIDX, DARWIN_OS_BASE_1_FIXIDX, DARWIN_DISPATCH_OBJECT_1_FIXIDX, @@ -11237,6 +11285,11 @@ tFixDesc fixDescList[ FIX_COUNT ] = { DARWIN_OS_TRACE_2_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, aDarwin_Os_Trace_2Tests, apzDarwin_Os_Trace_2Patch, 0 }, + { zDarwin_Objc_Runtime_1Name, zDarwin_Objc_Runtime_1List, + apzDarwin_Objc_Runtime_1Machs, + DARWIN_OBJC_RUNTIME_1_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aDarwin_Objc_Runtime_1Tests, apzDarwin_Objc_Runtime_1Patch, 0 }, + { zDarwin_Os_Trace_3Name, zDarwin_Os_Trace_3List, apzDarwin_Os_Trace_3Machs, DARWIN_OS_TRACE_3_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, diff --git a/fixincludes/inclhack.def b/fixincludes/inclhack.def index cd729fcd76f..c2f54d1189a 100644 --- a/fixincludes/inclhack.def +++ b/fixincludes/inclhack.def @@ -1492,6 +1492,41 @@ fix = { }; /* + * macOSX 13.0 SDK objc/runtime.h uses Apple Blocks extension without a guard. + */ + +fix = { + hackname = darwin_objc_runtime_1; + mach = "*-*-darwin2*"; + files = objc/runtime.h; + select = <<- _EOSelect_ + OBJC_EXPORT void.* + objc_enumerateClasses.* + .* + .* + .* + .*void \(\^ _Nonnull block.* + .* + .* + .*OBJC_REFINED_FOR_SWIFT.* + _EOSelect_; + c_fix = format; + c_fix_arg = "#if __BLOCKS__\n%0\n#endif"; + test_text = <<- _OBJC_RUNTIME_1 +OBJC_EXPORT void +objc_enumerateClasses(const void * _Nullable image, + const char * _Nullable namePrefix, + Protocol * _Nullable conformingTo, + Class _Nullable subclassing, + void (^ _Nonnull block)(Class _Nonnull aClass, BOOL * _Nonnull stop) + OBJC_NOESCAPE) +OBJC_AVAILABLE(13.0, 16.0, 16.0, 9.0, 7.0) +OBJC_REFINED_FOR_SWIFT; +_OBJC_RUNTIME_1; +}; + + +/* * In Mac OS X 10.1[012] <os/trace.h>, need to guard users of * os_trace_payload_t typedef, too. */ diff --git a/fixincludes/tests/base/objc/runtime.h b/fixincludes/tests/base/objc/runtime.h new file mode 100644 index 00000000000..8b4855bb8ab --- /dev/null +++ b/fixincludes/tests/base/objc/runtime.h @@ -0,0 +1,24 @@ +/* DO NOT EDIT THIS FILE. + + It has been auto-edited by fixincludes from: + + "fixinc/tests/inc/objc/runtime.h" + + This had to be done to correct non-standard usages in the + original, manufacturer supplied header file. */ + + + +#if defined( DARWIN_OBJC_RUNTIME_1_CHECK ) +#if __BLOCKS__ +OBJC_EXPORT void +objc_enumerateClasses(const void * _Nullable image, + const char * _Nullable namePrefix, + Protocol * _Nullable conformingTo, + Class _Nullable subclassing, + void (^ _Nonnull block)(Class _Nonnull aClass, BOOL * _Nonnull stop) + OBJC_NOESCAPE) +OBJC_AVAILABLE(13.0, 16.0, 16.0, 9.0, 7.0) +OBJC_REFINED_FOR_SWIFT; +#endif +#endif /* DARWIN_OBJC_RUNTIME_1_CHECK */ |