[0/4] Support C++ pointer-to-member types

Message ID 87v89hncoo.fsf@redhat.com
Headers
Series Support C++ pointer-to-member types |

Message

Dodji Seketeli Dec. 1, 2023, 3:51 p.m. UTC
  Hello,

This patch is in response to a feature enhancement request filed at
https://sourceware.org/bugzilla/show_bug.cgi?id=30260.

The first patch is a preparatory patch that improves how type names are
pretty-printed, especially derived types like pointers and arrays.

The second patch really is the patch that adds the support for C++
pointer-to-member types.

The last two patches bump the ABIXML format version and libabigail
SONAME due to the changes made to the ABIXML format and to the ABI of
libabigail itself.

Dodji Seketeli (4):
  Improve type naming
  Bug 30260 - Support pointer-to-member type
  Bump abixml version to 2.3
  Bump LIBABIGAIL_SO_CURRENT version to 4

 configure.ac                                  |     4 +-
 include/abg-comparison.h                      |    62 +
 include/abg-fwd.h                             |    55 +-
 include/abg-ir.h                              |    78 +-
 include/abg-reporter.h                        |    18 +
 src/abg-comparison-priv.h                     |    13 +
 src/abg-comparison.cc                         |   161 +
 src/abg-default-reporter.cc                   |    94 +
 src/abg-dwarf-reader.cc                       |    91 +-
 src/abg-ir.cc                                 |  1860 +-
 src/abg-leaf-reporter.cc                      |    15 +
 src/abg-reader.cc                             |    85 +
 src/abg-writer.cc                             |   106 +-
 tests/data/Makefile.am                        |    29 +
 .../test0-fn-changed-report-0.txt             |     4 +-
 .../test0-fn-changed-report-2.txt             |     4 +-
 .../test1-fn-removed-report-0.txt             |     2 +-
 .../test3-fn-removed-report-0.txt             |     2 +-
 .../PR30048-test-2-report-1.txt               |    78 +-
 .../PR30048-test-report-0.txt                 |    14 +-
 .../PR30329/PR30329-report-1.txt              |     4 +-
 .../libsdl/libsdl-1.2.60-1.2.64-report.txt    |    10 +-
 .../test1-ada-subrange-report-1.txt           |     4 +-
 .../test1-ada-subrange-report-2.txt           |     4 +-
 .../test-ptr-to-mbr1-output-1.txt             |    18 +
 .../pointer-to-member/test-ptr-to-mbr1-v0.cc  |     7 +
 .../pointer-to-member/test-ptr-to-mbr1-v0.o   |   Bin 0 -> 2624 bytes
 .../pointer-to-member/test-ptr-to-mbr1-v1.cc  |     6 +
 .../pointer-to-member/test-ptr-to-mbr1-v1.o   |   Bin 0 -> 2656 bytes
 .../test-ptr-to-mbr2-output-1.txt             |    13 +
 .../pointer-to-member/test-ptr-to-mbr2-v0.cc  |     7 +
 .../pointer-to-member/test-ptr-to-mbr2-v0.o   |   Bin 0 -> 2624 bytes
 .../pointer-to-member/test-ptr-to-mbr2-v1.cc  |     6 +
 .../pointer-to-member/test-ptr-to-mbr2-v1.o   |   Bin 0 -> 2624 bytes
 .../test-ptr-to-mbr3-output-1.txt             |    20 +
 .../pointer-to-member/test-ptr-to-mbr3-v0.cc  |     7 +
 .../pointer-to-member/test-ptr-to-mbr3-v0.o   |   Bin 0 -> 2624 bytes
 .../pointer-to-member/test-ptr-to-mbr3-v1.cc  |     6 +
 .../pointer-to-member/test-ptr-to-mbr3-v1.o   |   Bin 0 -> 2664 bytes
 .../test-ptr-to-mbr4-output-1.txt             |    12 +
 .../pointer-to-member/test-ptr-to-mbr4-v0.cc  |     8 +
 .../pointer-to-member/test-ptr-to-mbr4-v0.o   |   Bin 0 -> 2688 bytes
 .../pointer-to-member/test-ptr-to-mbr4-v1.cc  |     7 +
 .../pointer-to-member/test-ptr-to-mbr4-v1.o   |   Bin 0 -> 2696 bytes
 .../test-ptr-to-mbr5-output-1.txt             |     0
 .../pointer-to-member/test-ptr-to-mbr5-v0.cc  |     8 +
 .../pointer-to-member/test-ptr-to-mbr5-v0.o   |   Bin 0 -> 2640 bytes
 .../pointer-to-member/test-ptr-to-mbr5-v1.cc  |     7 +
 .../pointer-to-member/test-ptr-to-mbr5-v1.o   |   Bin 0 -> 2648 bytes
 .../qualifier-typedef-array-report-1.txt      |     8 +-
 .../test-fun-param-report.txt                 |     2 +-
 .../test-ld-2.28-210.so--ld-2.28-211.so.txt   |     8 +-
 .../test-leaf-fun-type-report.txt             |     4 +-
 .../test-leaf-more-report.txt                 |     6 +-
 .../test-leaf-peeling-report.txt              |     4 +-
 .../test-leaf-stats-report.txt                |     2 +-
 .../test-net-change-report0.txt               |     6 +-
 .../test-net-change-report2.txt               |     6 +-
 .../test2-filtered-removed-fns-report0.txt    |     2 +-
 .../test-abidiff/test-PR18791-report0.txt     |     8 +-
 .../data/test-abidiff/test-crc-report-0-1.txt |     2 +-
 .../data/test-abidiff/test-crc-report-1-0.txt |     2 +-
 .../data/test-abidiff/test-crc-report-1-2.txt |     2 +-
 .../PR29443-missing-xx.o.annotated.abi        |     2 +-
 tests/data/test-annotate/libtest23.so.abi     |     2 +-
 .../test-annotate/libtest24-drop-fns-2.so.abi |     2 +-
 .../test-annotate/libtest24-drop-fns.so.abi   |     2 +-
 .../test-anonymous-members-0.o.abi            |     2 +-
 .../test-pointer-to-member-1.o.annotated.abi  |    99 +
 tests/data/test-annotate/test0.abi            |     2 +-
 tests/data/test-annotate/test1.abi            |     2 +-
 .../data/test-annotate/test13-pr18894.so.abi  |   308 +-
 .../data/test-annotate/test14-pr18893.so.abi  |   322 +-
 .../data/test-annotate/test15-pr18892.so.abi  |  2870 +-
 .../data/test-annotate/test17-pr19027.so.abi  |  3102 +-
 ...st18-pr19037-libvtkRenderingLIC-6.1.so.abi |    38 +-
 ...19-pr19023-libtcmalloc_and_profiler.so.abi |  1618 +-
 tests/data/test-annotate/test2.so.abi         |     2 +-
 ...st20-pr19025-libvtkParallelCore-6.1.so.abi |    76 +-
 .../data/test-annotate/test21-pr19092.so.abi  |   276 +-
 tests/data/test-annotate/test3.so.abi         |     2 +-
 tests/data/test-annotate/test4.so.abi         |     2 +-
 tests/data/test-annotate/test5.o.abi          |     2 +-
 tests/data/test-annotate/test6.so.abi         |     2 +-
 tests/data/test-annotate/test7.so.abi         |    26 +-
 .../test8-qualified-this-pointer.so.abi       |     2 +-
 .../PR25058-liblttng-ctl-report-1.txt         |    40 +-
 .../test-23-diff-arch-report-0.txt            |     2 +-
 .../test18-alias-sym-report-0.txt             |     2 +-
 .../test19-soname-report-0.txt                |     2 +-
 .../test24-added-fn-parms-report-0.txt        |     2 +-
 .../test32-fnptr-changes-report-0.txt         |    20 +-
 .../test33-fnref-changes-report-0.txt         |    20 +-
 .../test41-PR20476-hidden-report-0.txt        |     2 +-
 tests/data/test-diff-dwarf/test5-report.txt   |     2 +-
 .../test-PR26739-2-report-0.txt               |     2 +-
 ...st26-qualified-redundant-node-report-0.txt |     2 +-
 ...st26-qualified-redundant-node-report-1.txt |     4 +-
 .../test30-pr18904-rvalueref-report0.txt      |    80 +-
 .../test30-pr18904-rvalueref-report1.txt      |    80 +-
 .../test30-pr18904-rvalueref-report2.txt      |    80 +-
 .../test31-pr18535-libstdc++-report-0.txt     |    18 +-
 .../test31-pr18535-libstdc++-report-1.txt     |    18 +-
 .../test35-pr18754-no-added-syms-report-0.txt |    62 +-
 .../test35-pr18754-no-added-syms-report-1.txt |    12 +-
 .../data/test-diff-filter/test41-report-0.txt |     2 +-
 tests/data/test-diff-filter/test6-report.txt  |     2 +-
 tests/data/test-diff-filter/test7-report.txt  |     2 +-
 .../gmp-6.x.x86_64-report-0.txt               |     4 +-
 .../test-diff-pkg-ctf/test-rpm-report-0.txt   |     2 +-
 ...x86_64--2.24.2-30.fc30.x86_64-report-0.txt |     4 +-
 .../PR24690/PR24690-report-0.txt              |    10 +-
 ...-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt |     6 +-
 ...pt-compat-4.4.18-3.el9.x86_64-report-1.txt |     2 +-
 ...l7.x86_64-0.12.8-1.el7.x86_64-report-2.txt |   124 +-
 ...l7.x86_64-0.12.8-1.el7.x86_64-report-3.txt |     2 +-
 ...bb-4.3-3.20141204.fc23.x86_64-report-0.txt |    32 +-
 ...bb-4.3-3.20141204.fc23.x86_64-report-1.txt |     8 +-
 .../test0-type-suppr-report-0.txt             |     2 +-
 .../test0-type-suppr-report-3.txt             |     2 +-
 .../test0-type-suppr-report-5.txt             |     2 +-
 .../test0-type-suppr-report-7.txt             |     2 +-
 .../test15-suppr-added-fn-report-0.txt        |     2 +-
 .../test15-suppr-added-fn-report-2.txt        |     2 +-
 .../test15-suppr-added-fn-report-5.txt        |     2 +-
 .../test16-suppr-removed-fn-report-0.txt      |     2 +-
 .../test16-suppr-removed-fn-report-3.txt      |     2 +-
 .../test16-suppr-removed-fn-report-5.txt      |     2 +-
 .../test27-add-aliased-function-report-0.txt  |     2 +-
 .../test27-add-aliased-function-report-3.txt  |     2 +-
 .../test27-add-aliased-function-report-4.txt  |     2 +-
 .../test28-add-aliased-function-report-0.txt  |     2 +-
 .../test28-add-aliased-function-report-1.txt  |     2 +-
 .../test28-add-aliased-function-report-2.txt  |     2 +-
 .../test28-add-aliased-function-report-4.txt  |     2 +-
 .../test28-add-aliased-function-report-5.txt  |     2 +-
 .../data/test-diff-suppr/test30-report-0.txt  |     2 +-
 .../data/test-diff-suppr/test32-report-0.txt  |     4 +-
 .../data/test-diff-suppr/test32-report-1.txt  |     2 +-
 ...t44-suppr-sym-name-not-regexp-report-1.txt |     2 +-
 ...-vte291-0.39.90-1.fc22.x86_64-report-0.txt |     2 +-
 tests/data/test-read-btf/test0.o.abi          |     2 +-
 tests/data/test-read-btf/test1.o.abi          |     2 +-
 .../test-read-ctf/PR27700/test-PR27700.abi    |     2 +-
 tests/data/test-read-ctf/test-PR26568-1.o.abi |     2 +-
 tests/data/test-read-ctf/test-PR26568-2.o.abi |     2 +-
 tests/data/test-read-ctf/test-alias.o.abi     |     2 +-
 .../test-ambiguous-struct-A.o.hash.abi        |     2 +-
 .../test-ambiguous-struct-B.o.hash.abi        |     2 +-
 .../test-read-ctf/test-anonymous-fields.o.abi |     2 +-
 .../test-read-ctf/test-array-mdimension.abi   |     2 +-
 .../test-read-ctf/test-array-of-pointers.abi  |     2 +-
 tests/data/test-read-ctf/test-array-size.abi  |     2 +-
 .../data/test-read-ctf/test-bitfield-enum.abi |     2 +-
 tests/data/test-read-ctf/test-bitfield.abi    |     2 +-
 tests/data/test-read-ctf/test-callback.abi    |     2 +-
 tests/data/test-read-ctf/test-callback2.abi   |     2 +-
 .../test-conflicting-type-syms-a.o.hash.abi   |     2 +-
 .../test-conflicting-type-syms-b.o.hash.abi   |     2 +-
 tests/data/test-read-ctf/test-const-array.abi |     2 +-
 .../test-read-ctf/test-dynamic-array.o.abi    |     2 +-
 .../test-read-ctf/test-enum-many.o.hash.abi   |     2 +-
 .../test-read-ctf/test-enum-symbol.o.hash.abi |     2 +-
 tests/data/test-read-ctf/test-enum.o.abi      |     2 +-
 tests/data/test-read-ctf/test-fallback.abi    |     2 +-
 .../test-read-ctf/test-forward-type-decl.abi  |     2 +-
 .../test-functions-declaration.abi            |     2 +-
 .../data/test-read-ctf/test-linux-module.abi  |     2 +-
 tests/data/test-read-ctf/test-list-struct.abi |     2 +-
 tests/data/test-read-ctf/test0.abi            |     2 +-
 tests/data/test-read-ctf/test0.hash.abi       |     2 +-
 tests/data/test-read-ctf/test1.so.abi         |     2 +-
 tests/data/test-read-ctf/test1.so.hash.abi    |     2 +-
 tests/data/test-read-ctf/test2.so.abi         |     2 +-
 tests/data/test-read-ctf/test2.so.hash.abi    |     2 +-
 tests/data/test-read-ctf/test3.so.abi         |     2 +-
 tests/data/test-read-ctf/test3.so.hash.abi    |     2 +-
 tests/data/test-read-ctf/test4.so.abi         |     2 +-
 tests/data/test-read-ctf/test4.so.hash.abi    |     2 +-
 tests/data/test-read-ctf/test5.o.abi          |     2 +-
 tests/data/test-read-ctf/test7.o.abi          |     2 +-
 tests/data/test-read-ctf/test8.o.abi          |     2 +-
 tests/data/test-read-ctf/test9.o.abi          |    16 +-
 .../PR22015-libboost_iostreams.so.abi         |  2731 +-
 .../test-read-dwarf/PR22122-libftdc.so.abi    |   332 +-
 .../PR24378-fn-is-not-scope.abi               |     2 +-
 .../data/test-read-dwarf/PR25007-sdhci.ko.abi |  1368 +-
 .../PR25042-libgdbm-clang-dwarf5.so.6.0.0.abi |     2 +-
 .../test-read-dwarf/PR26261/PR26261-exe.abi   |     2 +-
 .../test-read-dwarf/PR27700/test-PR27700.abi  |     2 +-
 .../PR28584/PR28584-smv.clang.o.abi           |     2 +-
 .../test-read-dwarf/PR29443-missing-xx.o.abi  |     2 +-
 .../PR29692-kdelibs3-libkjava.so.1.0.0.abi    |     2 +-
 tests/data/test-read-dwarf/libtest23.so.abi   |     2 +-
 .../libtest24-drop-fns-2.so.abi               |     2 +-
 .../test-read-dwarf/libtest24-drop-fns.so.abi |     2 +-
 .../data/test-read-dwarf/test-PR26568-1.o.abi |     2 +-
 .../data/test-read-dwarf/test-PR26568-2.o.abi |     2 +-
 tests/data/test-read-dwarf/test-fallback.abi  |     2 +-
 .../test-read-dwarf/test-libaaudio.so.abi     |    28 +-
 .../test-read-dwarf/test-libandroid.so.abi    |  1222 +-
 .../test-pointer-to-member-1.cc               |    30 +
 .../test-pointer-to-member-1.o                |   Bin 0 -> 4360 bytes
 .../test-pointer-to-member-1.o.abi            |    59 +
 .../test-suppressed-alias.o.abi               |     2 +-
 tests/data/test-read-dwarf/test0.abi          |     2 +-
 tests/data/test-read-dwarf/test0.hash.abi     |     2 +-
 tests/data/test-read-dwarf/test1.abi          |     2 +-
 tests/data/test-read-dwarf/test1.hash.abi     |     2 +-
 .../test-read-dwarf/test10-pr18818-gcc.so.abi |     2 +-
 .../test-read-dwarf/test11-pr18828.so.abi     |  5562 ++--
 .../test-read-dwarf/test12-pr18844.so.abi     | 24157 ++++++++--------
 .../test-read-dwarf/test13-pr18894.so.abi     |   166 +-
 .../test-read-dwarf/test14-pr18893.so.abi     |    22 +-
 .../test-read-dwarf/test15-pr18892.so.abi     |  1608 +-
 .../test-read-dwarf/test16-pr18904.so.abi     |   646 +-
 .../test-read-dwarf/test17-pr19027.so.abi     |  2792 +-
 ...st18-pr19037-libvtkRenderingLIC-6.1.so.abi |     2 +-
 ...19-pr19023-libtcmalloc_and_profiler.so.abi |   952 +-
 tests/data/test-read-dwarf/test2.so.abi       |     2 +-
 tests/data/test-read-dwarf/test2.so.hash.abi  |     2 +-
 ...st20-pr19025-libvtkParallelCore-6.1.so.abi |     2 +-
 .../test-read-dwarf/test21-pr19092.so.abi     |    50 +-
 .../test22-pr19097-libstdc++.so.6.0.17.so.abi |   564 +-
 .../test-read-dwarf/test3-alias-1.so.hash.abi |     2 +-
 .../test-read-dwarf/test3-alias-2.so.hash.abi |     2 +-
 .../test-read-dwarf/test3-alias-3.so.hash.abi |     2 +-
 .../test-read-dwarf/test3-alias-4.so.hash.abi |     2 +-
 tests/data/test-read-dwarf/test3.so.abi       |     2 +-
 tests/data/test-read-dwarf/test3.so.hash.abi  |     2 +-
 tests/data/test-read-dwarf/test4.so.abi       |     2 +-
 tests/data/test-read-dwarf/test4.so.hash.abi  |     2 +-
 tests/data/test-read-dwarf/test5.o.abi        |     2 +-
 tests/data/test-read-dwarf/test5.o.hash.abi   |     2 +-
 tests/data/test-read-dwarf/test6.so.abi       |     2 +-
 tests/data/test-read-dwarf/test6.so.hash.abi  |     2 +-
 tests/data/test-read-dwarf/test7.so.abi       |    16 +-
 tests/data/test-read-dwarf/test7.so.hash.abi  |    12 +-
 .../test8-qualified-this-pointer.so.abi       |     2 +-
 .../test8-qualified-this-pointer.so.hash.abi  |     2 +-
 .../test9-pr18818-clang.so.abi                |     2 +-
 tests/data/test-read-write/test-crc.xml       |     2 +-
 tests/data/test-read-write/test26.xml         |     2 +-
 tests/data/test-read-write/test27.xml         |     2 +-
 .../test28-without-std-fns-ref.xml            |     2 +-
 .../test28-without-std-vars-ref.xml           |     2 +-
 tests/test-abidiff-exit.cc                    |    75 +
 tests/test-annotate.cc                        |     5 +
 tests/test-read-dwarf.cc                      |     9 +
 249 files changed, 28856 insertions(+), 26184 deletions(-)
 create mode 100644 tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr1-output-1.txt
 create mode 100644 tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr1-v0.cc
 create mode 100644 tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr1-v0.o
 create mode 100644 tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr1-v1.cc
 create mode 100644 tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr1-v1.o
 create mode 100644 tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr2-output-1.txt
 create mode 100644 tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr2-v0.cc
 create mode 100644 tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr2-v0.o
 create mode 100644 tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr2-v1.cc
 create mode 100644 tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr2-v1.o
 create mode 100644 tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr3-output-1.txt
 create mode 100644 tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr3-v0.cc
 create mode 100644 tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr3-v0.o
 create mode 100644 tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr3-v1.cc
 create mode 100644 tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr3-v1.o
 create mode 100644 tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr4-output-1.txt
 create mode 100644 tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr4-v0.cc
 create mode 100644 tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr4-v0.o
 create mode 100644 tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr4-v1.cc
 create mode 100644 tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr4-v1.o
 create mode 100644 tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr5-output-1.txt
 create mode 100644 tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr5-v0.cc
 create mode 100644 tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr5-v0.o
 create mode 100644 tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr5-v1.cc
 create mode 100644 tests/data/test-abidiff-exit/pointer-to-member/test-ptr-to-mbr5-v1.o
 create mode 100644 tests/data/test-annotate/test-pointer-to-member-1.o.annotated.abi
 create mode 100644 tests/data/test-read-dwarf/test-pointer-to-member-1.cc
 create mode 100644 tests/data/test-read-dwarf/test-pointer-to-member-1.o
 create mode 100644 tests/data/test-read-dwarf/test-pointer-to-member-1.o.abi