And now I'm getting a -Werror in glibc due to this: Flavio Cruz, le ven. 24 nov. 2023 16:30:40 -0500, a ecrit: > diff --git a/utils.c b/utils.c > index ec0f2d1..0d69cb2 100644 > --- a/utils.c > +++ b/utils.c > @@ -317,6 +317,9 @@ WriteFieldDeclPrim(FILE *file, const argument_t *arg, > if (it->itInLine && it->itVarArray) > { > ipc_type_t *btype = it->itElement; > + identifier_t original_type_name = (*tfunc)(btype); > + identifier_t inlined_type_name = btype->itUserlandPort ? > + "mach_port_name_inlined_t" : original_type_name; > > /* > * Build our own declaration for a varying array: > @@ -325,19 +328,27 @@ WriteFieldDeclPrim(FILE *file, const argument_t *arg, > */ > fprintf(file, "\t\tunion {\n"); > fprintf(file, "\t\t\t%s %s[%d];\n", > - (*tfunc)(btype), > + inlined_type_name, > arg->argMsgField, > it->itNumber/btype->itNumber);
i686-glibc-gnu-gcc /mnt/scratch/sthibault/build-glibc/build/compilers/i686-gnu/glibc/i686-gnu/hurd/hurd/msg_server.c -c -std=gnu11 -fgnu89-inline -g -O2 -Wall -Wwrite-strings -Wundef -Werror -fmerge-all-constants -frounding-math -fno-stack-protector -fno-common -Wp,-U_FORTIFY_SOURCE -Wno-parentheses -Wstrict-prototypes -Wold-style-definition -fmath-errno -fPIC -I../include -I/mnt/scratch/sthibault/build-glibc/build/compilers/i686-gnu/glibc/i686-gnu/hurd -I/mnt/scratch/sthibault/build-glibc/build/compilers/i686-gnu/glibc/i686-gnu -I../sysdeps/mach/hurd/i386 -I../sysdeps/mach/hurd/x86 -I../sysdeps/mach/hurd/i386/htl -I../sysdeps/mach/hurd/htl -I../sysdeps/hurd/htl -I../sysdeps/mach/htl -I../sysdeps/htl/include -I../sysdeps/htl -I../sysdeps/pthread -I../sysdeps/i386/htl -I../sysdeps/x86/htl -I../sysdeps/mach/hurd -I../sysdeps/gnu -I../sysdeps/unix/bsd -I../sysdeps/unix/inet -I../sysdeps/mach/i386 -I../sysdeps/mach/x86 -I../sysdeps/mach/include -I../sysdeps/mach -I../sysdeps/i386/i686/fpu/multiarch -I../sysdeps/i386/i686/fpu -I../sysdeps/i386/i686/multiarch -I../sysdeps/i386/i686 -I../sysdeps/i386/fpu -I../sysdeps/x86/fpu -I../sysdeps/i386 -I../sysdeps/x86/include -I../sysdeps/x86 -I../sysdeps/wordsize-32 -I../sysdeps/ieee754/float128 -I../sysdeps/ieee754/ldbl-96/include -I../sysdeps/ieee754/ldbl-96 -I../sysdeps/ieee754/dbl-64 -I../sysdeps/ieee754/flt-32 -I../sysdeps/hurd/include -I../sysdeps/hurd -I../sysdeps/unix -I../sysdeps/posix -I../sysdeps/ieee754 -I../sysdeps/generic -I../hurd -I/mnt/scratch/sthibault/build-glibc/build/compilers/i686-gnu/glibc/i686-gnu/hurd/ -I../mach -I/mnt/scratch/sthibault/build-glibc/build/compilers/i686-gnu/glibc/i686-gnu/mach/ -I.. -I../libio -I. -D_LIBC_REENTRANT -include /mnt/scratch/sthibault/build-glibc/build/compilers/i686-gnu/glibc/i686-gnu/libc-modules.h -DMODULE_NAME=libhurduser -include ../include/libc-symbols.h -DPIC -DSHARED -DTOP_NAMESPACE=glibc -o /mnt/scratch/sthibault/build-glibc/build/compilers/i686-gnu/glibc/i686-gnu/hurd/hurd/msg_server.os -MD -MP -MF /mnt/scratch/sthibault/build-glibc/build/compilers/i686-gnu/glibc/i686-gnu/hurd/hurd/msg_server.os.dt -MT /mnt/scratch/sthibault/build-glibc/build/compilers/i686-gnu/glibc/i686-gnu/hurd/hurd/msg_server.os /mnt/scratch/sthibault/build-glibc/build/compilers/i686-gnu/glibc/i686-gnu/hurd/hurd/msg_server.c: In function ‘_Xmsg_get_init_ports’: /mnt/scratch/sthibault/build-glibc/build/compilers/i686-gnu/glibc/i686-gnu/hurd/hurd/msg_server.c:685:16: error: assignment to ‘mach_port_t *’ {aka ‘unsigned int *’} from incompatible pointer type ‘mach_port_name_inlined_t *’ [-Werror=incompatible-pointer-types] 685 | portsP = OutP->ports; | ^ /mnt/scratch/sthibault/build-glibc/build/compilers/i686-gnu/glibc/i686-gnu/hurd/hurd/msg_server.c:695:20: error: comparison of distinct pointer types lacks a cast [-Werror] 695 | if (portsP != OutP->ports) { | ^~ /mnt/scratch/sthibault/build-glibc/build/compilers/i686-gnu/glibc/i686-gnu/hurd/hurd/msg_server.c: In function ‘_Xmsg_set_init_ports’: /mnt/scratch/sthibault/build-glibc/build/compilers/i686-gnu/glibc/i686-gnu/hurd/hurd/msg_server.c:789:154: error: pointer type mismatch in conditional expression [-Werror] 789 | OutP->RetCode = _S_msg_set_init_ports(In0P->Head.msgh_request_port, In0P->refport.name, (In0P->portsType.msgtl_header.msgt_inline) ? In0P->ports : In0P->portsP, In0P->portsType.msgtl_number); | ^ /mnt/scratch/sthibault/build-glibc/build/compilers/i686-gnu/glibc/i686-gnu/hurd/hurd/msg_server.c: In function ‘_Xmsg_get_dtable’: /mnt/scratch/sthibault/build-glibc/build/compilers/i686-gnu/glibc/i686-gnu/hurd/hurd/msg_server.c:1242:17: error: assignment to ‘mach_port_t *’ {aka ‘unsigned int *’} from incompatible pointer type ‘mach_port_name_inlined_t *’ [-Werror=incompatible-pointer-types] 1242 | dtableP = OutP->dtable; | ^ /mnt/scratch/sthibault/build-glibc/build/compilers/i686-gnu/glibc/i686-gnu/hurd/hurd/msg_server.c:1252:21: error: comparison of distinct pointer types lacks a cast [-Werror] 1252 | if (dtableP != OutP->dtable) { | ^~ /mnt/scratch/sthibault/build-glibc/build/compilers/i686-gnu/glibc/i686-gnu/hurd/hurd/msg_server.c: In function ‘_Xmsg_set_dtable’: /mnt/scratch/sthibault/build-glibc/build/compilers/i686-gnu/glibc/i686-gnu/hurd/hurd/msg_server.c:1346:152: error: pointer type mismatch in conditional expression [-Werror] 1346 | OutP->RetCode = _S_msg_set_dtable(In0P->Head.msgh_request_port, In0P->refport.name, (In0P->dtableType.msgtl_header.msgt_inline) ? In0P->dtable : In0P->dtableP, In0P->dtableType.msgtl_number); | ^ cc1: all warnings being treated as errors And indeed, I wonder how it's supposed to work? Not only the kernel provides servers, but also glibc. I was half-way in releasing the whole thing, but now I'm just thinking that considering the clock time, I'll just revert the whole thing. Samuel