[PATCH] Cygwin: signal: Clear direction flag in sigdeleyed
Corinna Vinschen
corinna-cygwin@cygwin.com
Mon Mar 24 10:25:31 GMT 2025
On Mar 24 10:28, Takashi Yano wrote:
> x86_64 ABI requires the direction flag in CPU flags register cleared.
> https://learn.microsoft.com/en-us/cpp/build/x64-software-conventions
> However, currently that flag is not maintained in signal handler.
> Therefore, if the signal handler is called when that flag is set, it
> destroys the data and may crash if rep instruction is used in the
> signal handler. With this patch, the direction flag is cleared in
> sigdelayed() by adding cld instruction.
>
> Addresses: https://cygwin.com/pipermail/cygwin/2025-March/257704.html
> Fixes: 1fd5e000ace5 ("import winsup-2000-02-17 snapshot")
> Reported-by: Christian Franke <Christian.Franke@t-online.de>
> Reviewed-by:
> Signed-off-by: Takashi Yano <takashi.yano@nifty.ne.jp>
> ---
> winsup/cygwin/scripts/gendef | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/winsup/cygwin/scripts/gendef b/winsup/cygwin/scripts/gendef
> index a2f0392bc..861a2405b 100755
> --- a/winsup/cygwin/scripts/gendef
> +++ b/winsup/cygwin/scripts/gendef
> @@ -179,6 +179,7 @@ sigdelayed:
> movq %rsp,%rbp
> pushf
> .seh_pushreg %rax # fake, there's no .seh_pushreg for the flags
> + cld # x86_64 ABI requires direction flag cleared
> # stack is aligned or unaligned on entry!
> # make sure it is aligned from here on
> # We could be called from an interrupted thread which doesn't know
> --
> 2.45.1
GTG, of course!
Thanks,
Corinna
More information about the Cygwin-patches
mailing list