This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: Fix MIPS waitid build [committed]
- From: Rich Felker <dalias at libc dot org>
- To: libc-alpha at sourceware dot org
- Date: Wed, 10 Dec 2014 14:32:16 -0500
- Subject: Re: Fix MIPS waitid build [committed]
- Authentication-results: sourceware.org; auth=none
- References: <alpine dot DEB dot 2 dot 10 dot 1412101850280 dot 32166 at digraph dot polyomino dot org dot uk>
On Wed, Dec 10, 2014 at 06:50:45PM +0000, Joseph Myers wrote:
> As previously discussed in
> <https://sourceware.org/ml/libc-alpha/2012-11/msg00798.html>, MIPS (o32)
> waitid has build warnings (now errors) because a function is declared
> inline but functions with five-argument syscalls cannot be inlined for
> MIPS o32.
>
> This patch disables the -Winline warnings for waitid.c using a
> MIPS-specific wrapper file. As it's whole-file disabling, there's no
> point in using push and pop, so just DIAG_IGNORE_NEEDS_COMMENT is
> used.
>
> Committed.
>
> 2014-12-10 Joseph Myers <joseph@codesourcery.com>
>
> * sysdeps/unix/sysv/linux/mips/mips32/waitid.c: New file.
>
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/waitid.c b/sysdeps/unix/sysv/linux/mips/mips32/waitid.c
> new file mode 100644
> index 0000000..c18a57c
> --- /dev/null
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/waitid.c
> @@ -0,0 +1,7 @@
> +#include <libc-internal.h>
> +
> +/* MIPS forces a frame pointer for five-argument syscalls using
> + alloca, so resulting in "inlining failed in call to 'do_waitid':
> + function not inlinable". */
> +DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Winline");
> +#include <sysdeps/unix/sysv/linux/waitid.c>
Wouldn't it be preferable just to fix whatever the underlying cause
is? It sounds like some ugly and fragile hack is being used to
position the syscall arguments on the stack and I wouldn't be
surprised if it's only working by chance. I've seen other bad code
like this in the mips port that's only working by chance, for example
in setjmp/longjmp.
Rich