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

Attachment: pgpk9CgYJ68mW.pgp
Description: PGP signature

Reply via email to