Package: ttt Version: 1.7-3.4 Usertags: goto-cc During a rebuild of all Debian packages in a clean sid chroot (using cowbuilder and pbuilder) the build failed with the following error. Please note that we use our research compiler tool-chain (using tools from the cbmc package), which permits extended reporting on type inconsistencies at link time.
[...] gcc -o ttt ttt.o tk_ttt.o common.o display.o account.o net_names.o window.o node.o net_read.o -L/usr/lib/x86_64-linux-gnu -ltk8.5 -ltcl8.5 -L/usr/lib -lBLT24 -LNONE -lX11 -lpcap -ldl -lm -lnsl -ldl -lX11 error: conflicting function declarations "net_read" old definition in module tk_ttt file ttt_tk.h line 10 void (void *, signed int) new definition in module net_read file net_read.c line 183 void (signed int clientdata, signed int mask) Makefile:66: recipe for target 'ttt' failed make[1]: *** [ttt] Error 64 make[1]: Leaving directory '/srv/jenkins-slave/workspace/sid-goto-cc-ttt/ttt-1.7' debian/rules:42: recipe for target 'build-arch-stamp' failed make: *** [build-arch-stamp] Error 2 It seems that there are hacks around fixed Tcl/Tk interfaces in place, but unfortunately these will not work for any system where sizeof(void*)!=sizeof(int): here http://sources.debian.net/src/ttt/1.7-3.4/tk_ttt.c?hl=127#L127 the int sockfd is cast to void*, which may work alright, but the converse step is simply not going to happen as the compiler is generally unaware that the actual implementation of net_read.c only takes an int, rather than a void*. Consequently some subset of the bytes will be used as "clientdata" by the implementation of net_read, and on big endian effectively there is a guarantee that this will go entirely wrong. Best, Michael
pgpk9CgYJ68mW.pgp
Description: PGP signature