Comparing gcc built libabigail.so.0 to llvm built libabigail.so.0 one of the commonly reported differences is like this: [C] 'method const std::vector<abigail::comparison::diff*, std::allocator<abigail::comparison::diff*> >& abigail::comparison::corpus_diff::children_nodes() const' at abg-comparison.h:2325:1 has some indirect sub-type changes: return type changed: in referenced type 'const std::vector<abigail::comparison::diff*, std::allocator<abigail::comparison::diff*> >': 'const std::vector<abigail::comparison::diff*, std::allocator<abigail::comparison::diff*> >' changed to 'const std::vector<abigail::comparison::diff *, std::allocator<abigail::comparison::diff *> >' The difference is nothing other than white space: const std::vector<abigail::comparison::diff*, std::allocator<abigail::comparison::diff*> > const std::vector<abigail::comparison::diff *, std::allocator<abigail::comparison::diff *> > clang puts a space between typename and the * while GCC does not. This should be a special case that is handled by libabigail. It is not an actual ABI difference.
This may be a duplicate of 28664 depending on how you frame it. In 28664 it has to do with the template value parameter type. In this case it is the representation of certain template type parameter. One way of considering the bugs is that both have to do with string comparison of the template typename vs. drilling down into the types being instantiated by the template. In that case they may be the same bug.