Package: ace-of-penguins Version: 1.3-13 Severity: wishlist 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.
[...]
libtool: link: cc -g -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4
-Wformat -Werror=format-security -Wall -D_FILE_OFFSET_BITS=64
-D_FORTIFY_SOURCE=2 -fPIE -pie -Wl,-z -Wl,relro -Wl,-z -Wl,now -Wl,--as-needed
-Wl,--as-needed -g -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4
-Wformat -Werror=format-security -Wall -D_FILE_OFFSET_BITS=64 -fPIE -pie -Wl,-z
-Wl,relro -Wl,-z -Wl,now -Wl,--as-needed -Wl,--as-needed -o .libs/canfield
canfield.o canfield-img.o ../lib/.libs/libcards.so -lpng -lz -lX11 -lm
error: conflicting types for variable "appimglib_imagelib"
old definition in module canfield file ./../lib/cards.h line 63
struct image_list []
new definition in module canfield-img file canfield-img.c line 152
struct image_list [2l]
reason for conflict in types listed below (struct/struct):
composite type component counts differ (1/8)
struct image_list {
signed int filler;
}
struct image_list {
char * name;
signed int across;
signed int down;
struct image *[3l] subimage;
struct image_list * next;
struct image * (*)(struct image_list *list, signed int type, signed int
width, signed int height) synth_func;
signed int synth_flags;
unsigned int $pad0;
}
Makefile:489: recipe for target 'canfield' failed
make[4]: *** [canfield] Error 64
make[4]: Leaving directory
'/srv/jenkins-slave/workspace/sid-goto-cc-ace-of-penguins/ace-of-penguins-1.3/games'
Makefile:404: recipe for target 'all' failed
make[3]: *** [all] Error 2
While hiding the implementation of image_list surely makes sense, it should be
done in full rather than faking a different struct type. As such, simply
omitting lines 60 to 62, i.e., the definition of the struct using "filler", here
http://sources.debian.net/src/ace-of-penguins/1.3-13/lib/cards.h?hl=63#L59
will make sure the compiler is not tricked into making wrong assumptions about
alignment or element offsets.
Best,
Michael
pgpFMZrFv8_Vr.pgp
Description: PGP signature

