[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