Package: glib2.0
Version: 2.40.0-3
Usertags: goto-cc

During a rebuild of all packages in a clean sid chroot (and cowbuilder+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: gcc -shared  -fPIC -DPIC  .libs/libgobject_2_0_la-gatomicarray.o 
.libs/libgobject_2_0_la-gbinding.o .libs/libgobject_2_0_la-gboxed.o 
.libs/libgobject_2_0_la-gclosure.o .libs/libgobject_2_0_la-genums.o 
.libs/libgobject_2_0_la-gmarshal.o .libs/libgobject_2_0_la-gobject.o 
.libs/libgobject_2_0_la-gparam.o .libs/libgobject_2_0_la-gparamspecs.o 
.libs/libgobject_2_0_la-gsignal.o .libs/libgobject_2_0_la-gsourceclosure.o 
.libs/libgobject_2_0_la-gtype.o .libs/libgobject_2_0_la-gtypemodule.o 
.libs/libgobject_2_0_la-gtypeplugin.o .libs/libgobject_2_0_la-gvalue.o 
.libs/libgobject_2_0_la-gvaluearray.o .libs/libgobject_2_0_la-gvaluetransform.o 
.libs/libgobject_2_0_la-gvaluetypes.o   -Wl,-rpath 
-Wl,/srv/jenkins-slave/workspace/sid-goto-cc-glib2.0/glib2.0-2.40.0/debian/build/deb/glib/.libs
 ../glib/.libs/libglib-2.0.so -lffi  -O2 -Wl,-z -Wl,relro -Wl,-z -Wl,defs 
-Wl,--no-as-needed -Wl,-O1   -Wl,-soname -Wl,libgobject-2.0.so.0 -o 
.libs/libgobject-2.0.so.0.4000.0

error: conflicting function declarations "g_datalist_get_flags"
old definition in module gobject file 
/srv/jenkins-slave/workspace/sid-goto-cc-glib2.0/glib2.0-2.40.0/./glib/gdataset.h
 line 96
unsigned int (struct _GData **)
new definition in module gdataset file 
/srv/jenkins-slave/workspace/sid-goto-cc-glib2.0/glib2.0-2.40.0/./glib/gdataset.c
 line 1225
unsigned int (struct _GData **datalist)
Makefile:1116: recipe for target 'libgobject-2.0.la' failed
make[5]: *** [libgobject-2.0.la] Error 64
make[5]: Leaving directory 
'/srv/jenkins-slave/workspace/sid-goto-cc-glib2.0/glib2.0-2.40.0/debian/build/deb/gobject'
Makefile:1621: recipe for target 'all-recursive' failed

While the above declarations appear perfectly consistent, closer inspection via
the diagnostics provided by the tool yields the following details:

reason for conflict in types listed below (struct/struct):
struct _GData {
  unsigned int n_qdatas;
  unsigned int <<padding>>;
  struct _QData * qdatas;
}
struct _GData {
  unsigned int len;
  unsigned int alloc;
  GDataElt data[1];
}

The former struct is defined in gobject/gtype.c, whereas the latter stems from
glib/gdataset.c. Depending on the alignment used on the platform, these
structures may or may not be compatible: on amd64 the padding will fill in for
the alloc field, which may or may not be the case on other architectures.

Best,
Michael

Attachment: pgpYgTv2oll01.pgp
Description: PGP signature

Reply via email to