public inbox for libabigail@sourceware.org
 help / color / mirror / Atom feed
* [PATCH 1/3] Improve and stabilise sort of member functions
@ 2020-10-29 12:20 Matthias Maennich
  2020-10-29 12:20 ` [PATCH 2/3] Improve enum synthetic type names Matthias Maennich
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Matthias Maennich @ 2020-10-29 12:20 UTC (permalink / raw)
  To: libabigail; +Cc: dodji, gprocida, kernel-team, maennich

From: Giuliano Procida <gprocida@google.com>

The functor virtual_member_function_less_than did not take into
account linkage name which can be the only difference when multiple
destructors with differing mangled names are present.

This change adds a check for linkage names and also flattens the
control flow in the comparison method to make the logic clearer.

Lastly, this change also uses std::stable_sort, in case all that
remains is insertion order.

	* src/abg-ir.cc
	(virtual_member_function_less_than::operator()): Name
	temporaries like offsets and symbols to reduce repetition;
	test each pair of elements (including symbol presence) and
	return immediately if there's a difference; add a comparison
	of linkage name just after comparing symbol names.
	(sort_virtual_member_functions): Use stable_sort instead of
	sort.
	* tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi:
	Update with new ordering of member functions.
	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
	Likewise.

Signed-off-by: Giuliano Procida <gprocida@google.com>
Signed-off-by: Matthias Maennich <maennich@google.com>
---
 src/abg-ir.cc                                 | 82 +++++++++----------
 .../PR22015-libboost_iostreams.so.abi         |  8 +-
 .../test22-pr19097-libstdc++.so.6.0.17.so.abi | 78 +++++++++---------
 3 files changed, 80 insertions(+), 88 deletions(-)

diff --git a/src/abg-ir.cc b/src/abg-ir.cc
index e491528922d3..29711db6057c 100644
--- a/src/abg-ir.cc
+++ b/src/abg-ir.cc
@@ -20487,53 +20487,45 @@ struct virtual_member_function_less_than
     ABG_ASSERT(get_member_function_is_virtual(f));
     ABG_ASSERT(get_member_function_is_virtual(s));
 
-    if (get_member_function_vtable_offset(f)
-	== get_member_function_vtable_offset(s))
+    ssize_t f_offset = get_member_function_vtable_offset(f);
+    ssize_t s_offset = get_member_function_vtable_offset(s);
+    if (f_offset != s_offset) return f_offset < s_offset;
+
+    string fn, sn;
+
+    // If the functions have symbols, then compare their symbol-id
+    // string.
+    elf_symbol_sptr f_sym = f.get_symbol();
+    elf_symbol_sptr s_sym = s.get_symbol();
+    if ((!f_sym) != (!s_sym)) return !f_sym;
+    if (f_sym && s_sym)
       {
-	string fn, sn;
-
-	// If the functions have symbols, then compare their symbol-id
-	// string.
-	if (f.get_symbol() && s.get_symbol())
-	  {
-	    fn = f.get_symbol()->get_id_string();
-	    sn = s.get_symbol()->get_id_string();
-	  }
-	else if (f.get_symbol())
-	  return false;
-	else if (s.get_symbol())
-	  return true;
-	else
-	  {
-	    // None of the functions have symbols, so compare their
-	    // pretty representation.
-	    if (fn.empty())
-	      {
-		fn = f.get_pretty_representation();
-		sn = s.get_pretty_representation();
-	      }
-	  }
-
-	/// If it's just the file paths that are different then sort
-	/// them too.
-	if (fn == sn)
-	  {
-	    string fn_filepath, sn_filepath;
-	    unsigned line = 0, column = 0;
-	    location fn_loc = f.get_location(), sn_loc = s.get_location();
-	    if (fn_loc)
-	      fn_loc.expand(fn_filepath, line, column);
-	    if (sn_loc)
-	      sn_loc.expand(sn_filepath, line, column);
-
-	    if (!fn_filepath.empty() && !sn_filepath.empty())
-	      return fn_filepath < sn_filepath;
-	  }
-	return fn < sn;
+	fn = f_sym->get_id_string();
+	sn = s_sym->get_id_string();
+	if (fn != sn) return fn < sn;
       }
 
-    return (get_member_function_vtable_offset(f)
-	    < get_member_function_vtable_offset(s));
+    // Try the linkage names (important for destructors).
+    fn = f.get_linkage_name();
+    sn = s.get_linkage_name();
+    if (fn != sn) return fn < sn;
+
+    // None of the functions have symbols or linkage names that
+    // distinguish them, so compare their pretty representation.
+    fn = f.get_pretty_representation();
+    sn = s.get_pretty_representation();
+    if (fn != sn) return fn < sn;
+
+    /// If it's just the file paths that are different then sort them
+    /// too.
+    string fn_filepath, sn_filepath;
+    unsigned line = 0, column = 0;
+    location fn_loc = f.get_location(), sn_loc = s.get_location();
+    if (fn_loc)
+      fn_loc.expand(fn_filepath, line, column);
+    if (sn_loc)
+      sn_loc.expand(sn_filepath, line, column);
+    return fn_filepath < sn_filepath;
   }
 
   /// The less than operator.  First, it sorts the methods by their
@@ -20560,7 +20552,7 @@ static void
 sort_virtual_member_functions(class_decl::member_functions& mem_fns)
 {
   virtual_member_function_less_than lt;
-  std::sort(mem_fns.begin(), mem_fns.end(), lt);
+  std::stable_sort(mem_fns.begin(), mem_fns.end(), lt);
 }
 
 /// Add a member function to the current instance of @ref class_or_union.
diff --git a/tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi b/tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi
index c4b1e75499f2..00921cd53016 100644
--- a/tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi
+++ b/tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi
@@ -1031,13 +1031,13 @@
             </function-decl>
           </member-function>
           <member-function access='public' destructor='yes' vtable-offset='0'>
-            <function-decl name='~clone_impl' mangled-name='_ZN5boost16exception_detail10clone_implINS0_19error_info_injectorINSt8ios_base7failureB5cxx11EEEED1Ev' filepath='src/third_party/boost-1.60.0/boost/exception/exception.hpp' line='462' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <function-decl name='~clone_impl' mangled-name='_ZN5boost16exception_detail10clone_implINS0_19error_info_injectorINSt8ios_base7failureB5cxx11EEEED0Ev' filepath='src/third_party/boost-1.60.0/boost/exception/exception.hpp' line='462' column='1' visibility='default' binding='global' size-in-bits='64'>
               <parameter type-id='type-id-76' is-artificial='yes'/>
               <return type-id='type-id-18'/>
             </function-decl>
           </member-function>
           <member-function access='public' destructor='yes' vtable-offset='0'>
-            <function-decl name='~clone_impl' mangled-name='_ZN5boost16exception_detail10clone_implINS0_19error_info_injectorINSt8ios_base7failureB5cxx11EEEED0Ev' filepath='src/third_party/boost-1.60.0/boost/exception/exception.hpp' line='462' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <function-decl name='~clone_impl' mangled-name='_ZN5boost16exception_detail10clone_implINS0_19error_info_injectorINSt8ios_base7failureB5cxx11EEEED1Ev' filepath='src/third_party/boost-1.60.0/boost/exception/exception.hpp' line='462' column='1' visibility='default' binding='global' size-in-bits='64'>
               <parameter type-id='type-id-76' is-artificial='yes'/>
               <return type-id='type-id-18'/>
             </function-decl>
@@ -1072,13 +1072,13 @@
             </function-decl>
           </member-function>
           <member-function access='public' destructor='yes' vtable-offset='0'>
-            <function-decl name='~error_info_injector' mangled-name='_ZN5boost16exception_detail19error_info_injectorINSt8ios_base7failureB5cxx11EED2Ev' filepath='src/third_party/boost-1.60.0/boost/exception/exception.hpp' line='336' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <function-decl name='~error_info_injector' mangled-name='_ZN5boost16exception_detail19error_info_injectorINSt8ios_base7failureB5cxx11EED0Ev' filepath='src/third_party/boost-1.60.0/boost/exception/exception.hpp' line='336' column='1' visibility='default' binding='global' size-in-bits='64'>
               <parameter type-id='type-id-80' is-artificial='yes'/>
               <return type-id='type-id-18'/>
             </function-decl>
           </member-function>
           <member-function access='public' destructor='yes' vtable-offset='0'>
-            <function-decl name='~error_info_injector' mangled-name='_ZN5boost16exception_detail19error_info_injectorINSt8ios_base7failureB5cxx11EED0Ev' filepath='src/third_party/boost-1.60.0/boost/exception/exception.hpp' line='336' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <function-decl name='~error_info_injector' mangled-name='_ZN5boost16exception_detail19error_info_injectorINSt8ios_base7failureB5cxx11EED2Ev' filepath='src/third_party/boost-1.60.0/boost/exception/exception.hpp' line='336' column='1' visibility='default' binding='global' size-in-bits='64'>
               <parameter type-id='type-id-80' is-artificial='yes'/>
               <return type-id='type-id-18'/>
             </function-decl>
diff --git a/tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi b/tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi
index b6faf148d63e..0c3611ebbf7b 100644
--- a/tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi
+++ b/tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi
@@ -4518,14 +4518,14 @@
           </function-decl>
         </member-function>
         <member-function access='private' destructor='yes' vtable-offset='-1'>
-          <function-decl name='~__forced_unwind' mangled-name='_ZN10__cxxabiv115__forced_unwindD2Ev' filepath='../../.././libstdc++-v3/libsupc++/eh_exception.cc' line='35' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <function-decl name='~__forced_unwind' mangled-name='_ZN10__cxxabiv115__forced_unwindD0Ev' filepath='../../.././libstdc++-v3/libsupc++/eh_exception.cc' line='35' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-98' is-artificial='yes'/>
             <parameter type-id='type-id-6' is-artificial='yes'/>
             <return type-id='type-id-5'/>
           </function-decl>
         </member-function>
         <member-function access='private' destructor='yes' vtable-offset='-1'>
-          <function-decl name='~__forced_unwind' mangled-name='_ZN10__cxxabiv115__forced_unwindD0Ev' filepath='../../.././libstdc++-v3/libsupc++/eh_exception.cc' line='35' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <function-decl name='~__forced_unwind' mangled-name='_ZN10__cxxabiv115__forced_unwindD2Ev' filepath='../../.././libstdc++-v3/libsupc++/eh_exception.cc' line='35' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-98' is-artificial='yes'/>
             <parameter type-id='type-id-6' is-artificial='yes'/>
             <return type-id='type-id-5'/>
@@ -4547,14 +4547,14 @@
           </function-decl>
         </member-function>
         <member-function access='private' destructor='yes' vtable-offset='-1'>
-          <function-decl name='~__foreign_exception' mangled-name='_ZN10__cxxabiv119__foreign_exceptionD2Ev' filepath='../../.././libstdc++-v3/libsupc++/eh_exception.cc' line='37' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <function-decl name='~__foreign_exception' mangled-name='_ZN10__cxxabiv119__foreign_exceptionD0Ev' filepath='../../.././libstdc++-v3/libsupc++/eh_exception.cc' line='37' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-100' is-artificial='yes'/>
             <parameter type-id='type-id-6' is-artificial='yes'/>
             <return type-id='type-id-5'/>
           </function-decl>
         </member-function>
         <member-function access='private' destructor='yes' vtable-offset='-1'>
-          <function-decl name='~__foreign_exception' mangled-name='_ZN10__cxxabiv119__foreign_exceptionD0Ev' filepath='../../.././libstdc++-v3/libsupc++/eh_exception.cc' line='37' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <function-decl name='~__foreign_exception' mangled-name='_ZN10__cxxabiv119__foreign_exceptionD2Ev' filepath='../../.././libstdc++-v3/libsupc++/eh_exception.cc' line='37' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-100' is-artificial='yes'/>
             <parameter type-id='type-id-6' is-artificial='yes'/>
             <return type-id='type-id-5'/>
@@ -5081,14 +5081,14 @@
           </function-decl>
         </member-function>
         <member-function access='private' destructor='yes' vtable-offset='-1'>
-          <function-decl name='~recursive_init_error' mangled-name='_ZN9__gnu_cxx20recursive_init_errorD2Ev' filepath='../../.././libstdc++-v3/libsupc++/guard_error.cc' line='29' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <function-decl name='~recursive_init_error' mangled-name='_ZN9__gnu_cxx20recursive_init_errorD0Ev' filepath='../../.././libstdc++-v3/libsupc++/guard_error.cc' line='29' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-131' is-artificial='yes'/>
             <parameter type-id='type-id-6' is-artificial='yes'/>
             <return type-id='type-id-5'/>
           </function-decl>
         </member-function>
         <member-function access='private' destructor='yes' vtable-offset='-1'>
-          <function-decl name='~recursive_init_error' mangled-name='_ZN9__gnu_cxx20recursive_init_errorD0Ev' filepath='../../.././libstdc++-v3/libsupc++/guard_error.cc' line='29' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <function-decl name='~recursive_init_error' mangled-name='_ZN9__gnu_cxx20recursive_init_errorD2Ev' filepath='../../.././libstdc++-v3/libsupc++/guard_error.cc' line='29' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-131' is-artificial='yes'/>
             <parameter type-id='type-id-6' is-artificial='yes'/>
             <return type-id='type-id-5'/>
@@ -28550,14 +28550,14 @@
           </function-decl>
         </member-function>
         <member-function access='protected' destructor='yes' vtable-offset='-1'>
-          <function-decl name='~__codecvt_abstract_base' mangled-name='_ZNSt23__codecvt_abstract_baseIcc11__mbstate_tED2Ev' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/codecvt.h' line='228' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <function-decl name='~__codecvt_abstract_base' mangled-name='_ZNSt23__codecvt_abstract_baseIcc11__mbstate_tED0Ev' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/codecvt.h' line='228' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-2058' is-artificial='yes'/>
             <parameter type-id='type-id-6' is-artificial='yes'/>
             <return type-id='type-id-5'/>
           </function-decl>
         </member-function>
         <member-function access='protected' destructor='yes' vtable-offset='-1'>
-          <function-decl name='~__codecvt_abstract_base' mangled-name='_ZNSt23__codecvt_abstract_baseIcc11__mbstate_tED0Ev' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/codecvt.h' line='228' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <function-decl name='~__codecvt_abstract_base' mangled-name='_ZNSt23__codecvt_abstract_baseIcc11__mbstate_tED2Ev' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/codecvt.h' line='228' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-2058' is-artificial='yes'/>
             <parameter type-id='type-id-6' is-artificial='yes'/>
             <return type-id='type-id-5'/>
@@ -28722,14 +28722,14 @@
           </function-decl>
         </member-function>
         <member-function access='protected' destructor='yes' vtable-offset='-1'>
-          <function-decl name='~__codecvt_abstract_base' mangled-name='_ZNSt23__codecvt_abstract_baseIwc11__mbstate_tED2Ev' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/codecvt.h' line='228' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <function-decl name='~__codecvt_abstract_base' mangled-name='_ZNSt23__codecvt_abstract_baseIwc11__mbstate_tED0Ev' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/codecvt.h' line='228' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-2060' is-artificial='yes'/>
             <parameter type-id='type-id-6' is-artificial='yes'/>
             <return type-id='type-id-5'/>
           </function-decl>
         </member-function>
         <member-function access='protected' destructor='yes' vtable-offset='-1'>
-          <function-decl name='~__codecvt_abstract_base' mangled-name='_ZNSt23__codecvt_abstract_baseIwc11__mbstate_tED0Ev' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/codecvt.h' line='228' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <function-decl name='~__codecvt_abstract_base' mangled-name='_ZNSt23__codecvt_abstract_baseIwc11__mbstate_tED2Ev' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/codecvt.h' line='228' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-2060' is-artificial='yes'/>
             <parameter type-id='type-id-6' is-artificial='yes'/>
             <return type-id='type-id-5'/>
@@ -30889,14 +30889,14 @@
           </function-decl>
         </member-function>
         <member-function access='protected' destructor='yes' vtable-offset='-1'>
-          <function-decl name='~__ctype_abstract_base' mangled-name='_ZNSt21__ctype_abstract_baseIwED2Ev' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/locale_facets.h' line='357' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <function-decl name='~__ctype_abstract_base' mangled-name='_ZNSt21__ctype_abstract_baseIwED0Ev' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/locale_facets.h' line='357' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-2263' is-artificial='yes'/>
             <parameter type-id='type-id-6' is-artificial='yes'/>
             <return type-id='type-id-5'/>
           </function-decl>
         </member-function>
         <member-function access='protected' destructor='yes' vtable-offset='-1'>
-          <function-decl name='~__ctype_abstract_base' mangled-name='_ZNSt21__ctype_abstract_baseIwED0Ev' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/locale_facets.h' line='357' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <function-decl name='~__ctype_abstract_base' mangled-name='_ZNSt21__ctype_abstract_baseIwED2Ev' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/locale_facets.h' line='357' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-2263' is-artificial='yes'/>
             <parameter type-id='type-id-6' is-artificial='yes'/>
             <return type-id='type-id-5'/>
@@ -32608,13 +32608,6 @@
             <return type-id='type-id-5'/>
           </function-decl>
         </member-function>
-        <member-function access='protected' const='yes' vtable-offset='2'>
-          <function-decl name='do_toupper' mangled-name='_ZNKSt5ctypeIcE10do_toupperEc' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/locale_facets.h' line='1007' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNKSt5ctypeIcE10do_toupperEc@@GLIBCXX_3.4'>
-            <parameter type-id='type-id-2350' is-artificial='yes'/>
-            <parameter type-id='type-id-2351'/>
-            <return type-id='type-id-2351'/>
-          </function-decl>
-        </member-function>
         <member-function access='protected' const='yes' vtable-offset='2'>
           <function-decl name='do_toupper' mangled-name='_ZNKSt5ctypeIcE10do_toupperEc' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/src/c++98/ctype_configure_char.cc' line='166' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNKSt5ctypeIcE10do_toupperEc@@GLIBCXX_3.4'>
             <parameter type-id='type-id-2350' is-artificial='yes'/>
@@ -32622,12 +32615,11 @@
             <return type-id='type-id-186'/>
           </function-decl>
         </member-function>
-        <member-function access='protected' const='yes' vtable-offset='3'>
-          <function-decl name='do_toupper' mangled-name='_ZNKSt5ctypeIcE10do_toupperEPcPKc' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/locale_facets.h' line='1024' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNKSt5ctypeIcE10do_toupperEPcPKc@@GLIBCXX_3.4'>
+        <member-function access='protected' const='yes' vtable-offset='2'>
+          <function-decl name='do_toupper' mangled-name='_ZNKSt5ctypeIcE10do_toupperEc' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/locale_facets.h' line='1007' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNKSt5ctypeIcE10do_toupperEc@@GLIBCXX_3.4'>
             <parameter type-id='type-id-2350' is-artificial='yes'/>
-            <parameter type-id='type-id-2357'/>
-            <parameter type-id='type-id-2353'/>
-            <return type-id='type-id-2353'/>
+            <parameter type-id='type-id-2351'/>
+            <return type-id='type-id-2351'/>
           </function-decl>
         </member-function>
         <member-function access='protected' const='yes' vtable-offset='3'>
@@ -32638,11 +32630,12 @@
             <return type-id='type-id-4'/>
           </function-decl>
         </member-function>
-        <member-function access='protected' const='yes' vtable-offset='4'>
-          <function-decl name='do_tolower' mangled-name='_ZNKSt5ctypeIcE10do_tolowerEc' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/locale_facets.h' line='1040' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNKSt5ctypeIcE10do_tolowerEc@@GLIBCXX_3.4'>
+        <member-function access='protected' const='yes' vtable-offset='3'>
+          <function-decl name='do_toupper' mangled-name='_ZNKSt5ctypeIcE10do_toupperEPcPKc' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/locale_facets.h' line='1024' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNKSt5ctypeIcE10do_toupperEPcPKc@@GLIBCXX_3.4'>
             <parameter type-id='type-id-2350' is-artificial='yes'/>
-            <parameter type-id='type-id-2351'/>
-            <return type-id='type-id-2351'/>
+            <parameter type-id='type-id-2357'/>
+            <parameter type-id='type-id-2353'/>
+            <return type-id='type-id-2353'/>
           </function-decl>
         </member-function>
         <member-function access='protected' const='yes' vtable-offset='4'>
@@ -32652,12 +32645,11 @@
             <return type-id='type-id-186'/>
           </function-decl>
         </member-function>
-        <member-function access='protected' const='yes' vtable-offset='5'>
-          <function-decl name='do_tolower' mangled-name='_ZNKSt5ctypeIcE10do_tolowerEPcPKc' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/locale_facets.h' line='1057' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNKSt5ctypeIcE10do_tolowerEPcPKc@@GLIBCXX_3.4'>
+        <member-function access='protected' const='yes' vtable-offset='4'>
+          <function-decl name='do_tolower' mangled-name='_ZNKSt5ctypeIcE10do_tolowerEc' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/locale_facets.h' line='1040' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNKSt5ctypeIcE10do_tolowerEc@@GLIBCXX_3.4'>
             <parameter type-id='type-id-2350' is-artificial='yes'/>
-            <parameter type-id='type-id-2357'/>
-            <parameter type-id='type-id-2353'/>
-            <return type-id='type-id-2353'/>
+            <parameter type-id='type-id-2351'/>
+            <return type-id='type-id-2351'/>
           </function-decl>
         </member-function>
         <member-function access='protected' const='yes' vtable-offset='5'>
@@ -32668,6 +32660,14 @@
             <return type-id='type-id-4'/>
           </function-decl>
         </member-function>
+        <member-function access='protected' const='yes' vtable-offset='5'>
+          <function-decl name='do_tolower' mangled-name='_ZNKSt5ctypeIcE10do_tolowerEPcPKc' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/locale_facets.h' line='1057' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNKSt5ctypeIcE10do_tolowerEPcPKc@@GLIBCXX_3.4'>
+            <parameter type-id='type-id-2350' is-artificial='yes'/>
+            <parameter type-id='type-id-2357'/>
+            <parameter type-id='type-id-2353'/>
+            <return type-id='type-id-2353'/>
+          </function-decl>
+        </member-function>
         <member-function access='protected' const='yes' vtable-offset='6'>
           <function-decl name='do_widen' mangled-name='_ZNKSt5ctypeIcE8do_widenEc' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/locale_facets.h' line='1077' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNKSt5ctypeIcE8do_widenEc@@GLIBCXX_3.4'>
             <parameter type-id='type-id-2350' is-artificial='yes'/>
@@ -32955,14 +32955,14 @@
           </function-decl>
         </member-function>
         <member-function access='private' destructor='yes' vtable-offset='-1'>
-          <function-decl name='~stdio_filebuf' mangled-name='_ZN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEED2Ev' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/ext/stdio_filebuf.h' line='124' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <function-decl name='~stdio_filebuf' mangled-name='_ZN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEED0Ev' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/ext/stdio_filebuf.h' line='124' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-2428' is-artificial='yes'/>
             <parameter type-id='type-id-6' is-artificial='yes'/>
             <return type-id='type-id-5'/>
           </function-decl>
         </member-function>
         <member-function access='private' destructor='yes' vtable-offset='-1'>
-          <function-decl name='~stdio_filebuf' mangled-name='_ZN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEED0Ev' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/ext/stdio_filebuf.h' line='124' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <function-decl name='~stdio_filebuf' mangled-name='_ZN9__gnu_cxx13stdio_filebufIwSt11char_traitsIwEED2Ev' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/ext/stdio_filebuf.h' line='124' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-2428' is-artificial='yes'/>
             <parameter type-id='type-id-6' is-artificial='yes'/>
             <return type-id='type-id-5'/>
@@ -33042,14 +33042,14 @@
           </function-decl>
         </member-function>
         <member-function access='private' destructor='yes' vtable-offset='-1'>
-          <function-decl name='~stdio_filebuf' mangled-name='_ZN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEED2Ev' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/ext/stdio_filebuf.h' line='124' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <function-decl name='~stdio_filebuf' mangled-name='_ZN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEED0Ev' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/ext/stdio_filebuf.h' line='124' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-2426' is-artificial='yes'/>
             <parameter type-id='type-id-6' is-artificial='yes'/>
             <return type-id='type-id-5'/>
           </function-decl>
         </member-function>
         <member-function access='private' destructor='yes' vtable-offset='-1'>
-          <function-decl name='~stdio_filebuf' mangled-name='_ZN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEED0Ev' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/ext/stdio_filebuf.h' line='124' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <function-decl name='~stdio_filebuf' mangled-name='_ZN9__gnu_cxx13stdio_filebufIcSt11char_traitsIcEED2Ev' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/ext/stdio_filebuf.h' line='124' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-2426' is-artificial='yes'/>
             <parameter type-id='type-id-6' is-artificial='yes'/>
             <return type-id='type-id-5'/>
@@ -35377,14 +35377,14 @@
           </function-decl>
         </member-function>
         <member-function access='protected' destructor='yes' vtable-offset='-1'>
-          <function-decl name='~__ctype_abstract_base' mangled-name='_ZNSt21__ctype_abstract_baseIcED2Ev' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/locale_facets.h' line='357' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <function-decl name='~__ctype_abstract_base' mangled-name='_ZNSt21__ctype_abstract_baseIcED0Ev' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/locale_facets.h' line='357' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-2718' is-artificial='yes'/>
             <parameter type-id='type-id-6' is-artificial='yes'/>
             <return type-id='type-id-5'/>
           </function-decl>
         </member-function>
         <member-function access='protected' destructor='yes' vtable-offset='-1'>
-          <function-decl name='~__ctype_abstract_base' mangled-name='_ZNSt21__ctype_abstract_baseIcED0Ev' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/locale_facets.h' line='357' column='1' visibility='default' binding='global' size-in-bits='64'>
+          <function-decl name='~__ctype_abstract_base' mangled-name='_ZNSt21__ctype_abstract_baseIcED2Ev' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/locale_facets.h' line='357' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-2718' is-artificial='yes'/>
             <parameter type-id='type-id-6' is-artificial='yes'/>
             <return type-id='type-id-5'/>
-- 
2.29.1.341.ge80a0c044ae-goog


^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2020-11-02 17:08 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-29 12:20 [PATCH 1/3] Improve and stabilise sort of member functions Matthias Maennich
2020-10-29 12:20 ` [PATCH 2/3] Improve enum synthetic type names Matthias Maennich
2020-11-02 16:46   ` Dodji Seketeli
2020-10-29 12:21 ` [PATCH 3/3] dwarf-reader: Ignore zero length location expressions from DW_AT_location Matthias Maennich
2020-10-29 12:30   ` Matthias Maennich
2020-10-29 14:00     ` Mark Wielaard
2020-10-29 14:29       ` Matthias Maennich
2020-11-02 17:08         ` Dodji Seketeli
2020-11-02 16:48     ` Dodji Seketeli
2020-11-02 15:34 ` [PATCH 1/3] Improve and stabilise sort of member functions Dodji Seketeli

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).