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