From 046dc9d0d4683bab99d28983d8841ba3c56ef744 Mon Sep 17 00:00:00 2001 From: Iain Sandoe Date: Wed, 18 Jan 2023 23:25:36 +0000 Subject: 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 fixincludes/ChangeLog: * fixincl.x: Regenerate. * inclhack.def (darwin_objc_runtime_1): New hack. * tests/base/objc/runtime.h: New file. --- fixincludes/fixincl.x | 63 ++++++++++++++++++++++++++++++++--- fixincludes/inclhack.def | 35 +++++++++++++++++++ fixincludes/tests/base/objc/runtime.h | 24 +++++++++++++ 3 files changed, 117 insertions(+), 5 deletions(-) create mode 100644 fixincludes/tests/base/objc/runtime.h (limited to 'fixincludes') diff --git a/fixincludes/fixincl.x b/fixincludes/fixincl.x index 35167dc..acb906e 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 January 18, 2023 at 07:54:50 PM by AutoGen 5.18.7 + * It has been AutoGen-ed January 18, 2023 at 09:06:47 PM by AutoGen 5.18.7 * From the definitions inclhack.def * and the template file fixincl */ -/* DO NOT SVN-MERGE THIS FILE, EITHER Wed Jan 18 19:54:50 GMT 2023 +/* DO NOT SVN-MERGE THIS FILE, EITHER Wed Jan 18 21:06:47 GMT 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 273 fixup descriptions. + * This file contains 274 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[] = @@ -11115,9 +11162,9 @@ static const char* apzX11_SprintfPatch[] = { * * List of all fixes */ -#define REGEX_COUNT 311 +#define REGEX_COUNT 312 #define MACH_LIST_SIZE_LIMIT 187 -#define FIX_COUNT 273 +#define FIX_COUNT 274 /* * Enumerate the fixes @@ -11196,6 +11243,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, @@ -11764,6 +11812,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 ea879b7..b02dd8e 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] , 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 0000000..8b4855b --- /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 */ -- cgit v1.1