Re: [PATCH v0 0/2] Add C23 stdbit.h functions
Joel Sherrill <[email protected]> Wed, 8 Apr 2026 10:34:00 -0500
| Newsgroups | gmane.comp.lib.newlib |
|---|---|
| Message-ID | <CAF9ehCV58yZDt2BQRY6hGrG72Kto_+6zzOGFtJorNK9TeW8QUA@mail.gmail.com> |
OK. It was rejected as I wasn't subscribed. Resent after subscribing and they now are in the cygwin-patches archive. Thanks. --joel On Wed, Apr 8, 2026 at 10:16 AM Joel Sherrill <[email protected]> wrote: > I submitted a patch to cygwin-patches. I do not see it in the archives > at https://cygwin.com/pipermail/cygwin-patches/2026q2/date.html. > If it is caught at the moderator, please let it go through. > > Thanks. > > --joel > > On Tue, Apr 7, 2026 at 5:22 PM Joel Sherrill <[email protected]> > wrote: > >> Looking closer, these are not coming from the "OS's" limits.h. >> They are defined by GCC's limits.h. I checked an older RTEMS >> toolchain to see how far back these were present. These are >> not a recent addition. >> >> lib/gcc/sparc-rtems6/13.3.0/include/limits.h >> lib/gcc/microblaze-rtems6/12.4.1/include-fixed/limits.h >> >> On my freshly updated Cygwin, I found that the gcc install included >> a similar limits.h with ULLONG_WIDTH defined. So it is there but >> not via the Cygwin limits.h. >> >> lib/gcc/x86_64-pc-cygwin/13/include/limits.h:# define ULLONG_WIDTH >> __LONG_LONG_WIDTH__ >> >> The problem appears to be that the Cygwin specific limits.h is >> missing this code fragment that the RTEMS limits.h has. >> >> #ifndef _GCC_LIMITS_H_ /* if we have not seen gcc's limits.h yet */ >> #include_next <limits.h> >> #endif >> >> But Cygwin's limits.h has its own defines for constants GCC's limits.h >> provides which leads me to believe that Cygwin wants its limits.h to >> be self-contained and not rely on GCC's. GCC's limits.h has a block >> which defines all the _WIDTH constants like this: >> >> #if (defined __STDC_WANT_IEC_60559_BFP_EXT__ \ >> || (defined (__STDC_VERSION__) && __STDC_VERSION__ > 201710L)) >> /* TS 18661-1 / C2X widths of integer types. */ >> # undef CHAR_WIDTH >> # define CHAR_WIDTH __SCHAR_WIDTH__ >> .... redacted >> # undef ULLONG_WIDTH >> # define ULLONG_WIDTH __LONG_LONG_WIDTH__ >> #endif >> >> I can add all of that to the Cygwin limits.h as a single block and >> submit a patch. Is that an acceptable solution? >> >> Also I have no way of testing this. I can submit an untested patch. >> Is that really OK? >> >> I don't mind doing this. But submitting untested patches >> makes me uncomfortable. Is someone willing to test this? >> >> --joel >> >> On Tue, Apr 7, 2026 at 10:57 AM Corinna Vinschen <[email protected]> >> wrote: >> >>> On Apr 3 17:08, Brian Inglis wrote: >>> > On 2026-04-03 11:14, Joel Sherrill wrote: >>> > > Sorry for the delay. I got back to Corrina's comment: >>> > > >>> > > > No, they are not. Target was Cygwin with its own limits.h, but >>> even in >>> > > > newlib's limits.h, these WIDTH macros are not defined. >>> Incidentally, >>> > > > they are not defined anywhere in the newlib-cygwin repo. If this >>> works >>> > > > for you, you're probably overloading the newlib headers with rtems >>> > > > headers. >>> > > >>> > > RTEMS does indeed have its own limits.h. And it must be aligned >>> with C23. >>> > > >>> > > And Cygwin has its own limits.h which has not been updated to have >>> any of >>> > > the new C23 constants. Four show up in compiler error messages >>> building >>> > > the stdbit code. >>> > > >>> > > https://en.cppreference.com/w/c/header/limits.html >>> > > <https://en.cppreference.com/w/c/header/limits.html> >>> > > >>> > > The stdbit.h addition needs a limits.h with the C23 constants. >>> > > >>> > > Can those be added to the Cygwin limits.h? Then we can proceed with >>> > > the stdbit.h addition. >>> > >>> > For fastest response, please submit a patch with subject like: >>> > >>> > [PATCH] Cygwin: winsup/cygwin/include/limits.h: Add C23 ..._WIDTH >>> definitions >>> > >>> > similar to your RTEMS changes, using normal feature test macros as >>> > appropriate, with git format-patch & git send-email to: >>> > >>> > Cygwin core component patch submission and discussion >>> > < >>> [email protected]> >>> >>> Either that (patches are always welcome), or just use the >>> compiler-provided constants. >>> >>> >>> Thanks, >>> Corinna >>> >>