On Wed, 18 Jun 2025, Jeremy Drake via Cygwin-patches wrote:

> On Wed, 18 Jun 2025, Radek Barton via Cygwin-patches wrote:
>
> > Hello.
> >
> > This patch ports stack pointer reading to AArch64 at fork.cc and cygtls..h.
> >
> > Radek
> >
> > ---
> > From cc920233d50fe38f22610cb51f219e3c9b566109 Mon Sep 17 00:00:00 2001
> > From: =?UTF-8?q?Radek=20Barto=C5=88?= <radek.bar...@microsoft..com>
> > Date: Fri, 6 Jun 2025 10:21:10 +0200
> > Subject: [PATCH] Cygwin: obtain stack pointer on AArch64
> > MIME-Version: 1.0
> > Content-Type: text/plain; charset=UTF-8
> > Content-Transfer-Encoding: 8bit
> >
> > Signed-off-by: Radek BartoĊˆ <radek.bar...@microsoft.com>
> > ---
> >  winsup/cygwin/fork.cc                 | 4 +++-
> >  winsup/cygwin/local_includes/cygtls.h | 6 ++++++
> >  2 files changed, 9 insertions(+), 1 deletion(-)
> >
> > diff --git a/winsup/cygwin/fork.cc b/winsup/cygwin/fork.cc
> > index f88acdbbf..4abc52598 100644
> > --- a/winsup/cygwin/fork.cc
> > +++ b/winsup/cygwin/fork.cc
> > @@ -660,8 +660,10 @@ dofork (void **proc, bool *with_forkables)
> >      ischild = !!setjmp (grouped.ch.jmp);
> >
> >      volatile char * volatile stackp;
> > -#ifdef __x86_64__
> > +#if defined(__x86_64__)
> >      __asm__ volatile ("movq %%rsp,%0": "=r" (stackp));
> > +#elif defined(__aarch64__)
> > +    __asm__ volatile ("mov %0, sp" : "=r" (stackp));
> >  #else
> >  #error unimplemented for this target
> >  #endif
> > diff --git a/winsup/cygwin/local_includes/cygtls.h 
> > b/winsup/cygwin/local_includes/cygtls.h
> > index 31cadd51a..44bd44e72 100644
> > --- a/winsup/cygwin/local_includes/cygtls.h
> > +++ b/winsup/cygwin/local_includes/cygtls.h
> > @@ -325,7 +325,13 @@ public:
> >         address of the _except block to restore the context correctly.
> >         See comment preceeding myfault_altstack_handler in exception.cc.. */
> >      ret = (DWORD64) _ret;
> > +#if defined(__x86_64__)
> >      __asm__ volatile ("movq %%rsp,%0": "=o" (frame));
> > +#elif defined(__aarch64__)
> > +    __asm__ volatile ("mov %0, sp" : "=r" (frame));
> > +#else
> > +#error unimplemented for this target
> > +#endif
> >    }
> >    ~san () __attribute__ ((always_inline))
> >    {
> > --
> > 2.49.0.vfs.0.4
> >
> >
>
> LGTM

Pushed, thanks

Reply via email to