On Tue, Feb 18, 2025 at 8:23 PM Richard Biener <rguent...@suse.de> wrote:
>
>
>
> > Am 18.02.2025 um 20:07 schrieb Roman Kagan <rka...@amazon.de>:
> >
> > On Tue, Feb 18, 2025 at 07:17:24PM +0100, Uros Bizjak wrote:
> >>> On Mon, Feb 17, 2025 at 6:19 PM Roman Kagan <rka...@amazon.de> wrote:
> >>>
> >>> 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.
> >>
> >> "Relevant libc"-s for x86 linux are LIBC_GLIBC, LIBC_UCLIBC,
> >> LIBC_BIONIC and LIBC_MUSL. As far as glibc is concerned, the latest
> >> glibc 2.0.x version was released in 1997 [1], so I guess we can remove
> >> the condition for version 2.0. Based on your claim, the other
> >> mentioned libcs also provide the required header for a long time.
> >
> > Ah, good point, for completeness I should've supplied evidence from
> > their respective git repos, here you go:
> >
> > uclibc(-ng):
> >  libc/sysdeps/linux/i386/sys/ucontext.h
> >
> >    commit 9cee42f10dbc5b33866ff137b926a74abd7c1a5b
> >    Author: Eric Andersen <ander...@codepoet.org>
> >    Date:   Fri Mar 1 20:46:26 2002 +0000
> >
> >        Major rework of the include files to eliminate redundancy
> >        and to better support each arch.  This is a really big patch...
> >         -Erik
> >
> >  libc/sysdeps/linux/i386/sys/ucontext.h
> >
> >    commit 1fef64b22811709b2e640d341237bce1c8081203
> >    Author: Mike Frysinger <vap...@gentoo.org>
> >    Date:   Tue Feb 15 01:27:10 2005 +0000
> >
> >        headers for x86_64
> >
> > bionic:
> >  libc/include/sys/ucontext.h
> >
> >    commit e61d106008f7d77fa1c0de43ac27311320225135
> >    Author: Pavel Chupin <pavel.v.chu...@intel.com>
> >    Date:   Mon Jan 27 17:56:43 2014 +0400
> >
> >        Add x86_64 ucontext.h for better compatibility
> >
> >        As suggested here: https://android-review.googlesource.com/#/c/71267/
> >        it may be used for x86_64 libunwind enabling.
> >
> >        Change-Id: I21623261a48ea7099e030d33932556e294d226ff
> >        Signed-off-by: Pavel Chupin <pavel.v.chu...@intel.com>
> >
> >    commit 677a07cb9a3f5964e9ead4d37b9f775d971c61e0
> >    Author: Elliott Hughes <e...@google.com>
> >    Date:   Wed Jan 29 16:46:00 2014 -0800
> >
> >        Add x86 <sys/ucontext.h>.
> >
> >        Change-Id: I43e72604f7a932f134733b78094b577415a5edb7
> >
> > musl:
> >  arch/i386/bits/signal.h
> >  arch/x86_64/bits/signal.h
> >  include/ucontext.h
> >
> >    commit ad2fe25041622b6cf426b0f98af0e52c2c9727f6
> >    Author: Rich Felker <dal...@aerifal.cx>
> >    Date:   Fri Feb 18 22:03:03 2011 -0500
> >
> >        support the ugly and deprecated ucontext and sigcontext header 
> > stuff...
> >
> >        only the structures, not the functions from ucontext.h, are supported
> >        at this point. the main goal of this commit is to make modern gcc 
> > with
> >        dwarf2 unwinding build without errors.
> >
> >        honestly, it probably doesn't matter how we define these as long as
> >        they have members with the right names to prevent errors while
> >        compiling libgcc. the only time they will be used is for propagating
> >        exceptions across signal-handler boundaries, which invokes undefined
> >        behavior anyway. but as-is, they're probably correct and may be 
> > useful
> >        to various low-level applications dealing with virtualization, jit
> >        code generation, and so on...
> >
> >> I have no objection to the patch, but I think that this patch is a bit
> >> late for gcc-15 and should be committed early in the gcc-16
> >> development cycle. But let's hear release managers (CC'd).
>
> It’s fine for 15, or rather I’m leaving it for you to decide.

OK, based on the above research, I'll commit it to gcc-15.

Thanks,
Uros.

Reply via email to