Support DW_TAG_type_unit
authorDodji Seketeli <dodji@redhat.com>
Tue, 26 Jul 2016 15:46:10 +0000 (17:46 +0200)
committerDodji Seketeli <dodji@redhat.com>
Tue, 26 Jul 2016 18:07:03 +0000 (20:07 +0200)
Type units sections are sections in which the compiler emits types
uniquely identified by a signature.  This is so that the linker can
later discard redundant types (types having the same signature) from
the debug info and thus reduce the overall size of debug info.

These types are children DIEs of DW_TAG_type_unit.

Because DIEs coming from that .debug_types section can have the same
offset as DIEs coming from the .debug_info section, this patch defines
a new DIE source to identify DIEs coming from .debug_types section.
The name of that new source is the new TYPE_UNIT_DIE_SOURCE enumerator
of the die_source enum.  The patch also creates the necessary maps
containing DIEs coming from this new source and adjusts the
accompanying accessors accordingly.

* src/abg-dwarf-reader.cc (TYPE_UNIT_DIE_SOURCE): New enumerator
in enum die_source.
(read_context::{type_unit_die_decl_map_, type_unit_die_type_map_,
type_unit_die_wip_classes_map_,
type_unit_die_wip_function_types_map_,
type_unit_types_to_canonicalize_,
type_units_tu_die_imported_unit_points_map_,
type_section_die_parent_map_}): New data members.
(read_context::{get_die_source, associate_die_to_decl,
lookup_decl_from_die_offset, die_type_map, clear_die_type_maps,
die_wip_classes_map, die_wip_function_types_map,
types_to_canonicalize, clear_types_to_canonicalize,
tu_die_imported_unit_points_map, die_parent_map}): Support
TYPE_UNIT_DIE_SOURCE.
(get_parent_die, get_scope_for_die): Likewise.
(read_context::{lookup_decl_from_type_unit_die_offset,
type_section_die_parent_map}): Define new member functions.
(read_context::build_die_parent_maps): Build a DIE -> parent map
for DIEs coming from the .debug_types section.
* tests/data/test-read-dwarf/libtest23.so: New test input.
* tests/data/test-read-dwarf/libtest23.so.abi: New reference output.
* tests/data/test-read-dwarf/test23-first-tu.cc: Source code of
the new binary above.
* tests/data/test-read-dwarf/test23-second-tu.cc: Likewise.
* tests/data/Makefile.am: Add the new test material above to
source distribution.
* tests/test-read-dwarf.cc (in_out_specs): Make this test harness
execute over the new test input and reference output.

Signed-off-by: Dodji Seketeli <dodji@redhat.com>
src/abg-dwarf-reader.cc
tests/data/Makefile.am
tests/data/test-read-dwarf/libtest23.so [new file with mode: 0755]
tests/data/test-read-dwarf/libtest23.so.abi [new file with mode: 0644]
tests/data/test-read-dwarf/test23-first-tu.cc [new file with mode: 0644]
tests/data/test-read-dwarf/test23-second-tu.cc [new file with mode: 0644]
tests/test-read-dwarf.cc

index 821811aca7d7c87efc03cf12d457be8f634459ac..57110ffc72b1a0d362617b8c1616e082b3fce871 100644 (file)
@@ -76,6 +76,7 @@ enum die_source
   NO_DEBUG_INFO_DIE_SOURCE,
   PRIMARY_DEBUG_INFO_DIE_SOURCE,
   ALT_DEBUG_INFO_DIE_SOURCE,
+  TYPE_UNIT_DIE_SOURCE,
   NUMBER_OF_DIE_SOURCES,       // This one must always be the latest
                                // enumerator
 };
@@ -2110,6 +2111,7 @@ class read_context
   // described by the DWARF extension (as of DWARF4) described at
   // http://www.dwarfstd.org/ShowIssue.php?issue=120604.1.
   die_decl_map_type            alternate_die_decl_map_;
+  die_decl_map_type            type_unit_die_decl_map_;
   // This is a map that associates DIE offsets to their types.  This
   // is for DIEs that represent types.  Note that it's for DIEs
   // defined in the main debug info section.
@@ -2118,13 +2120,17 @@ class read_context
   // is for DIEs that represent types.  Note that it's for DIEs
   // defined in the alternate debug info section.
   die_type_map_type            alternate_die_type_map_;
+  die_type_map_type            type_unit_die_type_map_;
   die_class_map_type           die_wip_classes_map_;
   die_class_map_type           alternate_die_wip_classes_map_;
+  die_class_map_type           type_unit_die_wip_classes_map_;
   die_function_type_map_type   die_wip_function_types_map_;
   die_function_type_map_type   alternate_die_wip_function_types_map_;
+  die_function_type_map_type   type_unit_die_wip_function_types_map_;
   die_function_decl_map_type   die_function_with_no_symbol_map_;
   vector<Dwarf_Off>            types_to_canonicalize_;
   vector<Dwarf_Off>            alt_types_to_canonicalize_;
+  vector<Dwarf_Off>            type_unit_types_to_canonicalize_;
   string_classes_map           decl_only_classes_map_;
   die_tu_map_type              die_tu_map_;
   corpus_sptr                  cur_corpus_;
@@ -2137,9 +2143,11 @@ class read_context
   // A map that associates each tu die to a vector of unit import
   // points, in the alternate debug info
   tu_die_imported_unit_points_map_type alt_tu_die_imported_unit_points_map_;
+  tu_die_imported_unit_points_map_type type_units_tu_die_imported_unit_points_map_;
   // A DIE -> parent map for DIEs coming from the alternate debug info
   // file.
   offset_offset_map            alternate_die_parent_map_;
+  offset_offset_map            type_section_die_parent_map_;
   list<var_decl_sptr>          var_decls_to_add_;
   Elf_Scn*                     symtab_section_;
   // The "Official procedure descriptor section, aka .opd", used in
@@ -2515,6 +2523,8 @@ public:
        else
          ABG_ASSERT_NOT_REACHED;
       }
+    else if (tag == DW_TAG_type_unit)
+      source = TYPE_UNIT_DIE_SOURCE;
     else
       return false;
 
@@ -2617,6 +2627,9 @@ public:
       case ALT_DEBUG_INFO_DIE_SOURCE:
        associate_die_to_decl_alternate(die_offset, decl);
        break;
+      case TYPE_UNIT_DIE_SOURCE:
+       associate_die_to_decl_from_type_unit(die_offset, decl);
+       break;
       case NO_DEBUG_INFO_DIE_SOURCE:
       case NUMBER_OF_DIE_SOURCES:
        ABG_ASSERT_NOT_REACHED;
@@ -2662,6 +2675,23 @@ public:
     return it->second;
   }
 
+  /// Lookup the decl for a given DIE.  This works on DIEs that come
+  /// from the type unit section.
+  ///
+  /// @param die_offset the offset of the DIE to consider.
+  ///
+  /// @return the resulting decl, or null if no decl is associated to
+  /// the DIE represented by @p die_offset.
+  decl_base_sptr
+  lookup_decl_from_type_unit_die_offset(size_t die_offset)
+  {
+    die_decl_map_type::const_iterator it =
+      type_unit_die_decl_map_.find(die_offset);
+    if (it == type_unit_die_decl_map_.end())
+      return decl_base_sptr();
+    return it->second;
+  }
+
   /// Lookup the decl for a given DIE.
   ///
   /// @param die_offset the offset of the DIE to consider.
@@ -2688,6 +2718,9 @@ public:
       case ALT_DEBUG_INFO_DIE_SOURCE:
        result = lookup_decl_from_die_offset_alternate(die_offset);
        break;
+      case TYPE_UNIT_DIE_SOURCE:
+       result = lookup_decl_from_type_unit_die_offset(die_offset);
+       break;
       case NO_DEBUG_INFO_DIE_SOURCE:
       case NUMBER_OF_DIE_SOURCES:
        ABG_ASSERT_NOT_REACHED;
@@ -2710,6 +2743,8 @@ public:
        break;
       case ALT_DEBUG_INFO_DIE_SOURCE:
        return alternate_die_type_map_;
+      case TYPE_UNIT_DIE_SOURCE:
+       return type_unit_die_type_map_;
       case NO_DEBUG_INFO_DIE_SOURCE:
       case NUMBER_OF_DIE_SOURCES:
        // We should not reach this point!
@@ -2724,6 +2759,7 @@ public:
   {
     die_type_map_.clear();
     alternate_die_type_map_.clear();
+    type_unit_die_type_map_.clear();
   }
 
   /// Return the map that associates DIEs to the type they represent.
@@ -2832,6 +2868,8 @@ public:
        break;
       case ALT_DEBUG_INFO_DIE_SOURCE:
        return alternate_die_wip_classes_map_;
+      case TYPE_UNIT_DIE_SOURCE:
+       return type_unit_die_wip_classes_map_;
       case NO_DEBUG_INFO_DIE_SOURCE:
       case NUMBER_OF_DIE_SOURCES:
        ABG_ASSERT_NOT_REACHED;
@@ -2866,6 +2904,8 @@ public:
        break;
       case ALT_DEBUG_INFO_DIE_SOURCE:
        return alternate_die_wip_function_types_map_;
+      case TYPE_UNIT_DIE_SOURCE:
+       return type_unit_die_wip_function_types_map_;
       case NO_DEBUG_INFO_DIE_SOURCE:
       case NUMBER_OF_DIE_SOURCES:
        ABG_ASSERT_NOT_REACHED;
@@ -3117,6 +3157,8 @@ public:
        break;
       case ALT_DEBUG_INFO_DIE_SOURCE:
        return alt_types_to_canonicalize_;
+      case TYPE_UNIT_DIE_SOURCE:
+       return type_unit_types_to_canonicalize_;
       case NO_DEBUG_INFO_DIE_SOURCE:
       case NUMBER_OF_DIE_SOURCES:
        ABG_ASSERT_NOT_REACHED;
@@ -3139,6 +3181,7 @@ public:
   {
     types_to_canonicalize_.clear();
     alt_types_to_canonicalize_.clear();
+    type_unit_types_to_canonicalize_.clear();
   }
 
   /// Put the offset of a DIE representing a type on a side vector so
@@ -3312,6 +3355,8 @@ public:
        break;
       case ALT_DEBUG_INFO_DIE_SOURCE:
        return alt_tu_die_imported_unit_points_map_;
+      case TYPE_UNIT_DIE_SOURCE:
+       return type_units_tu_die_imported_unit_points_map_;
       case NO_DEBUG_INFO_DIE_SOURCE:
       case NUMBER_OF_DIE_SOURCES:
        // We cannot reach this point.
@@ -3364,6 +3409,8 @@ public:
        break;
       case ALT_DEBUG_INFO_DIE_SOURCE:
        return alternate_die_parent_map_;
+      case TYPE_UNIT_DIE_SOURCE:
+       return type_section_die_parent_map();
       case NO_DEBUG_INFO_DIE_SOURCE:
       case NUMBER_OF_DIE_SOURCES:
        ABG_ASSERT_NOT_REACHED;
@@ -3372,12 +3419,12 @@ public:
   }
 
   const offset_offset_map&
-  alternate_die_parent_map() const
-  {return alternate_die_parent_map_;}
+  type_section_die_parent_map() const
+  {return type_section_die_parent_map_;}
 
   offset_offset_map&
-  alternate_die_parent_map()
-  {return alternate_die_parent_map_;}
+  type_section_die_parent_map()
+  {return type_section_die_parent_map_;}
 
   const translation_unit_sptr
   current_translation_unit() const
@@ -4886,6 +4933,31 @@ public:
          imported_unit_points_type();
        build_die_parent_relations_under(&cu, source, imported_units);
       }
+
+    // Build the DIE -> parent relation for DIEs coming from the
+    // .debug_types section.
+    source = TYPE_UNIT_DIE_SOURCE;
+    address_size = 0;
+    header_size = 0;
+    uint64_t type_signature = 0;
+    Dwarf_Off type_offset;
+    for (Dwarf_Off offset = 0, next_offset = 0;
+    (dwarf_next_unit(dwarf(), offset, &next_offset, &header_size,
+      NULL, NULL, &address_size, NULL,
+      &type_signature, &type_offset) == 0);
+    offset = next_offset)
+      {
+       Dwarf_Off die_offset = offset + header_size;
+       Dwarf_Die cu;
+
+       if (!dwarf_offdie_types(dwarf(), die_offset, &cu))
+         continue;
+       cur_tu_die(&cu);
+       imported_unit_points_type& imported_units =
+         tu_die_imported_unit_points_map(source)[die_offset] =
+         imported_unit_points_type();
+       build_die_parent_relations_under(&cu, source, imported_units);
+      }
   }
 };// end class read_context.
 
@@ -6812,6 +6884,9 @@ get_parent_die(read_context&      ctxt,
     case ALT_DEBUG_INFO_DIE_SOURCE:
       assert(dwarf_offdie(ctxt.alt_dwarf(), i->second, &parent_die));
       break;
+    case TYPE_UNIT_DIE_SOURCE:
+      assert(dwarf_offdie_types(ctxt.dwarf(), i->second, &parent_die));
+      break;
     case NO_DEBUG_INFO_DIE_SOURCE:
     case NUMBER_OF_DIE_SOURCES:
       ABG_ASSERT_NOT_REACHED;
@@ -6887,11 +6962,14 @@ get_scope_for_die(read_context& ctxt,
     return scope_decl_sptr();
 
   if (dwarf_tag(&parent_die) == DW_TAG_compile_unit
-      || dwarf_tag(&parent_die) == DW_TAG_partial_unit)
+      || dwarf_tag(&parent_die) == DW_TAG_partial_unit
+      || dwarf_tag(&parent_die) == DW_TAG_type_unit)
     {
-      if (dwarf_tag(&parent_die) == DW_TAG_partial_unit)
+      if (dwarf_tag(&parent_die) == DW_TAG_partial_unit
+         || dwarf_tag(&parent_die) == DW_TAG_type_unit)
        {
-         assert(source_of_die == ALT_DEBUG_INFO_DIE_SOURCE);
+         assert(source_of_die == ALT_DEBUG_INFO_DIE_SOURCE
+                || source_of_die == TYPE_UNIT_DIE_SOURCE);
          return ctxt.cur_tu()->get_global_scope();
        }
 
index 92321a5003e4af765deeffef3ddf5a46b6af2249..8a6b07fbbcb6f5de5a41ec057b63f00bb6498d39 100644 (file)
@@ -333,6 +333,10 @@ test-read-dwarf/test21-pr19092.so \
 test-read-dwarf/test21-pr19092.so.abi \
 test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so \
 test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi \
+test-read-dwarf/libtest23.so \
+test-read-dwarf/libtest23.so.abi \
+test-read-dwarf/test23-first-tu.cc \
+test-read-dwarf/test23-first-tu.cc \
 \
 test-types-stability/pr19434-elf0 \
 test-types-stability/pr19139-DomainNeighborMapInst.o \
diff --git a/tests/data/test-read-dwarf/libtest23.so b/tests/data/test-read-dwarf/libtest23.so
new file mode 100755 (executable)
index 0000000..c4b672d
Binary files /dev/null and b/tests/data/test-read-dwarf/libtest23.so differ
diff --git a/tests/data/test-read-dwarf/libtest23.so.abi b/tests/data/test-read-dwarf/libtest23.so.abi
new file mode 100644 (file)
index 0000000..98036cf
--- /dev/null
@@ -0,0 +1,2248 @@
+<abi-corpus path='data/test-read-dwarf/libtest23.so'>
+  <elf-needed>
+    <dependency name='libstdc++.so.6'/>
+    <dependency name='libm.so.6'/>
+    <dependency name='libgcc_s.so.1'/>
+    <dependency name='libc.so.6'/>
+  </elf-needed>
+  <elf-function-symbols>
+    <elf-symbol name='_Z4emitRSs' type='func-type' binding='global-binding' is-defined='yes'/>
+    <elf-symbol name='_Z4emitRSsS_' type='func-type' binding='global-binding' is-defined='yes'/>
+    <elf-symbol name='_fini' type='func-type' binding='global-binding' is-defined='yes'/>
+    <elf-symbol name='_init' type='func-type' binding='global-binding' is-defined='yes'/>
+  </elf-function-symbols>
+  <abi-instr version='1.0' address-size='64' path='test23-first-tu.cc' language='LANG_C_plus_plus'>
+    <namespace-decl name='std'>
+      <namespace-decl name='__debug'>
+      </namespace-decl>
+      <class-decl name='basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;' visibility='default' is-declaration-only='yes' id='type-id-1'/>
+      <typedef-decl name='ostream' type-id='type-id-1' filepath='/usr/include/c++/4.8.2/iosfwd' line='136' column='1' id='type-id-2'/>
+      <var-decl name='cout' type-id='type-id-2' mangled-name='_ZSt4cout' visibility='default' filepath='/usr/include/c++/4.8.2/iostream' line='61' column='1'/>
+      <typedef-decl name='string' type-id='type-id-3' filepath='/usr/include/c++/4.8.2/bits/stringfwd.h' line='62' column='1' id='type-id-4'/>
+    </namespace-decl>
+    <namespace-decl name='__gnu_cxx'>
+      <class-decl name='__numeric_traits_integer&lt;int&gt;' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-5'>
+        <data-member access='public' static='yes'>
+          <var-decl name='__min' type-id='type-id-6' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIiE5__minE' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='58' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <var-decl name='__max' type-id='type-id-6' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIiE5__maxE' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='59' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <var-decl name='__is_signed' type-id='type-id-7' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='63' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <var-decl name='__digits' type-id='type-id-6' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='64' column='1'/>
+        </data-member>
+      </class-decl>
+      <class-decl name='__numeric_traits_integer&lt;long unsigned int&gt;' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-8'>
+        <data-member access='public' static='yes'>
+          <var-decl name='__min' type-id='type-id-9' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='58' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <var-decl name='__max' type-id='type-id-9' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='59' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <var-decl name='__is_signed' type-id='type-id-7' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='63' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <var-decl name='__digits' type-id='type-id-6' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerImE8__digitsE' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='64' column='1'/>
+        </data-member>
+      </class-decl>
+      <class-decl name='__numeric_traits_integer&lt;char&gt;' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-10'>
+        <data-member access='public' static='yes'>
+          <var-decl name='__min' type-id='type-id-11' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='58' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <var-decl name='__max' type-id='type-id-11' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIcE5__maxE' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='59' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <var-decl name='__is_signed' type-id='type-id-7' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='63' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <var-decl name='__digits' type-id='type-id-6' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='64' column='1'/>
+        </data-member>
+      </class-decl>
+      <class-decl name='__numeric_traits_integer&lt;short int&gt;' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-12'>
+        <data-member access='public' static='yes'>
+          <var-decl name='__min' type-id='type-id-13' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIsE5__minE' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='58' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <var-decl name='__max' type-id='type-id-13' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIsE5__maxE' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='59' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <var-decl name='__is_signed' type-id='type-id-7' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='63' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <var-decl name='__digits' type-id='type-id-6' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='64' column='1'/>
+        </data-member>
+      </class-decl>
+      <class-decl name='__numeric_traits_integer&lt;long int&gt;' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-14'>
+        <data-member access='public' static='yes'>
+          <var-decl name='__min' type-id='type-id-15' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIlE5__minE' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='58' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <var-decl name='__max' type-id='type-id-15' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIlE5__maxE' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='59' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <var-decl name='__is_signed' type-id='type-id-7' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='63' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <var-decl name='__digits' type-id='type-id-6' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='64' column='1'/>
+        </data-member>
+      </class-decl>
+    </namespace-decl>
+    <namespace-decl name='__gnu_debug'>
+    </namespace-decl>
+    <type-decl name='unsigned int' size-in-bits='32' id='type-id-16'/>
+    <typedef-decl name='wint_t' type-id='type-id-16' filepath='/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h' line='353' column='1' id='type-id-17'/>
+    <type-decl name='int' size-in-bits='32' id='type-id-18'/>
+    <function-decl name='btowc' filepath='/usr/include/wchar.h' line='353' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-18'/>
+      <return type-id='type-id-17'/>
+    </function-decl>
+    <class-decl name='_IO_FILE' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-19'/>
+    <typedef-decl name='__FILE' type-id='type-id-19' filepath='/usr/include/stdio.h' line='64' column='1' id='type-id-20'/>
+    <pointer-type-def type-id='type-id-20' size-in-bits='64' id='type-id-21'/>
+    <function-decl name='fgetwc' filepath='/usr/include/wchar.h' line='745' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-21'/>
+      <return type-id='type-id-17'/>
+    </function-decl>
+    <type-decl name='wchar_t' size-in-bits='32' id='type-id-22'/>
+    <pointer-type-def type-id='type-id-22' size-in-bits='64' id='type-id-23'/>
+    <function-decl name='fgetws' filepath='/usr/include/wchar.h' line='774' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-23'/>
+      <parameter type-id='type-id-18'/>
+      <parameter type-id='type-id-21'/>
+      <return type-id='type-id-23'/>
+    </function-decl>
+    <function-decl name='fputwc' filepath='/usr/include/wchar.h' line='759' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-22'/>
+      <parameter type-id='type-id-21'/>
+      <return type-id='type-id-17'/>
+    </function-decl>
+    <qualified-type-def type-id='type-id-22' const='yes' id='type-id-24'/>
+    <pointer-type-def type-id='type-id-24' size-in-bits='64' id='type-id-25'/>
+    <function-decl name='fputws' filepath='/usr/include/wchar.h' line='781' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-21'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+    <function-decl name='fwide' filepath='/usr/include/wchar.h' line='587' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-21'/>
+      <parameter type-id='type-id-18'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+    <function-decl name='fwprintf' filepath='/usr/include/wchar.h' line='594' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-21'/>
+      <parameter type-id='type-id-25'/>
+      <parameter is-variadic='yes'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+    <function-decl name='fwscanf' filepath='/usr/include/wchar.h' line='635' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-21'/>
+      <parameter type-id='type-id-25'/>
+      <parameter is-variadic='yes'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+    <function-decl name='getwc' filepath='/usr/include/wchar.h' line='746' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-21'/>
+      <return type-id='type-id-17'/>
+    </function-decl>
+    <function-decl name='getwchar' filepath='/usr/include/wchar.h' line='752' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <return type-id='type-id-17'/>
+    </function-decl>
+    <type-decl name='unsigned long int' size-in-bits='64' id='type-id-26'/>
+    <typedef-decl name='size_t' type-id='type-id-26' filepath='/usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stddef.h' line='212' column='1' id='type-id-27'/>
+    <type-decl name='char' size-in-bits='8' id='type-id-28'/>
+    <qualified-type-def type-id='type-id-28' const='yes' id='type-id-11'/>
+    <pointer-type-def type-id='type-id-11' size-in-bits='64' id='type-id-29'/>
+    <class-decl name='__anonymous_struct__' size-in-bits='64' is-struct='yes' is-anonymous='yes' visibility='default' filepath='/usr/include/wchar.h' line='83' column='1' id='type-id-30'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='__count' type-id='type-id-18' visibility='default' filepath='/usr/include/wchar.h' line='84' column='1'/>
+      </data-member>
+    </class-decl>
+    <typedef-decl name='__mbstate_t' type-id='type-id-30' filepath='/usr/include/wchar.h' line='94' column='1' id='type-id-31'/>
+    <typedef-decl name='mbstate_t' type-id='type-id-31' filepath='/usr/include/wchar.h' line='106' column='1' id='type-id-32'/>
+    <pointer-type-def type-id='type-id-32' size-in-bits='64' id='type-id-33'/>
+    <function-decl name='mbrlen' filepath='/usr/include/wchar.h' line='376' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-29'/>
+      <parameter type-id='type-id-27'/>
+      <parameter type-id='type-id-33'/>
+      <return type-id='type-id-27'/>
+    </function-decl>
+    <function-decl name='mbrtowc' filepath='/usr/include/wchar.h' line='365' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-23'/>
+      <parameter type-id='type-id-29'/>
+      <parameter type-id='type-id-27'/>
+      <parameter type-id='type-id-33'/>
+      <return type-id='type-id-27'/>
+    </function-decl>
+    <qualified-type-def type-id='type-id-32' const='yes' id='type-id-34'/>
+    <pointer-type-def type-id='type-id-34' size-in-bits='64' id='type-id-35'/>
+    <function-decl name='mbsinit' filepath='/usr/include/wchar.h' line='361' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-35'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+    <pointer-type-def type-id='type-id-29' size-in-bits='64' id='type-id-36'/>
+    <function-decl name='mbsrtowcs' filepath='/usr/include/wchar.h' line='408' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-23'/>
+      <parameter type-id='type-id-36'/>
+      <parameter type-id='type-id-27'/>
+      <parameter type-id='type-id-33'/>
+      <return type-id='type-id-27'/>
+    </function-decl>
+    <function-decl name='putwc' filepath='/usr/include/wchar.h' line='760' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-22'/>
+      <parameter type-id='type-id-21'/>
+      <return type-id='type-id-17'/>
+    </function-decl>
+    <function-decl name='putwchar' filepath='/usr/include/wchar.h' line='766' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-22'/>
+      <return type-id='type-id-17'/>
+    </function-decl>
+    <function-decl name='swprintf' filepath='/usr/include/wchar.h' line='604' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-23'/>
+      <parameter type-id='type-id-27'/>
+      <parameter type-id='type-id-25'/>
+      <parameter is-variadic='yes'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+    <function-decl name='swscanf' filepath='/usr/include/wchar.h' line='645' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-25'/>
+      <parameter is-variadic='yes'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+    <function-decl name='ungetwc' filepath='/usr/include/wchar.h' line='789' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-17'/>
+      <parameter type-id='type-id-21'/>
+      <return type-id='type-id-17'/>
+    </function-decl>
+    <class-decl name='typedef __va_list_tag __va_list_tag' size-in-bits='192' is-struct='yes' visibility='default' id='type-id-37'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='gp_offset' type-id='type-id-16' visibility='default'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='fp_offset' type-id='type-id-16' visibility='default'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='overflow_arg_area' type-id='type-id-38' visibility='default'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='reg_save_area' type-id='type-id-38' visibility='default'/>
+      </data-member>
+    </class-decl>
+    <type-decl name='void' id='type-id-39'/>
+    <pointer-type-def type-id='type-id-39' size-in-bits='64' id='type-id-38'/>
+    <pointer-type-def type-id='type-id-37' size-in-bits='64' id='type-id-40'/>
+    <function-decl name='vfwprintf' filepath='/usr/include/wchar.h' line='612' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-21'/>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-40'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+    <function-decl name='vfwscanf' filepath='/usr/include/wchar.h' line='689' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-21'/>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-40'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+    <function-decl name='vswprintf' filepath='/usr/include/wchar.h' line='625' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-23'/>
+      <parameter type-id='type-id-27'/>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-40'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+    <function-decl name='vswscanf' filepath='/usr/include/wchar.h' line='701' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-40'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+    <function-decl name='vwprintf' filepath='/usr/include/wchar.h' line='620' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-40'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+    <function-decl name='vwscanf' filepath='/usr/include/wchar.h' line='697' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-40'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+    <pointer-type-def type-id='type-id-28' size-in-bits='64' id='type-id-41'/>
+    <function-decl name='wcrtomb' filepath='/usr/include/wchar.h' line='370' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-41'/>
+      <parameter type-id='type-id-22'/>
+      <parameter type-id='type-id-33'/>
+      <return type-id='type-id-27'/>
+    </function-decl>
+    <function-decl name='wcscat' filepath='/usr/include/wchar.h' line='155' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-23'/>
+      <parameter type-id='type-id-25'/>
+      <return type-id='type-id-23'/>
+    </function-decl>
+    <function-decl name='wcscmp' filepath='/usr/include/wchar.h' line='163' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-25'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+    <function-decl name='wcscoll' filepath='/usr/include/wchar.h' line='192' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-25'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+    <function-decl name='wcscpy' filepath='/usr/include/wchar.h' line='147' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-23'/>
+      <parameter type-id='type-id-25'/>
+      <return type-id='type-id-23'/>
+    </function-decl>
+    <function-decl name='wcscspn' filepath='/usr/include/wchar.h' line='252' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-25'/>
+      <return type-id='type-id-27'/>
+    </function-decl>
+    <class-decl name='tm' size-in-bits='448' is-struct='yes' visibility='default' filepath='/usr/include/time.h' line='133' column='1' id='type-id-42'>
+      <data-member access='public' layout-offset-in-bits='0'>
+        <var-decl name='tm_sec' type-id='type-id-18' visibility='default' filepath='/usr/include/time.h' line='135' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='32'>
+        <var-decl name='tm_min' type-id='type-id-18' visibility='default' filepath='/usr/include/time.h' line='136' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='64'>
+        <var-decl name='tm_hour' type-id='type-id-18' visibility='default' filepath='/usr/include/time.h' line='137' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='96'>
+        <var-decl name='tm_mday' type-id='type-id-18' visibility='default' filepath='/usr/include/time.h' line='138' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='128'>
+        <var-decl name='tm_mon' type-id='type-id-18' visibility='default' filepath='/usr/include/time.h' line='139' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='160'>
+        <var-decl name='tm_year' type-id='type-id-18' visibility='default' filepath='/usr/include/time.h' line='140' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='192'>
+        <var-decl name='tm_wday' type-id='type-id-18' visibility='default' filepath='/usr/include/time.h' line='141' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='224'>
+        <var-decl name='tm_yday' type-id='type-id-18' visibility='default' filepath='/usr/include/time.h' line='142' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='256'>
+        <var-decl name='tm_isdst' type-id='type-id-18' visibility='default' filepath='/usr/include/time.h' line='143' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='320'>
+        <var-decl name='tm_gmtoff' type-id='type-id-43' visibility='default' filepath='/usr/include/time.h' line='146' column='1'/>
+      </data-member>
+      <data-member access='public' layout-offset-in-bits='384'>
+        <var-decl name='tm_zone' type-id='type-id-29' visibility='default' filepath='/usr/include/time.h' line='147' column='1'/>
+      </data-member>
+    </class-decl>
+    <type-decl name='long int' size-in-bits='64' id='type-id-43'/>
+    <qualified-type-def type-id='type-id-42' const='yes' id='type-id-44'/>
+    <pointer-type-def type-id='type-id-44' size-in-bits='64' id='type-id-45'/>
+    <function-decl name='wcsftime' filepath='/usr/include/wchar.h' line='855' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-23'/>
+      <parameter type-id='type-id-27'/>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-45'/>
+      <return type-id='type-id-27'/>
+    </function-decl>
+    <function-decl name='wcslen' filepath='/usr/include/wchar.h' line='287' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <return type-id='type-id-27'/>
+    </function-decl>
+    <function-decl name='wcsncat' filepath='/usr/include/wchar.h' line='158' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-23'/>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-27'/>
+      <return type-id='type-id-23'/>
+    </function-decl>
+    <function-decl name='wcsncmp' filepath='/usr/include/wchar.h' line='166' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-27'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+    <function-decl name='wcsncpy' filepath='/usr/include/wchar.h' line='150' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-23'/>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-27'/>
+      <return type-id='type-id-23'/>
+    </function-decl>
+    <pointer-type-def type-id='type-id-25' size-in-bits='64' id='type-id-46'/>
+    <function-decl name='wcsrtombs' filepath='/usr/include/wchar.h' line='414' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-41'/>
+      <parameter type-id='type-id-46'/>
+      <parameter type-id='type-id-27'/>
+      <parameter type-id='type-id-33'/>
+      <return type-id='type-id-27'/>
+    </function-decl>
+    <function-decl name='wcsspn' filepath='/usr/include/wchar.h' line='256' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-25'/>
+      <return type-id='type-id-27'/>
+    </function-decl>
+    <type-decl name='double' size-in-bits='64' id='type-id-47'/>
+    <pointer-type-def type-id='type-id-23' size-in-bits='64' id='type-id-48'/>
+    <function-decl name='wcstod' filepath='/usr/include/wchar.h' line='450' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-48'/>
+      <return type-id='type-id-47'/>
+    </function-decl>
+    <type-decl name='float' size-in-bits='32' id='type-id-49'/>
+    <function-decl name='wcstof' filepath='/usr/include/wchar.h' line='457' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-48'/>
+      <return type-id='type-id-49'/>
+    </function-decl>
+    <function-decl name='wcstok' filepath='/usr/include/wchar.h' line='282' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-23'/>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-48'/>
+      <return type-id='type-id-23'/>
+    </function-decl>
+    <function-decl name='wcstol' filepath='/usr/include/wchar.h' line='468' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-48'/>
+      <parameter type-id='type-id-18'/>
+      <return type-id='type-id-43'/>
+    </function-decl>
+    <function-decl name='wcstoul' filepath='/usr/include/wchar.h' line='473' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-48'/>
+      <parameter type-id='type-id-18'/>
+      <return type-id='type-id-26'/>
+    </function-decl>
+    <function-decl name='wcsxfrm' filepath='/usr/include/wchar.h' line='196' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-23'/>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-27'/>
+      <return type-id='type-id-27'/>
+    </function-decl>
+    <function-decl name='wctob' filepath='/usr/include/wchar.h' line='357' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-17'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+    <function-decl name='wmemcmp' filepath='/usr/include/wchar.h' line='325' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-27'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+    <function-decl name='wmemcpy' filepath='/usr/include/wchar.h' line='329' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-23'/>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-27'/>
+      <return type-id='type-id-23'/>
+    </function-decl>
+    <function-decl name='wmemmove' filepath='/usr/include/wchar.h' line='334' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-23'/>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-27'/>
+      <return type-id='type-id-23'/>
+    </function-decl>
+    <function-decl name='wmemset' filepath='/usr/include/wchar.h' line='338' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-23'/>
+      <parameter type-id='type-id-22'/>
+      <parameter type-id='type-id-27'/>
+      <return type-id='type-id-23'/>
+    </function-decl>
+    <function-decl name='wprintf' filepath='/usr/include/wchar.h' line='601' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter is-variadic='yes'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+    <function-decl name='wscanf' filepath='/usr/include/wchar.h' line='642' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter is-variadic='yes'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+    <function-decl name='wcschr' mangled-name='wcschr' filepath='/usr/include/wchar.h' line='224' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-22'/>
+      <return type-id='type-id-25'/>
+    </function-decl>
+    <function-decl name='wcspbrk' mangled-name='wcspbrk' filepath='/usr/include/wchar.h' line='262' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-25'/>
+      <return type-id='type-id-25'/>
+    </function-decl>
+    <function-decl name='wcsrchr' mangled-name='wcsrchr' filepath='/usr/include/wchar.h' line='234' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-22'/>
+      <return type-id='type-id-25'/>
+    </function-decl>
+    <function-decl name='wcsstr' mangled-name='wcsstr' filepath='/usr/include/wchar.h' line='273' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-25'/>
+      <return type-id='type-id-25'/>
+    </function-decl>
+    <function-decl name='wmemchr' mangled-name='wmemchr' filepath='/usr/include/wchar.h' line='316' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-22'/>
+      <parameter type-id='type-id-27'/>
+      <return type-id='type-id-25'/>
+    </function-decl>
+    <type-decl name='long double' size-in-bits='128' id='type-id-50'/>
+    <function-decl name='wcstold' filepath='/usr/include/wchar.h' line='459' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-48'/>
+      <return type-id='type-id-50'/>
+    </function-decl>
+    <type-decl name='long long int' size-in-bits='64' id='type-id-51'/>
+    <function-decl name='wcstoll' filepath='/usr/include/wchar.h' line='483' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-48'/>
+      <parameter type-id='type-id-18'/>
+      <return type-id='type-id-51'/>
+    </function-decl>
+    <type-decl name='long long unsigned int' size-in-bits='64' id='type-id-52'/>
+    <function-decl name='wcstoull' filepath='/usr/include/wchar.h' line='490' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-48'/>
+      <parameter type-id='type-id-18'/>
+      <return type-id='type-id-52'/>
+    </function-decl>
+    <function-decl name='setlocale' filepath='/usr/include/locale.h' line='125' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-18'/>
+      <parameter type-id='type-id-29'/>
+      <return type-id='type-id-41'/>
+    </function-decl>
+    <class-decl name='__anonymous_struct__' is-struct='yes' is-anonymous='yes' visibility='default' id='type-id-53'/>
+    <pointer-type-def type-id='type-id-53' size-in-bits='64' id='type-id-54'/>
+    <function-decl name='localeconv' filepath='/usr/include/locale.h' line='128' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <return type-id='type-id-54'/>
+    </function-decl>
+    <typedef-decl name='wctype_t' type-id='type-id-26' filepath='/usr/include/wctype.h' line='52' column='1' id='type-id-55'/>
+    <function-decl name='iswctype' filepath='/usr/include/wctype.h' line='175' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-17'/>
+      <parameter type-id='type-id-55'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+    <typedef-decl name='__int32_t' type-id='type-id-18' filepath='/usr/include/bits/types.h' line='40' column='1' id='type-id-56'/>
+    <qualified-type-def type-id='type-id-56' const='yes' id='type-id-57'/>
+    <pointer-type-def type-id='type-id-57' size-in-bits='64' id='type-id-58'/>
+    <typedef-decl name='wctrans_t' type-id='type-id-58' filepath='/usr/include/wctype.h' line='186' column='1' id='type-id-59'/>
+    <function-decl name='towctrans' filepath='/usr/include/wctype.h' line='221' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-17'/>
+      <parameter type-id='type-id-59'/>
+      <return type-id='type-id-17'/>
+    </function-decl>
+    <function-decl name='wctrans' filepath='/usr/include/wctype.h' line='218' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-29'/>
+      <return type-id='type-id-59'/>
+    </function-decl>
+    <function-decl name='wctype' filepath='/usr/include/wctype.h' line='171' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-29'/>
+      <return type-id='type-id-55'/>
+    </function-decl>
+    <namespace-decl name='std'>
+      <class-decl name='basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;' size-in-bits='64' visibility='default' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='112' column='1' id='type-id-3'>
+        <member-type access='private'>
+          <class-decl name='_Alloc_hider' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-60'>
+            <member-function access='public' static='yes' constructor='yes'>
+              <function-decl name='_Alloc_hider' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='274' column='1' visibility='default' binding='global' size-in-bits='64'>
+                <return type-id='type-id-39'/>
+              </function-decl>
+            </member-function>
+          </class-decl>
+        </member-type>
+        <member-type access='public'>
+          <typedef-decl name='size_type' type-id='type-id-62' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='121' column='1' id='type-id-61'/>
+        </member-type>
+        <member-type access='private'>
+          <typedef-decl name='_CharT_alloc_type' type-id='type-id-64' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='114' column='1' id='type-id-63'/>
+        </member-type>
+        <member-type access='public'>
+          <typedef-decl name='traits_type' type-id='type-id-66' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='118' column='1' id='type-id-65'/>
+        </member-type>
+        <member-type access='public'>
+          <typedef-decl name='value_type' type-id='type-id-68' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='119' column='1' id='type-id-67'/>
+        </member-type>
+        <member-type access='public'>
+          <typedef-decl name='allocator_type' type-id='type-id-70' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='120' column='1' id='type-id-69'/>
+        </member-type>
+        <member-type access='public'>
+          <typedef-decl name='difference_type' type-id='type-id-72' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='122' column='1' id='type-id-71'/>
+        </member-type>
+        <member-type access='public'>
+          <typedef-decl name='reference' type-id='type-id-74' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='123' column='1' id='type-id-73'/>
+        </member-type>
+        <member-type access='public'>
+          <typedef-decl name='const_reference' type-id='type-id-76' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='124' column='1' id='type-id-75'/>
+        </member-type>
+        <member-type access='public'>
+          <typedef-decl name='pointer' type-id='type-id-78' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='125' column='1' id='type-id-77'/>
+        </member-type>
+        <member-type access='public'>
+          <typedef-decl name='const_pointer' type-id='type-id-80' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='126' column='1' id='type-id-79'/>
+        </member-type>
+        <member-type access='public'>
+          <typedef-decl name='iterator' type-id='type-id-82' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='127' column='1' id='type-id-81'/>
+        </member-type>
+        <member-type access='public'>
+          <typedef-decl name='const_iterator' type-id='type-id-84' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='129' column='1' id='type-id-83'/>
+        </member-type>
+        <member-type access='public'>
+          <typedef-decl name='const_reverse_iterator' type-id='type-id-86' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='130' column='1' id='type-id-85'/>
+        </member-type>
+        <member-type access='public'>
+          <typedef-decl name='reverse_iterator' type-id='type-id-88' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='131' column='1' id='type-id-87'/>
+        </member-type>
+        <member-type access='private'>
+          <class-decl name='_Rep_base' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-89'/>
+        </member-type>
+        <member-type access='private'>
+          <class-decl name='_Rep' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-90'>
+            <data-member access='public' static='yes'>
+              <var-decl name='_S_max_size' type-id='type-id-91' visibility='default' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='50' column='1'/>
+            </data-member>
+            <data-member access='public' static='yes'>
+              <var-decl name='_S_terminal' type-id='type-id-11' visibility='default' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='55' column='1'/>
+            </data-member>
+            <member-function access='public' static='yes'>
+              <function-decl name='_S_empty_rep' mangled-name='_ZNSs4_Rep12_S_empty_repEv' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='181' column='1' visibility='default' binding='global' size-in-bits='64'>
+                <return type-id='type-id-92'/>
+              </function-decl>
+            </member-function>
+            <member-function access='public' static='yes'>
+              <function-decl name='_M_is_leaked' mangled-name='_ZNKSs4_Rep12_M_is_leakedEv' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='191' column='1' visibility='default' binding='global' size-in-bits='64'>
+                <return type-id='type-id-93'/>
+              </function-decl>
+            </member-function>
+            <member-function access='public' static='yes'>
+              <function-decl name='_M_is_shared' mangled-name='_ZNKSs4_Rep12_M_is_sharedEv' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='195' column='1' visibility='default' binding='global' size-in-bits='64'>
+                <return type-id='type-id-93'/>
+              </function-decl>
+            </member-function>
+            <member-function access='public' static='yes'>
+              <function-decl name='_M_set_leaked' mangled-name='_ZNSs4_Rep13_M_set_leakedEv' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='199' column='1' visibility='default' binding='global' size-in-bits='64'>
+                <return type-id='type-id-39'/>
+              </function-decl>
+            </member-function>
+            <member-function access='public' static='yes'>
+              <function-decl name='_M_set_sharable' mangled-name='_ZNSs4_Rep15_M_set_sharableEv' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='203' column='1' visibility='default' binding='global' size-in-bits='64'>
+                <return type-id='type-id-39'/>
+              </function-decl>
+            </member-function>
+            <member-function access='public' static='yes'>
+              <function-decl name='_M_set_length_and_sharable' mangled-name='_ZNSs4_Rep26_M_set_length_and_sharableEm' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='207' column='1' visibility='default' binding='global' size-in-bits='64'>
+                <return type-id='type-id-39'/>
+              </function-decl>
+            </member-function>
+            <member-function access='public' static='yes'>
+              <function-decl name='_M_refdata' mangled-name='_ZNSs4_Rep10_M_refdataEv' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='222' column='1' visibility='default' binding='global' size-in-bits='64'>
+                <return type-id='type-id-41'/>
+              </function-decl>
+            </member-function>
+            <member-function access='public' static='yes'>
+              <function-decl name='_M_grab' mangled-name='_ZNSs4_Rep7_M_grabERKSaIcES2_' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='226' column='1' visibility='default' binding='global' size-in-bits='64'>
+                <return type-id='type-id-41'/>
+              </function-decl>
+            </member-function>
+            <member-function access='public' static='yes'>
+              <function-decl name='_S_create' mangled-name='_ZNSs4_Rep9_S_createEmmRKSaIcE' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='545' column='1' visibility='default' binding='global' size-in-bits='64'>
+                <return type-id='type-id-94'/>
+              </function-decl>
+            </member-function>
+            <member-function access='public' static='yes'>
+              <function-decl name='_M_dispose' mangled-name='_ZNSs4_Rep10_M_disposeERKSaIcE' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='237' column='1' visibility='default' binding='global' size-in-bits='64'>
+                <return type-id='type-id-39'/>
+              </function-decl>
+            </member-function>
+            <member-function access='public' static='yes'>
+              <function-decl name='_M_destroy' mangled-name='_ZNSs4_Rep10_M_destroyERKSaIcE' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='444' column='1' visibility='default' binding='global' size-in-bits='64'>
+                <return type-id='type-id-39'/>
+              </function-decl>
+            </member-function>
+            <member-function access='public' static='yes'>
+              <function-decl name='_M_refcopy' mangled-name='_ZNSs4_Rep10_M_refcopyEv' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='258' column='1' visibility='default' binding='global' size-in-bits='64'>
+                <return type-id='type-id-41'/>
+              </function-decl>
+            </member-function>
+            <member-function access='public' static='yes'>
+              <function-decl name='_M_clone' mangled-name='_ZNSs4_Rep8_M_cloneERKSaIcEm' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='623' column='1' visibility='default' binding='global' size-in-bits='64'>
+                <return type-id='type-id-41'/>
+              </function-decl>
+            </member-function>
+          </class-decl>
+        </member-type>
+        <data-member access='public' static='yes'>
+          <var-decl name='npos' type-id='type-id-91' visibility='default' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='285' column='1'/>
+        </data-member>
+        <data-member access='private' layout-offset-in-bits='0'>
+          <var-decl name='_M_dataplus' type-id='type-id-60' visibility='default' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='289' column='1'/>
+        </data-member>
+        <member-function access='private'>
+          <function-decl name='_M_data' mangled-name='_ZNKSs7_M_dataEv' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='292' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <return type-id='type-id-41'/>
+          </function-decl>
+        </member-function>
+        <member-function access='private'>
+          <function-decl name='_M_data' mangled-name='_ZNSs7_M_dataEPc' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='296' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-41'/>
+            <return type-id='type-id-41'/>
+          </function-decl>
+        </member-function>
+        <member-function access='private'>
+          <function-decl name='_M_rep' mangled-name='_ZNKSs6_M_repEv' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='300' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <return type-id='type-id-94'/>
+          </function-decl>
+        </member-function>
+        <member-function access='private'>
+          <function-decl name='_M_ibegin' mangled-name='_ZNKSs9_M_ibeginEv' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='306' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <return type-id='type-id-81'/>
+          </function-decl>
+        </member-function>
+        <member-function access='private'>
+          <function-decl name='_M_iend' mangled-name='_ZNKSs7_M_iendEv' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='310' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <return type-id='type-id-81'/>
+          </function-decl>
+        </member-function>
+        <member-function access='private'>
+          <function-decl name='_M_leak' mangled-name='_ZNSs7_M_leakEv' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='314' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <return type-id='type-id-39'/>
+          </function-decl>
+        </member-function>
+        <member-function access='private'>
+          <function-decl name='_M_check' mangled-name='_ZNKSs8_M_checkEmPKc' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='321' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-29'/>
+            <return type-id='type-id-61'/>
+          </function-decl>
+        </member-function>
+        <member-function access='private'>
+          <function-decl name='_M_check_length' mangled-name='_ZNKSs15_M_check_lengthEmmPKc' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='329' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-29'/>
+            <return type-id='type-id-39'/>
+          </function-decl>
+        </member-function>
+        <member-function access='private'>
+          <function-decl name='_M_limit' mangled-name='_ZNKSs8_M_limitEmm' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='337' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-61'/>
+          </function-decl>
+        </member-function>
+        <member-function access='private'>
+          <function-decl name='_M_disjunct' mangled-name='_ZNKSs11_M_disjunctEPKc' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='345' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <parameter type-id='type-id-29'/>
+            <return type-id='type-id-93'/>
+          </function-decl>
+        </member-function>
+        <member-function access='private' static='yes'>
+          <function-decl name='_M_copy' mangled-name='_ZNSs7_M_copyEPcPKcm' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='354' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-41'/>
+            <parameter type-id='type-id-29'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-39'/>
+          </function-decl>
+        </member-function>
+        <member-function access='private' static='yes'>
+          <function-decl name='_M_move' mangled-name='_ZNSs7_M_moveEPcPKcm' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='363' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-41'/>
+            <parameter type-id='type-id-29'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-39'/>
+          </function-decl>
+        </member-function>
+        <member-function access='private' static='yes'>
+          <function-decl name='_M_assign' mangled-name='_ZNSs9_M_assignEPcmc' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='372' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-41'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-28'/>
+            <return type-id='type-id-39'/>
+          </function-decl>
+        </member-function>
+        <member-function access='private' static='yes'>
+          <function-decl name='_S_copy_chars' mangled-name='_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIS_SsEES2_' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='391' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-41'/>
+            <parameter type-id='type-id-81'/>
+            <parameter type-id='type-id-81'/>
+            <return type-id='type-id-39'/>
+          </function-decl>
+        </member-function>
+        <member-function access='private' static='yes'>
+          <function-decl name='_S_copy_chars' mangled-name='_ZNSs13_S_copy_charsEPcN9__gnu_cxx17__normal_iteratorIPKcSsEES4_' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='395' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-41'/>
+            <parameter type-id='type-id-83'/>
+            <parameter type-id='type-id-83'/>
+            <return type-id='type-id-39'/>
+          </function-decl>
+        </member-function>
+        <member-function access='private' static='yes'>
+          <function-decl name='_S_copy_chars' mangled-name='_ZNSs13_S_copy_charsEPcS_S_' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='399' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-41'/>
+            <parameter type-id='type-id-41'/>
+            <parameter type-id='type-id-41'/>
+            <return type-id='type-id-39'/>
+          </function-decl>
+        </member-function>
+        <member-function access='private' static='yes'>
+          <function-decl name='_S_copy_chars' mangled-name='_ZNSs13_S_copy_charsEPcPKcS1_' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='403' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-41'/>
+            <parameter type-id='type-id-29'/>
+            <parameter type-id='type-id-29'/>
+            <return type-id='type-id-39'/>
+          </function-decl>
+        </member-function>
+        <member-function access='private' static='yes'>
+          <function-decl name='_S_compare' mangled-name='_ZNSs10_S_compareEmm' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='407' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-18'/>
+          </function-decl>
+        </member-function>
+        <member-function access='private'>
+          <function-decl name='_M_mutate' mangled-name='_ZNSs9_M_mutateEmmm' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='468' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-39'/>
+          </function-decl>
+        </member-function>
+        <member-function access='private'>
+          <function-decl name='_M_leak_hard' mangled-name='_ZNSs12_M_leak_hardEv' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='454' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <return type-id='type-id-39'/>
+          </function-decl>
+        </member-function>
+        <member-function access='private' static='yes'>
+          <function-decl name='_S_empty_rep' mangled-name='_ZNSs12_S_empty_repEv' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='426' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <return type-id='type-id-92'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='basic_string' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='437' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <return type-id='type-id-39'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='basic_string' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='177' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-97'/>
+            <return type-id='type-id-39'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='basic_string' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='169' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-98'/>
+            <return type-id='type-id-39'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='basic_string' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='183' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-98'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-39'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='basic_string' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='193' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-98'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-97'/>
+            <return type-id='type-id-39'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='basic_string' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='205' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-29'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-97'/>
+            <return type-id='type-id-39'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='basic_string' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='212' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-29'/>
+            <parameter type-id='type-id-97'/>
+            <return type-id='type-id-39'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='basic_string' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='219' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-28'/>
+            <parameter type-id='type-id-97'/>
+            <return type-id='type-id-39'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public' destructor='yes'>
+          <function-decl name='~basic_string' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='538' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-18' is-artificial='yes'/>
+            <return type-id='type-id-39'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='operator=' mangled-name='_ZNSsaSERKSs' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='546' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-98'/>
+            <return type-id='type-id-99'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='operator=' mangled-name='_ZNSsaSEPKc' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='554' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-29'/>
+            <return type-id='type-id-99'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='operator=' mangled-name='_ZNSsaSEc' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='565' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-28'/>
+            <return type-id='type-id-99'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='begin' mangled-name='_ZNSs5beginEv' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='605' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <return type-id='type-id-81'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='begin' mangled-name='_ZNKSs5beginEv' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='616' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <return type-id='type-id-83'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='end' mangled-name='_ZNSs3endEv' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='624' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <return type-id='type-id-81'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='end' mangled-name='_ZNKSs3endEv' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='635' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <return type-id='type-id-83'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='rbegin' mangled-name='_ZNSs6rbeginEv' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='644' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <return type-id='type-id-87'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='rbegin' mangled-name='_ZNKSs6rbeginEv' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='653' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <return type-id='type-id-85'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='rend' mangled-name='_ZNSs4rendEv' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='662' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <return type-id='type-id-87'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='rend' mangled-name='_ZNKSs4rendEv' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='671' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <return type-id='type-id-85'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='size' mangled-name='_ZNKSs4sizeEv' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='715' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <return type-id='type-id-61'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='length' mangled-name='_ZNKSs6lengthEv' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='721' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <return type-id='type-id-61'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='max_size' mangled-name='_ZNKSs8max_sizeEv' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='726' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <return type-id='type-id-61'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='resize' mangled-name='_ZNSs6resizeEmc' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='639' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-28'/>
+            <return type-id='type-id-39'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='resize' mangled-name='_ZNSs6resizeEm' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='753' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-39'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='capacity' mangled-name='_ZNKSs8capacityEv' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='776' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <return type-id='type-id-61'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='reserve' mangled-name='_ZNSs7reserveEm' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='501' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-39'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='clear' mangled-name='_ZNSs5clearEv' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='803' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <return type-id='type-id-39'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='empty' mangled-name='_ZNKSs5emptyEv' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='811' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <return type-id='type-id-93'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='operator[]' mangled-name='_ZNKSsixEm' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='826' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-75'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='operator[]' mangled-name='_ZNSsixEm' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='843' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-73'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='at' mangled-name='_ZNKSs2atEm' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='864' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-75'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='at' mangled-name='_ZNSs2atEm' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='883' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-73'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='operator+=' mangled-name='_ZNSspLERKSs' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='932' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-98'/>
+            <return type-id='type-id-99'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='operator+=' mangled-name='_ZNSspLEPKc' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='941' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-29'/>
+            <return type-id='type-id-99'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='operator+=' mangled-name='_ZNSspLEc' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='950' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-28'/>
+            <return type-id='type-id-99'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='append' mangled-name='_ZNSs6appendERKSs' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='324' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-98'/>
+            <return type-id='type-id-99'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='append' mangled-name='_ZNSs6appendERKSsmm' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='341' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-98'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-99'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='append' mangled-name='_ZNSs6appendEPKcm' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='297' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-29'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-99'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='append' mangled-name='_ZNSs6appendEPKc' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='1006' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-29'/>
+            <return type-id='type-id-99'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='append' mangled-name='_ZNSs6appendEmc' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='280' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-28'/>
+            <return type-id='type-id-99'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='push_back' mangled-name='_ZNSs9push_backEc' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='1052' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-28'/>
+            <return type-id='type-id-39'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='assign' mangled-name='_ZNSs6assignERKSs' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='242' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-98'/>
+            <return type-id='type-id-99'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='assign' mangled-name='_ZNSs6assignERKSsmm' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='1100' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-98'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-99'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='assign' mangled-name='_ZNSs6assignEPKcm' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='258' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-29'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-99'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='assign' mangled-name='_ZNSs6assignEPKc' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='1128' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-29'/>
+            <return type-id='type-id-99'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='assign' mangled-name='_ZNSs6assignEmc' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='1144' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-28'/>
+            <return type-id='type-id-99'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='insert' mangled-name='_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEmc' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='1185' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-81'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-28'/>
+            <return type-id='type-id-39'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='insert' mangled-name='_ZNSs6insertEmRKSs' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='1233' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-98'/>
+            <return type-id='type-id-99'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='insert' mangled-name='_ZNSs6insertEmRKSsmm' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='1255' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-98'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-99'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='insert' mangled-name='_ZNSs6insertEmPKcm' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='359' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-29'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-99'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='insert' mangled-name='_ZNSs6insertEmPKc' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='1296' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-29'/>
+            <return type-id='type-id-99'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='insert' mangled-name='_ZNSs6insertEmmc' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='1319' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-28'/>
+            <return type-id='type-id-99'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='insert' mangled-name='_ZNSs6insertEN9__gnu_cxx17__normal_iteratorIPcSsEEc' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='1337' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-81'/>
+            <parameter type-id='type-id-28'/>
+            <return type-id='type-id-81'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='erase' mangled-name='_ZNSs5eraseEmm' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='1362' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-99'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='erase' mangled-name='_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEE' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='1378' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-81'/>
+            <return type-id='type-id-81'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='erase' mangled-name='_ZNSs5eraseEN9__gnu_cxx17__normal_iteratorIPcSsEES2_' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='390' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-81'/>
+            <parameter type-id='type-id-81'/>
+            <return type-id='type-id-81'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='replace' mangled-name='_ZNSs7replaceEmmRKSs' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='1429' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-98'/>
+            <return type-id='type-id-99'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='replace' mangled-name='_ZNSs7replaceEmmRKSsmm' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='1451' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-98'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-99'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='replace' mangled-name='_ZNSs7replaceEmmPKcm' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='413' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-29'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-99'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='replace' mangled-name='_ZNSs7replaceEmmPKc' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='1496' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-29'/>
+            <return type-id='type-id-99'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='replace' mangled-name='_ZNSs7replaceEmmmc' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='1520' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-28'/>
+            <return type-id='type-id-99'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='replace' mangled-name='_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_RKSs' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='1538' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-81'/>
+            <parameter type-id='type-id-81'/>
+            <parameter type-id='type-id-98'/>
+            <return type-id='type-id-99'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='replace' mangled-name='_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcm' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='1557' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-81'/>
+            <parameter type-id='type-id-81'/>
+            <parameter type-id='type-id-29'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-99'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='replace' mangled-name='_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKc' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='1578' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-81'/>
+            <parameter type-id='type-id-81'/>
+            <parameter type-id='type-id-29'/>
+            <return type-id='type-id-99'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='replace' mangled-name='_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_mc' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='1599' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-81'/>
+            <parameter type-id='type-id-81'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-28'/>
+            <return type-id='type-id-99'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='replace' mangled-name='_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S1_S1_' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='1636' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-81'/>
+            <parameter type-id='type-id-81'/>
+            <parameter type-id='type-id-41'/>
+            <parameter type-id='type-id-41'/>
+            <return type-id='type-id-99'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='replace' mangled-name='_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_PKcS4_' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='1646' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-81'/>
+            <parameter type-id='type-id-81'/>
+            <parameter type-id='type-id-29'/>
+            <parameter type-id='type-id-29'/>
+            <return type-id='type-id-99'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='replace' mangled-name='_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_S2_S2_' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='1657' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-81'/>
+            <parameter type-id='type-id-81'/>
+            <parameter type-id='type-id-81'/>
+            <parameter type-id='type-id-81'/>
+            <return type-id='type-id-99'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='replace' mangled-name='_ZNSs7replaceEN9__gnu_cxx17__normal_iteratorIPcSsEES2_NS0_IPKcSsEES5_' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='1667' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-81'/>
+            <parameter type-id='type-id-81'/>
+            <parameter type-id='type-id-83'/>
+            <parameter type-id='type-id-83'/>
+            <return type-id='type-id-99'/>
+          </function-decl>
+        </member-function>
+        <member-function access='private'>
+          <function-decl name='_M_replace_aux' mangled-name='_ZNSs14_M_replace_auxEmmmc' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='667' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-28'/>
+            <return type-id='type-id-99'/>
+          </function-decl>
+        </member-function>
+        <member-function access='private'>
+          <function-decl name='_M_replace_safe' mangled-name='_ZNSs15_M_replace_safeEmmPKcm' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='680' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-29'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-99'/>
+          </function-decl>
+        </member-function>
+        <member-function access='private' static='yes'>
+          <function-decl name='_S_construct_aux_2' mangled-name='_ZNSs18_S_construct_aux_2EmcRKSaIcE' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='1738' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-28'/>
+            <parameter type-id='type-id-97'/>
+            <return type-id='type-id-41'/>
+          </function-decl>
+        </member-function>
+        <member-function access='private' static='yes'>
+          <function-decl name='_S_construct' mangled-name='_ZNSs12_S_constructEmcRKSaIcE' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='152' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-28'/>
+            <parameter type-id='type-id-97'/>
+            <return type-id='type-id-41'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='copy' mangled-name='_ZNKSs4copyEPcmm' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='722' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <parameter type-id='type-id-41'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-61'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='swap' mangled-name='_ZNSs4swapERSs' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='518' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-96' is-artificial='yes'/>
+            <parameter type-id='type-id-99'/>
+            <return type-id='type-id-39'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='c_str' mangled-name='_ZNKSs5c_strEv' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='1800' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <return type-id='type-id-29'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='data' mangled-name='_ZNKSs4dataEv' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='1810' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <return type-id='type-id-29'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='get_allocator' mangled-name='_ZNKSs13get_allocatorEv' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='1817' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <return type-id='type-id-69'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='find' mangled-name='_ZNKSs4findEPKcmm' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='736' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <parameter type-id='type-id-29'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-61'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='find' mangled-name='_ZNKSs4findERKSsm' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='1846' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <parameter type-id='type-id-98'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-61'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='find' mangled-name='_ZNKSs4findEPKcm' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='1861' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <parameter type-id='type-id-29'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-61'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='find' mangled-name='_ZNKSs4findEcm' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='759' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <parameter type-id='type-id-28'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-61'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='rfind' mangled-name='_ZNKSs5rfindERKSsm' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='1891' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <parameter type-id='type-id-98'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-61'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='rfind' mangled-name='_ZNKSs5rfindEPKcmm' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='777' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <parameter type-id='type-id-29'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-61'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='rfind' mangled-name='_ZNKSs5rfindEPKcm' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='1921' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <parameter type-id='type-id-29'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-61'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='rfind' mangled-name='_ZNKSs5rfindEcm' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='798' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <parameter type-id='type-id-28'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-61'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='find_first_of' mangled-name='_ZNKSs13find_first_ofERKSsm' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='1952' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <parameter type-id='type-id-98'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-61'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='find_first_of' mangled-name='_ZNKSs13find_first_ofEPKcmm' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='815' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <parameter type-id='type-id-29'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-61'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='find_first_of' mangled-name='_ZNKSs13find_first_ofEPKcm' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='1982' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <parameter type-id='type-id-29'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-61'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='find_first_of' mangled-name='_ZNKSs13find_first_ofEcm' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='2001' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <parameter type-id='type-id-28'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-61'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='find_last_of' mangled-name='_ZNKSs12find_last_ofERKSsm' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='2016' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <parameter type-id='type-id-98'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-61'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='find_last_of' mangled-name='_ZNKSs12find_last_ofEPKcmm' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='830' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <parameter type-id='type-id-29'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-61'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='find_last_of' mangled-name='_ZNKSs12find_last_ofEPKcm' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='2046' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <parameter type-id='type-id-29'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-61'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='find_last_of' mangled-name='_ZNKSs12find_last_ofEcm' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='2065' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <parameter type-id='type-id-28'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-61'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='find_first_not_of' mangled-name='_ZNKSs17find_first_not_ofERKSsm' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='2079' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <parameter type-id='type-id-98'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-61'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='find_first_not_of' mangled-name='_ZNKSs17find_first_not_ofEPKcmm' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='851' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <parameter type-id='type-id-29'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-61'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='find_first_not_of' mangled-name='_ZNKSs17find_first_not_ofEPKcm' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='2110' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <parameter type-id='type-id-29'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-61'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='find_first_not_of' mangled-name='_ZNKSs17find_first_not_ofEcm' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='863' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <parameter type-id='type-id-28'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-61'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='find_last_not_of' mangled-name='_ZNKSs16find_last_not_ofERKSsm' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='2142' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <parameter type-id='type-id-98'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-61'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='find_last_not_of' mangled-name='_ZNKSs16find_last_not_ofEPKcmm' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='874' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <parameter type-id='type-id-29'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-61'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='find_last_not_of' mangled-name='_ZNKSs16find_last_not_ofEPKcm' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='2173' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <parameter type-id='type-id-29'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-61'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='find_last_not_of' mangled-name='_ZNKSs16find_last_not_ofEcm' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='895' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <parameter type-id='type-id-28'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-61'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='substr' mangled-name='_ZNKSs6substrEmm' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='2206' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-3'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='compare' mangled-name='_ZNKSs7compareERKSs' filepath='/usr/include/c++/4.8.2/bits/basic_string.h' line='2225' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <parameter type-id='type-id-98'/>
+            <return type-id='type-id-18'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='compare' mangled-name='_ZNKSs7compareEmmRKSs' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='915' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-98'/>
+            <return type-id='type-id-18'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='compare' mangled-name='_ZNKSs7compareEmmRKSsmm' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='930' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-98'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-18'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='compare' mangled-name='_ZNKSs7compareEPKc' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='948' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <parameter type-id='type-id-29'/>
+            <return type-id='type-id-18'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='compare' mangled-name='_ZNKSs7compareEmmPKc' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='963' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-29'/>
+            <return type-id='type-id-18'/>
+          </function-decl>
+        </member-function>
+        <member-function access='public'>
+          <function-decl name='compare' mangled-name='_ZNKSs7compareEmmPKcm' filepath='/usr/include/c++/4.8.2/bits/basic_string.tcc' line='979' column='1' visibility='default' binding='global' size-in-bits='64'>
+            <parameter type-id='type-id-95' is-artificial='yes'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-61'/>
+            <parameter type-id='type-id-29'/>
+            <parameter type-id='type-id-61'/>
+            <return type-id='type-id-18'/>
+          </function-decl>
+        </member-function>
+      </class-decl>
+    </namespace-decl>
+    <class-decl name='allocator&lt;char&gt;' visibility='default' is-declaration-only='yes' id='type-id-70'>
+      <member-type access='public'>
+        <typedef-decl name='size_type' type-id='type-id-100' filepath='/usr/include/c++/4.8.2/bits/allocator.h' line='95' column='1' id='type-id-62'/>
+      </member-type>
+      <member-type access='public'>
+        <typedef-decl name='difference_type' type-id='type-id-101' filepath='/usr/include/c++/4.8.2/bits/allocator.h' line='96' column='1' id='type-id-72'/>
+      </member-type>
+      <member-type access='public'>
+        <typedef-decl name='reference' type-id='type-id-102' filepath='/usr/include/c++/4.8.2/bits/allocator.h' line='99' column='1' id='type-id-74'/>
+      </member-type>
+      <member-type access='public'>
+        <typedef-decl name='const_reference' type-id='type-id-103' filepath='/usr/include/c++/4.8.2/bits/allocator.h' line='100' column='1' id='type-id-76'/>
+      </member-type>
+      <member-type access='public'>
+        <typedef-decl name='pointer' type-id='type-id-41' filepath='/usr/include/c++/4.8.2/bits/allocator.h' line='97' column='1' id='type-id-78'/>
+      </member-type>
+      <member-type access='public'>
+        <typedef-decl name='const_pointer' type-id='type-id-29' filepath='/usr/include/c++/4.8.2/bits/allocator.h' line='98' column='1' id='type-id-80'/>
+      </member-type>
+    </class-decl>
+    <namespace-decl name='std'>
+      <typedef-decl name='size_t' type-id='type-id-26' filepath='/usr/include/c++/4.8.2/x86_64-redhat-linux/bits/c++config.h' line='1857' column='1' id='type-id-100'/>
+      <typedef-decl name='ptrdiff_t' type-id='type-id-43' filepath='/usr/include/c++/4.8.2/x86_64-redhat-linux/bits/c++config.h' line='1858' column='1' id='type-id-101'/>
+      <class-decl name='reverse_iterator&lt;__gnu_cxx::__normal_iterator&lt;char const*, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt;' visibility='default' is-declaration-only='yes' id='type-id-86'/>
+      <class-decl name='reverse_iterator&lt;__gnu_cxx::__normal_iterator&lt;char*, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt; &gt;' visibility='default' is-declaration-only='yes' id='type-id-88'/>
+    </namespace-decl>
+    <reference-type-def kind='lvalue' type-id='type-id-28' size-in-bits='64' id='type-id-102'/>
+    <reference-type-def kind='lvalue' type-id='type-id-11' size-in-bits='64' id='type-id-103'/>
+    <qualified-type-def type-id='type-id-61' const='yes' id='type-id-91'/>
+    <class-decl name='rebind&lt;char&gt;' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-104'>
+      <member-type access='public'>
+        <typedef-decl name='other' type-id='type-id-70' filepath='/usr/include/c++/4.8.2/bits/allocator.h' line='105' column='1' id='type-id-64'/>
+      </member-type>
+    </class-decl>
+    <class-decl name='char_traits&lt;char&gt;' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-66'>
+      <member-type access='public'>
+        <typedef-decl name='char_type' type-id='type-id-28' filepath='/usr/include/c++/4.8.2/bits/char_traits.h' line='235' column='1' id='type-id-68'/>
+      </member-type>
+    </class-decl>
+    <namespace-decl name='__gnu_cxx'>
+      <class-decl name='__normal_iterator&lt;char*, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;' visibility='default' is-declaration-only='yes' id='type-id-82'/>
+      <class-decl name='__normal_iterator&lt;char const*, std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; &gt;' visibility='default' is-declaration-only='yes' id='type-id-84'/>
+    </namespace-decl>
+    <reference-type-def kind='lvalue' type-id='type-id-90' size-in-bits='64' id='type-id-92'/>
+    <type-decl name='bool' size-in-bits='8' id='type-id-93'/>
+    <pointer-type-def type-id='type-id-90' size-in-bits='64' id='type-id-94'/>
+    <qualified-type-def type-id='type-id-3' const='yes' id='type-id-105'/>
+    <pointer-type-def type-id='type-id-105' size-in-bits='64' id='type-id-95'/>
+    <pointer-type-def type-id='type-id-3' size-in-bits='64' id='type-id-96'/>
+    <qualified-type-def type-id='type-id-70' const='yes' id='type-id-106'/>
+    <reference-type-def kind='lvalue' type-id='type-id-106' size-in-bits='64' id='type-id-97'/>
+    <reference-type-def kind='lvalue' type-id='type-id-105' size-in-bits='64' id='type-id-98'/>
+    <reference-type-def kind='lvalue' type-id='type-id-3' size-in-bits='64' id='type-id-99'/>
+    <qualified-type-def type-id='type-id-90' const='yes' id='type-id-107'/>
+    <reference-type-def kind='lvalue' type-id='type-id-4' size-in-bits='64' id='type-id-108'/>
+    <qualified-type-def type-id='type-id-108' id='type-id-109'/>
+    <function-decl name='emit' mangled-name='_Z4emitRSs' filepath='/home/dodji/git/libabigail/PR20369/tests/data/test-read-dwarf/test23-first-tu.cc' line='12' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_Z4emitRSs'>
+      <parameter type-id='type-id-109' name='s' filepath='/home/dodji/git/libabigail/PR20369/tests/data/test-read-dwarf/test23-first-tu.cc' line='12' column='1'/>
+      <return type-id='type-id-39'/>
+    </function-decl>
+    <var-decl name='__dso_handle' type-id='type-id-38' visibility='default'/>
+    <qualified-type-def type-id='type-id-18' const='yes' id='type-id-6'/>
+    <qualified-type-def type-id='type-id-93' const='yes' id='type-id-7'/>
+    <qualified-type-def type-id='type-id-26' const='yes' id='type-id-9'/>
+    <type-decl name='short int' size-in-bits='16' id='type-id-110'/>
+    <qualified-type-def type-id='type-id-110' const='yes' id='type-id-13'/>
+    <qualified-type-def type-id='type-id-43' const='yes' id='type-id-15'/>
+    <namespace-decl name='std'>
+    </namespace-decl>
+    <namespace-decl name='std'>
+    </namespace-decl>
+    <namespace-decl name='std'>
+    </namespace-decl>
+    <namespace-decl name='std'>
+    </namespace-decl>
+    <namespace-decl name='std'>
+    </namespace-decl>
+    <namespace-decl name='__gnu_cxx'>
+    </namespace-decl>
+    <namespace-decl name='std'>
+    </namespace-decl>
+    <namespace-decl name='__gnu_cxx'>
+    </namespace-decl>
+    <namespace-decl name='std'>
+    </namespace-decl>
+    <namespace-decl name='__gnu_cxx'>
+    </namespace-decl>
+  </abi-instr>
+  <abi-instr version='1.0' address-size='64' path='test23-second-tu.cc' language='LANG_C_plus_plus'>
+    <namespace-decl name='std'>
+      <namespace-decl name='__debug'>
+      </namespace-decl>
+      <class-decl name='basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;' visibility='default' is-declaration-only='yes' id='type-id-1'/>
+      <var-decl name='cout' type-id='type-id-2' mangled-name='_ZSt4cout' visibility='default' filepath='/usr/include/c++/4.8.2/iostream' line='61' column='1'/>
+    </namespace-decl>
+    <namespace-decl name='__gnu_cxx'>
+      <class-decl name='__numeric_traits_integer&lt;int&gt;' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-5'>
+        <data-member access='public' static='yes'>
+          <var-decl name='__min' type-id='type-id-6' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIiE5__minE' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='58' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <var-decl name='__max' type-id='type-id-6' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIiE5__maxE' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='59' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <var-decl name='__is_signed' type-id='type-id-7' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='63' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <var-decl name='__digits' type-id='type-id-6' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='64' column='1'/>
+        </data-member>
+      </class-decl>
+      <class-decl name='__numeric_traits_integer&lt;long unsigned int&gt;' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-8'>
+        <data-member access='public' static='yes'>
+          <var-decl name='__min' type-id='type-id-9' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='58' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <var-decl name='__max' type-id='type-id-9' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='59' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <var-decl name='__is_signed' type-id='type-id-7' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='63' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <var-decl name='__digits' type-id='type-id-6' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerImE8__digitsE' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='64' column='1'/>
+        </data-member>
+      </class-decl>
+      <class-decl name='__numeric_traits_integer&lt;char&gt;' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-10'>
+        <data-member access='public' static='yes'>
+          <var-decl name='__min' type-id='type-id-11' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='58' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <var-decl name='__max' type-id='type-id-11' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIcE5__maxE' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='59' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <var-decl name='__is_signed' type-id='type-id-7' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='63' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <var-decl name='__digits' type-id='type-id-6' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='64' column='1'/>
+        </data-member>
+      </class-decl>
+      <class-decl name='__numeric_traits_integer&lt;short int&gt;' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-12'>
+        <data-member access='public' static='yes'>
+          <var-decl name='__min' type-id='type-id-13' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIsE5__minE' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='58' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <var-decl name='__max' type-id='type-id-13' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIsE5__maxE' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='59' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <var-decl name='__is_signed' type-id='type-id-7' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='63' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <var-decl name='__digits' type-id='type-id-6' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='64' column='1'/>
+        </data-member>
+      </class-decl>
+      <class-decl name='__numeric_traits_integer&lt;long int&gt;' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-14'>
+        <data-member access='public' static='yes'>
+          <var-decl name='__min' type-id='type-id-15' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIlE5__minE' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='58' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <var-decl name='__max' type-id='type-id-15' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIlE5__maxE' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='59' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <var-decl name='__is_signed' type-id='type-id-7' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='63' column='1'/>
+        </data-member>
+        <data-member access='public' static='yes'>
+          <var-decl name='__digits' type-id='type-id-6' visibility='default' filepath='/usr/include/c++/4.8.2/ext/numeric_traits.h' line='64' column='1'/>
+        </data-member>
+      </class-decl>
+    </namespace-decl>
+    <namespace-decl name='__gnu_debug'>
+    </namespace-decl>
+    <function-decl name='btowc' filepath='/usr/include/wchar.h' line='353' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-18'/>
+      <return type-id='type-id-17'/>
+    </function-decl>
+    <class-decl name='_IO_FILE' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-19'/>
+    <function-decl name='fgetwc' filepath='/usr/include/wchar.h' line='745' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-21'/>
+      <return type-id='type-id-17'/>
+    </function-decl>
+    <function-decl name='fgetws' filepath='/usr/include/wchar.h' line='774' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-23'/>
+      <parameter type-id='type-id-18'/>
+      <parameter type-id='type-id-21'/>
+      <return type-id='type-id-23'/>
+    </function-decl>
+    <function-decl name='fputwc' filepath='/usr/include/wchar.h' line='759' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-22'/>
+      <parameter type-id='type-id-21'/>
+      <return type-id='type-id-17'/>
+    </function-decl>
+    <function-decl name='fputws' filepath='/usr/include/wchar.h' line='781' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-21'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+    <function-decl name='fwide' filepath='/usr/include/wchar.h' line='587' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-21'/>
+      <parameter type-id='type-id-18'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+    <function-decl name='fwprintf' filepath='/usr/include/wchar.h' line='594' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-21'/>
+      <parameter type-id='type-id-25'/>
+      <parameter is-variadic='yes'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+    <function-decl name='fwscanf' filepath='/usr/include/wchar.h' line='635' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-21'/>
+      <parameter type-id='type-id-25'/>
+      <parameter is-variadic='yes'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+    <function-decl name='getwc' filepath='/usr/include/wchar.h' line='746' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-21'/>
+      <return type-id='type-id-17'/>
+    </function-decl>
+    <function-decl name='getwchar' filepath='/usr/include/wchar.h' line='752' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <return type-id='type-id-17'/>
+    </function-decl>
+    <function-decl name='mbrlen' filepath='/usr/include/wchar.h' line='376' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-29'/>
+      <parameter type-id='type-id-27'/>
+      <parameter type-id='type-id-33'/>
+      <return type-id='type-id-27'/>
+    </function-decl>
+    <function-decl name='mbrtowc' filepath='/usr/include/wchar.h' line='365' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-23'/>
+      <parameter type-id='type-id-29'/>
+      <parameter type-id='type-id-27'/>
+      <parameter type-id='type-id-33'/>
+      <return type-id='type-id-27'/>
+    </function-decl>
+    <function-decl name='mbsinit' filepath='/usr/include/wchar.h' line='361' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-35'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+    <function-decl name='mbsrtowcs' filepath='/usr/include/wchar.h' line='408' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-23'/>
+      <parameter type-id='type-id-36'/>
+      <parameter type-id='type-id-27'/>
+      <parameter type-id='type-id-33'/>
+      <return type-id='type-id-27'/>
+    </function-decl>
+    <function-decl name='putwc' filepath='/usr/include/wchar.h' line='760' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-22'/>
+      <parameter type-id='type-id-21'/>
+      <return type-id='type-id-17'/>
+    </function-decl>
+    <function-decl name='putwchar' filepath='/usr/include/wchar.h' line='766' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-22'/>
+      <return type-id='type-id-17'/>
+    </function-decl>
+    <function-decl name='swprintf' filepath='/usr/include/wchar.h' line='604' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-23'/>
+      <parameter type-id='type-id-27'/>
+      <parameter type-id='type-id-25'/>
+      <parameter is-variadic='yes'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+    <function-decl name='swscanf' filepath='/usr/include/wchar.h' line='645' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-25'/>
+      <parameter is-variadic='yes'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+    <function-decl name='ungetwc' filepath='/usr/include/wchar.h' line='789' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-17'/>
+      <parameter type-id='type-id-21'/>
+      <return type-id='type-id-17'/>
+    </function-decl>
+    <function-decl name='vfwprintf' filepath='/usr/include/wchar.h' line='612' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-21'/>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-40'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+    <function-decl name='vfwscanf' filepath='/usr/include/wchar.h' line='689' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-21'/>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-40'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+    <function-decl name='vswprintf' filepath='/usr/include/wchar.h' line='625' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-23'/>
+      <parameter type-id='type-id-27'/>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-40'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+    <function-decl name='vswscanf' filepath='/usr/include/wchar.h' line='701' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-40'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+    <function-decl name='vwprintf' filepath='/usr/include/wchar.h' line='620' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-40'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+    <function-decl name='vwscanf' filepath='/usr/include/wchar.h' line='697' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-40'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+    <function-decl name='wcrtomb' filepath='/usr/include/wchar.h' line='370' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-41'/>
+      <parameter type-id='type-id-22'/>
+      <parameter type-id='type-id-33'/>
+      <return type-id='type-id-27'/>
+    </function-decl>
+    <function-decl name='wcscat' filepath='/usr/include/wchar.h' line='155' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-23'/>
+      <parameter type-id='type-id-25'/>
+      <return type-id='type-id-23'/>
+    </function-decl>
+    <function-decl name='wcscmp' filepath='/usr/include/wchar.h' line='163' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-25'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+    <function-decl name='wcscoll' filepath='/usr/include/wchar.h' line='192' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-25'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+    <function-decl name='wcscpy' filepath='/usr/include/wchar.h' line='147' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-23'/>
+      <parameter type-id='type-id-25'/>
+      <return type-id='type-id-23'/>
+    </function-decl>
+    <function-decl name='wcscspn' filepath='/usr/include/wchar.h' line='252' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-25'/>
+      <return type-id='type-id-27'/>
+    </function-decl>
+    <function-decl name='wcsftime' filepath='/usr/include/wchar.h' line='855' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-23'/>
+      <parameter type-id='type-id-27'/>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-45'/>
+      <return type-id='type-id-27'/>
+    </function-decl>
+    <function-decl name='wcslen' filepath='/usr/include/wchar.h' line='287' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <return type-id='type-id-27'/>
+    </function-decl>
+    <function-decl name='wcsncat' filepath='/usr/include/wchar.h' line='158' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-23'/>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-27'/>
+      <return type-id='type-id-23'/>
+    </function-decl>
+    <function-decl name='wcsncmp' filepath='/usr/include/wchar.h' line='166' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-27'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+    <function-decl name='wcsncpy' filepath='/usr/include/wchar.h' line='150' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-23'/>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-27'/>
+      <return type-id='type-id-23'/>
+    </function-decl>
+    <function-decl name='wcsrtombs' filepath='/usr/include/wchar.h' line='414' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-41'/>
+      <parameter type-id='type-id-46'/>
+      <parameter type-id='type-id-27'/>
+      <parameter type-id='type-id-33'/>
+      <return type-id='type-id-27'/>
+    </function-decl>
+    <function-decl name='wcsspn' filepath='/usr/include/wchar.h' line='256' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-25'/>
+      <return type-id='type-id-27'/>
+    </function-decl>
+    <function-decl name='wcstod' filepath='/usr/include/wchar.h' line='450' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-48'/>
+      <return type-id='type-id-47'/>
+    </function-decl>
+    <function-decl name='wcstof' filepath='/usr/include/wchar.h' line='457' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-48'/>
+      <return type-id='type-id-49'/>
+    </function-decl>
+    <function-decl name='wcstok' filepath='/usr/include/wchar.h' line='282' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-23'/>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-48'/>
+      <return type-id='type-id-23'/>
+    </function-decl>
+    <function-decl name='wcstol' filepath='/usr/include/wchar.h' line='468' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-48'/>
+      <parameter type-id='type-id-18'/>
+      <return type-id='type-id-43'/>
+    </function-decl>
+    <function-decl name='wcstoul' filepath='/usr/include/wchar.h' line='473' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-48'/>
+      <parameter type-id='type-id-18'/>
+      <return type-id='type-id-26'/>
+    </function-decl>
+    <function-decl name='wcsxfrm' filepath='/usr/include/wchar.h' line='196' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-23'/>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-27'/>
+      <return type-id='type-id-27'/>
+    </function-decl>
+    <function-decl name='wctob' filepath='/usr/include/wchar.h' line='357' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-17'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+    <function-decl name='wmemcmp' filepath='/usr/include/wchar.h' line='325' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-27'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+    <function-decl name='wmemcpy' filepath='/usr/include/wchar.h' line='329' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-23'/>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-27'/>
+      <return type-id='type-id-23'/>
+    </function-decl>
+    <function-decl name='wmemmove' filepath='/usr/include/wchar.h' line='334' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-23'/>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-27'/>
+      <return type-id='type-id-23'/>
+    </function-decl>
+    <function-decl name='wmemset' filepath='/usr/include/wchar.h' line='338' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-23'/>
+      <parameter type-id='type-id-22'/>
+      <parameter type-id='type-id-27'/>
+      <return type-id='type-id-23'/>
+    </function-decl>
+    <function-decl name='wprintf' filepath='/usr/include/wchar.h' line='601' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter is-variadic='yes'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+    <function-decl name='wscanf' filepath='/usr/include/wchar.h' line='642' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter is-variadic='yes'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+    <function-decl name='wcschr' mangled-name='wcschr' filepath='/usr/include/wchar.h' line='224' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-22'/>
+      <return type-id='type-id-25'/>
+    </function-decl>
+    <function-decl name='wcspbrk' mangled-name='wcspbrk' filepath='/usr/include/wchar.h' line='262' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-25'/>
+      <return type-id='type-id-25'/>
+    </function-decl>
+    <function-decl name='wcsrchr' mangled-name='wcsrchr' filepath='/usr/include/wchar.h' line='234' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-22'/>
+      <return type-id='type-id-25'/>
+    </function-decl>
+    <function-decl name='wcsstr' mangled-name='wcsstr' filepath='/usr/include/wchar.h' line='273' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-25'/>
+      <return type-id='type-id-25'/>
+    </function-decl>
+    <function-decl name='wmemchr' mangled-name='wmemchr' filepath='/usr/include/wchar.h' line='316' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-22'/>
+      <parameter type-id='type-id-27'/>
+      <return type-id='type-id-25'/>
+    </function-decl>
+    <function-decl name='wcstold' filepath='/usr/include/wchar.h' line='459' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-48'/>
+      <return type-id='type-id-50'/>
+    </function-decl>
+    <function-decl name='wcstoll' filepath='/usr/include/wchar.h' line='483' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-48'/>
+      <parameter type-id='type-id-18'/>
+      <return type-id='type-id-51'/>
+    </function-decl>
+    <function-decl name='wcstoull' filepath='/usr/include/wchar.h' line='490' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-25'/>
+      <parameter type-id='type-id-48'/>
+      <parameter type-id='type-id-18'/>
+      <return type-id='type-id-52'/>
+    </function-decl>
+    <function-decl name='setlocale' filepath='/usr/include/locale.h' line='125' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-18'/>
+      <parameter type-id='type-id-29'/>
+      <return type-id='type-id-41'/>
+    </function-decl>
+    <function-decl name='localeconv' filepath='/usr/include/locale.h' line='128' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <return type-id='type-id-54'/>
+    </function-decl>
+    <function-decl name='iswctype' filepath='/usr/include/wctype.h' line='175' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-17'/>
+      <parameter type-id='type-id-55'/>
+      <return type-id='type-id-18'/>
+    </function-decl>
+    <function-decl name='towctrans' filepath='/usr/include/wctype.h' line='221' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-17'/>
+      <parameter type-id='type-id-59'/>
+      <return type-id='type-id-17'/>
+    </function-decl>
+    <function-decl name='wctrans' filepath='/usr/include/wctype.h' line='218' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-29'/>
+      <return type-id='type-id-59'/>
+    </function-decl>
+    <function-decl name='wctype' filepath='/usr/include/wctype.h' line='171' column='1' visibility='default' binding='global' size-in-bits='64'>
+      <parameter type-id='type-id-29'/>
+      <return type-id='type-id-55'/>
+    </function-decl>
+    <function-decl name='emit' mangled-name='_Z4emitRSsS_' filepath='/home/dodji/git/libabigail/PR20369/tests/data/test-read-dwarf/test23-second-tu.cc' line='13' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_Z4emitRSsS_'>
+      <parameter type-id='type-id-109' name='prefix' filepath='/home/dodji/git/libabigail/PR20369/tests/data/test-read-dwarf/test23-second-tu.cc' line='13' column='1'/>
+      <parameter type-id='type-id-109' name='s' filepath='/home/dodji/git/libabigail/PR20369/tests/data/test-read-dwarf/test23-second-tu.cc' line='13' column='1'/>
+      <return type-id='type-id-39'/>
+    </function-decl>
+    <var-decl name='__dso_handle' type-id='type-id-38' visibility='default'/>
+    <namespace-decl name='std'>
+    </namespace-decl>
+    <namespace-decl name='std'>
+    </namespace-decl>
+    <namespace-decl name='std'>
+    </namespace-decl>
+    <namespace-decl name='std'>
+    </namespace-decl>
+    <namespace-decl name='std'>
+    </namespace-decl>
+    <namespace-decl name='__gnu_cxx'>
+    </namespace-decl>
+    <namespace-decl name='std'>
+    </namespace-decl>
+    <namespace-decl name='__gnu_cxx'>
+    </namespace-decl>
+    <namespace-decl name='std'>
+    </namespace-decl>
+    <namespace-decl name='__gnu_cxx'>
+    </namespace-decl>
+  </abi-instr>
+</abi-corpus>
diff --git a/tests/data/test-read-dwarf/test23-first-tu.cc b/tests/data/test-read-dwarf/test23-first-tu.cc
new file mode 100644 (file)
index 0000000..0ecd326
--- /dev/null
@@ -0,0 +1,15 @@
+// Compile with:
+// g++ -g -Wall -c -fPIC -fdebug-types-section test23-first-tu.cc
+// g++ -g -Wall -c -fPIC -fdebug-types-section test23-second-tu.cc
+// g++ -g -shared -fuse-ld=gold -o libtest23.so test23-first-tu.o test23-second-tu.o
+#include <string>
+#include <iostream>
+
+using std::cout;
+using std::string;
+
+void
+emit(string& s)
+{
+  cout << s << "\n";
+}
diff --git a/tests/data/test-read-dwarf/test23-second-tu.cc b/tests/data/test-read-dwarf/test23-second-tu.cc
new file mode 100644 (file)
index 0000000..c2e3ed8
--- /dev/null
@@ -0,0 +1,16 @@
+// Compile with:
+// g++ -g -Wall -c -fdebug-types-section test23-first-tu.cc
+// g++ -g -Wall -c -fdebug-types-section test23-second-tu.cc
+// g++ -g -shared -fuse-ld=gold -o libtest23.so test23-first-tu.o test23-second-tu.o
+// The secon 
+#include <string>
+#include <iostream>
+
+using std::cout;
+using std::string;
+
+void
+emit(string& prefix, string& s)
+{
+  cout << prefix << ":" << s << "\n";
+}
index 9ba4d55b16b55924c23af680b9bc133dc131707d..ba23b9c47a12f8b165ac6259d237fca7e47207b7 100644 (file)
@@ -169,6 +169,11 @@ InOutSpec in_out_specs[] =
     "data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi",
     "output/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi",
   },
+  {
+    "data/test-read-dwarf/libtest23.so",
+    "data/test-read-dwarf/libtest23.so.abi",
+    "output/test-read-dwarf/libtest23.so.abi",
+  },
   // This should be the last entry.
   {NULL, NULL, NULL}
 };