[PATCH 1/1] newlib/libc/include/setjmp.h: Add returns_twice attribute to setjmp()
Joel Sherrill
joel.sherrill@gmail.com
Thu Oct 2 13:57:34 GMT 2025
On Wed, Oct 1, 2025 at 4:03 AM Brian Inglis <Brian.Inglis@systematicsw.ab.ca>
wrote:
> On 2025-10-01 01:22, Torbjorn SVENSSON wrote:
> > On 2025-09-30 16:49, Joel Sherrill wrote:
> >> The setjmp() function needs this attribute to help GCC avoid false
> >> positives for the -Wclobbered warning. The -Wclobbered warning is
> >> part of -Wextra.
> >> ---
> >> newlib/libc/include/setjmp.h | 7 ++++++-
> >> 1 file changed, 6 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/newlib/libc/include/setjmp.h b/newlib/libc/include/setjmp.h
> >> index a2830b275..5c16321a4 100644
> >> --- a/newlib/libc/include/setjmp.h
> >> +++ b/newlib/libc/include/setjmp.h
> >> @@ -17,7 +17,12 @@ void longjmp (jmp_buf __jmpb, int __retval)
> >> #else
> >> void longjmp (jmp_buf __jmpb, int __retval);
> >> #endif
> >> -int setjmp (jmp_buf __jmpb);
> >> +
> >> +#ifdef __GNUC__
> >> +int setjmp (jmp_buf __jmpb)
> >> + __attribute__ ((returns_twice));;
> > I suppose you only want a single semi-colon here.
> >> +#else
> > I think you should also drop the empty "#else" block.
> >> +#endif
> >> _END_STD_C
>
> Shouldn't the conditional be around the attribute only?
>
That's not the way setjmp() was. It has this (tabs lost with copy and
paste):
#ifdef __GNUC__
void longjmp (jmp_buf __jmpb, int __retval)
__attribute__ ((__noreturn__));
#else
void longjmp (jmp_buf __jmpb, int __retval);
#endif
I just copied the style of what was there.
>
> -int setjmp (jmp_buf __jmpb);
> +int setjmp (jmp_buf __jmpb)
> +#ifdef __GNUC__
> + __attribute__ ((returns_twice))
> +#endif
> + ;
>
>
Do you want longjmp() changed to match this also?
--joel
> --
> Take care. Thanks, Brian Inglis Calgary, Alberta, Canada
>
> La perfection est atteinte Perfection is achieved
> non pas lorsqu'il n'y a plus rien à ajouter not when there is no more to
> add
> mais lorsqu'il n'y a plus rien à retrancher but when there is no more to
> cut
> -- Antoine de Saint-Exupéry
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://sourceware.org/pipermail/newlib/attachments/20251002/146b6406/attachment.htm>
More information about the Newlib
mailing list