From 235ccac0aeb941c860c1e469a645ab9a90c9eca2 Mon Sep 17 00:00:00 2001 From: Iain Sandoe Date: Thu, 18 Apr 2019 21:20:09 +0530 Subject: [PATCH] backport r270435 - fix PR89864 Backport from mainline 2019-04-18 Erik Schnetter Jakub Jelinek Iain Sandoe PR bootstrap/89864 * inclhack.def (darwin_ucred__Atomic): New, work around _Atomic keyword use in headers included by C++. * fixincl.x: Regenerated. --- fixincludes/fixincl.x | 58 ++++++++++++++++++++++++++++++++++++---- fixincludes/inclhack.def | 19 +++++++++++++ 2 files changed, 72 insertions(+), 5 deletions(-) diff --git a/fixincludes/fixincl.x b/fixincludes/fixincl.x index 1a1f46c0518..1fff079f60d 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 April 13, 2019 at 09:58:23 AM by AutoGen 5.17.4 + * It has been AutoGen-ed April 18, 2019 at 10:07:54 AM by AutoGen 5.17.4 * From the definitions inclhack.def * and the template file fixincl */ -/* DO NOT SVN-MERGE THIS FILE, EITHER Sat Apr 13 09:58:23 IST 2019 +/* DO NOT SVN-MERGE THIS FILE, EITHER Thu Apr 18 10:07:54 IST 2019 * * 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 251 fixup descriptions. + * This file contains 252 fixup descriptions. * * See README for more information. * @@ -3300,6 +3300,48 @@ static const char* apzDarwin_Stdint_7Patch[] = { #endif", (char*)NULL }; +/* * * * * * * * * * * * * * * * * * * * * * * * * * + * + * Description of Darwin_Ucred__Atomic fix + */ +tSCC zDarwin_Ucred__AtomicName[] = + "darwin_ucred__Atomic"; + +/* + * File name selection pattern + */ +tSCC zDarwin_Ucred__AtomicList[] = + "sys/ucred.h\0"; +/* + * Machine/OS name selection pattern + */ +tSCC* apzDarwin_Ucred__AtomicMachs[] = { + "*-*-darwin*", + (const char*)NULL }; + +/* + * content selection pattern - do fix if pattern found + */ +tSCC zDarwin_Ucred__AtomicSelect0[] = + "_Atomic"; + +#define DARWIN_UCRED__ATOMIC_TEST_CT 1 +static tTestDesc aDarwin_Ucred__AtomicTests[] = { + { TT_EGREP, zDarwin_Ucred__AtomicSelect0, (regex_t*)NULL }, }; + +/* + * Fix Command Arguments for Darwin_Ucred__Atomic + */ +static const char* apzDarwin_Ucred__AtomicPatch[] = { + "wrap", + "#if (__STDC_VERSION__ < 201112L) || defined(__cplusplus)\n\ +# define _Atomic volatile\n\ +#endif\n", + "#if (__STDC_VERSION__ < 201112L) || defined(__cplusplus)\n\ +# undef _Atomic\n\ +#endif\n", + (char*)NULL }; + /* * * * * * * * * * * * * * * * * * * * * * * * * * * * Description of Dec_Intern_Asm fix @@ -10179,9 +10221,9 @@ static const char* apzX11_SprintfPatch[] = { * * List of all fixes */ -#define REGEX_COUNT 289 +#define REGEX_COUNT 290 #define MACH_LIST_SIZE_LIMIT 187 -#define FIX_COUNT 251 +#define FIX_COUNT 252 /* * Enumerate the fixes @@ -10265,6 +10307,7 @@ typedef enum { DARWIN_STDINT_5_FIXIDX, DARWIN_STDINT_6_FIXIDX, DARWIN_STDINT_7_FIXIDX, + DARWIN_UCRED__ATOMIC_FIXIDX, DEC_INTERN_ASM_FIXIDX, DJGPP_WCHAR_H_FIXIDX, ECD_CURSOR_FIXIDX, @@ -10831,6 +10874,11 @@ tFixDesc fixDescList[ FIX_COUNT ] = { DARWIN_STDINT_7_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, aDarwin_Stdint_7Tests, apzDarwin_Stdint_7Patch, 0 }, + { zDarwin_Ucred__AtomicName, zDarwin_Ucred__AtomicList, + apzDarwin_Ucred__AtomicMachs, + DARWIN_UCRED__ATOMIC_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, + aDarwin_Ucred__AtomicTests, apzDarwin_Ucred__AtomicPatch, 0 }, + { zDec_Intern_AsmName, zDec_Intern_AsmList, apzDec_Intern_AsmMachs, DEC_INTERN_ASM_TEST_CT, FD_MACH_ONLY, diff --git a/fixincludes/inclhack.def b/fixincludes/inclhack.def index 7f0fb9dc911..49ba499ecde 100644 --- a/fixincludes/inclhack.def +++ b/fixincludes/inclhack.def @@ -1635,6 +1635,25 @@ fix = { "#define UINTMAX_C(v) (v ## ULL)"; }; +/* The SDK included with XCode 10.2 has the file that uses the + C11 _Atomic keyword (exposing it to C++ code). The work-around here follows + the header in declaring the entity volatile when _Atomic is not available. +*/ +fix = { + hackname = darwin_ucred__Atomic; + mach = "*-*-darwin*"; + files = sys/ucred.h; + select = "_Atomic"; + c_fix = wrap; + c_fix_arg = "#if (__STDC_VERSION__ < 201112L) || defined(__cplusplus)\n" + "# define _Atomic volatile\n" + "#endif\n"; + c_fix_arg = "#if (__STDC_VERSION__ < 201112L) || defined(__cplusplus)\n" + "# undef _Atomic\n" + "#endif\n"; + test_text = "_Atomic"; +}; + /* * Fix on Digital UNIX V4.0: * It contains a prototype for a DEC C internal asm() function,