Does anyone know why __WIFSTOPPED macro redefined for MIPS architecture as
#if !defined(__mips__)
#define __WIFSTOPPED(status) (((status) & 0xff) == 0x7f)
#else
#define __WIFSTOPPED(status) (((status) & 0xff) == 0x7f && ((status) & 0xff00)) #endif
?
The problem with this definition is in that newer gdb versions (>= 7.0) expect that WIFSTOPPED(W_STOPCODE(0)) is true (see [1]), otherwise a debugger erroneously blocks a child process in a trace status until gdb exit.
In the glibc [2] this macro expansion is the same for all architectures.
Is this a gdb or uClibc-ng bug?
1. https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git; a=blob;f=gdb/linux-nat.c;h=445b59fa4adadbb2890a9e2debffb5 330f1e09e4;hb=HEAD#l497 2. https://sourceware.org/git/gitweb.cgi?p=glibc.git;a=blob; f=bits/waitstatus.h;h=a1c232612cd13e758f222ade6b27bc2c85ab8f8f;hb=HEAD#l44