On Fri, 2022-09-30 at 09:20 +0200, Jakub Jelinek via Gcc-patches wrote: > On Wed, Sep 28, 2022 at 08:19:43PM +0200, Jakub Jelinek via Gcc- > patches wrote: > > Another case are the following 3 snippets: > > # if !__GNUC_PREREQ (7, 0) || defined __cplusplus > > # error "_Float128X supported but no constant suffix" > > # else > > # define __f128x(x) x##f128x > > # endif > > ... > > # if !__GNUC_PREREQ (7, 0) || defined __cplusplus > > # error "_Float128X supported but no complex type" > > # else > > # define __CFLOAT128X _Complex _Float128x > > # endif > > ... > > # if !__GNUC_PREREQ (7, 0) || defined __cplusplus > > # error "_Float128x supported but no type" > > # endif > > but as no target has _Float128x right now and don't see it > > coming soon, it isn't a big deal (on the glibc side it is of > > course ok to adjust those). > > This incremental patch deals handles the above 3 cases, so we > fixinclude what glibc itself changed too. > > Bootstrapped/regtested on x86_64-linux and i686-linux (together with > the > previously posted fixincludes/ change too), ok for trunk?
Hi, The combination of these two patches allows me to build gcc successfully. (PPC64LE with RHEL9). A nit that Part1 needed massaging of the path/to/files (i.e. gcc/inclhack.def versus fixincludes/inclhack.def) to apply. I can't otherwise speak to the changes, aside from they seem to work for me. Thanks -WIll > > 2022-09-30 Jakub Jelinek <ja...@redhat.com> > > PR bootstrap/107059 > * inclhack.def (glibc_cxx_floatn_5): New. > * fixincl.x: Regenerated. > * tests/base/bits/floatn.h: Regenerated. > > --- fixincludes/inclhack.def.jj 2022-09-29 22:18:47.974402688 > +0200 > +++ fixincludes/inclhack.def 2022-09-29 22:22:48.151145670 +0200 > @@ -2131,6 +2131,23 @@ fix = { > EOT; > }; > > +fix = { > + hackname = glibc_cxx_floatn_5; > + files = bits/floatn.h, bits/floatn-common.h, > "*/bits/floatn.h", "*/bits/floatn-common.h"; > + select = "^([ \t]*#[ \t]*if !__GNUC_PREREQ \\(7, 0\\) \\|\\| > )defined __cplusplus\n" > + "([ \t]*#[ \t]+error \"_Float128[xX] supported but no > )"; > + c_fix = format; > + c_fix_arg = "%1(defined __cplusplus && !__GNUC_PREREQ (13, > 0))\n%2"; > + test_text = <<-EOT > + # if !__GNUC_PREREQ (7, 0) || defined __cplusplus > + # error "_Float128X supported but no constant suffix" > + # endif > + # if !__GNUC_PREREQ (7, 0) || defined __cplusplus > + # error "_Float128x supported but no type" > + # endif > + EOT; > +}; > + > /* glibc-2.3.5 defines pthread mutex initializers incorrectly, > * so we replace them with versions that correspond to the > * definition. > --- fixincludes/fixincl.x.jj 2022-09-29 22:18:47.975402675 +0200 > +++ fixincludes/fixincl.x 2022-09-29 22:22:55.675909244 +0200 > @@ -2,11 +2,11 @@ > * > * DO NOT EDIT THIS FILE (fixincl.x) > * > - * It has been AutoGen-ed September 28, 2022 at 07:56:15 PM by > AutoGen 5.18.16 > + * It has been AutoGen-ed September 29, 2022 at 10:22:55 PM by > AutoGen 5.18.16 > * From the definitions inclhack.def > * and the template file fixincl > */ > -/* DO NOT SVN-MERGE THIS FILE, EITHER Wed Sep 28 19:56:15 CEST 2022 > +/* DO NOT SVN-MERGE THIS FILE, EITHER Thu Sep 29 22:22:55 CEST 2022 > * > * 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 271 fixup descriptions. > + * This file contains 272 fixup descriptions. > * > * See README for more information. > * > @@ -4273,6 +4273,43 @@ static const char* apzGlibc_Cxx_Floatn_4 > > /* * * * * * * * * * * * * * * * * * * * * * * * * * > * > + * Description of Glibc_Cxx_Floatn_5 fix > + */ > +tSCC zGlibc_Cxx_Floatn_5Name[] = > + "glibc_cxx_floatn_5"; > + > +/* > + * File name selection pattern > + */ > +tSCC zGlibc_Cxx_Floatn_5List[] = > + "bits/floatn.h\0bits/floatn- > common.h\0*/bits/floatn.h\0*/bits/floatn-common.h\0"; > +/* > + * Machine/OS name selection pattern > + */ > +#define apzGlibc_Cxx_Floatn_5Machs (const char**)NULL > + > +/* > + * content selection pattern - do fix if pattern found > + */ > +tSCC zGlibc_Cxx_Floatn_5Select0[] = > + "^([ \t]*#[ \t]*if !__GNUC_PREREQ \\(7, 0\\) \\|\\| )defined > __cplusplus\n\ > +([ \t]*#[ \t]+error \"_Float128[xX] supported but no )"; > + > +#define GLIBC_CXX_FLOATN_5_TEST_CT 1 > +static tTestDesc aGlibc_Cxx_Floatn_5Tests[] = { > + { TT_EGREP, zGlibc_Cxx_Floatn_5Select0, (regex_t*)NULL }, }; > + > +/* > + * Fix Command Arguments for Glibc_Cxx_Floatn_5 > + */ > +static const char* apzGlibc_Cxx_Floatn_5Patch[] = { > + "format", > + "%1(defined __cplusplus && !__GNUC_PREREQ (13, 0))\n\ > +%2", > + (char*)NULL }; > + > +/* * * * * * * * * * * * * * * * * * * * * * * * * * > + * > * Description of Glibc_Mutex_Init fix > */ > tSCC zGlibc_Mutex_InitName[] = > @@ -11038,9 +11075,9 @@ static const char* apzX11_SprintfPatch[] > * > * List of all fixes > */ > -#define REGEX_COUNT 309 > +#define REGEX_COUNT 310 > #define MACH_LIST_SIZE_LIMIT 187 > -#define FIX_COUNT 271 > +#define FIX_COUNT 272 > > /* > * Enumerate the fixes > @@ -11147,6 +11184,7 @@ typedef enum { > GLIBC_CXX_FLOATN_2_FIXIDX, > GLIBC_CXX_FLOATN_3_FIXIDX, > GLIBC_CXX_FLOATN_4_FIXIDX, > + GLIBC_CXX_FLOATN_5_FIXIDX, > GLIBC_MUTEX_INIT_FIXIDX, > GLIBC_STDINT_FIXIDX, > GLIBC_STRNCPY_FIXIDX, > @@ -11825,6 +11863,11 @@ tFixDesc fixDescList[ FIX_COUNT ] = { > GLIBC_CXX_FLOATN_4_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, > aGlibc_Cxx_Floatn_4Tests, apzGlibc_Cxx_Floatn_4Patch, 0 }, > > + { zGlibc_Cxx_Floatn_5Name, zGlibc_Cxx_Floatn_5List, > + apzGlibc_Cxx_Floatn_5Machs, > + GLIBC_CXX_FLOATN_5_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE, > + aGlibc_Cxx_Floatn_5Tests, apzGlibc_Cxx_Floatn_5Patch, 0 }, > + > { zGlibc_Mutex_InitName, zGlibc_Mutex_InitList, > apzGlibc_Mutex_InitMachs, > GLIBC_MUTEX_INIT_TEST_CT, FD_MACH_ONLY, > --- fixincludes/tests/base/bits/floatn.h.jj 2022-09-29 > 22:18:47.976402661 +0200 > +++ fixincludes/tests/base/bits/floatn.h 2022-09-29 > 22:23:19.703717787 +0200 > @@ -84,3 +84,13 @@ typedef long double _Float128; > # define __CFLOAT128 _Complex long double > # endif > #endif /* GLIBC_CXX_FLOATN_4_CHECK */ > + > + > +#if defined( GLIBC_CXX_FLOATN_5_CHECK ) > +# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && > !__GNUC_PREREQ (13, 0)) > +# error "_Float128X supported but no constant suffix" > +# endif > +# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && > !__GNUC_PREREQ (13, 0)) > +# error "_Float128x supported but no type" > +# endif > +#endif /* GLIBC_CXX_FLOATN_5_CHECK */ > > > Jakub >