Bug#747972: Conflicting declarations of struct _GData

Michael Tautschnig mt at debian.org
Tue May 13 11:26:01 UTC 2014


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

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 859 bytes
Desc: not available
URL: <http://lists.alioth.debian.org/pipermail/pkg-gnome-maintainers/attachments/20140513/3ef80b48/attachment-0001.sig>


More information about the pkg-gnome-maintainers mailing list