|
|
Message-ID: <20230418093844.GP3630668@port70.net>
Date: Tue, 18 Apr 2023 11:38:44 +0200
From: Szabolcs Nagy <nsz@...t70.net>
To: 王洪亮 <wanghongliang@...ngson.cn>
Cc: musl@...ts.openwall.com
Subject: Re: add loongarch64 port v7.
* 王洪亮 <wanghongliang@...ngson.cn> [2023-04-18 09:28:49 +0800]:
> +++ b/arch/loongarch64/bits/signal.h
> @@ -6,14 +6,27 @@
> #define SIGSTKSZ 16384
> #endif
>
> +#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
> typedef unsigned long greg_t, gregset_t[32];
>
> -typedef struct sigcontext {
> +struct sigcontext {
> unsigned long sc_pc;
> - gregset_t sc_regs;
> - unsigned int sc_flags;
> - unsigned long sc_extcontext[];
> + unsigned long sc_regs[32];
> + unsigned int sc_flags;
> + unsigned long sc_extcontext[] __attribute__((__aligned__(16)));
> +};
this looks good. (i don't know if this is really
needed in signal.h, but other targets have it too)
> +
> +typedef struct {
> + unsigned long __pc;
> + unsigned long __gregs[32];
> + unsigned int __flags;
> + unsigned long __extcontext[] __attribute__((__aligned__(16)));
> } mcontext_t;
i would use the same struct tag as glibc so
typedef struct mcontext_t { ...
(we don't need c++ abi compat with glibc, but
it's nicer to be consistent)
> +#else
> +typedef struct {
> + unsigned long __space[34];
> +} mcontext_t;
i would add the aligned attribute here.
(it's more important to match the kernel layout than to
avoid c extensions in standard mode: loongarch c compilers
will all support the aligned attribute in system headers)
> +#endif
>
> struct sigaltstack {
> void *ss_sp;
> @@ -23,11 +36,10 @@ struct sigaltstack {
>
> typedef struct __ucontext
> {
> - unsigned long uc_flags;
> + unsigned long __uc_flags;
> struct __ucontext *uc_link;
> stack_t uc_stack;
> sigset_t uc_sigmask;
> - long __uc_pad;
> mcontext_t uc_mcontext;
> } ucontext_t;
looks good.
(the only issue is if some code uses uc_flags in an
arch independent way. i don't know if there is any
use for it on linux. but we can fix that later on
both glibc and musl side if it comes up.)
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.