[Bug default/19173] Abidiff doesn't detect symbol size change in library.

m.ostapenko at partner dot samsung.com sourceware-bugzilla@sourceware.org
Thu Jan 1 00:00:00 GMT 2015


--- Comment #5 from Maxim Ostapenko <m.ostapenko at partner dot samsung.com> ---
Indeed, this might be a clang's debug info bug. Consider:

max@max:/tmp$ cat libfoo.c 
#ifdef LONG
char buggy_symbol[10];
char buggy_symbol[5];

max@max:/tmp$ gcc libfoo.c -shared -fpic -o libfoo.so -g 
max@max:/tmp$ gcc libfoo.c -shared -fpic -o libfoo2.so -g -DLONG 
max@max:/tmp$ ~/install/libabigail/bin/abidiff   libfoo.so libfoo2.so
Functions changes summary: 0 Removed, 0 Changed, 0 Added function
Variables changes summary: 0 Removed, 1 Changed, 0 Added variable

1 Changed variable:

  [C]'char buggy_symbol[5]' was changed to 'char buggy_symbol[10]':
    type of variable changed:
     type name changed from 'char[5]' to 'char[10]'
     array type size changed from 40 to 80 bits:
     array type subrange 1 changed length from 5 to 10

This looks perfectly fine. But for clang the situation is different:

max@max:/tmp$ clang libfoo.c -shared -fpic -o libfoo.so -g
max@max:/tmp$ clang libfoo.c -shared -fpic -o libfoo2.so -g -DLONG 
max@max:/tmp$ ~/install/libabigail/bin/abidiff   libfoo.so libfoo2.so

So, should I close this as invalid because abidiff relies on a debug info here
and this is a clang's (?) debug info issue? Or maybe there is some other way to
detect this ABI breakage (e.g. by looking into symtab for symbol's size)?

You are receiving this mail because:
You are on the CC list for the bug.

More information about the Libabigail mailing list