Message ID | 20221220144219.25254-3-philmd@linaro.org |
---|---|
State | New |
Headers | show |
Series | linux-user: Fix a pair of -Wextra warnings | expand |
On Tue, 20 Dec 2022 at 14:43, Philippe Mathieu-Daudé <philmd@linaro.org> wrote: > > The target SIGIOT signal is sometimes aliased with SIGABRT, > producing the following warning when compiling with -Wextra: > > ../linux-user/signal.c:57:9: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides] > MAKE_SIGNAL_LIST > ^~~~~~~~~~~~~~~~ > ../linux-user/signal-common.h:165:9: note: expanded from macro 'MAKE_SIGNAL_LIST' > MAKE_SIG_ENTRY_SIGIOT > ^~~~~~~~~~~~~~~~~~~~~ > ../linux-user/signal-common.h:128:41: note: expanded from macro 'MAKE_SIG_ENTRY_SIGIOT' > #define MAKE_SIG_ENTRY_SIGIOT MAKE_SIG_ENTRY(SIGIOT) > ^~~~~~~~~~~~~~~~~~~~~~ > ../linux-user/signal.c:56:41: note: expanded from macro 'MAKE_SIG_ENTRY' > #define MAKE_SIG_ENTRY(sig) [sig] = TARGET_##sig, > ^~~~~~~~~~~~ > <scratch space>:81:1: note: expanded from here > TARGET_SIGIOT > ^~~~~~~~~~~~~ > ../linux-user/sh4/../generic/signal.h:26:34: note: expanded from macro 'TARGET_SIGIOT' > #define TARGET_SIGIOT 6 > ^ > <scratch space>:55:1: note: expanded from here > TARGET_SIGABRT > ^~~~~~~~~~~~~~ > ../linux-user/sh4/../generic/signal.h:25:34: note: expanded from macro 'TARGET_SIGABRT' > #define TARGET_SIGABRT 6 > ^ > > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> > --- > linux-user/signal-common.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/linux-user/signal-common.h b/linux-user/signal-common.h > index 3e2dc604c2..a168ea4851 100644 > --- a/linux-user/signal-common.h > +++ b/linux-user/signal-common.h > @@ -124,7 +124,7 @@ static inline void finish_sigsuspend_mask(int ret) > #define MAKE_SIG_ENTRY_SIGSTKFLT > #endif > > -#if defined(SIGIOT) && defined(TARGET_SIGIOT) > +#if defined(SIGIOT) && defined(TARGET_SIGIOT) && TARGET_SIGABRT != TARGET_SIGIOT > #define MAKE_SIG_ENTRY_SIGIOT MAKE_SIG_ENTRY(SIGIOT) > #else > #define MAKE_SIG_ENTRY_SIGIOT This suppresses the array entry in the case where TARGET_SIGABRT == TARGET_SIGIOT, but the compiler error is I think complaining about the case where host SIGABRT == SIGIOT. The MAKE_SIG_ENTRY macros are used to construct both the host-to-target signal table in signal.c and also a target-signal-to-string table in strace.c; so whether you want to check "target signals the same?" or "host signals the same?" to suppress the overriding entry varies depending on which table. However, this is all a bit moot because: (1) we deliberately do not enable the -Winitializer-overrides warning, because it produces false positives on the various cases where we want to use the coding pattern "initialize a range first, then override some specific members within it" (2) There is no Linux architecture where SIGIOT is not a synonym for SIGABRT, so the right thing to do here is just to delete MAKE_SIG_ENTRY_SIGIOT entirely. thanks -- PMM
diff --git a/linux-user/signal-common.h b/linux-user/signal-common.h index 3e2dc604c2..a168ea4851 100644 --- a/linux-user/signal-common.h +++ b/linux-user/signal-common.h @@ -124,7 +124,7 @@ static inline void finish_sigsuspend_mask(int ret) #define MAKE_SIG_ENTRY_SIGSTKFLT #endif -#if defined(SIGIOT) && defined(TARGET_SIGIOT) +#if defined(SIGIOT) && defined(TARGET_SIGIOT) && TARGET_SIGABRT != TARGET_SIGIOT #define MAKE_SIG_ENTRY_SIGIOT MAKE_SIG_ENTRY(SIGIOT) #else #define MAKE_SIG_ENTRY_SIGIOT
The target SIGIOT signal is sometimes aliased with SIGABRT, producing the following warning when compiling with -Wextra: ../linux-user/signal.c:57:9: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides] MAKE_SIGNAL_LIST ^~~~~~~~~~~~~~~~ ../linux-user/signal-common.h:165:9: note: expanded from macro 'MAKE_SIGNAL_LIST' MAKE_SIG_ENTRY_SIGIOT ^~~~~~~~~~~~~~~~~~~~~ ../linux-user/signal-common.h:128:41: note: expanded from macro 'MAKE_SIG_ENTRY_SIGIOT' #define MAKE_SIG_ENTRY_SIGIOT MAKE_SIG_ENTRY(SIGIOT) ^~~~~~~~~~~~~~~~~~~~~~ ../linux-user/signal.c:56:41: note: expanded from macro 'MAKE_SIG_ENTRY' #define MAKE_SIG_ENTRY(sig) [sig] = TARGET_##sig, ^~~~~~~~~~~~ <scratch space>:81:1: note: expanded from here TARGET_SIGIOT ^~~~~~~~~~~~~ ../linux-user/sh4/../generic/signal.h:26:34: note: expanded from macro 'TARGET_SIGIOT' #define TARGET_SIGIOT 6 ^ <scratch space>:55:1: note: expanded from here TARGET_SIGABRT ^~~~~~~~~~~~~~ ../linux-user/sh4/../generic/signal.h:25:34: note: expanded from macro 'TARGET_SIGABRT' #define TARGET_SIGABRT 6 ^ Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- linux-user/signal-common.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)