Bug 19023 - Type canonicalization is sensitive to class struct-ness
Summary: Type canonicalization is sensitive to class struct-ness
Status: RESOLVED FIXED
Alias: None
Product: libabigail
Classification: Unclassified
Component: default (show other bugs)
Version: unspecified
: P2 normal
Target Milestone: ---
Assignee: Dodji Seketeli
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-09-29 20:10 UTC by Ben Woodard
Modified: 2015-10-06 22:46 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build:
Last reconfirmed:


Attachments
file where this reproduces (708.87 KB, application/x-sharedlib)
2015-09-29 20:10 UTC, Ben Woodard
Details
another reproducer (391.58 KB, application/x-sharedlib)
2015-09-29 20:51 UTC, Ben Woodard
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Ben Woodard 2015-09-29 20:10:56 UTC
Created attachment 8645 [details]
file where this reproduces

hype356@ben:~/bin/abidw --abidiff /collab/usr/global/tools/order/spack/opt/chaos_5_x86_64_ib/gcc@4.4.7/gperftools@2.4/lib/libtcmalloc_and_profiler.so
Functions changes summary: 0 Removed, 1 Changed, 0 Added function
Variables changes summary: 0 Removed, 0 Changed, 0 Added variable

1 function with some indirect sub-type change:

  [C]'method HeapLeakChecker* HeapLeakChecker::GlobalChecker()' has some indirect sub-type changes:
    return type changed:
      in pointed to type 'class HeapLeakChecker':
        1 data member change:


When checking an ABI against itself it shouldn't fail. Some ABI information is being lost.
Comment 1 Ben Woodard 2015-09-29 20:17:39 UTC
A more extreme example is:

libvtkDomainsChemistry-6.1.so
Functions changes summary: 0 Removed, 2 Changed, 0 Added functions
Variables changes summary: 0 Removed, 0 Changed, 0 Added variable

2 functions with some indirect sub-type change:

  [C]'method void std::vector<vtkVector3f, std::allocator<vtkVector3f> >::_M_insert_aux(__gnu_cxx::__normal_iterator<vtkVector3f*, std::vector<vtkVector3f, std::alloc\
ator<vtkVector3f> > >, const vtkVector3f&)' has some indirect sub-type changes:
      parameter 1 of type 'class __gnu_cxx::__normal_iterator<vtkVector3f*, std::vector<vtkVector3f, std::allocator<vtkVector3f> > >' has sub-type changes:
            1 data member change:

    parameter 2 of type 'const vtkVector3f&' changed:
          in referenced type 'const vtkVector3f':

  [C]'method std::vector<vtkVector3f, std::allocator<vtkVector3f> >* vtkProteinRibbonFilter::Subdivide(int)' has some indirect sub-type changes:
      return type changed:
            in pointed to type 'class std::vector<vtkVector3f, std::allocator<vtkVector3f> >':
                    1 base class change:
                              'struct std::_Vector_base<vtkVector3f, std::allocator<vtkVector3f> >' changed:
                                          1 data member change:
                                                       type of 'std::_Vector_base<vtkVector3f, std::allocator<vtkVector3f> >::_Vector_impl std::_Vector_base<vtkVector\
3f, std::allocator<vtkVector3f> >::_M_impl' changed:
                                                                      3 data member changes:

-----

It is hard for me to tell if these are the same problem or a different one
Comment 2 Ben Woodard 2015-09-29 20:51:05 UTC
Created attachment 8646 [details]
another reproducer

This one produces more errors and is much smaller.
Comment 3 Dodji Seketeli 2015-10-06 22:46:04 UTC
This issue should now be fixed by commit https://sourceware.org/git/gitweb.cgi?p=libabigail.git;a=commit;h=0e3416e7e2f07faa1e2b3fc81380e39a0d40f9df in the master branch.

Thank you filling this problem report!