Message ID | 20180622192718.24242-1-malat@debian.org (mailing list archive) |
---|---|
State | Changes Requested |
Headers | show |
Series | powerpc/xmon: avoid warnings about variables that might be clobbered by ‘longjmp’ | expand |
Le 22/06/2018 à 21:27, Mathieu Malaterre a écrit : > Move initialization of variables after data definitions. This silence > warnings treated as error with W=1: > > arch/powerpc/xmon/xmon.c:3389:14: error: variable ‘name’ might be clobbered by ‘longjmp’ or ‘vfork’ [-Werror=clobbered] > arch/powerpc/xmon/xmon.c:3100:22: error: variable ‘tsk’ might be clobbered by ‘longjmp’ or ‘vfork’ [-Werror=clobbered] Is that an invalid warning ? If so, please explain in the commit log. Otherwise, I'd expect one to fix the warning, not just cheat on GCC. Christophe > > Signed-off-by: Mathieu Malaterre <malat@debian.org> > --- > arch/powerpc/xmon/xmon.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c > index 47166ad2a669..982848c784ff 100644 > --- a/arch/powerpc/xmon/xmon.c > +++ b/arch/powerpc/xmon/xmon.c > @@ -3097,10 +3097,11 @@ static void show_pte(unsigned long addr) > static void show_tasks(void) > { > unsigned long tskv; > - struct task_struct *tsk = NULL; > + struct task_struct *tsk; > > printf(" task_struct ->thread.ksp PID PPID S P CMD\n"); > > + tsk = NULL; > if (scanhex(&tskv)) > tsk = (struct task_struct *)tskv; > > @@ -3386,10 +3387,11 @@ static void xmon_print_symbol(unsigned long address, const char *mid, > const char *after) > { > char *modname; > - const char *name = NULL; > + const char *name; > unsigned long offset, size; > > printf(REG, address); > + name = NULL; > if (setjmp(bus_error_jmp) == 0) { > catch_memory_errors = 1; > sync(); > --- L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast. https://www.avast.com/antivirus
On Sat, Jun 23, 2018 at 06:59:27PM +0200, christophe leroy wrote: > > > Le 22/06/2018 à 21:27, Mathieu Malaterre a écrit : > >Move initialization of variables after data definitions. This silence > >warnings treated as error with W=1: > > > > arch/powerpc/xmon/xmon.c:3389:14: error: variable ‘name’ might be > > clobbered by ‘longjmp’ or ‘vfork’ [-Werror=clobbered] > > arch/powerpc/xmon/xmon.c:3100:22: error: variable ‘tsk’ might be > > clobbered by ‘longjmp’ or ‘vfork’ [-Werror=clobbered] > > Is that an invalid warning ? No, both are correct warnings. GCC can not see which functions it only has a declaration of can call longjmp. > Otherwise, I'd expect one to fix the warning, not just cheat on GCC. Yes, the patch seems to change the code in such a way that some versions of GCC will no longer warn. Which does not make to code any more correct. Either restructure the code, or make the var non-automatic, or make it volatile. Segher
On Sat, Jun 23, 2018 at 9:47 PM Segher Boessenkool <segher@kernel.crashing.org> wrote: > > On Sat, Jun 23, 2018 at 06:59:27PM +0200, christophe leroy wrote: > > > > > > Le 22/06/2018 à 21:27, Mathieu Malaterre a écrit : > > >Move initialization of variables after data definitions. This silence > > >warnings treated as error with W=1: > > > > > > arch/powerpc/xmon/xmon.c:3389:14: error: variable ‘name’ might be > > > clobbered by ‘longjmp’ or ‘vfork’ [-Werror=clobbered] > > > arch/powerpc/xmon/xmon.c:3100:22: error: variable ‘tsk’ might be > > > clobbered by ‘longjmp’ or ‘vfork’ [-Werror=clobbered] > > > > Is that an invalid warning ? > > No, both are correct warnings. GCC can not see which functions it only > has a declaration of can call longjmp. I assumed those were false positive warnings, given how easy it was to defeat them. Let give it another try. > > Otherwise, I'd expect one to fix the warning, not just cheat on GCC. > > Yes, the patch seems to change the code in such a way that some versions > of GCC will no longer warn. Which does not make to code any more correct. > > Either restructure the code, or make the var non-automatic, or make it > volatile. > > > Segher
diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c index 47166ad2a669..982848c784ff 100644 --- a/arch/powerpc/xmon/xmon.c +++ b/arch/powerpc/xmon/xmon.c @@ -3097,10 +3097,11 @@ static void show_pte(unsigned long addr) static void show_tasks(void) { unsigned long tskv; - struct task_struct *tsk = NULL; + struct task_struct *tsk; printf(" task_struct ->thread.ksp PID PPID S P CMD\n"); + tsk = NULL; if (scanhex(&tskv)) tsk = (struct task_struct *)tskv; @@ -3386,10 +3387,11 @@ static void xmon_print_symbol(unsigned long address, const char *mid, const char *after) { char *modname; - const char *name = NULL; + const char *name; unsigned long offset, size; printf(REG, address); + name = NULL; if (setjmp(bus_error_jmp) == 0) { catch_memory_errors = 1; sync();
Move initialization of variables after data definitions. This silence warnings treated as error with W=1: arch/powerpc/xmon/xmon.c:3389:14: error: variable ‘name’ might be clobbered by ‘longjmp’ or ‘vfork’ [-Werror=clobbered] arch/powerpc/xmon/xmon.c:3100:22: error: variable ‘tsk’ might be clobbered by ‘longjmp’ or ‘vfork’ [-Werror=clobbered] Signed-off-by: Mathieu Malaterre <malat@debian.org> --- arch/powerpc/xmon/xmon.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)