public inbox for libabigail@sourceware.org
 help / color / mirror / Atom feed
From: Giuliano Procida <gprocida@google.com>
To: libabigail@sourceware.org
Cc: dodji@seketeli.org, kernel-team@android.com, gprocida@google.com,
	 maennich@google.com
Subject: [RFC PATCH 1/1] Fix decl_base comparison function
Date: Wed, 22 Jul 2020 12:07:36 +0100	[thread overview]
Message-ID: <20200722110736.2550361-2-gprocida@google.com> (raw)
In-Reply-To: <20200722110736.2550361-1-gprocida@google.com>

When two decl_base ojects are compared, there are both fast and slow
paths to the name comparison. The latter is roughly equivalent to
comparing names after applying the regex
s/(__anonymous_(?:struct|union|enum)__)\d+/\1/g to the names before
comparing them while the former is a straight string comparison with
some tweaks for detecting anonymous types.

The slow path is taken care of by the helper function
tools_utils::decl_names_equal but unfortunately, there is a missing
negation of the returned bool. This commit fixes this and updates the
few affected tests.

Rather than just adding a '!', this commit replaces the negative
decls_are_different with a positive decls_are_same. I spent far too
long staring at the code before I spotted the mistake and having
positively-named things improves readability.

This commit also adds some TODOs for review around the fast path
logic.

The same helper function is also called by has_harmless_name_change
and that should be reviewed as well.

	* src/abg-ir.cc (equals): In the decl_base overload, note that
	the value returned by decl_names_equal should be negated and
	replace decls_are_different with decls_are_same, negating all
	occurrences.
	* tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt:
	Update tests, removing some spurious anonymous union name change.
	* tests/data/test-diff-filter/test33-report-0.txt: Diff now
	completely empty.
	* tests/data/test-diff-pkg/elfutils-libs-0.170-4.el7.x86_64-multiple-sym-vers-report-0.txt:
	3 functions previously considered to have harmless changes are
	now deemed to have no changes.
	* tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt:
	1 struct RedStore data member previously considered to have
	harmless changes is now deemed to have no changes.
	* tests/data/test-read-dwarf/test9-pr18818-clang.so.abi:
	One instance of an anonymous struct removed and a typedef
	repointed at another existing instance; many type ids
	renumbered.

Signed-off-by: Giuliano Procida <gprocida@google.com>
---
 src/abg-ir.cc                                 |  25 +-
 .../PR25058-liblttng-ctl-report-1.txt         |   4 -
 .../data/test-diff-filter/test33-report-0.txt |   3 -
 ....el7.x86_64-multiple-sym-vers-report-0.txt |   2 +-
 ...l7.x86_64-0.12.8-1.el7.x86_64-report-2.txt |   2 +-
 .../test9-pr18818-clang.so.abi                | 236 ++++++++----------
 6 files changed, 127 insertions(+), 145 deletions(-)

diff --git a/src/abg-ir.cc b/src/abg-ir.cc
index 1fe6f499..aa2a56fa 100644
--- a/src/abg-ir.cc
+++ b/src/abg-ir.cc
@@ -4067,26 +4067,33 @@ equals(const decl_base& l, const decl_base& r, change_kind* k)
   /// Otherwise, let's just compare their name, the obvious way.
   /// That's the fast path because in that case the names are
   /// interned_string and comparing them is much faster.
-  bool decls_are_different = (ln != rn);
-  if (decls_are_different
+  bool decls_are_same = (ln == rn);
+  if (!decls_are_same
       && l.get_is_anonymous()
       && !l.get_has_anonymous_parent()
       && r.get_is_anonymous()
       && !r.get_has_anonymous_parent())
-    // Both decls are anonymous and their scope are *NOT* anonymous.
-    // So we consider the decls to have equivalent names (both
-    // anonymous, remember).  We are still in the fast path here.
-    decls_are_different = false;
+    {
+      // Both decls are anonymous and their scope are *NOT* anonymous.
+      // So we consider the decls to have equivalent names (both
+      // anonymous, remember).  We are still in the fast path here.
+      //
+      // TODO: Don't conflate anonymous structs, unions and enums?
+      //
+      // TODO: Should we really be conflating all foo1::..::fooM::anon
+      // with all bar1::..::barN::anon?
+      decls_are_same = true;
+    }
 
-  if (decls_are_different
+  if (!decls_are_same
       && l.get_has_anonymous_parent()
       && r.get_has_anonymous_parent())
     // This is the slow path as we are comparing the decl qualified
     // names component by component, properly handling anonymous
     // scopes.
-    decls_are_different = tools_utils::decl_names_equal(ln, rn);
+    decls_are_same = tools_utils::decl_names_equal(ln, rn);
 
-  if (decls_are_different)
+  if (!decls_are_same)
     {
       result = false;
       if (k)
diff --git a/tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt b/tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt
index dc1dff32..71df361e 100644
--- a/tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt
+++ b/tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt
@@ -130,10 +130,6 @@ Variables changes summary: 0 Removed, 0 Changed, 3 Added variables
           type of 'union {lttng_event_perf_counter_ctx perf_counter; struct {char* provider_name; char* ctx_name;} app_ctx; char padding[288];} lttng_event_context::u' changed:
             type name changed from '__anonymous_union__4' to '__anonymous_union__5'
             type size hasn't changed
-            3 data member changes:
-              name of '__anonymous_union__4::app_ctx' changed to '__anonymous_union__5::app_ctx'
-              name of '__anonymous_union__4::padding' changed to '__anonymous_union__5::padding'
-              name of '__anonymous_union__4::perf_counter' changed to '__anonymous_union__5::perf_counter'
             type changed from:
               union {lttng_event_perf_counter_ctx perf_counter; struct {char* provider_name; char* ctx_name;} app_ctx; char padding[288];}
             to:
diff --git a/tests/data/test-diff-filter/test33-report-0.txt b/tests/data/test-diff-filter/test33-report-0.txt
index 433f9508..e69de29b 100644
--- a/tests/data/test-diff-filter/test33-report-0.txt
+++ b/tests/data/test-diff-filter/test33-report-0.txt
@@ -1,3 +0,0 @@
-Functions changes summary: 0 Removed, 0 Changed (16 filtered out), 0 Added functions
-Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
-
diff --git a/tests/data/test-diff-pkg/elfutils-libs-0.170-4.el7.x86_64-multiple-sym-vers-report-0.txt b/tests/data/test-diff-pkg/elfutils-libs-0.170-4.el7.x86_64-multiple-sym-vers-report-0.txt
index 8ce5aa3c..9d1f078d 100644
--- a/tests/data/test-diff-pkg/elfutils-libs-0.170-4.el7.x86_64-multiple-sym-vers-report-0.txt
+++ b/tests/data/test-diff-pkg/elfutils-libs-0.170-4.el7.x86_64-multiple-sym-vers-report-0.txt
@@ -1,5 +1,5 @@
 ================ changes of 'libdw-0.170.so'===============
-  Functions changes summary: 0 Removed, 0 Changed (178 filtered out), 4 Added functions
+  Functions changes summary: 0 Removed, 0 Changed (175 filtered out), 4 Added functions
   Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
   4 Added functions:
diff --git a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt
index c1aff1c7..a0bfc761 100644
--- a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt
+++ b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt
@@ -630,7 +630,7 @@
         in pointed to type 'typedef SpiceServer' at spice-server.h:38:1:
           underlying type 'struct RedsState' at reds-private.h:127:1 changed:
             type size hasn't changed
-            5 data member changes (2 filtered):
+            5 data member changes (1 filtered):
               type of 'SpiceWatch* RedsState::listen_watch' changed:
                 pointed to type 'typedef SpiceWatch' changed at spice.h:61:1, as reported earlier
               type of 'SpiceWatch* RedsState::secure_listen_watch' changed:
diff --git a/tests/data/test-read-dwarf/test9-pr18818-clang.so.abi b/tests/data/test-read-dwarf/test9-pr18818-clang.so.abi
index 8254692e..6ad6cc9c 100644
--- a/tests/data/test-read-dwarf/test9-pr18818-clang.so.abi
+++ b/tests/data/test-read-dwarf/test9-pr18818-clang.so.abi
@@ -6313,7 +6313,7 @@
             <typedef-decl name='result' type-id='type-id-474' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/codecvt.h' line='73' column='1' id='type-id-473'/>
           </member-type>
           <member-type access='private'>
-            <typedef-decl name='state_type' type-id='type-id-475' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/codecvt.h' line='76' column='1' id='type-id-469'/>
+            <typedef-decl name='state_type' type-id='type-id-34' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/codecvt.h' line='76' column='1' id='type-id-469'/>
           </member-type>
           <member-type access='private'>
             <typedef-decl name='intern_type' type-id='type-id-19' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/codecvt.h' line='74' column='1' id='type-id-461'/>
@@ -6348,7 +6348,7 @@
           </function-decl>
         </member-function>
       </class-decl>
-      <class-decl name='codecvt_base' size-in-bits='8' visibility='default' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/codecvt.h' line='46' column='1' id='type-id-476'>
+      <class-decl name='codecvt_base' size-in-bits='8' visibility='default' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/codecvt.h' line='46' column='1' id='type-id-475'>
           <member-type access='private'>
             <enum-decl name='result' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/codecvt.h' line='49' column='1' id='type-id-474'>
               <underlying-type type-id='type-id-142'/>
@@ -6469,24 +6469,6 @@
         </member-function>
       </class-decl>
     </namespace-decl>
-    <class-decl name='__anonymous_struct__' size-in-bits='64' is-struct='yes' is-anonymous='yes' naming-typedef-id='type-id-469' visibility='default' filepath='/usr/include/wchar.h' line='82' column='1' id='type-id-475'>
-      <member-type access='public'>
-        <union-decl name='__anonymous_union__' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='/usr/include/wchar.h' line='85' column='1' id='type-id-477'>
-          <data-member access='private'>
-            <var-decl name='__wch' type-id='type-id-7' visibility='default' filepath='/usr/include/wchar.h' line='88' column='1'/>
-          </data-member>
-          <data-member access='private'>
-            <var-decl name='__wchb' type-id='type-id-3' visibility='default' filepath='/usr/include/wchar.h' line='92' column='1'/>
-          </data-member>
-        </union-decl>
-      </member-type>
-      <data-member access='public' layout-offset-in-bits='0'>
-        <var-decl name='__count' type-id='type-id-11' visibility='default' filepath='/usr/include/wchar.h' line='84' column='1'/>
-      </data-member>
-      <data-member access='public' layout-offset-in-bits='32'>
-        <var-decl name='__value' type-id='type-id-477' visibility='default' filepath='/usr/include/wchar.h' line='93' column='1'/>
-      </data-member>
-    </class-decl>
   </abi-instr>
   <abi-instr version='1.0' address-size='64' path='src/third_party/boost-1.56.0/libs/filesystem/src/portability.cpp' comp-dir-path='/home/andrew/Documents/10gen/dev/src/mongodb' language='LANG_C_plus_plus'>
     <namespace-decl name='std'>
@@ -6526,17 +6508,17 @@
     </namespace-decl>
   </abi-instr>
   <abi-instr version='1.0' address-size='64' path='src/third_party/boost-1.56.0/libs/filesystem/src/unique_path.cpp' comp-dir-path='/home/andrew/Documents/10gen/dev/src/mongodb' language='LANG_C_plus_plus'>
-    <reference-type-def kind='lvalue' type-id='type-id-478' size-in-bits='64' id='type-id-479'/>
-    <pointer-type-def type-id='type-id-478' size-in-bits='64' id='type-id-480'/>
-    <pointer-type-def type-id='type-id-481' size-in-bits='64' id='type-id-337'/>
-    <qualified-type-def type-id='type-id-478' const='yes' id='type-id-482'/>
-    <pointer-type-def type-id='type-id-482' size-in-bits='64' id='type-id-483'/>
-    <qualified-type-def type-id='type-id-401' const='yes' id='type-id-484'/>
-    <reference-type-def kind='lvalue' type-id='type-id-484' size-in-bits='64' id='type-id-336'/>
-    <reference-type-def kind='lvalue' type-id='type-id-320' size-in-bits='64' id='type-id-485'/>
-    <reference-type-def kind='lvalue' type-id='type-id-95' size-in-bits='64' id='type-id-486'/>
-    <qualified-type-def type-id='type-id-96' const='yes' id='type-id-487'/>
-    <reference-type-def kind='lvalue' type-id='type-id-487' size-in-bits='64' id='type-id-488'/>
+    <reference-type-def kind='lvalue' type-id='type-id-476' size-in-bits='64' id='type-id-477'/>
+    <pointer-type-def type-id='type-id-476' size-in-bits='64' id='type-id-478'/>
+    <pointer-type-def type-id='type-id-479' size-in-bits='64' id='type-id-337'/>
+    <qualified-type-def type-id='type-id-476' const='yes' id='type-id-480'/>
+    <pointer-type-def type-id='type-id-480' size-in-bits='64' id='type-id-481'/>
+    <qualified-type-def type-id='type-id-401' const='yes' id='type-id-482'/>
+    <reference-type-def kind='lvalue' type-id='type-id-482' size-in-bits='64' id='type-id-336'/>
+    <reference-type-def kind='lvalue' type-id='type-id-320' size-in-bits='64' id='type-id-483'/>
+    <reference-type-def kind='lvalue' type-id='type-id-95' size-in-bits='64' id='type-id-484'/>
+    <qualified-type-def type-id='type-id-96' const='yes' id='type-id-485'/>
+    <reference-type-def kind='lvalue' type-id='type-id-485' size-in-bits='64' id='type-id-486'/>
     <namespace-decl name='boost'>
       <namespace-decl name='filesystem'>
         <namespace-decl name='detail'>
@@ -6548,151 +6530,151 @@
         </namespace-decl>
         <namespace-decl name='path_traits'>
           <function-decl name='dispatch&lt;std::basic_string&lt;char&gt; &gt;' mangled-name='_ZN5boost10filesystem11path_traits8dispatchISsEEvRKSbIwSt11char_traitsIwESaIwEERT_RKSt7codecvtIwc11__mbstate_tE' filepath='src/third_party/boost-1.56.0/boost/filesystem/path_traits.hpp' line='177' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZN5boost10filesystem11path_traits8dispatchISsEEvRKSbIwSt11char_traitsIwESaIwEERT_RKSt7codecvtIwc11__mbstate_tE'>
-            <parameter type-id='type-id-485' name='c' filepath='src/third_party/boost-1.56.0/boost/filesystem/path_traits.hpp' line='177' column='1'/>
+            <parameter type-id='type-id-483' name='c' filepath='src/third_party/boost-1.56.0/boost/filesystem/path_traits.hpp' line='177' column='1'/>
             <parameter type-id='type-id-133' name='to' filepath='src/third_party/boost-1.56.0/boost/filesystem/path_traits.hpp' line='177' column='1'/>
             <parameter type-id='type-id-269' name='cvt' filepath='src/third_party/boost-1.56.0/boost/filesystem/path_traits.hpp' line='177' column='1'/>
             <return type-id='type-id-18'/>
           </function-decl>
         </namespace-decl>
       </namespace-decl>
-      <class-decl name='enable_if_c&lt;true, void&gt;' size-in-bits='8' is-struct='yes' visibility='default' filepath='src/third_party/boost-1.56.0/boost/core/enable_if.hpp' line='28' column='1' id='type-id-489'>
+      <class-decl name='enable_if_c&lt;true, void&gt;' size-in-bits='8' is-struct='yes' visibility='default' filepath='src/third_party/boost-1.56.0/boost/core/enable_if.hpp' line='28' column='1' id='type-id-487'>
           <member-type access='public'>
-            <typedef-decl name='type' type-id='type-id-18' filepath='src/third_party/boost-1.56.0/boost/core/enable_if.hpp' line='29' column='1' id='type-id-481'/>
+            <typedef-decl name='type' type-id='type-id-18' filepath='src/third_party/boost-1.56.0/boost/core/enable_if.hpp' line='29' column='1' id='type-id-479'/>
           </member-type>
       </class-decl>
     </namespace-decl>
     <namespace-decl name='std'>
-      <class-decl name='allocator&lt;wchar_t&gt;' visibility='default' is-declaration-only='yes' id='type-id-490'>
+      <class-decl name='allocator&lt;wchar_t&gt;' visibility='default' is-declaration-only='yes' id='type-id-488'>
           <member-type access='private'>
             <typedef-decl name='size_type' type-id='type-id-391' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/allocator.h' line='95' column='1' id='type-id-403'/>
           </member-type>
       </class-decl>
-      <class-decl name='iterator_traits&lt;const wchar_t *&gt;' size-in-bits='8' is-struct='yes' visibility='default' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/stl_iterator_base_types.h' line='186' column='1' id='type-id-491'>
+      <class-decl name='iterator_traits&lt;const wchar_t *&gt;' size-in-bits='8' is-struct='yes' visibility='default' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/stl_iterator_base_types.h' line='186' column='1' id='type-id-489'>
           <member-type access='public'>
-            <typedef-decl name='reference' type-id='type-id-486' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/stl_iterator_base_types.h' line='192' column='1' id='type-id-492'/>
+            <typedef-decl name='reference' type-id='type-id-484' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/stl_iterator_base_types.h' line='192' column='1' id='type-id-490'/>
           </member-type>
           <member-type access='public'>
-            <typedef-decl name='pointer' type-id='type-id-96' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/stl_iterator_base_types.h' line='191' column='1' id='type-id-493'/>
+            <typedef-decl name='pointer' type-id='type-id-96' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/stl_iterator_base_types.h' line='191' column='1' id='type-id-491'/>
           </member-type>
           <member-type access='public'>
-            <typedef-decl name='difference_type' type-id='type-id-344' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/stl_iterator_base_types.h' line='190' column='1' id='type-id-494'/>
+            <typedef-decl name='difference_type' type-id='type-id-344' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/stl_iterator_base_types.h' line='190' column='1' id='type-id-492'/>
           </member-type>
       </class-decl>
     </namespace-decl>
     <namespace-decl name='__gnu_cxx'>
-      <class-decl name='__normal_iterator&lt;const wchar_t *, std::basic_string&lt;wchar_t&gt; &gt;' size-in-bits='64' visibility='default' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/stl_iterator.h' line='709' column='1' id='type-id-478'>
+      <class-decl name='__normal_iterator&lt;const wchar_t *, std::basic_string&lt;wchar_t&gt; &gt;' size-in-bits='64' visibility='default' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/stl_iterator.h' line='709' column='1' id='type-id-476'>
           <member-type access='private'>
-            <typedef-decl name='reference' type-id='type-id-492' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/stl_iterator.h' line='721' column='1' id='type-id-495'/>
+            <typedef-decl name='reference' type-id='type-id-490' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/stl_iterator.h' line='721' column='1' id='type-id-493'/>
           </member-type>
           <member-type access='private'>
-            <typedef-decl name='pointer' type-id='type-id-493' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/stl_iterator.h' line='722' column='1' id='type-id-496'/>
+            <typedef-decl name='pointer' type-id='type-id-491' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/stl_iterator.h' line='722' column='1' id='type-id-494'/>
           </member-type>
           <member-type access='private'>
-            <typedef-decl name='difference_type' type-id='type-id-494' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/stl_iterator.h' line='720' column='1' id='type-id-497'/>
+            <typedef-decl name='difference_type' type-id='type-id-492' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/stl_iterator.h' line='720' column='1' id='type-id-495'/>
           </member-type>
         <data-member access='protected' layout-offset-in-bits='0'>
           <var-decl name='_M_current' type-id='type-id-96' visibility='default' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/stl_iterator.h' line='712' column='1'/>
         </data-member>
         <member-function access='public'>
           <function-decl name='__normal_iterator' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/stl_iterator.h' line='724' column='1' visibility='default' binding='global' size-in-bits='64'>
-            <parameter type-id='type-id-480' is-artificial='yes'/>
+            <parameter type-id='type-id-478' is-artificial='yes'/>
             <return type-id='type-id-18'/>
           </function-decl>
         </member-function>
         <member-function access='public'>
           <function-decl name='__normal_iterator' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/stl_iterator.h' line='728' column='1' visibility='default' binding='global' size-in-bits='64'>
-            <parameter type-id='type-id-480' is-artificial='yes'/>
-            <parameter type-id='type-id-488'/>
+            <parameter type-id='type-id-478' is-artificial='yes'/>
+            <parameter type-id='type-id-486'/>
             <return type-id='type-id-18'/>
           </function-decl>
         </member-function>
         <member-function access='public'>
           <function-decl name='operator*' mangled-name='_ZNK9__gnu_cxx17__normal_iteratorIPKwSbIwSt11char_traitsIwESaIwEEEdeEv' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/stl_iterator.h' line='741' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNK9__gnu_cxx17__normal_iteratorIPKwSbIwSt11char_traitsIwESaIwEEEdeEv'>
-            <parameter type-id='type-id-483' is-artificial='yes'/>
-            <return type-id='type-id-495'/>
+            <parameter type-id='type-id-481' is-artificial='yes'/>
+            <return type-id='type-id-493'/>
           </function-decl>
         </member-function>
         <member-function access='public'>
           <function-decl name='operator-&gt;' mangled-name='_ZNK9__gnu_cxx17__normal_iteratorIPKwSbIwSt11char_traitsIwESaIwEEEptEv' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/stl_iterator.h' line='745' column='1' visibility='default' binding='global' size-in-bits='64'>
-            <parameter type-id='type-id-483' is-artificial='yes'/>
-            <return type-id='type-id-496'/>
+            <parameter type-id='type-id-481' is-artificial='yes'/>
+            <return type-id='type-id-494'/>
           </function-decl>
         </member-function>
         <member-function access='public'>
           <function-decl name='operator++' mangled-name='_ZN9__gnu_cxx17__normal_iteratorIPKwSbIwSt11char_traitsIwESaIwEEEppEv' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/stl_iterator.h' line='749' column='1' visibility='default' binding='global' size-in-bits='64'>
-            <parameter type-id='type-id-480' is-artificial='yes'/>
-            <return type-id='type-id-479'/>
+            <parameter type-id='type-id-478' is-artificial='yes'/>
+            <return type-id='type-id-477'/>
           </function-decl>
         </member-function>
         <member-function access='public'>
           <function-decl name='operator++' mangled-name='_ZN9__gnu_cxx17__normal_iteratorIPKwSbIwSt11char_traitsIwESaIwEEEppEi' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/stl_iterator.h' line='756' column='1' visibility='default' binding='global' size-in-bits='64'>
-            <parameter type-id='type-id-480' is-artificial='yes'/>
+            <parameter type-id='type-id-478' is-artificial='yes'/>
             <parameter type-id='type-id-11'/>
-            <return type-id='type-id-478'/>
+            <return type-id='type-id-476'/>
           </function-decl>
         </member-function>
         <member-function access='public'>
           <function-decl name='operator--' mangled-name='_ZN9__gnu_cxx17__normal_iteratorIPKwSbIwSt11char_traitsIwESaIwEEEmmEv' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/stl_iterator.h' line='761' column='1' visibility='default' binding='global' size-in-bits='64'>
-            <parameter type-id='type-id-480' is-artificial='yes'/>
-            <return type-id='type-id-479'/>
+            <parameter type-id='type-id-478' is-artificial='yes'/>
+            <return type-id='type-id-477'/>
           </function-decl>
         </member-function>
         <member-function access='public'>
           <function-decl name='operator--' mangled-name='_ZN9__gnu_cxx17__normal_iteratorIPKwSbIwSt11char_traitsIwESaIwEEEmmEi' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/stl_iterator.h' line='768' column='1' visibility='default' binding='global' size-in-bits='64'>
-            <parameter type-id='type-id-480' is-artificial='yes'/>
+            <parameter type-id='type-id-478' is-artificial='yes'/>
             <parameter type-id='type-id-11'/>
-            <return type-id='type-id-478'/>
+            <return type-id='type-id-476'/>
           </function-decl>
         </member-function>
         <member-function access='public'>
           <function-decl name='operator[]' mangled-name='_ZNK9__gnu_cxx17__normal_iteratorIPKwSbIwSt11char_traitsIwESaIwEEEixEl' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/stl_iterator.h' line='773' column='1' visibility='default' binding='global' size-in-bits='64'>
-            <parameter type-id='type-id-483' is-artificial='yes'/>
-            <parameter type-id='type-id-497'/>
-            <return type-id='type-id-495'/>
+            <parameter type-id='type-id-481' is-artificial='yes'/>
+            <parameter type-id='type-id-495'/>
+            <return type-id='type-id-493'/>
           </function-decl>
         </member-function>
         <member-function access='public'>
           <function-decl name='operator+=' mangled-name='_ZN9__gnu_cxx17__normal_iteratorIPKwSbIwSt11char_traitsIwESaIwEEEpLEl' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/stl_iterator.h' line='777' column='1' visibility='default' binding='global' size-in-bits='64'>
-            <parameter type-id='type-id-480' is-artificial='yes'/>
-            <parameter type-id='type-id-497'/>
-            <return type-id='type-id-479'/>
+            <parameter type-id='type-id-478' is-artificial='yes'/>
+            <parameter type-id='type-id-495'/>
+            <return type-id='type-id-477'/>
           </function-decl>
         </member-function>
         <member-function access='public'>
           <function-decl name='operator+' mangled-name='_ZNK9__gnu_cxx17__normal_iteratorIPKwSbIwSt11char_traitsIwESaIwEEEplEl' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/stl_iterator.h' line='781' column='1' visibility='default' binding='global' size-in-bits='64'>
-            <parameter type-id='type-id-483' is-artificial='yes'/>
-            <parameter type-id='type-id-497'/>
-            <return type-id='type-id-478'/>
+            <parameter type-id='type-id-481' is-artificial='yes'/>
+            <parameter type-id='type-id-495'/>
+            <return type-id='type-id-476'/>
           </function-decl>
         </member-function>
         <member-function access='public'>
           <function-decl name='operator-=' mangled-name='_ZN9__gnu_cxx17__normal_iteratorIPKwSbIwSt11char_traitsIwESaIwEEEmIEl' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/stl_iterator.h' line='785' column='1' visibility='default' binding='global' size-in-bits='64'>
-            <parameter type-id='type-id-480' is-artificial='yes'/>
-            <parameter type-id='type-id-497'/>
-            <return type-id='type-id-479'/>
+            <parameter type-id='type-id-478' is-artificial='yes'/>
+            <parameter type-id='type-id-495'/>
+            <return type-id='type-id-477'/>
           </function-decl>
         </member-function>
         <member-function access='public'>
           <function-decl name='operator-' mangled-name='_ZNK9__gnu_cxx17__normal_iteratorIPKwSbIwSt11char_traitsIwESaIwEEEmiEl' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/stl_iterator.h' line='789' column='1' visibility='default' binding='global' size-in-bits='64'>
-            <parameter type-id='type-id-483' is-artificial='yes'/>
-            <parameter type-id='type-id-497'/>
-            <return type-id='type-id-478'/>
+            <parameter type-id='type-id-481' is-artificial='yes'/>
+            <parameter type-id='type-id-495'/>
+            <return type-id='type-id-476'/>
           </function-decl>
         </member-function>
         <member-function access='public'>
           <function-decl name='base' mangled-name='_ZNK9__gnu_cxx17__normal_iteratorIPKwSbIwSt11char_traitsIwESaIwEEE4baseEv' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/bits/stl_iterator.h' line='793' column='1' visibility='default' binding='global' size-in-bits='64'>
-            <parameter type-id='type-id-483' is-artificial='yes'/>
-            <return type-id='type-id-488'/>
+            <parameter type-id='type-id-481' is-artificial='yes'/>
+            <return type-id='type-id-486'/>
           </function-decl>
         </member-function>
       </class-decl>
     </namespace-decl>
   </abi-instr>
   <abi-instr version='1.0' address-size='64' path='src/third_party/boost-1.56.0/libs/filesystem/src/utf8_codecvt_facet.cpp' comp-dir-path='/home/andrew/Documents/10gen/dev/src/mongodb' language='LANG_C_plus_plus'>
-    <type-decl name='unsigned char' size-in-bits='8' id='type-id-498'/>
-    <class-decl name='__anonymous_struct__' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='/usr/include/wchar.h' line='82' column='1' id='type-id-499'>
+    <type-decl name='unsigned char' size-in-bits='8' id='type-id-496'/>
+    <class-decl name='__anonymous_struct__' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='/usr/include/wchar.h' line='82' column='1' id='type-id-497'>
         <member-type access='public'>
-          <union-decl name='__anonymous_union__' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='/usr/include/wchar.h' line='85' column='1' id='type-id-500'>
+          <union-decl name='__anonymous_union__' size-in-bits='32' is-anonymous='yes' visibility='default' filepath='/usr/include/wchar.h' line='85' column='1' id='type-id-498'>
             <data-member access='private'>
               <var-decl name='__wch' type-id='type-id-7' visibility='default' filepath='/usr/include/wchar.h' line='88' column='1'/>
             </data-member>
@@ -6705,117 +6687,117 @@
         <var-decl name='__count' type-id='type-id-11' visibility='default' filepath='/usr/include/wchar.h' line='84' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='32'>
-        <var-decl name='__value' type-id='type-id-500' visibility='default' filepath='/usr/include/wchar.h' line='93' column='1'/>
+        <var-decl name='__value' type-id='type-id-498' visibility='default' filepath='/usr/include/wchar.h' line='93' column='1'/>
       </data-member>
     </class-decl>
-    <pointer-type-def type-id='type-id-501' size-in-bits='64' id='type-id-502'/>
-    <reference-type-def kind='lvalue' type-id='type-id-62' size-in-bits='64' id='type-id-503'/>
-    <qualified-type-def type-id='type-id-501' const='yes' id='type-id-504'/>
-    <pointer-type-def type-id='type-id-504' size-in-bits='64' id='type-id-505'/>
-    <reference-type-def kind='lvalue' type-id='type-id-36' size-in-bits='64' id='type-id-506'/>
-    <qualified-type-def type-id='type-id-11' const='yes' id='type-id-507'/>
+    <pointer-type-def type-id='type-id-499' size-in-bits='64' id='type-id-500'/>
+    <reference-type-def kind='lvalue' type-id='type-id-62' size-in-bits='64' id='type-id-501'/>
+    <qualified-type-def type-id='type-id-499' const='yes' id='type-id-502'/>
+    <pointer-type-def type-id='type-id-502' size-in-bits='64' id='type-id-503'/>
+    <reference-type-def kind='lvalue' type-id='type-id-36' size-in-bits='64' id='type-id-504'/>
+    <qualified-type-def type-id='type-id-11' const='yes' id='type-id-505'/>
+    <qualified-type-def type-id='type-id-506' const='yes' id='type-id-507'/>
     <qualified-type-def type-id='type-id-508' const='yes' id='type-id-509'/>
-    <qualified-type-def type-id='type-id-510' const='yes' id='type-id-511'/>
-    <reference-type-def kind='lvalue' type-id='type-id-96' size-in-bits='64' id='type-id-512'/>
-    <reference-type-def kind='lvalue' type-id='type-id-33' size-in-bits='64' id='type-id-513'/>
-    <reference-type-def kind='lvalue' type-id='type-id-112' size-in-bits='64' id='type-id-514'/>
+    <reference-type-def kind='lvalue' type-id='type-id-96' size-in-bits='64' id='type-id-510'/>
+    <reference-type-def kind='lvalue' type-id='type-id-33' size-in-bits='64' id='type-id-511'/>
+    <reference-type-def kind='lvalue' type-id='type-id-112' size-in-bits='64' id='type-id-512'/>
     <namespace-decl name='boost'>
       <namespace-decl name='filesystem'>
         <namespace-decl name='detail'>
-          <class-decl name='utf8_codecvt_facet' size-in-bits='192' is-struct='yes' visibility='default' filepath='src/third_party/boost-1.56.0/boost/detail/utf8_codecvt_facet.hpp' line='106' column='1' id='type-id-501'>
+          <class-decl name='utf8_codecvt_facet' size-in-bits='192' is-struct='yes' visibility='default' filepath='src/third_party/boost-1.56.0/boost/detail/utf8_codecvt_facet.hpp' line='106' column='1' id='type-id-499'>
             <base-class access='public' layout-offset-in-bits='0' type-id='type-id-334'/>
             <member-function access='public' constructor='yes'>
               <function-decl name='utf8_codecvt_facet' filepath='src/third_party/boost-1.56.0/boost/detail/utf8_codecvt_facet.hpp' line='110' column='1' visibility='default' binding='global' size-in-bits='64'>
-                <parameter type-id='type-id-502' is-artificial='yes'/>
+                <parameter type-id='type-id-500' is-artificial='yes'/>
                 <parameter type-id='type-id-391'/>
                 <return type-id='type-id-18'/>
               </function-decl>
             </member-function>
             <member-function access='protected'>
               <function-decl name='invalid_continuing_octet' mangled-name='_ZNK5boost10filesystem6detail18utf8_codecvt_facet24invalid_continuing_octetEh' filepath='src/third_party/boost-1.56.0/boost/detail/utf8_codecvt_facet.hpp' line='134' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNK5boost10filesystem6detail18utf8_codecvt_facet24invalid_continuing_octetEh'>
-                <parameter type-id='type-id-505' is-artificial='yes'/>
-                <parameter type-id='type-id-498'/>
+                <parameter type-id='type-id-503' is-artificial='yes'/>
+                <parameter type-id='type-id-496'/>
                 <return type-id='type-id-1'/>
               </function-decl>
             </member-function>
             <member-function access='protected'>
               <function-decl name='invalid_leading_octet' mangled-name='_ZNK5boost10filesystem6detail18utf8_codecvt_facet21invalid_leading_octetEh' filepath='src/third_party/boost-1.56.0/boost/detail/utf8_codecvt_facet.hpp' line='138' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNK5boost10filesystem6detail18utf8_codecvt_facet21invalid_leading_octetEh'>
-                <parameter type-id='type-id-505' is-artificial='yes'/>
-                <parameter type-id='type-id-498'/>
+                <parameter type-id='type-id-503' is-artificial='yes'/>
+                <parameter type-id='type-id-496'/>
                 <return type-id='type-id-1'/>
               </function-decl>
             </member-function>
             <member-function access='protected' static='yes'>
               <function-decl name='get_cont_octet_count' mangled-name='_ZN5boost10filesystem6detail18utf8_codecvt_facet20get_cont_octet_countEh' filepath='src/third_party/boost-1.56.0/boost/detail/utf8_codecvt_facet.hpp' line='144' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZN5boost10filesystem6detail18utf8_codecvt_facet20get_cont_octet_countEh'>
-                <parameter type-id='type-id-498'/>
+                <parameter type-id='type-id-496'/>
                 <return type-id='type-id-7'/>
               </function-decl>
             </member-function>
             <member-function access='protected' static='yes'>
               <function-decl name='get_octet_count' mangled-name='_ZN5boost10filesystem6detail18utf8_codecvt_facet15get_octet_countEh' filepath='src/third_party/boost-1.56.0/boost/detail/utf8_codecvt_facet.hpp' line='148' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZN5boost10filesystem6detail18utf8_codecvt_facet15get_octet_countEh'>
-                <parameter type-id='type-id-498'/>
+                <parameter type-id='type-id-496'/>
                 <return type-id='type-id-7'/>
               </function-decl>
             </member-function>
             <member-function access='protected'>
               <function-decl name='get_cont_octet_out_count' mangled-name='_ZNK5boost10filesystem6detail18utf8_codecvt_facet24get_cont_octet_out_countEw' filepath='src/third_party/boost-1.56.0/boost/detail/utf8_codecvt_facet.hpp' line='152' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNK5boost10filesystem6detail18utf8_codecvt_facet24get_cont_octet_out_countEw'>
-                <parameter type-id='type-id-505' is-artificial='yes'/>
+                <parameter type-id='type-id-503' is-artificial='yes'/>
                 <parameter type-id='type-id-19'/>
                 <return type-id='type-id-11'/>
               </function-decl>
             </member-function>
             <member-function access='protected' vtable-offset='2'>
               <function-decl name='do_out' mangled-name='_ZNK5boost10filesystem6detail18utf8_codecvt_facet6do_outER11__mbstate_tPKwS6_RS6_PcS8_RS8_' filepath='src/third_party/boost-1.56.0/boost/detail/utf8_codecvt_facet.hpp' line='124' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNK5boost10filesystem6detail18utf8_codecvt_facet6do_outER11__mbstate_tPKwS6_RS6_PcS8_RS8_'>
-                <parameter type-id='type-id-505' is-artificial='yes'/>
-                <parameter type-id='type-id-513'/>
+                <parameter type-id='type-id-503' is-artificial='yes'/>
+                <parameter type-id='type-id-511'/>
                 <parameter type-id='type-id-96'/>
                 <parameter type-id='type-id-96'/>
-                <parameter type-id='type-id-512'/>
+                <parameter type-id='type-id-510'/>
                 <parameter type-id='type-id-62'/>
                 <parameter type-id='type-id-62'/>
-                <parameter type-id='type-id-503'/>
+                <parameter type-id='type-id-501'/>
                 <return type-id='type-id-474'/>
               </function-decl>
             </member-function>
             <member-function access='protected' vtable-offset='3'>
               <function-decl name='do_unshift' mangled-name='_ZNK5boost10filesystem6detail18utf8_codecvt_facet10do_unshiftER11__mbstate_tPcS5_RS5_' filepath='src/third_party/boost-1.56.0/boost/detail/utf8_codecvt_facet.hpp' line='159' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNK5boost10filesystem6detail18utf8_codecvt_facet10do_unshiftER11__mbstate_tPcS5_RS5_'>
-                <parameter type-id='type-id-505' is-artificial='yes'/>
-                <parameter type-id='type-id-513'/>
+                <parameter type-id='type-id-503' is-artificial='yes'/>
+                <parameter type-id='type-id-511'/>
                 <parameter type-id='type-id-62'/>
                 <parameter type-id='type-id-62'/>
-                <parameter type-id='type-id-503'/>
+                <parameter type-id='type-id-501'/>
                 <return type-id='type-id-474'/>
               </function-decl>
             </member-function>
             <member-function access='protected' vtable-offset='4'>
               <function-decl name='do_in' mangled-name='_ZNK5boost10filesystem6detail18utf8_codecvt_facet5do_inER11__mbstate_tPKcS6_RS6_PwS8_RS8_' filepath='src/third_party/boost-1.56.0/boost/detail/utf8_codecvt_facet.hpp' line='114' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNK5boost10filesystem6detail18utf8_codecvt_facet5do_inER11__mbstate_tPKcS6_RS6_PwS8_RS8_'>
-                <parameter type-id='type-id-505' is-artificial='yes'/>
-                <parameter type-id='type-id-513'/>
+                <parameter type-id='type-id-503' is-artificial='yes'/>
+                <parameter type-id='type-id-511'/>
                 <parameter type-id='type-id-36'/>
                 <parameter type-id='type-id-36'/>
-                <parameter type-id='type-id-506'/>
+                <parameter type-id='type-id-504'/>
                 <parameter type-id='type-id-112'/>
                 <parameter type-id='type-id-112'/>
-                <parameter type-id='type-id-514'/>
+                <parameter type-id='type-id-512'/>
                 <return type-id='type-id-474'/>
               </function-decl>
             </member-function>
             <member-function access='protected' vtable-offset='5'>
               <function-decl name='do_encoding' mangled-name='_ZNK5boost10filesystem6detail18utf8_codecvt_facet11do_encodingEv' filepath='src/third_party/boost-1.56.0/boost/detail/utf8_codecvt_facet.hpp' line='169' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNK5boost10filesystem6detail18utf8_codecvt_facet11do_encodingEv'>
-                <parameter type-id='type-id-505' is-artificial='yes'/>
+                <parameter type-id='type-id-503' is-artificial='yes'/>
                 <return type-id='type-id-11'/>
               </function-decl>
             </member-function>
             <member-function access='protected' vtable-offset='6'>
               <function-decl name='do_always_noconv' mangled-name='_ZNK5boost10filesystem6detail18utf8_codecvt_facet16do_always_noconvEv' filepath='src/third_party/boost-1.56.0/boost/detail/utf8_codecvt_facet.hpp' line='154' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNK5boost10filesystem6detail18utf8_codecvt_facet16do_always_noconvEv'>
-                <parameter type-id='type-id-505' is-artificial='yes'/>
+                <parameter type-id='type-id-503' is-artificial='yes'/>
                 <return type-id='type-id-1'/>
               </function-decl>
             </member-function>
             <member-function access='protected' vtable-offset='7'>
               <function-decl name='do_length' mangled-name='_ZNK5boost10filesystem6detail18utf8_codecvt_facet9do_lengthER11__mbstate_tPKcS6_m' filepath='src/third_party/boost-1.56.0/boost/detail/utf8_codecvt_facet.hpp' line='176' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNK5boost10filesystem6detail18utf8_codecvt_facet9do_lengthER11__mbstate_tPKcS6_m'>
-                <parameter type-id='type-id-505' is-artificial='yes'/>
-                <parameter type-id='type-id-513'/>
+                <parameter type-id='type-id-503' is-artificial='yes'/>
+                <parameter type-id='type-id-511'/>
                 <parameter type-id='type-id-36'/>
                 <parameter type-id='type-id-36'/>
                 <parameter type-id='type-id-391'/>
@@ -6824,7 +6806,7 @@
             </member-function>
             <member-function access='protected' vtable-offset='8'>
               <function-decl name='do_max_length' mangled-name='_ZNK5boost10filesystem6detail18utf8_codecvt_facet13do_max_lengthEv' filepath='src/third_party/boost-1.56.0/boost/detail/utf8_codecvt_facet.hpp' line='184' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNK5boost10filesystem6detail18utf8_codecvt_facet13do_max_lengthEv'>
-                <parameter type-id='type-id-505' is-artificial='yes'/>
+                <parameter type-id='type-id-503' is-artificial='yes'/>
                 <return type-id='type-id-11'/>
               </function-decl>
             </member-function>
@@ -6833,18 +6815,18 @@
       </namespace-decl>
     </namespace-decl>
     <namespace-decl name='std'>
-      <class-decl name='numeric_limits&lt;wchar_t&gt;' size-in-bits='8' is-struct='yes' visibility='default' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/limits' line='650' column='1' id='type-id-515'>
+      <class-decl name='numeric_limits&lt;wchar_t&gt;' size-in-bits='8' is-struct='yes' visibility='default' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/limits' line='650' column='1' id='type-id-513'>
         <data-member access='public' static='yes'>
           <var-decl name='is_specialized' type-id='type-id-221' visibility='default' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/limits' line='652' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
-          <var-decl name='digits' type-id='type-id-507' visibility='default' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/limits' line='665' column='1'/>
+          <var-decl name='digits' type-id='type-id-505' visibility='default' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/limits' line='665' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
-          <var-decl name='digits10' type-id='type-id-507' visibility='default' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/limits' line='666' column='1'/>
+          <var-decl name='digits10' type-id='type-id-505' visibility='default' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/limits' line='666' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
-          <var-decl name='max_digits10' type-id='type-id-507' visibility='default' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/limits' line='669' column='1'/>
+          <var-decl name='max_digits10' type-id='type-id-505' visibility='default' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/limits' line='669' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
           <var-decl name='is_signed' type-id='type-id-221' visibility='default' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/limits' line='671' column='1'/>
@@ -6856,19 +6838,19 @@
           <var-decl name='is_exact' type-id='type-id-221' visibility='default' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/limits' line='673' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
-          <var-decl name='radix' type-id='type-id-507' visibility='default' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/limits' line='674' column='1'/>
+          <var-decl name='radix' type-id='type-id-505' visibility='default' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/limits' line='674' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
-          <var-decl name='min_exponent' type-id='type-id-507' visibility='default' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/limits' line='682' column='1'/>
+          <var-decl name='min_exponent' type-id='type-id-505' visibility='default' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/limits' line='682' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
-          <var-decl name='min_exponent10' type-id='type-id-507' visibility='default' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/limits' line='683' column='1'/>
+          <var-decl name='min_exponent10' type-id='type-id-505' visibility='default' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/limits' line='683' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
-          <var-decl name='max_exponent' type-id='type-id-507' visibility='default' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/limits' line='684' column='1'/>
+          <var-decl name='max_exponent' type-id='type-id-505' visibility='default' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/limits' line='684' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
-          <var-decl name='max_exponent10' type-id='type-id-507' visibility='default' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/limits' line='685' column='1'/>
+          <var-decl name='max_exponent10' type-id='type-id-505' visibility='default' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/limits' line='685' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
           <var-decl name='has_infinity' type-id='type-id-221' visibility='default' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/limits' line='687' column='1'/>
@@ -6880,7 +6862,7 @@
           <var-decl name='has_signaling_NaN' type-id='type-id-221' visibility='default' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/limits' line='689' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
-          <var-decl name='has_denorm' type-id='type-id-509' visibility='default' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/limits' line='690' column='1'/>
+          <var-decl name='has_denorm' type-id='type-id-507' visibility='default' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/limits' line='690' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
           <var-decl name='has_denorm_loss' type-id='type-id-221' visibility='default' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/limits' line='692' column='1'/>
@@ -6901,7 +6883,7 @@
           <var-decl name='tinyness_before' type-id='type-id-221' visibility='default' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/limits' line='711' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
-          <var-decl name='round_style' type-id='type-id-511' visibility='default' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/limits' line='712' column='1'/>
+          <var-decl name='round_style' type-id='type-id-509' visibility='default' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/limits' line='712' column='1'/>
         </data-member>
         <member-function access='public' static='yes'>
           <function-decl name='min' mangled-name='_ZNSt14numeric_limitsIwE3minEv' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/limits' line='655' column='1' visibility='default' binding='global' size-in-bits='64'>
@@ -6949,13 +6931,13 @@
           </function-decl>
         </member-function>
       </class-decl>
-      <enum-decl name='float_denorm_style' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/limits' line='171' column='1' id='type-id-508'>
+      <enum-decl name='float_denorm_style' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/limits' line='171' column='1' id='type-id-506'>
         <underlying-type type-id='type-id-142'/>
         <enumerator name='denorm_indeterminate' value='-1'/>
         <enumerator name='denorm_absent' value='0'/>
         <enumerator name='denorm_present' value='1'/>
       </enum-decl>
-      <enum-decl name='float_round_style' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/limits' line='156' column='1' id='type-id-510'>
+      <enum-decl name='float_round_style' filepath='/usr/bin/../lib/gcc/x86_64-linux-gnu/4.9/../../../../include/c++/4.9/limits' line='156' column='1' id='type-id-508'>
         <underlying-type type-id='type-id-142'/>
         <enumerator name='round_indeterminate' value='-1'/>
         <enumerator name='round_toward_zero' value='0'/>
-- 
2.28.0.rc0.105.gf9edc3c819-goog


  reply	other threads:[~2020-07-22 11:07 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-22 11:07 [RFC PATCH 0/1] Fix decl_base comparison Giuliano Procida
2020-07-22 11:07 ` Giuliano Procida [this message]
2020-08-04 15:07   ` [RFC PATCH 1/1] Fix decl_base comparison function Dodji Seketeli
2020-08-04 15:47     ` Giuliano Procida
2020-08-04 17:16       ` Dodji Seketeli

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200722110736.2550361-2-gprocida@google.com \
    --to=gprocida@google.com \
    --cc=dodji@seketeli.org \
    --cc=kernel-team@android.com \
    --cc=libabigail@sourceware.org \
    --cc=maennich@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).