Bug 27660 - abidw is confused by templated types with non-type parameters
Summary: abidw is confused by templated types with non-type parameters
Status: UNCONFIRMED
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: 2021-03-29 15:00 UTC by Giuliano Procida
Modified: 2021-12-02 13:43 UTC (History)
2 users (show)

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


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Giuliano Procida 2021-03-29 15:00:39 UTC
This issue was noticed during a bulk check for duplicate, conflicting type definitions in XML.

$ <tests/data/test-read-dwarf/PR22122-libftdc.so.abi egrep 'type-id-263|type-id-407|type-id-233' 
    <typedef-decl name='is_not_reference_tag' type-id='type-id-233' filepath='src/third_party/boost-1.60.0/boost/optional/optional.hpp' line='219' column='1' id='type-id-234'/>
      <typedef-decl name='false_' type-id='type-id-263' filepath='src/third_party/boost-1.60.0/boost/mpl/bool_fwd.hpp' line='25' column='1' id='type-id-233'/>
      <class-decl name='__anonymous_struct__' is-struct='yes' is-anonymous='yes' naming-typedef-id='type-id-233' visibility='default' is-declaration-only='yes' id='type-id-263'/>
      <typedef-decl name='true_' type-id='type-id-263' filepath='src/third_party/boost-1.60.0/boost/mpl/bool_fwd.hpp' line='24' column='1' id='type-id-407'/>
      <class-decl name='__anonymous_struct__' is-struct='yes' is-anonymous='yes' naming-typedef-id='type-id-407' visibility='default' is-declaration-only='yes' id='type-id-263'/>
      <class-decl name='__anonymous_struct__1' is-struct='yes' is-anonymous='yes' visibility='default' is-declaration-only='yes' id='type-id-263'/>

This seems to say:

234 is typedef 233 is_not_reference_tag
233 is typedef 263 false_
263 is a struct named by 233
407 is typedef 263 true_
263 is *also* a struct named by 407
263 is a struct

The Boost header in question contains:

template< bool C_ > struct bool_;

typedef bool_<true> true_;
typedef bool_<false> false_;
Comment 1 gprocida 2021-12-02 13:43:06 UTC
This is probably explained by https://sourceware.org/bugzilla/show_bug.cgi?id=26591#c11.