Hello,
Thomas Schwinge, on Mon 28 Nov 2016 12:05:44 +0100, wrote:
> > > In file included from /usr/include/errno.h:35:0,
> > > from <stdin>:1:
> > > /usr/include/hurd.h: In function ‘int __hurd_fail(error_t)’:
> > > /usr/include/hurd.h:60:13: error: invalid conversion from ‘int’ to
> > > ‘error_t {aka __error_t_codes}’ [-fpermissive]
> > > err = EIEIO;
> > > ^
> > > /usr/include/hurd.h:64:13: error: invalid conversion from ‘int’ to
> > > ‘error_t {aka __error_t_codes}’ [-fpermissive]
> > > err = ENOMEM;
> > > ^
> > > /usr/include/hurd.h:68:13: error: invalid conversion from ‘int’ to
> > > ‘error_t {aka __error_t_codes}’ [-fpermissive]
> > > err = EINVAL;
>
> This remains to be fixed; can you please commit your patch?
I guess I misread my test results, I didn't have any fix for this, but
I have now commited it.
> > The HURD_MSGPORT_RPC seems missing casts between kern_error and error_t
> > indeed.
>
> Thanks for changing this code. Though, the explicit casts are also not
> completely ideal, as they now hide other kinds of problems, for example:
>
> $ echo -e '#include <errno.h>\n#include <hurd.h>\n#include
> <hurd/signal.h>\nvoid f(){ error_t err =
> HURD_MSGPORT_RPC(&err,&err,&err,&err); }' | gcc -D_GNU_SOURCE -x c - -S -o
> /dev/null -O2
>
> ... in C compilation mode now no longer diagnoses "error: incompatible
> types when assigning [...]". Oh well... ;-/
Sure, we can't catch everything anyway.
Samuel