Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Wed, 18 Aug 2021 20:49:03 -0400
From: Rich Felker <dalias@...c.org>
To: Olivier Galibert <galibert@...ox.com>
Cc: musl@...ts.openwall.com
Subject: Re: [PATCH] arm64/sigcontext: Synchronize the type of the
 __reserved field with the linux kernel.

On Thu, Aug 19, 2021 at 12:52:23AM +0200, Olivier Galibert wrote:
> clang's compiler-rt sanitizer_linux.cpp expects the __reserved field
> to be convertible to u8 *.  So let's.
> ---
>  arch/aarch64/bits/signal.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/arch/aarch64/bits/signal.h b/arch/aarch64/bits/signal.h
> index 5098c734..a46997e3 100644
> --- a/arch/aarch64/bits/signal.h
> +++ b/arch/aarch64/bits/signal.h
> @@ -19,7 +19,7 @@ typedef struct sigcontext {
>  	unsigned long fault_address;
>  	unsigned long regs[31];
>  	unsigned long sp, pc, pstate;
> -	long double __reserved[256];
> +	unsigned char __reserved[4096] __attribute__((__aligned__(16)));
>  } mcontext_t;
>  
>  #define FPSIMD_MAGIC 0x46508001

The member name __reserved is not API, much less its particular type.
If the sanitizer code is attempting to access it, it's doing something
wrong and that should be investigated and fixed. The choice to use
long double was very intentional so that the struct definition does
not depend on GNUC attributes to have the correct alignment.

Rich

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.