On Thu, Jan 02, 2025 at 04:32:17PM +0100, Roman Kagan wrote:
> When gcc is built for x86_64-linux-musl target, stack unwinding from
> within signal handler stops at the innermost signal frame.  The reason
> for this behaviro is that the signal trampoline is not accompanied with
> appropiate CFI directives, and the fallback path in libgcc to recognize
> it by the code sequence is only enabled for glibc except 2.0.  The
> latter is motivated by the lack of sys/ucontext.h in that glibc version.
> 
> Given that all relevant libc-s ship sys/ucontext.h for over a decade,
> and that other arches aren't shy of unconditionally using it, follow
> suit and remove the preprocessor condition, too.
> 
> Signed-off-by: Roman Kagan <rka...@amazon.de>
> ---
>  libgcc/config/i386/linux-unwind.h | 7 -------
>  1 file changed, 7 deletions(-)
> 
> diff --git a/libgcc/config/i386/linux-unwind.h 
> b/libgcc/config/i386/linux-unwind.h
> index fe316ee02cf2..8f37642bbf55 100644
> --- a/libgcc/config/i386/linux-unwind.h
> +++ b/libgcc/config/i386/linux-unwind.h
> @@ -33,12 +33,6 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  
> If not, see
>  
>  #ifndef inhibit_libc
>  
> -/* There's no sys/ucontext.h for glibc 2.0, so no
> -   signal-turned-exceptions for them.  There's also no configure-run for
> -   the target, so we can't check on (e.g.) HAVE_SYS_UCONTEXT_H.  Using the
> -   target libc version macro should be enough.  */
> -#if defined __GLIBC__ && !(__GLIBC__ == 2 && __GLIBC_MINOR__ == 0)
> -
>  #include <signal.h>
>  #include <sys/ucontext.h>
>  
> @@ -199,5 +193,4 @@ x86_frob_update_context (struct _Unwind_Context *context,
>  }
>  
>  #endif /* ifdef __x86_64__  */
> -#endif /* not glibc 2.0 */
>  #endif /* ifdef inhibit_libc  */

Ping?

Roman.

Reply via email to