Re: [PATCH newlib 0/1] sys/signal.h needs sys/_intsup.h
C Howland <[email protected]>
| Newsgroups | gmane.comp.lib.newlib |
|---|---|
| Message-ID | <CANk6obSFWTmMV1N72vVSnYyDdJdL7r6b0P-rzNXb0-bQ7TqS5A@mail.gmail.com> |
> > > ------------------------------ > *From:* Newlib <[email protected]> on > behalf of Joel Sherrill <[email protected]> > *Sent:* Friday, August 27, 2021 9:47 AM > *To:* Newlib <[email protected]> > *Subject:* Re: Fw: [PATCH newlib 0/1] sys/signal.h needs sys/_intsup.h > > > On Fri, Aug 27, 2021 at 5:16 AM Corinna Vinschen <[email protected]> > wrote: > > > > On Aug 26 18:28, Joel Sherrill wrote: > > > We recently added this to sys/signal.h: > > > > > > #if __STDINT_EXP(INT_MAX) > 0x7fff > > > #define SIG2STR_MAX (sizeof("RTMAX+") + sizeof("4294967295") - 1) > > > #else > > > #define SIG2STR_MAX (sizeof("RTMAX+") + sizeof("65535") - 1) > > > #endif > > > > > > And -ffreestanding breaks that. I see two solutions: > > > > > > (1) Add __STDINT_EXP to gcc's stdint-gcc.h > > > (2) Switch that #if to something else > > > > > > I think something like this is an OK substitute works equivalently: > > > > > > #if __SIZEOF_INT__ > 2 > > > > or even __SIZEOF_INT__ >= 4 to be extra *extra* paranoid, but yeah, > > sure, go ahead. The commmit message should just briefly explain the > > freestanding implementation issue. > > Patch posted. Hopefully the commit message is clear enough. > > This one definitely is in the land of subtle small things. > > Thanks for the feedback and push to look for a deeper explanation. > > --joel > > > > > Corinna > Just to close out the details on this more-esoteric subject: -ffreestanding is improper for using Newlib, so we don't need to account for it in general. (A freestanding implementation may only use a subset of the library, and stdint.h is not one of that list--which in C11 is <float.h>, <iso646.h>, <limits.h>, <stdalign.h>, <stdarg.h>, <stdbool.h>, <stddef.h>, <stdint.h>,and <stdnoreturn.h>.) So the original is fine, but so is the tweak. Craig