diff mbox series

[4/6] dwarf-reader: Avoid having several functions with the same symbol

Message ID 87zh326853.fsf@redhat.com
State Committed
Headers show
Series Fix subtle ABI artifact representation issues | expand

Commit Message

Dodji Seketeli Nov. 27, 2020, 5:07 p.m. UTC
Hello,

In the DWARF debug info, a C++ class can be represented by pieces
throughout a given binary.

In this picture, a given virtual member function can be represented
several times; each time in one different piece of the C++ class.  In
a given piece of the class, a virtual member function can be
represented with its ELF symbol set.  In another one, the same virtual
member function can be represented without that ELF symbol set.  And
there can also be pieces of the class that don't have a given virtual
function.

To handle this, the DWARF reader constructs one class from all its
pieces scattered around.  It adds each virtual member function to the
class as it comes across them while scanning the DWARF.

Then there is a pass at the end of the process that sets ELF symbols
to the (virtual) member functions that need it.

The problem with that pass is that it sometimes sets the same ELF
symbol to more than one virtual member function.  Those virtual member
functions all have the same mangled name that correspond to the ELF
symbol; but only one of them is meant to be associated with the ELF
symbol.  In essence, that one is the one that is exported by the ELF
binary.

This patch teaches the pass that sets the ELF symbols of function to
avoid setting the same ELF symbol to more than one function.

The patch also avoids build_function_decl to set symbol to a function
if that symbol was already set to an existing function.

This patch thus fixes a class of issues what arise when comparing a
binary against its own ABIXML representation.  Those several functions
having the same ELF symbol would cause spurious changes in that
context.

	* src/abg-dwarf-reader.cc
	(read_context::symbol_already_belongs_to_a_function): Define new
	member function.
	(read_context::fixup_functions_with_no_symbols): Use the new
	symbol_already_belongs_to_a_function function to avoid setting a
	symbol that already belongs to a function.
	* tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Adjust.
	* tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise.
	* tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise.
	* tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi:
	Likewise.

Signed-off-by: Dodji Seketeli <dodji@redhat.com>

Applied to master.

---
 src/abg-dwarf-reader.cc                       |  53 ++++++-
 .../test-read-dwarf/PR22122-libftdc.so.abi    |   2 +-
 .../test-read-dwarf/test10-pr18818-gcc.so.abi |  10 +-
 .../test-read-dwarf/test16-pr18904.so.abi     |  48 +++---
 .../test22-pr19097-libstdc++.so.6.0.17.so.abi | 140 +++++++++---------
 5 files changed, 152 insertions(+), 101 deletions(-)
diff mbox series

Patch

diff --git a/src/abg-dwarf-reader.cc b/src/abg-dwarf-reader.cc
index 6e9f3cad..c2eb17d4 100644
--- a/src/abg-dwarf-reader.cc
+++ b/src/abg-dwarf-reader.cc
@@ -4630,6 +4630,40 @@  public:
       }
   }
 
+  /// Test if a symbol belongs to a function of the current ABI
+  /// corpus.
+  ///
+  /// This is a sub-routine of fixup_functions_with_no_symbols.
+  ///
+  /// @param fn the function symbol to consider.
+  ///
+  /// @returnt true if @p fn belongs to a function of the current ABI
+  /// corpus.
+  bool
+  symbol_already_belongs_to_a_function(elf_symbol_sptr& fn)
+  {
+    corpus_sptr corp = current_corpus();
+    if (!corp)
+      return false;
+
+    string id = fn->get_id_string();
+
+    const vector<function_decl*> *fns = corp->lookup_functions(id);
+    if (!fns)
+      return false;
+
+    for (vector<function_decl*>::const_iterator i = fns->begin();
+	 i != fns->end();
+	 ++i)
+      {
+	function_decl* f = *i;
+	ABG_ASSERT(f);
+	if (f->get_symbol())
+	  return true;
+      }
+    return false;
+  }
+
   /// Some functions described by DWARF may have their linkage name
   /// set, but no link to their actual underlying elf symbol.  When
   /// these are virtual member functions, comparing the enclosing type
@@ -4663,6 +4697,23 @@  public:
       if (elf_symbol_sptr sym =
 	  corp->lookup_function_symbol(i->second->get_linkage_name()))
 	{
+	  // So i->second is a virtual member function that was
+	  // previously scheduled to be set a function symbol.
+	  //
+	  // But if it appears that it now has a symbol already set,
+	  // then do not set a symbol to it again.
+	  //
+	  // Or if it appears that another virtual member function
+	  // from the current ABI Corpus, with the same linkage
+	  // (mangled) name has already been set a symbol, then do not
+	  // set a symbol to this function either.  Otherwise, there
+	  // will be two virtual member functions with the same symbol
+	  // in the class and that leads to spurious hard-to-debug
+	  // change reports later down the road.
+	  if (i->second->get_symbol()
+	      || symbol_already_belongs_to_a_function(sym))
+	    continue;
+
 	  ABG_ASSERT(is_member_function(i->second));
 	  ABG_ASSERT(get_member_function_is_virtual(i->second));
 	  i->second->set_symbol(sym);
@@ -15707,7 +15758,7 @@  build_function_decl(read_context&	ctxt,
 	    fn_sym = ctxt.function_symbol_is_exported(fn_addr);
 	}
 
-      if (fn_sym)
+      if (fn_sym && !ctxt.symbol_already_belongs_to_a_function(fn_sym))
 	{
 	  result->set_symbol(fn_sym);
 	  string linkage_name = result->get_linkage_name();
diff --git a/tests/data/test-read-dwarf/PR22122-libftdc.so.abi b/tests/data/test-read-dwarf/PR22122-libftdc.so.abi
index d697e447..dffdfd3e 100644
--- a/tests/data/test-read-dwarf/PR22122-libftdc.so.abi
+++ b/tests/data/test-read-dwarf/PR22122-libftdc.so.abi
@@ -1348,7 +1348,7 @@ 
           </function-decl>
         </member-function>
         <member-function access='public' static='yes'>
-          <function-decl name='StringData' mangled-name='_ZN5mongo10StringDataC2EPKc' filepath='src/mongo/base/string_data.h' line='78' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZN5mongo10StringDataC2EPKc'>
+          <function-decl name='StringData' mangled-name='_ZN5mongo10StringDataC2EPKc' filepath='src/mongo/base/string_data.h' line='78' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-126' is-artificial='yes'/>
             <parameter type-id='type-id-73'/>
             <return type-id='type-id-26'/>
diff --git a/tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi b/tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi
index adc9dcdd..acab3bd5 100644
--- a/tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi
+++ b/tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi
@@ -6254,7 +6254,7 @@ 
           </function-decl>
         </member-function>
         <member-function access='public'>
-          <function-decl name='scoped_array' mangled-name='_ZN5boost12scoped_arrayIcEC2EPc' filepath='src/third_party/boost-1.56.0/boost/smart_ptr/scoped_array.hpp' line='57' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZN5boost12scoped_arrayIcEC2EPc'>
+          <function-decl name='scoped_array' mangled-name='_ZN5boost12scoped_arrayIcEC2EPc' filepath='src/third_party/boost-1.56.0/boost/smart_ptr/scoped_array.hpp' line='57' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-314' is-artificial='yes'/>
             <parameter type-id='type-id-42'/>
             <return type-id='type-id-27'/>
@@ -8802,28 +8802,28 @@ 
             </function-decl>
           </member-function>
           <member-function access='public' destructor='yes' vtable-offset='-1'>
-            <function-decl name='~system_error' mangled-name='_ZN5boost6system12system_errorD0Ev' filepath='src/third_party/boost-1.56.0/boost/system/system_error.hpp' line='47' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZN5boost6system12system_errorD0Ev'>
+            <function-decl name='~system_error' mangled-name='_ZN5boost6system12system_errorD0Ev' filepath='src/third_party/boost-1.56.0/boost/system/system_error.hpp' line='47' column='1' visibility='default' binding='global' size-in-bits='64'>
               <parameter type-id='type-id-329' is-artificial='yes'/>
               <parameter type-id='type-id-15' is-artificial='yes'/>
               <return type-id='type-id-27'/>
             </function-decl>
           </member-function>
           <member-function access='public' destructor='yes' vtable-offset='-1'>
-            <function-decl name='~system_error' mangled-name='_ZN5boost6system12system_errorD0Ev' filepath='src/third_party/boost-1.56.0/boost/system/system_error.hpp' line='47' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZN5boost6system12system_errorD0Ev'>
+            <function-decl name='~system_error' mangled-name='_ZN5boost6system12system_errorD0Ev' filepath='src/third_party/boost-1.56.0/boost/system/system_error.hpp' line='47' column='1' visibility='default' binding='global' size-in-bits='64'>
               <parameter type-id='type-id-329' is-artificial='yes'/>
               <parameter type-id='type-id-15' is-artificial='yes'/>
               <return type-id='type-id-27'/>
             </function-decl>
           </member-function>
           <member-function access='public' destructor='yes' vtable-offset='-1'>
-            <function-decl name='~system_error' mangled-name='_ZN5boost6system12system_errorD0Ev' filepath='src/third_party/boost-1.56.0/boost/system/system_error.hpp' line='47' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZN5boost6system12system_errorD0Ev'>
+            <function-decl name='~system_error' mangled-name='_ZN5boost6system12system_errorD0Ev' filepath='src/third_party/boost-1.56.0/boost/system/system_error.hpp' line='47' column='1' visibility='default' binding='global' size-in-bits='64'>
               <parameter type-id='type-id-329' is-artificial='yes'/>
               <parameter type-id='type-id-15' is-artificial='yes'/>
               <return type-id='type-id-27'/>
             </function-decl>
           </member-function>
           <member-function access='public' destructor='yes' vtable-offset='-1'>
-            <function-decl name='~system_error' mangled-name='_ZN5boost6system12system_errorD0Ev' filepath='src/third_party/boost-1.56.0/boost/system/system_error.hpp' line='47' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZN5boost6system12system_errorD0Ev'>
+            <function-decl name='~system_error' mangled-name='_ZN5boost6system12system_errorD0Ev' filepath='src/third_party/boost-1.56.0/boost/system/system_error.hpp' line='47' column='1' visibility='default' binding='global' size-in-bits='64'>
               <parameter type-id='type-id-329' is-artificial='yes'/>
               <parameter type-id='type-id-15' is-artificial='yes'/>
               <return type-id='type-id-27'/>
diff --git a/tests/data/test-read-dwarf/test16-pr18904.so.abi b/tests/data/test-read-dwarf/test16-pr18904.so.abi
index ab5c7e1f..449528e7 100644
--- a/tests/data/test-read-dwarf/test16-pr18904.so.abi
+++ b/tests/data/test-read-dwarf/test16-pr18904.so.abi
@@ -3566,7 +3566,7 @@ 
         </function-decl>
       </member-function>
       <member-function access='public' destructor='yes'>
-        <function-decl name='~Stream' mangled-name='_ZN6StreamD2Ev' filepath='../../../gcc/liboffloadmic/runtime/offload_engine.h' line='332' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZN6StreamD2Ev'>
+        <function-decl name='~Stream' mangled-name='_ZN6StreamD2Ev' filepath='../../../gcc/liboffloadmic/runtime/offload_engine.h' line='332' column='1' visibility='default' binding='global' size-in-bits='64'>
           <parameter type-id='type-id-265' is-artificial='yes'/>
           <parameter type-id='type-id-25' is-artificial='yes'/>
           <return type-id='type-id-149'/>
@@ -3681,7 +3681,7 @@ 
         </function-decl>
       </member-function>
       <member-function access='private' constructor='yes'>
-        <function-decl name='MemRange' mangled-name='_ZN8MemRangeC2EPKvm' filepath='../../../gcc/liboffloadmic/runtime/offload_engine.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZN8MemRangeC2EPKvm'>
+        <function-decl name='MemRange' mangled-name='_ZN8MemRangeC2EPKvm' filepath='../../../gcc/liboffloadmic/runtime/offload_engine.h' line='49' column='1' visibility='default' binding='global' size-in-bits='64'>
           <parameter type-id='type-id-274' is-artificial='yes'/>
           <parameter type-id='type-id-151'/>
           <parameter type-id='type-id-56'/>
@@ -5618,7 +5618,7 @@ 
               </function-decl>
             </member-function>
             <member-function access='public'>
-              <function-decl name='_Rb_tree_impl' mangled-name='_ZNSt8_Rb_treeImSt4pairIKmP6StreamESt10_Select1stIS4_ESt4lessImESaIS4_EE13_Rb_tree_implIS8_Lb1EEC2Ev' filepath='/export/users/iverbin/gcc_build_host/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/stl_tree.h' line='596' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNSt8_Rb_treeImSt4pairIKmP6StreamESt10_Select1stIS4_ESt4lessImESaIS4_EE13_Rb_tree_implIS8_Lb1EEC2Ev'>
+              <function-decl name='_Rb_tree_impl' mangled-name='_ZNSt8_Rb_treeImSt4pairIKmP6StreamESt10_Select1stIS4_ESt4lessImESaIS4_EE13_Rb_tree_implIS8_Lb1EEC2Ev' filepath='/export/users/iverbin/gcc_build_host/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/stl_tree.h' line='596' column='1' visibility='default' binding='global' size-in-bits='64'>
                 <parameter type-id='type-id-930' is-artificial='yes'/>
                 <return type-id='type-id-149'/>
               </function-decl>
@@ -6696,7 +6696,7 @@ 
           </function-decl>
         </member-function>
         <member-function access='public'>
-          <function-decl name='_Rb_tree_const_iterator' mangled-name='_ZNSt23_Rb_tree_const_iteratorISt4pairIKmP6StreamEEC2ERKSt17_Rb_tree_iteratorIS4_E' filepath='/export/users/iverbin/gcc_build_host/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/stl_tree.h' line='266' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNSt23_Rb_tree_const_iteratorISt4pairIKmP6StreamEEC2ERKSt17_Rb_tree_iteratorIS4_E'>
+          <function-decl name='_Rb_tree_const_iterator' mangled-name='_ZNSt23_Rb_tree_const_iteratorISt4pairIKmP6StreamEEC2ERKSt17_Rb_tree_iteratorIS4_E' filepath='/export/users/iverbin/gcc_build_host/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/stl_tree.h' line='266' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-942' is-artificial='yes'/>
             <parameter type-id='type-id-603'/>
             <return type-id='type-id-149'/>
@@ -7781,7 +7781,7 @@ 
               </function-decl>
             </member-function>
             <member-function access='public' constructor='yes'>
-              <function-decl name='_Alloc_node' mangled-name='_ZNSt8_Rb_treeI7PtrDataS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE11_Alloc_nodeC2ERS6_' filepath='/export/users/iverbin/gcc_build_host/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/stl_tree.h' line='459' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNSt8_Rb_treeI7PtrDataS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE11_Alloc_nodeC2ERS6_'>
+              <function-decl name='_Alloc_node' mangled-name='_ZNSt8_Rb_treeI7PtrDataS0_St9_IdentityIS0_ESt4lessIS0_ESaIS0_EE11_Alloc_nodeC2ERS6_' filepath='/export/users/iverbin/gcc_build_host/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/stl_tree.h' line='459' column='1' visibility='default' binding='global' size-in-bits='64'>
                 <parameter type-id='type-id-1226' is-artificial='yes'/>
                 <parameter type-id='type-id-917'/>
                 <return type-id='type-id-149'/>
@@ -11063,7 +11063,7 @@ 
           </function-decl>
         </member-function>
         <member-function access='public'>
-          <function-decl name='pair&lt;std::_Rb_tree_node&lt;PtrData&gt;*&amp;, std::_Rb_tree_node_base*&amp;, 1u&gt;' mangled-name='_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeI7PtrDataERS1_Lb1EEEOT_OT0_' filepath='/export/users/iverbin/gcc_build_host/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/stl_pair.h' line='240' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeI7PtrDataERS1_Lb1EEEOT_OT0_'>
+          <function-decl name='pair&lt;std::_Rb_tree_node&lt;PtrData&gt;*&amp;, std::_Rb_tree_node_base*&amp;, 1u&gt;' mangled-name='_ZNSt4pairIPSt18_Rb_tree_node_baseS1_EC2IRPSt13_Rb_tree_nodeI7PtrDataERS1_Lb1EEEOT_OT0_' filepath='/export/users/iverbin/gcc_build_host/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/stl_pair.h' line='240' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-1071' is-artificial='yes'/>
             <parameter type-id='type-id-1419'/>
             <parameter type-id='type-id-1417'/>
@@ -14631,7 +14631,7 @@ 
             </function-decl>
           </member-function>
           <member-function access='private' destructor='yes'>
-            <function-decl name='~_List_base' mangled-name='_ZNSt7__cxx1110_List_baseIP9coibufferSaIS2_EED2Ev' filepath='/export/users/iverbin/gcc_build_host/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/stl_list.h' line='441' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNSt7__cxx1110_List_baseIP9coibufferSaIS2_EED2Ev'>
+            <function-decl name='~_List_base' mangled-name='_ZNSt7__cxx1110_List_baseIP9coibufferSaIS2_EED2Ev' filepath='/export/users/iverbin/gcc_build_host/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/stl_list.h' line='441' column='1' visibility='default' binding='global' size-in-bits='64'>
               <parameter type-id='type-id-984' is-artificial='yes'/>
               <parameter type-id='type-id-25' is-artificial='yes'/>
               <return type-id='type-id-149'/>
@@ -15002,7 +15002,7 @@ 
             </function-decl>
           </member-function>
           <member-function access='private' destructor='yes'>
-            <function-decl name='~_List_base' mangled-name='_ZNSt7__cxx1110_List_baseIP7PtrDataSaIS2_EED2Ev' filepath='/export/users/iverbin/gcc_build_host/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/stl_list.h' line='441' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNSt7__cxx1110_List_baseIP7PtrDataSaIS2_EED2Ev'>
+            <function-decl name='~_List_base' mangled-name='_ZNSt7__cxx1110_List_baseIP7PtrDataSaIS2_EED2Ev' filepath='/export/users/iverbin/gcc_build_host/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/stl_list.h' line='441' column='1' visibility='default' binding='global' size-in-bits='64'>
               <parameter type-id='type-id-974' is-artificial='yes'/>
               <parameter type-id='type-id-25' is-artificial='yes'/>
               <return type-id='type-id-149'/>
@@ -18455,7 +18455,7 @@ 
           </function-decl>
         </member-function>
         <member-function access='private'>
-          <function-decl name='new_allocator' mangled-name='_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKmP6StreamEEEC2Ev' filepath='/export/users/iverbin/gcc_build_host/x86_64-pc-linux-gnu/libstdc++-v3/include/ext/new_allocator.h' line='79' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKmP6StreamEEEC2Ev'>
+          <function-decl name='new_allocator' mangled-name='_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKmP6StreamEEEC2Ev' filepath='/export/users/iverbin/gcc_build_host/x86_64-pc-linux-gnu/libstdc++-v3/include/ext/new_allocator.h' line='79' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-368' is-artificial='yes'/>
             <return type-id='type-id-149'/>
           </function-decl>
@@ -18974,7 +18974,7 @@ 
           </function-decl>
         </member-function>
         <member-function access='private' destructor='yes'>
-          <function-decl name='~new_allocator' mangled-name='_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIP9coibufferEED2Ev' filepath='/export/users/iverbin/gcc_build_host/x86_64-pc-linux-gnu/libstdc++-v3/include/ext/new_allocator.h' line='86' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIP9coibufferEED2Ev'>
+          <function-decl name='~new_allocator' mangled-name='_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIP9coibufferEED2Ev' filepath='/export/users/iverbin/gcc_build_host/x86_64-pc-linux-gnu/libstdc++-v3/include/ext/new_allocator.h' line='86' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-362' is-artificial='yes'/>
             <parameter type-id='type-id-25' is-artificial='yes'/>
             <return type-id='type-id-149'/>
@@ -19183,7 +19183,7 @@ 
           </function-decl>
         </member-function>
         <member-function access='private' destructor='yes'>
-          <function-decl name='~new_allocator' mangled-name='_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIP7PtrDataEED2Ev' filepath='/export/users/iverbin/gcc_build_host/x86_64-pc-linux-gnu/libstdc++-v3/include/ext/new_allocator.h' line='86' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIP7PtrDataEED2Ev'>
+          <function-decl name='~new_allocator' mangled-name='_ZN9__gnu_cxx13new_allocatorISt10_List_nodeIP7PtrDataEED2Ev' filepath='/export/users/iverbin/gcc_build_host/x86_64-pc-linux-gnu/libstdc++-v3/include/ext/new_allocator.h' line='86' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-358' is-artificial='yes'/>
             <parameter type-id='type-id-25' is-artificial='yes'/>
             <return type-id='type-id-149'/>
@@ -19231,7 +19231,7 @@ 
           </function-decl>
         </member-function>
         <member-function access='public'>
-          <function-decl name='__aligned_membuf' mangled-name='_ZN9__gnu_cxx16__aligned_membufI7PtrDataEC2Ev' filepath='/export/users/iverbin/gcc_build_host/x86_64-pc-linux-gnu/libstdc++-v3/include/ext/aligned_buffer.h' line='56' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZN9__gnu_cxx16__aligned_membufI7PtrDataEC2Ev'>
+          <function-decl name='__aligned_membuf' mangled-name='_ZN9__gnu_cxx16__aligned_membufI7PtrDataEC2Ev' filepath='/export/users/iverbin/gcc_build_host/x86_64-pc-linux-gnu/libstdc++-v3/include/ext/aligned_buffer.h' line='56' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-318' is-artificial='yes'/>
             <return type-id='type-id-149'/>
           </function-decl>
@@ -22663,7 +22663,7 @@ 
         </function-decl>
       </member-function>
       <member-function access='public' constructor='yes'>
-        <function-decl name='mutex_t' mangled-name='_ZN7mutex_tC2Ev' filepath='../../../gcc/liboffloadmic/runtime/offload_util.h' line='83' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZN7mutex_tC2Ev'>
+        <function-decl name='mutex_t' mangled-name='_ZN7mutex_tC2Ev' filepath='../../../gcc/liboffloadmic/runtime/offload_util.h' line='83' column='1' visibility='default' binding='global' size-in-bits='64'>
           <parameter type-id='type-id-1842' is-artificial='yes'/>
           <return type-id='type-id-149'/>
         </function-decl>
@@ -22676,7 +22676,7 @@ 
         </function-decl>
       </member-function>
       <member-function access='public' constructor='yes'>
-        <function-decl name='mutex_t' mangled-name='_ZN7mutex_tC2Ev' filepath='../../../gcc/liboffloadmic/runtime/offload_util.h' line='83' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZN7mutex_tC2Ev'>
+        <function-decl name='mutex_t' mangled-name='_ZN7mutex_tC2Ev' filepath='../../../gcc/liboffloadmic/runtime/offload_util.h' line='83' column='1' visibility='default' binding='global' size-in-bits='64'>
           <parameter type-id='type-id-1842' is-artificial='yes'/>
           <return type-id='type-id-149'/>
         </function-decl>
@@ -22689,7 +22689,7 @@ 
         </function-decl>
       </member-function>
       <member-function access='public' constructor='yes'>
-        <function-decl name='mutex_t' mangled-name='_ZN7mutex_tC2Ev' filepath='../../../gcc/liboffloadmic/runtime/offload_util.h' line='83' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZN7mutex_tC2Ev'>
+        <function-decl name='mutex_t' mangled-name='_ZN7mutex_tC2Ev' filepath='../../../gcc/liboffloadmic/runtime/offload_util.h' line='83' column='1' visibility='default' binding='global' size-in-bits='64'>
           <parameter type-id='type-id-1842' is-artificial='yes'/>
           <return type-id='type-id-149'/>
         </function-decl>
@@ -22702,7 +22702,7 @@ 
         </function-decl>
       </member-function>
       <member-function access='public' constructor='yes'>
-        <function-decl name='mutex_t' mangled-name='_ZN7mutex_tC2Ev' filepath='../../../gcc/liboffloadmic/runtime/offload_util.h' line='83' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZN7mutex_tC2Ev'>
+        <function-decl name='mutex_t' mangled-name='_ZN7mutex_tC2Ev' filepath='../../../gcc/liboffloadmic/runtime/offload_util.h' line='83' column='1' visibility='default' binding='global' size-in-bits='64'>
           <parameter type-id='type-id-1842' is-artificial='yes'/>
           <return type-id='type-id-149'/>
         </function-decl>
@@ -22883,7 +22883,7 @@ 
           </function-decl>
         </member-function>
         <member-function access='public'>
-          <function-decl name='pair&lt;std::_Rb_tree_iterator&lt;PtrData&gt;, bool, 1u&gt;' mangled-name='_ZNSt4pairISt17_Rb_tree_iteratorI7PtrDataEbEC2IS2_bLb1EEEOT_OT0_' filepath='/export/users/iverbin/gcc_build_host/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/stl_pair.h' line='240' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNSt4pairISt17_Rb_tree_iteratorI7PtrDataEbEC2IS2_bLb1EEEOT_OT0_'>
+          <function-decl name='pair&lt;std::_Rb_tree_iterator&lt;PtrData&gt;, bool, 1u&gt;' mangled-name='_ZNSt4pairISt17_Rb_tree_iteratorI7PtrDataEbEC2IS2_bLb1EEEOT_OT0_' filepath='/export/users/iverbin/gcc_build_host/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/stl_pair.h' line='240' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-1855' is-artificial='yes'/>
             <parameter type-id='type-id-1489'/>
             <parameter type-id='type-id-206'/>
@@ -24103,7 +24103,7 @@ 
         </function-decl>
       </member-function>
       <member-function access='public' destructor='yes'>
-        <function-decl name='~mutex_locker_t' mangled-name='_ZN14mutex_locker_tD2Ev' filepath='../../../gcc/liboffloadmic/runtime/offload_util.h' line='128' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZN14mutex_locker_tD2Ev'>
+        <function-decl name='~mutex_locker_t' mangled-name='_ZN14mutex_locker_tD2Ev' filepath='../../../gcc/liboffloadmic/runtime/offload_util.h' line='128' column='1' visibility='default' binding='global' size-in-bits='64'>
           <parameter type-id='type-id-1969' is-artificial='yes'/>
           <parameter type-id='type-id-25' is-artificial='yes'/>
           <return type-id='type-id-149'/>
@@ -24117,7 +24117,7 @@ 
         </function-decl>
       </member-function>
       <member-function access='public' destructor='yes'>
-        <function-decl name='~mutex_locker_t' mangled-name='_ZN14mutex_locker_tD2Ev' filepath='../../../gcc/liboffloadmic/runtime/offload_util.h' line='128' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZN14mutex_locker_tD2Ev'>
+        <function-decl name='~mutex_locker_t' mangled-name='_ZN14mutex_locker_tD2Ev' filepath='../../../gcc/liboffloadmic/runtime/offload_util.h' line='128' column='1' visibility='default' binding='global' size-in-bits='64'>
           <parameter type-id='type-id-1969' is-artificial='yes'/>
           <parameter type-id='type-id-25' is-artificial='yes'/>
           <return type-id='type-id-149'/>
@@ -26209,7 +26209,7 @@ 
           </function-decl>
         </member-function>
         <member-function access='public'>
-          <function-decl name='pair&lt;std::_Rb_tree_iterator&lt;PtrData&gt;, bool, 1u&gt;' mangled-name='_ZNSt4pairISt17_Rb_tree_iteratorI7PtrDataEbEC2IS2_bLb1EEEOT_OT0_' filepath='/export/users/iverbin/gcc_build_host/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/stl_pair.h' line='240' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNSt4pairISt17_Rb_tree_iteratorI7PtrDataEbEC2IS2_bLb1EEEOT_OT0_'>
+          <function-decl name='pair&lt;std::_Rb_tree_iterator&lt;PtrData&gt;, bool, 1u&gt;' mangled-name='_ZNSt4pairISt17_Rb_tree_iteratorI7PtrDataEbEC2IS2_bLb1EEEOT_OT0_' filepath='/export/users/iverbin/gcc_build_host/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/stl_pair.h' line='240' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-1855' is-artificial='yes'/>
             <parameter type-id='type-id-1489'/>
             <parameter type-id='type-id-206'/>
@@ -37366,7 +37366,7 @@ 
         </function-decl>
       </member-function>
       <member-function access='public' constructor='yes'>
-        <function-decl name='mutex_t' mangled-name='_ZN7mutex_tC2Ev' filepath='../../../gcc/liboffloadmic/runtime/offload_util.h' line='83' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZN7mutex_tC2Ev'>
+        <function-decl name='mutex_t' mangled-name='_ZN7mutex_tC2Ev' filepath='../../../gcc/liboffloadmic/runtime/offload_util.h' line='83' column='1' visibility='default' binding='global' size-in-bits='64'>
           <parameter type-id='type-id-1842' is-artificial='yes'/>
           <return type-id='type-id-149'/>
         </function-decl>
@@ -37379,7 +37379,7 @@ 
         </function-decl>
       </member-function>
       <member-function access='public' constructor='yes'>
-        <function-decl name='mutex_t' mangled-name='_ZN7mutex_tC2Ev' filepath='../../../gcc/liboffloadmic/runtime/offload_util.h' line='83' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZN7mutex_tC2Ev'>
+        <function-decl name='mutex_t' mangled-name='_ZN7mutex_tC2Ev' filepath='../../../gcc/liboffloadmic/runtime/offload_util.h' line='83' column='1' visibility='default' binding='global' size-in-bits='64'>
           <parameter type-id='type-id-1842' is-artificial='yes'/>
           <return type-id='type-id-149'/>
         </function-decl>
@@ -37392,7 +37392,7 @@ 
         </function-decl>
       </member-function>
       <member-function access='public' constructor='yes'>
-        <function-decl name='mutex_t' mangled-name='_ZN7mutex_tC2Ev' filepath='../../../gcc/liboffloadmic/runtime/offload_util.h' line='83' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZN7mutex_tC2Ev'>
+        <function-decl name='mutex_t' mangled-name='_ZN7mutex_tC2Ev' filepath='../../../gcc/liboffloadmic/runtime/offload_util.h' line='83' column='1' visibility='default' binding='global' size-in-bits='64'>
           <parameter type-id='type-id-1842' is-artificial='yes'/>
           <return type-id='type-id-149'/>
         </function-decl>
@@ -37405,7 +37405,7 @@ 
         </function-decl>
       </member-function>
       <member-function access='public' constructor='yes'>
-        <function-decl name='mutex_t' mangled-name='_ZN7mutex_tC2Ev' filepath='../../../gcc/liboffloadmic/runtime/offload_util.h' line='83' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZN7mutex_tC2Ev'>
+        <function-decl name='mutex_t' mangled-name='_ZN7mutex_tC2Ev' filepath='../../../gcc/liboffloadmic/runtime/offload_util.h' line='83' column='1' visibility='default' binding='global' size-in-bits='64'>
           <parameter type-id='type-id-1842' is-artificial='yes'/>
           <return type-id='type-id-149'/>
         </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 1d5daafd..e6b52d26 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
@@ -26211,7 +26211,7 @@ 
           </function-decl>
         </member-function>
         <member-function access='protected' const='yes' vtable-offset='2'>
-          <function-decl name='do_out' mangled-name='_ZNKSt7codecvtIwc11__mbstate_tE6do_outERS0_PKwS4_RS4_PcS6_RS6_' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/codecvt.h' line='425' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNKSt7codecvtIwc11__mbstate_tE6do_outERS0_PKwS4_RS4_PcS6_RS6_@@GLIBCXX_3.4'>
+          <function-decl name='do_out' mangled-name='_ZNKSt7codecvtIwc11__mbstate_tE6do_outERS0_PKwS4_RS4_PcS6_RS6_' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/codecvt.h' line='425' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-1414' is-artificial='yes'/>
             <parameter type-id='type-id-1415'/>
             <parameter type-id='type-id-1416'/>
@@ -26247,7 +26247,7 @@ 
           </function-decl>
         </member-function>
         <member-function access='protected' const='yes' vtable-offset='4'>
-          <function-decl name='do_in' mangled-name='_ZNKSt7codecvtIwc11__mbstate_tE5do_inERS0_PKcS4_RS4_PwS6_RS6_' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/codecvt.h' line='436' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNKSt7codecvtIwc11__mbstate_tE5do_inERS0_PKcS4_RS4_PwS6_RS6_@@GLIBCXX_3.4'>
+          <function-decl name='do_in' mangled-name='_ZNKSt7codecvtIwc11__mbstate_tE5do_inERS0_PKcS4_RS4_PwS6_RS6_' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/codecvt.h' line='436' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-1414' is-artificial='yes'/>
             <parameter type-id='type-id-1415'/>
             <parameter type-id='type-id-1421'/>
@@ -26523,6 +26523,13 @@ 
             <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'>
+            <parameter type-id='type-id-1432' is-artificial='yes'/>
+            <parameter type-id='type-id-1427'/>
+            <return type-id='type-id-1427'/>
+          </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-1432' is-artificial='yes'/>
@@ -26530,11 +26537,12 @@ 
             <return type-id='type-id-17'/>
           </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'>
+        <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'>
             <parameter type-id='type-id-1432' is-artificial='yes'/>
-            <parameter type-id='type-id-1427'/>
-            <return type-id='type-id-1427'/>
+            <parameter type-id='type-id-1435'/>
+            <parameter type-id='type-id-1436'/>
+            <return type-id='type-id-1436'/>
           </function-decl>
         </member-function>
         <member-function access='protected' const='yes' vtable-offset='3'>
@@ -26545,12 +26553,11 @@ 
             <return type-id='type-id-4'/>
           </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='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'>
             <parameter type-id='type-id-1432' is-artificial='yes'/>
-            <parameter type-id='type-id-1435'/>
-            <parameter type-id='type-id-1436'/>
-            <return type-id='type-id-1436'/>
+            <parameter type-id='type-id-1427'/>
+            <return type-id='type-id-1427'/>
           </function-decl>
         </member-function>
         <member-function access='protected' const='yes' vtable-offset='4'>
@@ -26560,11 +26567,12 @@ 
             <return type-id='type-id-17'/>
           </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='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'>
             <parameter type-id='type-id-1432' is-artificial='yes'/>
-            <parameter type-id='type-id-1427'/>
-            <return type-id='type-id-1427'/>
+            <parameter type-id='type-id-1435'/>
+            <parameter type-id='type-id-1436'/>
+            <return type-id='type-id-1436'/>
           </function-decl>
         </member-function>
         <member-function access='protected' const='yes' vtable-offset='5'>
@@ -26575,14 +26583,6 @@ 
             <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-1432' is-artificial='yes'/>
-            <parameter type-id='type-id-1435'/>
-            <parameter type-id='type-id-1436'/>
-            <return type-id='type-id-1436'/>
-          </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-1432' is-artificial='yes'/>
@@ -26714,7 +26714,7 @@ 
           </function-decl>
         </member-function>
         <member-function access='protected' const='yes' vtable-offset='2'>
-          <function-decl name='do_is' mangled-name='_ZNKSt5ctypeIwE5do_isEtw' 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='1245' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNKSt5ctypeIwE5do_isEtw@@GLIBCXX_3.4'>
+          <function-decl name='do_is' mangled-name='_ZNKSt5ctypeIwE5do_isEtw' 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='1245' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-1445' is-artificial='yes'/>
             <parameter type-id='type-id-1433'/>
             <parameter type-id='type-id-1438'/>
@@ -26730,7 +26730,7 @@ 
           </function-decl>
         </member-function>
         <member-function access='protected' const='yes' vtable-offset='3'>
-          <function-decl name='do_is' mangled-name='_ZNKSt5ctypeIwE5do_isEPKwS2_Pt' 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='1264' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNKSt5ctypeIwE5do_isEPKwS2_Pt@@GLIBCXX_3.4'>
+          <function-decl name='do_is' mangled-name='_ZNKSt5ctypeIwE5do_isEPKwS2_Pt' 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='1264' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-1445' is-artificial='yes'/>
             <parameter type-id='type-id-1446'/>
             <parameter type-id='type-id-1446'/>
@@ -26748,7 +26748,7 @@ 
           </function-decl>
         </member-function>
         <member-function access='protected' const='yes' vtable-offset='4'>
-          <function-decl name='do_scan_is' mangled-name='_ZNKSt5ctypeIwE10do_scan_isEtPKwS2_' 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='1282' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNKSt5ctypeIwE10do_scan_isEtPKwS2_@@GLIBCXX_3.4'>
+          <function-decl name='do_scan_is' mangled-name='_ZNKSt5ctypeIwE10do_scan_isEtPKwS2_' 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='1282' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-1445' is-artificial='yes'/>
             <parameter type-id='type-id-1433'/>
             <parameter type-id='type-id-1446'/>
@@ -26766,7 +26766,7 @@ 
           </function-decl>
         </member-function>
         <member-function access='protected' const='yes' vtable-offset='5'>
-          <function-decl name='do_scan_not' mangled-name='_ZNKSt5ctypeIwE11do_scan_notEtPKwS2_' 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='1300' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNKSt5ctypeIwE11do_scan_notEtPKwS2_@@GLIBCXX_3.4'>
+          <function-decl name='do_scan_not' mangled-name='_ZNKSt5ctypeIwE11do_scan_notEtPKwS2_' 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='1300' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-1445' is-artificial='yes'/>
             <parameter type-id='type-id-1433'/>
             <parameter type-id='type-id-1446'/>
@@ -26784,7 +26784,7 @@ 
           </function-decl>
         </member-function>
         <member-function access='protected' const='yes' vtable-offset='6'>
-          <function-decl name='do_toupper' mangled-name='_ZNKSt5ctypeIwE10do_toupperEw' 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='1317' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNKSt5ctypeIwE10do_toupperEw@@GLIBCXX_3.4'>
+          <function-decl name='do_toupper' mangled-name='_ZNKSt5ctypeIwE10do_toupperEw' 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='1317' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-1445' is-artificial='yes'/>
             <parameter type-id='type-id-1438'/>
             <return type-id='type-id-1438'/>
@@ -26798,7 +26798,7 @@ 
           </function-decl>
         </member-function>
         <member-function access='protected' const='yes' vtable-offset='7'>
-          <function-decl name='do_toupper' mangled-name='_ZNKSt5ctypeIwE10do_toupperEPwPKw' 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='1334' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNKSt5ctypeIwE10do_toupperEPwPKw@@GLIBCXX_3.4'>
+          <function-decl name='do_toupper' mangled-name='_ZNKSt5ctypeIwE10do_toupperEPwPKw' 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='1334' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-1445' is-artificial='yes'/>
             <parameter type-id='type-id-1447'/>
             <parameter type-id='type-id-1446'/>
@@ -26814,7 +26814,7 @@ 
           </function-decl>
         </member-function>
         <member-function access='protected' const='yes' vtable-offset='8'>
-          <function-decl name='do_tolower' mangled-name='_ZNKSt5ctypeIwE10do_tolowerEw' 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='1350' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNKSt5ctypeIwE10do_tolowerEw@@GLIBCXX_3.4'>
+          <function-decl name='do_tolower' mangled-name='_ZNKSt5ctypeIwE10do_tolowerEw' 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='1350' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-1445' is-artificial='yes'/>
             <parameter type-id='type-id-1438'/>
             <return type-id='type-id-1438'/>
@@ -26828,7 +26828,7 @@ 
           </function-decl>
         </member-function>
         <member-function access='protected' const='yes' vtable-offset='9'>
-          <function-decl name='do_tolower' mangled-name='_ZNKSt5ctypeIwE10do_tolowerEPwPKw' 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='1367' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNKSt5ctypeIwE10do_tolowerEPwPKw@@GLIBCXX_3.4'>
+          <function-decl name='do_tolower' mangled-name='_ZNKSt5ctypeIwE10do_tolowerEPwPKw' 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='1367' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-1445' is-artificial='yes'/>
             <parameter type-id='type-id-1447'/>
             <parameter type-id='type-id-1446'/>
@@ -26844,7 +26844,7 @@ 
           </function-decl>
         </member-function>
         <member-function access='protected' const='yes' vtable-offset='10'>
-          <function-decl name='do_widen' mangled-name='_ZNKSt5ctypeIwE8do_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='1387' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNKSt5ctypeIwE8do_widenEc@@GLIBCXX_3.4'>
+          <function-decl name='do_widen' mangled-name='_ZNKSt5ctypeIwE8do_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='1387' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-1445' is-artificial='yes'/>
             <parameter type-id='type-id-17'/>
             <return type-id='type-id-1438'/>
@@ -26858,7 +26858,7 @@ 
           </function-decl>
         </member-function>
         <member-function access='protected' const='yes' vtable-offset='11'>
-          <function-decl name='do_widen' mangled-name='_ZNKSt5ctypeIwE8do_widenEPKcS2_Pw' 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='1409' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNKSt5ctypeIwE8do_widenEPKcS2_Pw@@GLIBCXX_3.4'>
+          <function-decl name='do_widen' mangled-name='_ZNKSt5ctypeIwE8do_widenEPKcS2_Pw' 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='1409' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-1445' is-artificial='yes'/>
             <parameter type-id='type-id-4'/>
             <parameter type-id='type-id-4'/>
@@ -26876,7 +26876,7 @@ 
           </function-decl>
         </member-function>
         <member-function access='protected' const='yes' vtable-offset='12'>
-          <function-decl name='do_narrow' mangled-name='_ZNKSt5ctypeIwE9do_narrowEwc' 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='1432' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNKSt5ctypeIwE9do_narrowEwc@@GLIBCXX_3.4'>
+          <function-decl name='do_narrow' mangled-name='_ZNKSt5ctypeIwE9do_narrowEwc' 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='1432' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-1445' is-artificial='yes'/>
             <parameter type-id='type-id-1438'/>
             <parameter type-id='type-id-17'/>
@@ -26892,7 +26892,7 @@ 
           </function-decl>
         </member-function>
         <member-function access='protected' const='yes' vtable-offset='13'>
-          <function-decl name='do_narrow' mangled-name='_ZNKSt5ctypeIwE9do_narrowEPKwS2_cPc' 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='1458' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNKSt5ctypeIwE9do_narrowEPKwS2_cPc@@GLIBCXX_3.4'>
+          <function-decl name='do_narrow' mangled-name='_ZNKSt5ctypeIwE9do_narrowEPKwS2_cPc' 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='1458' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-1445' is-artificial='yes'/>
             <parameter type-id='type-id-1446'/>
             <parameter type-id='type-id-1446'/>
@@ -45277,7 +45277,7 @@ 
           </function-decl>
         </member-function>
         <member-function access='protected' const='yes' vtable-offset='2'>
-          <function-decl name='do_out' mangled-name='_ZNKSt7codecvtIwc11__mbstate_tE6do_outERS0_PKwS4_RS4_PcS6_RS6_' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/codecvt.h' line='425' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNKSt7codecvtIwc11__mbstate_tE6do_outERS0_PKwS4_RS4_PcS6_RS6_@@GLIBCXX_3.4'>
+          <function-decl name='do_out' mangled-name='_ZNKSt7codecvtIwc11__mbstate_tE6do_outERS0_PKwS4_RS4_PcS6_RS6_' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/codecvt.h' line='425' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-1414' is-artificial='yes'/>
             <parameter type-id='type-id-1415'/>
             <parameter type-id='type-id-1416'/>
@@ -45313,7 +45313,7 @@ 
           </function-decl>
         </member-function>
         <member-function access='protected' const='yes' vtable-offset='4'>
-          <function-decl name='do_in' mangled-name='_ZNKSt7codecvtIwc11__mbstate_tE5do_inERS0_PKcS4_RS4_PwS6_RS6_' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/codecvt.h' line='436' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNKSt7codecvtIwc11__mbstate_tE5do_inERS0_PKcS4_RS4_PwS6_RS6_@@GLIBCXX_3.4'>
+          <function-decl name='do_in' mangled-name='_ZNKSt7codecvtIwc11__mbstate_tE5do_inERS0_PKcS4_RS4_PwS6_RS6_' filepath='/tmp/legendre/spack-stage/spack-stage-wfh0ig/gcc-4.7.4/x86_64-unknown-linux-gnu/libstdc++-v3/include/bits/codecvt.h' line='436' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-1414' is-artificial='yes'/>
             <parameter type-id='type-id-1415'/>
             <parameter type-id='type-id-1421'/>
@@ -47757,7 +47757,7 @@ 
           </function-decl>
         </member-function>
         <member-function access='protected' const='yes' vtable-offset='2'>
-          <function-decl name='do_is' mangled-name='_ZNKSt5ctypeIwE5do_isEtw' 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='1245' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNKSt5ctypeIwE5do_isEtw@@GLIBCXX_3.4'>
+          <function-decl name='do_is' mangled-name='_ZNKSt5ctypeIwE5do_isEtw' 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='1245' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-1445' is-artificial='yes'/>
             <parameter type-id='type-id-1433'/>
             <parameter type-id='type-id-1438'/>
@@ -47773,7 +47773,7 @@ 
           </function-decl>
         </member-function>
         <member-function access='protected' const='yes' vtable-offset='3'>
-          <function-decl name='do_is' mangled-name='_ZNKSt5ctypeIwE5do_isEPKwS2_Pt' 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='1264' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNKSt5ctypeIwE5do_isEPKwS2_Pt@@GLIBCXX_3.4'>
+          <function-decl name='do_is' mangled-name='_ZNKSt5ctypeIwE5do_isEPKwS2_Pt' 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='1264' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-1445' is-artificial='yes'/>
             <parameter type-id='type-id-1446'/>
             <parameter type-id='type-id-1446'/>
@@ -47791,7 +47791,7 @@ 
           </function-decl>
         </member-function>
         <member-function access='protected' const='yes' vtable-offset='4'>
-          <function-decl name='do_scan_is' mangled-name='_ZNKSt5ctypeIwE10do_scan_isEtPKwS2_' 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='1282' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNKSt5ctypeIwE10do_scan_isEtPKwS2_@@GLIBCXX_3.4'>
+          <function-decl name='do_scan_is' mangled-name='_ZNKSt5ctypeIwE10do_scan_isEtPKwS2_' 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='1282' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-1445' is-artificial='yes'/>
             <parameter type-id='type-id-1433'/>
             <parameter type-id='type-id-1446'/>
@@ -47809,7 +47809,7 @@ 
           </function-decl>
         </member-function>
         <member-function access='protected' const='yes' vtable-offset='5'>
-          <function-decl name='do_scan_not' mangled-name='_ZNKSt5ctypeIwE11do_scan_notEtPKwS2_' 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='1300' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNKSt5ctypeIwE11do_scan_notEtPKwS2_@@GLIBCXX_3.4'>
+          <function-decl name='do_scan_not' mangled-name='_ZNKSt5ctypeIwE11do_scan_notEtPKwS2_' 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='1300' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-1445' is-artificial='yes'/>
             <parameter type-id='type-id-1433'/>
             <parameter type-id='type-id-1446'/>
@@ -47827,7 +47827,7 @@ 
           </function-decl>
         </member-function>
         <member-function access='protected' const='yes' vtable-offset='6'>
-          <function-decl name='do_toupper' mangled-name='_ZNKSt5ctypeIwE10do_toupperEw' 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='1317' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNKSt5ctypeIwE10do_toupperEw@@GLIBCXX_3.4'>
+          <function-decl name='do_toupper' mangled-name='_ZNKSt5ctypeIwE10do_toupperEw' 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='1317' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-1445' is-artificial='yes'/>
             <parameter type-id='type-id-1438'/>
             <return type-id='type-id-1438'/>
@@ -47841,7 +47841,7 @@ 
           </function-decl>
         </member-function>
         <member-function access='protected' const='yes' vtable-offset='7'>
-          <function-decl name='do_toupper' mangled-name='_ZNKSt5ctypeIwE10do_toupperEPwPKw' 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='1334' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNKSt5ctypeIwE10do_toupperEPwPKw@@GLIBCXX_3.4'>
+          <function-decl name='do_toupper' mangled-name='_ZNKSt5ctypeIwE10do_toupperEPwPKw' 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='1334' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-1445' is-artificial='yes'/>
             <parameter type-id='type-id-1447'/>
             <parameter type-id='type-id-1446'/>
@@ -47857,7 +47857,7 @@ 
           </function-decl>
         </member-function>
         <member-function access='protected' const='yes' vtable-offset='8'>
-          <function-decl name='do_tolower' mangled-name='_ZNKSt5ctypeIwE10do_tolowerEw' 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='1350' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNKSt5ctypeIwE10do_tolowerEw@@GLIBCXX_3.4'>
+          <function-decl name='do_tolower' mangled-name='_ZNKSt5ctypeIwE10do_tolowerEw' 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='1350' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-1445' is-artificial='yes'/>
             <parameter type-id='type-id-1438'/>
             <return type-id='type-id-1438'/>
@@ -47871,7 +47871,7 @@ 
           </function-decl>
         </member-function>
         <member-function access='protected' const='yes' vtable-offset='9'>
-          <function-decl name='do_tolower' mangled-name='_ZNKSt5ctypeIwE10do_tolowerEPwPKw' 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='1367' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNKSt5ctypeIwE10do_tolowerEPwPKw@@GLIBCXX_3.4'>
+          <function-decl name='do_tolower' mangled-name='_ZNKSt5ctypeIwE10do_tolowerEPwPKw' 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='1367' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-1445' is-artificial='yes'/>
             <parameter type-id='type-id-1447'/>
             <parameter type-id='type-id-1446'/>
@@ -47887,7 +47887,7 @@ 
           </function-decl>
         </member-function>
         <member-function access='protected' const='yes' vtable-offset='10'>
-          <function-decl name='do_widen' mangled-name='_ZNKSt5ctypeIwE8do_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='1387' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNKSt5ctypeIwE8do_widenEc@@GLIBCXX_3.4'>
+          <function-decl name='do_widen' mangled-name='_ZNKSt5ctypeIwE8do_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='1387' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-1445' is-artificial='yes'/>
             <parameter type-id='type-id-17'/>
             <return type-id='type-id-1438'/>
@@ -47901,7 +47901,7 @@ 
           </function-decl>
         </member-function>
         <member-function access='protected' const='yes' vtable-offset='11'>
-          <function-decl name='do_widen' mangled-name='_ZNKSt5ctypeIwE8do_widenEPKcS2_Pw' 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='1409' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNKSt5ctypeIwE8do_widenEPKcS2_Pw@@GLIBCXX_3.4'>
+          <function-decl name='do_widen' mangled-name='_ZNKSt5ctypeIwE8do_widenEPKcS2_Pw' 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='1409' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-1445' is-artificial='yes'/>
             <parameter type-id='type-id-4'/>
             <parameter type-id='type-id-4'/>
@@ -47919,7 +47919,7 @@ 
           </function-decl>
         </member-function>
         <member-function access='protected' const='yes' vtable-offset='12'>
-          <function-decl name='do_narrow' mangled-name='_ZNKSt5ctypeIwE9do_narrowEwc' 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='1432' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNKSt5ctypeIwE9do_narrowEwc@@GLIBCXX_3.4'>
+          <function-decl name='do_narrow' mangled-name='_ZNKSt5ctypeIwE9do_narrowEwc' 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='1432' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-1445' is-artificial='yes'/>
             <parameter type-id='type-id-1438'/>
             <parameter type-id='type-id-17'/>
@@ -47935,7 +47935,7 @@ 
           </function-decl>
         </member-function>
         <member-function access='protected' const='yes' vtable-offset='13'>
-          <function-decl name='do_narrow' mangled-name='_ZNKSt5ctypeIwE9do_narrowEPKwS2_cPc' 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='1458' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNKSt5ctypeIwE9do_narrowEPKwS2_cPc@@GLIBCXX_3.4'>
+          <function-decl name='do_narrow' mangled-name='_ZNKSt5ctypeIwE9do_narrowEPKwS2_cPc' 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='1458' column='1' visibility='default' binding='global' size-in-bits='64'>
             <parameter type-id='type-id-1445' is-artificial='yes'/>
             <parameter type-id='type-id-1446'/>
             <parameter type-id='type-id-1446'/>
@@ -49990,6 +49990,13 @@ 
             <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'>
+            <parameter type-id='type-id-1432' is-artificial='yes'/>
+            <parameter type-id='type-id-1427'/>
+            <return type-id='type-id-1427'/>
+          </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-1432' is-artificial='yes'/>
@@ -49997,11 +50004,12 @@ 
             <return type-id='type-id-17'/>
           </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'>
+        <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'>
             <parameter type-id='type-id-1432' is-artificial='yes'/>
-            <parameter type-id='type-id-1427'/>
-            <return type-id='type-id-1427'/>
+            <parameter type-id='type-id-1435'/>
+            <parameter type-id='type-id-1436'/>
+            <return type-id='type-id-1436'/>
           </function-decl>
         </member-function>
         <member-function access='protected' const='yes' vtable-offset='3'>
@@ -50012,12 +50020,11 @@ 
             <return type-id='type-id-4'/>
           </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='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'>
             <parameter type-id='type-id-1432' is-artificial='yes'/>
-            <parameter type-id='type-id-1435'/>
-            <parameter type-id='type-id-1436'/>
-            <return type-id='type-id-1436'/>
+            <parameter type-id='type-id-1427'/>
+            <return type-id='type-id-1427'/>
           </function-decl>
         </member-function>
         <member-function access='protected' const='yes' vtable-offset='4'>
@@ -50027,11 +50034,12 @@ 
             <return type-id='type-id-17'/>
           </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='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'>
             <parameter type-id='type-id-1432' is-artificial='yes'/>
-            <parameter type-id='type-id-1427'/>
-            <return type-id='type-id-1427'/>
+            <parameter type-id='type-id-1435'/>
+            <parameter type-id='type-id-1436'/>
+            <return type-id='type-id-1436'/>
           </function-decl>
         </member-function>
         <member-function access='protected' const='yes' vtable-offset='5'>
@@ -50042,14 +50050,6 @@ 
             <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-1432' is-artificial='yes'/>
-            <parameter type-id='type-id-1435'/>
-            <parameter type-id='type-id-1436'/>
-            <return type-id='type-id-1436'/>
-          </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-1432' is-artificial='yes'/>