On Wed, 10 Sept 2025 at 22:55, Bruce Korb <bk...@gnu.org> wrote: > > Looks reasonable to me. I don't see a patch to the testing results tho. > The "SVN-MERGE" warns against using subversion merging the file instead > of rebuilding and replacing it. The text for "SVN-MERGE" lives in the > template used to create the "fixincl.x" file.
I pushed the patch as r16-3446-g59db4ce2df1db3, including a fix for the fixincl.x file. Should there have been a change to the tests? The README talks about a $(builddir)/tests/res directory but I don't see that. I'll need some guidance if a change to the tests is needed. Should I verify that it does fix pthread.h without the bypass string matching, and also verify that it doesn't fix it when the bypass matches? How would I do that? > > On 8/28/25 06:56, Jonathan Wakely wrote: > > Ping > > > > Original: https://gcc.gnu.org/pipermail/gcc-patches/2025-August/692933.html > > > > On 20/08/25 17:30 +0100, Jonathan Wakely wrote: > >> The pthread_incomplete_struct_argument fix was intended for ancient > >> versions of Glibc (only 2.3.3 and 2.3.4, I believe). From Glibc 2.3.5 > >> the pthread.h header already included the change to use a pointer > >> instead of an array, so the fixinclude was no longer used. > >> > >> However, the https://sourceware.org/bugzilla/show_bug.cgi?id=26647 fix > >> changed the __setjmpbuf declaration to use struct __jmp_buf_tag __env[1] > >> again, which caused this fixinclude to start matching again. This means > >> that GCC now installs a "fixed" pthread.h with a change to a declaration > >> that guarded by #if ! __GNUC_PREREQ (11, 0), i.e. it's not even relevant > >> for modern versions of GCC. The "fixed" pthread.h causes problems for > >> users because of changes to internal implementation details of the > >> pthread_cond_t type, which require the "fixed" pthread.h to be updated > >> with mkheaders if Glibc is updated. > >> > >> This change adds a bypass to the fixinclude, so that it no longer > >> matches modern Glibc versions, and only applies to glibc versions 2.3.3 > >> and 2.3.4 as originally intended. > >> > >> fixincludes/ChangeLog: > >> > >> PR bootstrap/118009 > >> PR bootstrap/119089 > >> * inclhack.def (pthread_incomplete_struct_argument): Add bypass. > >> * fixincl.x: Regenerate. > >> --- > >> > > Tested x86_64-linux. > > > > OK for trunk? > > > > And release branches? > > > > Aside: should we change the comment talking about SVN-MERGE? > > > > > > fixincludes/fixincl.x | 15 +++++++++++---- > > fixincludes/inclhack.def | 1 + > > 2 files changed, 12 insertions(+), 4 deletions(-) > > > > diff --git a/fixincludes/fixincl.x b/fixincludes/fixincl.x > > index 819c02c483c7..d28262ef9eeb 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 August 15, 2025 at 05:30:32 PM by AutoGen > > 5.18.16 > > + * It has been AutoGen-ed August 19, 2025 at 04:54:32 PM by AutoGen > > 5.18.16 > > * From the definitions inclhack.def > > * and the template file fixincl > > */ > > -/* DO NOT SVN-MERGE THIS FILE, EITHER Fri Aug 15 17:30:32 CEST 2025 > > +/* DO NOT SVN-MERGE THIS FILE, EITHER Tue Aug 19 16:54:32 BST 2025 > > * > > * You must regenerate it. Use the ./genfixes script. > > * > > @@ -7547,8 +7547,15 @@ tSCC zPthread_Incomplete_Struct_ArgumentList[] = > > tSCC zPthread_Incomplete_Struct_ArgumentSelect0[] = > > "struct __jmp_buf_tag"; > > > > -#define PTHREAD_INCOMPLETE_STRUCT_ARGUMENT_TEST_CT 1 > > +/* > > + * content bypass pattern - skip fix if pattern found > > + */ > > +tSCC zPthread_Incomplete_Struct_ArgumentBypass0[] = > > + "bits/types/struct___jmp_buf_tag.h"; > > + > > +#define PTHREAD_INCOMPLETE_STRUCT_ARGUMENT_TEST_CT 2 > > static tTestDesc aPthread_Incomplete_Struct_ArgumentTests[] = { > > + { TT_NEGREP, zPthread_Incomplete_Struct_ArgumentBypass0, > > (regex_t*)NULL }, > > { TT_EGREP, zPthread_Incomplete_Struct_ArgumentSelect0, > > (regex_t*)NULL }, }; > > > > /* > > @@ -11202,7 +11209,7 @@ static const char* apzX11_SprintfPatch[] = { > > * > > * List of all fixes > > */ > > -#define REGEX_COUNT 318 > > +#define REGEX_COUNT 319 > > #define MACH_LIST_SIZE_LIMIT 187 > > #define FIX_COUNT 274 > > > > diff --git a/fixincludes/inclhack.def b/fixincludes/inclhack.def > > index 35ccaf03c4fa..71777cb10e73 100644 > > --- a/fixincludes/inclhack.def > > +++ b/fixincludes/inclhack.def > > @@ -3803,6 +3803,7 @@ fix = { > > hackname = pthread_incomplete_struct_argument; > > files = pthread.h; > > select = "struct __jmp_buf_tag"; > > + bypass = "bits/types/struct___jmp_buf_tag.h"; > > c_fix = format; > > c_fix_arg = "%1 *%2%3"; > > c_fix_arg = "^(extern int __sigsetjmp \\(struct __jmp_buf_tag) " >