[applied] elf-reader,symtab-reader: Fix suppression of aliased symbols

Message ID 87a55prtyx.fsf@redhat.com
State New
Headers
Series [applied] elf-reader,symtab-reader: Fix suppression of aliased symbols |

Commit Message

Dodji Seketeli June 30, 2025, 5:59 p.m. UTC
  Hello,

An aliased ELF symbol should be suppressed only if all of its aliases
are suppressed.  Otherwise, it's not suppressed.

Also, the test-read-dwarf.cc ignores the suppression specification
provided in the test entry.

Fixed thus.

	* src/abg-elf-reader.cc (reader::symtab): Rewrite the closure that
	determines if a symbol is suppressed.  Make it so that all aliases
	of a symbol has to be suppressed for the symbol to be suppressed.
	* src/abg-symtab-reader.cc (symtab::load_): Wait until all symbols
	aliases are constructed before determining if they are suppressed.
	This is because aliases are now necessary to determine if a symbol
	is suppressed.
	* tests/test-read-common.h (test_task::set_in_suppr_spec_path):
	Empty suppression specification shouldn't trigger us.
	* tests/test-read-dwarf.cc (test_task_dwarf::perform): Take the
	suppression specifications into account on the command line.
	* tests/data/test-read-dwarf/libtest24-drop-fns.so.abi: Adjust.
	* tests/data/test-read-dwarf/test-suppressed-alias.o.abi:
	Likewise.
	* tests/data/test-read-dwarf/test3-alias-1.so.hash.abi: Likewise.
	* tests/data/test-read-dwarf/test3-alias-2.so.hash.abi: Likewise.
	* tests/data/test-read-dwarf/test3-alias-3.so.hash.abi: Likewise.
	* tests/data/test-read-dwarf/test3-alias-4.so.hash.abi: Likewise.

Signed-off-by: Dodji Seketeli <dodji@redhat.com>
Applied to the mainline.
---
 src/abg-elf-reader.cc                         |  19 +-
 src/abg-symtab-reader.cc                      |  28 +-
 .../test-read-dwarf/libtest24-drop-fns.so.abi | 367 ++++++++----------
 .../test-suppressed-alias.o.abi               |   8 -
 .../test-read-dwarf/test3-alias-1.so.hash.abi |   2 -
 .../test-read-dwarf/test3-alias-2.so.hash.abi |   9 +-
 .../test-read-dwarf/test3-alias-3.so.hash.abi |  11 -
 .../test-read-dwarf/test3-alias-4.so.hash.abi |  11 -
 tests/test-read-common.h                      |   3 +-
 tests/test-read-dwarf.cc                      |   6 +-
 10 files changed, 213 insertions(+), 251 deletions(-)
  

Patch

diff --git a/src/abg-elf-reader.cc b/src/abg-elf-reader.cc
index 8642f701..5d30c602 100644
--- a/src/abg-elf-reader.cc
+++ b/src/abg-elf-reader.cc
@@ -645,7 +645,24 @@  reader::symtab() const
     priv_->symt = symtab_reader::symtab::load
       (elf_handle(), options().env,
        [&](const elf_symbol_sptr& symbol)
-       {return suppr::is_elf_symbol_suppressed(*this, symbol);});
+       {
+	 // This closure determines if a given symbol is suppressed by
+	 // taking into accont symbol aliases.  Basically, a symbol is
+	 // suppressed if all its aliases are suppressed.
+	 if (!symbol)
+	   return false;
+	 if (!suppr::is_elf_symbol_suppressed(*this, symbol))
+	   return false;
+	 for (elf_symbol_sptr a = symbol->get_next_alias();
+	      a && a.get() != symbol->get_main_symbol().get();
+	      a = a->get_next_alias())
+	   {
+	     if (!suppr::is_elf_symbol_suppressed(*this, a))
+	       return false;
+	   }
+	 return true;
+       }
+       );
 
   if (!priv_->symt)
     std::cerr << "Symbol table of '" << corpus_path()
diff --git a/src/abg-symtab-reader.cc b/src/abg-symtab-reader.cc
index 8cbc7865..eb6c33a6 100644
--- a/src/abg-symtab-reader.cc
+++ b/src/abg-symtab-reader.cc
@@ -551,15 +551,6 @@  symtab::load_(Elf*	       elf_handle,
 	 elf_helpers::stv_to_elf_symbol_visibility
 	 (GELF_ST_VISIBILITY(sym->st_other)));
 
-      // We do not take suppressed symbols into our symbol vector to avoid
-      // accidental leakage. But we ensure supressed symbols are otherwise set
-      // up for lookup.
-      if (!(is_suppressed && is_suppressed(symbol_sptr)))
-	// add to the symbol vector
-	symbols_.push_back(symbol_sptr);
-      else
-	symbol_sptr->set_is_suppressed(true);
-
       // add to the name->symbol lookup
       name_symbol_map_[name].push_back(symbol_sptr);
 
@@ -583,6 +574,25 @@  symtab::load_(Elf*	       elf_handle,
 	setup_symbol_lookup_tables(elf_handle, sym, symbol_sptr);
     }
 
+  // Now that symbols aliases have been constructed, let's determine
+  // what symbol has been suppressed or not.  Suppression takes into
+  // account
+  for (auto& elem : name_symbol_map_)
+    {
+      auto& symbols = elem.second;
+      for (auto& symbol : symbols)
+	{
+	  // We do not take suppressed symbols into our symbol vector
+	  // to avoid accidental leakage. But we ensure supressed
+	  // symbols are otherwise set up for lookup.
+	  if (!(is_suppressed && is_suppressed(symbol)))
+	    // add to the symbol vector
+	    symbols_.push_back(symbol);
+	  else
+	    symbol->set_is_suppressed(true);
+	}
+    }
+
   add_alternative_address_lookups(elf_handle);
 
   is_kernel_binary_ = elf_helpers::is_linux_kernel(elf_handle);
diff --git a/tests/data/test-read-dwarf/libtest24-drop-fns.so.abi b/tests/data/test-read-dwarf/libtest24-drop-fns.so.abi
index 250a34d4..683ed185 100644
--- a/tests/data/test-read-dwarf/libtest24-drop-fns.so.abi
+++ b/tests/data/test-read-dwarf/libtest24-drop-fns.so.abi
@@ -12,385 +12,356 @@ 
     <elf-symbol name='_init' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
   </elf-function-symbols>
   <abi-instr address-size='64' path='test24-drop-fns.cc' comp-dir-path='/home/dodji/git/libabigail.git/suppr/tests/data/test-read-dwarf' language='LANG_C_plus_plus'>
-    <type-decl name='bool' size-in-bits='8' hash='5ba96bb22f4237fb' id='type-id-1'/>
-    <type-decl name='char' size-in-bits='8' hash='65b2d157027b431a' id='type-id-2'/>
-    <array-type-def dimensions='1' type-id='type-id-2' size-in-bits='32' hash='932523ac2c3bfb84' id='type-id-3'>
-      <subrange length='4' lower-bound='0' upper-bound='3' type-id='type-id-4' size-in-bits='64' is-anonymous='yes' hash='cee611f4a73e486c' id='type-id-5'/>
+    <type-decl name='char' size-in-bits='8' hash='65b2d157027b431a' id='type-id-1'/>
+    <array-type-def dimensions='1' type-id='type-id-1' size-in-bits='32' hash='932523ac2c3bfb84' id='type-id-2'>
+      <subrange length='4' lower-bound='0' upper-bound='3' type-id='type-id-3' size-in-bits='64' is-anonymous='yes' hash='cee611f4a73e486c' id='type-id-4'/>
     </array-type-def>
-    <type-decl name='double' size-in-bits='64' hash='e9e9b320886d9aa6' id='type-id-6'/>
-    <type-decl name='float' size-in-bits='32' hash='d7ec3bf03d3c5690' id='type-id-7'/>
-    <type-decl name='int' size-in-bits='32' hash='09d17c08f594edc7' id='type-id-8'/>
-    <type-decl name='long double' size-in-bits='128' hash='2a9bbfe8bb0475f1#2' id='type-id-9'/>
-    <type-decl name='long int' size-in-bits='64' hash='b119fe0931d2ee10#2' id='type-id-10'/>
-    <type-decl name='long long int' size-in-bits='64' hash='5ae7f9eec1fc43d6#3' id='type-id-11'/>
-    <type-decl name='short int' size-in-bits='16' hash='6c2352eccdcd3eea#4' id='type-id-12'/>
-    <type-decl name='sizetype' size-in-bits='64' hash='3e84f1a1648448f5' id='type-id-4'/>
-    <class-decl name='__mbstate_t' is-struct='yes' naming-typedef-id='type-id-13' visibility='default' size-in-bits='64' filepath='/usr/include/wchar.h' line='83' column='1' hash='e97fe294ce223fec' id='type-id-14'>
+    <type-decl name='double' size-in-bits='64' hash='e9e9b320886d9aa6' id='type-id-5'/>
+    <type-decl name='float' size-in-bits='32' hash='d7ec3bf03d3c5690' id='type-id-6'/>
+    <type-decl name='int' size-in-bits='32' hash='09d17c08f594edc7' id='type-id-7'/>
+    <type-decl name='long double' size-in-bits='128' hash='2a9bbfe8bb0475f1#2' id='type-id-8'/>
+    <type-decl name='long int' size-in-bits='64' hash='b119fe0931d2ee10#2' id='type-id-9'/>
+    <type-decl name='long long int' size-in-bits='64' hash='5ae7f9eec1fc43d6#3' id='type-id-10'/>
+    <type-decl name='short int' size-in-bits='16' hash='6c2352eccdcd3eea#4' id='type-id-11'/>
+    <type-decl name='sizetype' size-in-bits='64' hash='3e84f1a1648448f5' id='type-id-3'/>
+    <class-decl name='__mbstate_t' is-struct='yes' naming-typedef-id='type-id-12' visibility='default' size-in-bits='64' filepath='/usr/include/wchar.h' line='83' column='1' hash='e97fe294ce223fec' id='type-id-13'>
       <member-type access='public'>
-        <union-decl name='__anonymous_union__' visibility='default' size-in-bits='32' is-anonymous='yes' filepath='/usr/include/wchar.h' line='86' column='1' hash='db9d16b710a8f305' id='type-id-15'>
+        <union-decl name='__anonymous_union__' visibility='default' size-in-bits='32' is-anonymous='yes' filepath='/usr/include/wchar.h' line='86' column='1' hash='db9d16b710a8f305' id='type-id-14'>
           <data-member access='public'>
-            <var-decl name='__wch' type-id='type-id-16' visibility='default' filepath='/usr/include/wchar.h' line='88' column='1'/>
+            <var-decl name='__wch' type-id='type-id-15' visibility='default' filepath='/usr/include/wchar.h' line='88' column='1'/>
           </data-member>
           <data-member access='public'>
-            <var-decl name='__wchb' type-id='type-id-3' visibility='default' filepath='/usr/include/wchar.h' line='92' column='1'/>
+            <var-decl name='__wchb' type-id='type-id-2' visibility='default' filepath='/usr/include/wchar.h' line='92' column='1'/>
           </data-member>
         </union-decl>
       </member-type>
       <data-member access='public' layout-offset-in-bits='0'>
-        <var-decl name='__count' type-id='type-id-8' visibility='default' filepath='/usr/include/wchar.h' line='84' column='1'/>
+        <var-decl name='__count' type-id='type-id-7' visibility='default' filepath='/usr/include/wchar.h' line='84' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='32'>
-        <var-decl name='__value' type-id='type-id-15' visibility='default' filepath='/usr/include/wchar.h' line='93' column='1'/>
+        <var-decl name='__value' type-id='type-id-14' visibility='default' filepath='/usr/include/wchar.h' line='93' column='1'/>
       </data-member>
     </class-decl>
-    <class-decl name='lconv' is-struct='yes' visibility='default' size-in-bits='768' filepath='/usr/include/locale.h' line='53' column='1' hash='91b2fd0786b4df3e' id='type-id-17'>
+    <class-decl name='lconv' is-struct='yes' visibility='default' size-in-bits='768' filepath='/usr/include/locale.h' line='53' column='1' hash='91b2fd0786b4df3e' id='type-id-16'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <var-decl name='decimal_point' type-id='type-id-18' visibility='default' filepath='/usr/include/locale.h' line='57' column='1'/>
+        <var-decl name='decimal_point' type-id='type-id-17' visibility='default' filepath='/usr/include/locale.h' line='57' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
-        <var-decl name='thousands_sep' type-id='type-id-18' visibility='default' filepath='/usr/include/locale.h' line='58' column='1'/>
+        <var-decl name='thousands_sep' type-id='type-id-17' visibility='default' filepath='/usr/include/locale.h' line='58' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='128'>
-        <var-decl name='grouping' type-id='type-id-18' visibility='default' filepath='/usr/include/locale.h' line='64' column='1'/>
+        <var-decl name='grouping' type-id='type-id-17' visibility='default' filepath='/usr/include/locale.h' line='64' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='192'>
-        <var-decl name='int_curr_symbol' type-id='type-id-18' visibility='default' filepath='/usr/include/locale.h' line='70' column='1'/>
+        <var-decl name='int_curr_symbol' type-id='type-id-17' visibility='default' filepath='/usr/include/locale.h' line='70' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='256'>
-        <var-decl name='currency_symbol' type-id='type-id-18' visibility='default' filepath='/usr/include/locale.h' line='71' column='1'/>
+        <var-decl name='currency_symbol' type-id='type-id-17' visibility='default' filepath='/usr/include/locale.h' line='71' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='320'>
-        <var-decl name='mon_decimal_point' type-id='type-id-18' visibility='default' filepath='/usr/include/locale.h' line='72' column='1'/>
+        <var-decl name='mon_decimal_point' type-id='type-id-17' visibility='default' filepath='/usr/include/locale.h' line='72' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='384'>
-        <var-decl name='mon_thousands_sep' type-id='type-id-18' visibility='default' filepath='/usr/include/locale.h' line='73' column='1'/>
+        <var-decl name='mon_thousands_sep' type-id='type-id-17' visibility='default' filepath='/usr/include/locale.h' line='73' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='448'>
-        <var-decl name='mon_grouping' type-id='type-id-18' visibility='default' filepath='/usr/include/locale.h' line='74' column='1'/>
+        <var-decl name='mon_grouping' type-id='type-id-17' visibility='default' filepath='/usr/include/locale.h' line='74' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='512'>
-        <var-decl name='positive_sign' type-id='type-id-18' visibility='default' filepath='/usr/include/locale.h' line='75' column='1'/>
+        <var-decl name='positive_sign' type-id='type-id-17' visibility='default' filepath='/usr/include/locale.h' line='75' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='576'>
-        <var-decl name='negative_sign' type-id='type-id-18' visibility='default' filepath='/usr/include/locale.h' line='76' column='1'/>
+        <var-decl name='negative_sign' type-id='type-id-17' visibility='default' filepath='/usr/include/locale.h' line='76' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='640'>
-        <var-decl name='int_frac_digits' type-id='type-id-2' visibility='default' filepath='/usr/include/locale.h' line='77' column='1'/>
+        <var-decl name='int_frac_digits' type-id='type-id-1' visibility='default' filepath='/usr/include/locale.h' line='77' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='648'>
-        <var-decl name='frac_digits' type-id='type-id-2' visibility='default' filepath='/usr/include/locale.h' line='78' column='1'/>
+        <var-decl name='frac_digits' type-id='type-id-1' visibility='default' filepath='/usr/include/locale.h' line='78' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='656'>
-        <var-decl name='p_cs_precedes' type-id='type-id-2' visibility='default' filepath='/usr/include/locale.h' line='80' column='1'/>
+        <var-decl name='p_cs_precedes' type-id='type-id-1' visibility='default' filepath='/usr/include/locale.h' line='80' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='664'>
-        <var-decl name='p_sep_by_space' type-id='type-id-2' visibility='default' filepath='/usr/include/locale.h' line='82' column='1'/>
+        <var-decl name='p_sep_by_space' type-id='type-id-1' visibility='default' filepath='/usr/include/locale.h' line='82' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='672'>
-        <var-decl name='n_cs_precedes' type-id='type-id-2' visibility='default' filepath='/usr/include/locale.h' line='84' column='1'/>
+        <var-decl name='n_cs_precedes' type-id='type-id-1' visibility='default' filepath='/usr/include/locale.h' line='84' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='680'>
-        <var-decl name='n_sep_by_space' type-id='type-id-2' visibility='default' filepath='/usr/include/locale.h' line='86' column='1'/>
+        <var-decl name='n_sep_by_space' type-id='type-id-1' visibility='default' filepath='/usr/include/locale.h' line='86' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='688'>
-        <var-decl name='p_sign_posn' type-id='type-id-2' visibility='default' filepath='/usr/include/locale.h' line='93' column='1'/>
+        <var-decl name='p_sign_posn' type-id='type-id-1' visibility='default' filepath='/usr/include/locale.h' line='93' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='696'>
-        <var-decl name='n_sign_posn' type-id='type-id-2' visibility='default' filepath='/usr/include/locale.h' line='94' column='1'/>
+        <var-decl name='n_sign_posn' type-id='type-id-1' visibility='default' filepath='/usr/include/locale.h' line='94' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='704'>
-        <var-decl name='int_p_cs_precedes' type-id='type-id-2' visibility='default' filepath='/usr/include/locale.h' line='97' column='1'/>
+        <var-decl name='int_p_cs_precedes' type-id='type-id-1' visibility='default' filepath='/usr/include/locale.h' line='97' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='712'>
-        <var-decl name='int_p_sep_by_space' type-id='type-id-2' visibility='default' filepath='/usr/include/locale.h' line='99' column='1'/>
+        <var-decl name='int_p_sep_by_space' type-id='type-id-1' visibility='default' filepath='/usr/include/locale.h' line='99' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='720'>
-        <var-decl name='int_n_cs_precedes' type-id='type-id-2' visibility='default' filepath='/usr/include/locale.h' line='101' column='1'/>
+        <var-decl name='int_n_cs_precedes' type-id='type-id-1' visibility='default' filepath='/usr/include/locale.h' line='101' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='728'>
-        <var-decl name='int_n_sep_by_space' type-id='type-id-2' visibility='default' filepath='/usr/include/locale.h' line='103' column='1'/>
+        <var-decl name='int_n_sep_by_space' type-id='type-id-1' visibility='default' filepath='/usr/include/locale.h' line='103' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='736'>
-        <var-decl name='int_p_sign_posn' type-id='type-id-2' visibility='default' filepath='/usr/include/locale.h' line='110' column='1'/>
+        <var-decl name='int_p_sign_posn' type-id='type-id-1' visibility='default' filepath='/usr/include/locale.h' line='110' column='1'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='744'>
-        <var-decl name='int_n_sign_posn' type-id='type-id-2' visibility='default' filepath='/usr/include/locale.h' line='111' column='1'/>
+        <var-decl name='int_n_sign_posn' type-id='type-id-1' visibility='default' filepath='/usr/include/locale.h' line='111' column='1'/>
       </data-member>
     </class-decl>
-    <class-decl name='tm' is-struct='yes' visibility='default' size-in-bits='448' filepath='/usr/include/time.h' line='133' column='1' hash='831fa813c3806379' id='type-id-19'>
+    <class-decl name='tm' is-struct='yes' visibility='default' size-in-bits='448' filepath='/usr/include/time.h' line='133' column='1' hash='831fa813c3806379' id='type-id-18'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <var-decl name='tm_sec' type-id='type-id-8' visibility='default' filepath='/usr/include/time.h' line='135' column='1'/>
+        <var-decl name='tm_sec' type-id='type-id-7' 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-8' visibility='default' filepath='/usr/include/time.h' line='136' column='1'/>
+        <var-decl name='tm_min' type-id='type-id-7' 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-8' visibility='default' filepath='/usr/include/time.h' line='137' column='1'/>
+        <var-decl name='tm_hour' type-id='type-id-7' 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-8' visibility='default' filepath='/usr/include/time.h' line='138' column='1'/>
+        <var-decl name='tm_mday' type-id='type-id-7' 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-8' visibility='default' filepath='/usr/include/time.h' line='139' column='1'/>
+        <var-decl name='tm_mon' type-id='type-id-7' 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-8' visibility='default' filepath='/usr/include/time.h' line='140' column='1'/>
+        <var-decl name='tm_year' type-id='type-id-7' 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-8' visibility='default' filepath='/usr/include/time.h' line='141' column='1'/>
+        <var-decl name='tm_wday' type-id='type-id-7' 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-8' visibility='default' filepath='/usr/include/time.h' line='142' column='1'/>
+        <var-decl name='tm_yday' type-id='type-id-7' 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-8' visibility='default' filepath='/usr/include/time.h' line='143' column='1'/>
+        <var-decl name='tm_isdst' type-id='type-id-7' 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-10' visibility='default' filepath='/usr/include/time.h' line='146' column='1'/>
+        <var-decl name='tm_gmtoff' type-id='type-id-9' 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-20' visibility='default' filepath='/usr/include/time.h' line='147' column='1'/>
+        <var-decl name='tm_zone' type-id='type-id-19' visibility='default' filepath='/usr/include/time.h' line='147' column='1'/>
       </data-member>
     </class-decl>
-    <class-decl name='typedef__va_list_tag__va_list_tag' is-struct='yes' visibility='default' size-in-bits='192' hash='3b37d6f26ac12c24' id='type-id-21'>
+    <class-decl name='typedef__va_list_tag__va_list_tag' is-struct='yes' visibility='default' size-in-bits='192' hash='3b37d6f26ac12c24' id='type-id-20'>
       <data-member access='public' layout-offset-in-bits='0'>
-        <var-decl name='gp_offset' type-id='type-id-16' visibility='default'/>
+        <var-decl name='gp_offset' type-id='type-id-15' 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'/>
+        <var-decl name='fp_offset' type-id='type-id-15' visibility='default'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='64'>
-        <var-decl name='overflow_arg_area' type-id='type-id-22' visibility='default'/>
+        <var-decl name='overflow_arg_area' type-id='type-id-21' visibility='default'/>
       </data-member>
       <data-member access='public' layout-offset-in-bits='128'>
-        <var-decl name='reg_save_area' type-id='type-id-22' visibility='default'/>
+        <var-decl name='reg_save_area' type-id='type-id-21' visibility='default'/>
       </data-member>
     </class-decl>
-    <typedef-decl name='_Atomic_word' type-id='type-id-8' size-in-bits='32' filepath='/usr/include/c++/5.3.1/x86_64-redhat-linux/bits/atomic_word.h' line='32' column='1' hash='09d17c08f594edc7' id='type-id-23'/>
-    <typedef-decl name='__int32_t' type-id='type-id-8' size-in-bits='32' filepath='/usr/include/bits/types.h' line='40' column='1' hash='09d17c08f594edc7' id='type-id-24'/>
-    <typedef-decl name='__mbstate_t' type-id='type-id-14' size-in-bits='64' filepath='/usr/include/wchar.h' line='94' column='1' id='type-id-13'/>
-    <typedef-decl name='mbstate_t' type-id='type-id-13' size-in-bits='64' filepath='/usr/include/wchar.h' line='106' column='1' id='type-id-25'/>
-    <typedef-decl name='size_t' type-id='type-id-26' size-in-bits='64' filepath='/usr/lib/gcc/x86_64-redhat-linux/5.3.1/include/stddef.h' line='216' column='1' hash='8fdc5eea2983a729' id='type-id-27'/>
-    <typedef-decl name='wctrans_t' type-id='type-id-28' size-in-bits='64' filepath='/usr/include/wctype.h' line='186' column='1' hash='96e1bfcb27b9d6ed' id='type-id-29'/>
-    <typedef-decl name='wctype_t' type-id='type-id-26' size-in-bits='64' filepath='/usr/include/wctype.h' line='52' column='1' hash='8fdc5eea2983a729' id='type-id-30'/>
-    <typedef-decl name='wint_t' type-id='type-id-16' size-in-bits='32' filepath='/usr/lib/gcc/x86_64-redhat-linux/5.3.1/include/stddef.h' line='357' column='1' hash='e66b43f97c38e87a' id='type-id-31'/>
-    <type-decl name='unsigned int' size-in-bits='32' hash='e66b43f97c38e87a' id='type-id-16'/>
-    <type-decl name='unsigned long int' size-in-bits='64' hash='8fdc5eea2983a729#2' id='type-id-26'/>
-    <type-decl name='unsigned long long int' size-in-bits='64' hash='ebdfc4685a1e82df#3' id='type-id-32'/>
-    <type-decl name='wchar_t' size-in-bits='32' hash='4b224bc24abb5f1b' id='type-id-33'/>
-    <pointer-type-def type-id='type-id-34' size-in-bits='64' hash='608f46af5d93b320' id='type-id-35'/>
-    <reference-type-def kind='lvalue' type-id='type-id-2' size-in-bits='64' hash='ffc913127619398d' id='type-id-36'/>
-    <pointer-type-def type-id='type-id-2' size-in-bits='64' hash='e533f42d1dd4942c' id='type-id-18'/>
-    <qualified-type-def type-id='type-id-34' const='yes' hash='d0c896a319e39135' id='type-id-37'/>
-    <reference-type-def kind='lvalue' type-id='type-id-37' size-in-bits='64' hash='9a4f67b0de72c33d' id='type-id-38'/>
-    <pointer-type-def type-id='type-id-37' size-in-bits='64' hash='0481e4c0dbe5485f' id='type-id-39'/>
-    <qualified-type-def type-id='type-id-24' const='yes' hash='3aaf0f2479f2834c' id='type-id-40'/>
-    <pointer-type-def type-id='type-id-40' size-in-bits='64' hash='96e1bfcb27b9d6ed' id='type-id-28'/>
-    <qualified-type-def type-id='type-id-2' const='yes' hash='3e50fd33f9bb78d9' id='type-id-41'/>
-    <reference-type-def kind='lvalue' type-id='type-id-41' size-in-bits='64' hash='78bf127c69ae91c1' id='type-id-42'/>
-    <pointer-type-def type-id='type-id-41' size-in-bits='64' hash='c44743f354f6a443' id='type-id-20'/>
-    <pointer-type-def type-id='type-id-20' size-in-bits='64' hash='cea1d4b0943594a3' id='type-id-43'/>
-    <qualified-type-def type-id='type-id-8' const='yes' hash='8cef8df4b6728924' id='type-id-44'/>
-    <qualified-type-def type-id='type-id-10' const='yes' hash='ea466b949f1ce7b6#2' id='type-id-45'/>
-    <qualified-type-def type-id='type-id-25' const='yes' hash='a328f2686e4dcc6e' id='type-id-46'/>
-    <pointer-type-def type-id='type-id-46' size-in-bits='64' hash='965b139f91617649' id='type-id-47'/>
-    <qualified-type-def type-id='type-id-12' const='yes' hash='fa0f98d319d2e5f4#3' id='type-id-48'/>
-    <qualified-type-def type-id='type-id-49' const='yes' hash='902ffeb42efa2254' id='type-id-50'/>
-    <reference-type-def kind='lvalue' type-id='type-id-50' size-in-bits='64' hash='7d4280c016344b59' id='type-id-51'/>
-    <qualified-type-def type-id='type-id-52' const='yes' hash='876836f44f3494e5' id='type-id-53'/>
-    <reference-type-def kind='lvalue' type-id='type-id-53' size-in-bits='64' hash='c150ddfcb238b493' id='type-id-54'/>
-    <pointer-type-def type-id='type-id-53' size-in-bits='64' hash='558e377f8e11c9af' id='type-id-55'/>
-    <qualified-type-def type-id='type-id-56' const='yes' hash='7226944aa4e46352' id='type-id-57'/>
-    <pointer-type-def type-id='type-id-57' size-in-bits='64' hash='61c33da8fd0cc9a8' id='type-id-58'/>
-    <qualified-type-def type-id='type-id-59' const='yes' hash='f3ad494e9f7aea44' id='type-id-60'/>
-    <qualified-type-def type-id='type-id-61' const='yes' hash='0d301f00e830e5eb' id='type-id-62'/>
-    <reference-type-def kind='lvalue' type-id='type-id-62' size-in-bits='64' hash='d98a60be7234f7c8' id='type-id-63'/>
-    <pointer-type-def type-id='type-id-62' size-in-bits='64' hash='f4903706bce76c85' id='type-id-64'/>
-    <qualified-type-def type-id='type-id-65' const='yes' hash='9c3f1503b45b0328' id='type-id-66'/>
-    <reference-type-def kind='lvalue' type-id='type-id-66' size-in-bits='64' hash='00b5256d58d8bd92' id='type-id-67'/>
-    <qualified-type-def type-id='type-id-68' const='yes' hash='18782c365e5b3732' id='type-id-69'/>
-    <reference-type-def kind='lvalue' type-id='type-id-69' size-in-bits='64' hash='c1a2c2d06c5e591e' id='type-id-70'/>
-    <qualified-type-def type-id='type-id-19' const='yes' hash='6d30d2c0485b21b8' id='type-id-71'/>
-    <pointer-type-def type-id='type-id-71' size-in-bits='64' hash='934b82f269d593b3' id='type-id-72'/>
-    <qualified-type-def type-id='type-id-33' const='yes' hash='f2fba7dbc42fc9d5' id='type-id-73'/>
-    <pointer-type-def type-id='type-id-73' size-in-bits='64' hash='317089067e76910a' id='type-id-74'/>
-    <pointer-type-def type-id='type-id-74' size-in-bits='64' hash='535c62eb027026ae' id='type-id-75'/>
-    <pointer-type-def type-id='type-id-17' size-in-bits='64' hash='6921f81febec828e' id='type-id-76'/>
-    <pointer-type-def type-id='type-id-25' size-in-bits='64' hash='18fb85b101e2cd25' id='type-id-77'/>
-    <pointer-type-def type-id='type-id-49' size-in-bits='64' hash='e3d0c180eee5d782' id='type-id-78'/>
-    <reference-type-def kind='lvalue' type-id='type-id-52' size-in-bits='64' hash='eafca7fdb10b089a' id='type-id-79'/>
-    <pointer-type-def type-id='type-id-52' size-in-bits='64' hash='18becb8991ad6ad0' id='type-id-80'/>
-    <pointer-type-def type-id='type-id-81' size-in-bits='64' hash='9d029584a1ffef40' id='type-id-82'/>
-    <reference-type-def kind='lvalue' type-id='type-id-56' size-in-bits='64' hash='dce7c83b7dca5265' id='type-id-83'/>
-    <pointer-type-def type-id='type-id-56' size-in-bits='64' hash='0eeadcf9df869442' id='type-id-84'/>
-    <reference-type-def kind='lvalue' type-id='type-id-61' size-in-bits='64' hash='75929b1513585467' id='type-id-85'/>
-    <pointer-type-def type-id='type-id-61' size-in-bits='64' hash='4cef840ef4725ab6' id='type-id-86'/>
-    <pointer-type-def type-id='type-id-21' size-in-bits='64' hash='32209790a214ec40' id='type-id-87'/>
-    <pointer-type-def type-id='type-id-33' size-in-bits='64' hash='fb9a8c973ae04ed8' id='type-id-88'/>
-    <pointer-type-def type-id='type-id-88' size-in-bits='64' hash='f6157ba411f3141d' id='type-id-89'/>
-    <pointer-type-def type-id='type-id-90' size-in-bits='64' id='type-id-91'/>
+    <typedef-decl name='_Atomic_word' type-id='type-id-7' size-in-bits='32' filepath='/usr/include/c++/5.3.1/x86_64-redhat-linux/bits/atomic_word.h' line='32' column='1' hash='09d17c08f594edc7' id='type-id-22'/>
+    <typedef-decl name='__int32_t' type-id='type-id-7' size-in-bits='32' filepath='/usr/include/bits/types.h' line='40' column='1' hash='09d17c08f594edc7' id='type-id-23'/>
+    <typedef-decl name='__mbstate_t' type-id='type-id-13' size-in-bits='64' filepath='/usr/include/wchar.h' line='94' column='1' id='type-id-12'/>
+    <typedef-decl name='mbstate_t' type-id='type-id-12' size-in-bits='64' filepath='/usr/include/wchar.h' line='106' column='1' id='type-id-24'/>
+    <typedef-decl name='size_t' type-id='type-id-25' size-in-bits='64' filepath='/usr/lib/gcc/x86_64-redhat-linux/5.3.1/include/stddef.h' line='216' column='1' hash='8fdc5eea2983a729' id='type-id-26'/>
+    <typedef-decl name='wctrans_t' type-id='type-id-27' size-in-bits='64' filepath='/usr/include/wctype.h' line='186' column='1' hash='96e1bfcb27b9d6ed' id='type-id-28'/>
+    <typedef-decl name='wctype_t' type-id='type-id-25' size-in-bits='64' filepath='/usr/include/wctype.h' line='52' column='1' hash='8fdc5eea2983a729' id='type-id-29'/>
+    <typedef-decl name='wint_t' type-id='type-id-15' size-in-bits='32' filepath='/usr/lib/gcc/x86_64-redhat-linux/5.3.1/include/stddef.h' line='357' column='1' hash='e66b43f97c38e87a' id='type-id-30'/>
+    <type-decl name='unsigned int' size-in-bits='32' hash='e66b43f97c38e87a' id='type-id-15'/>
+    <type-decl name='unsigned long int' size-in-bits='64' hash='8fdc5eea2983a729#2' id='type-id-25'/>
+    <type-decl name='unsigned long long int' size-in-bits='64' hash='ebdfc4685a1e82df#3' id='type-id-31'/>
+    <type-decl name='wchar_t' size-in-bits='32' hash='4b224bc24abb5f1b' id='type-id-32'/>
+    <pointer-type-def type-id='type-id-33' size-in-bits='64' hash='608f46af5d93b320' id='type-id-34'/>
+    <reference-type-def kind='lvalue' type-id='type-id-1' size-in-bits='64' hash='ffc913127619398d' id='type-id-35'/>
+    <pointer-type-def type-id='type-id-1' size-in-bits='64' hash='e533f42d1dd4942c' id='type-id-17'/>
+    <qualified-type-def type-id='type-id-33' const='yes' hash='d0c896a319e39135' id='type-id-36'/>
+    <reference-type-def kind='lvalue' type-id='type-id-36' size-in-bits='64' hash='9a4f67b0de72c33d' id='type-id-37'/>
+    <pointer-type-def type-id='type-id-36' size-in-bits='64' hash='0481e4c0dbe5485f' id='type-id-38'/>
+    <qualified-type-def type-id='type-id-23' const='yes' hash='3aaf0f2479f2834c' id='type-id-39'/>
+    <pointer-type-def type-id='type-id-39' size-in-bits='64' hash='96e1bfcb27b9d6ed' id='type-id-27'/>
+    <qualified-type-def type-id='type-id-1' const='yes' hash='3e50fd33f9bb78d9' id='type-id-40'/>
+    <reference-type-def kind='lvalue' type-id='type-id-40' size-in-bits='64' hash='78bf127c69ae91c1' id='type-id-41'/>
+    <pointer-type-def type-id='type-id-40' size-in-bits='64' hash='c44743f354f6a443' id='type-id-19'/>
+    <pointer-type-def type-id='type-id-19' size-in-bits='64' hash='cea1d4b0943594a3' id='type-id-42'/>
+    <qualified-type-def type-id='type-id-7' const='yes' hash='8cef8df4b6728924' id='type-id-43'/>
+    <qualified-type-def type-id='type-id-9' const='yes' hash='ea466b949f1ce7b6#2' id='type-id-44'/>
+    <qualified-type-def type-id='type-id-24' const='yes' hash='a328f2686e4dcc6e' id='type-id-45'/>
+    <pointer-type-def type-id='type-id-45' size-in-bits='64' hash='965b139f91617649' id='type-id-46'/>
+    <qualified-type-def type-id='type-id-11' const='yes' hash='fa0f98d319d2e5f4#3' id='type-id-47'/>
+    <qualified-type-def type-id='type-id-48' const='yes' hash='7226944aa4e46352' id='type-id-49'/>
+    <qualified-type-def type-id='type-id-50' const='yes' hash='f3ad494e9f7aea44' id='type-id-51'/>
+    <qualified-type-def type-id='type-id-52' const='yes' hash='0d301f00e830e5eb' id='type-id-53'/>
+    <qualified-type-def type-id='type-id-54' const='yes' hash='9c3f1503b45b0328' id='type-id-55'/>
+    <qualified-type-def type-id='type-id-56' const='yes' hash='18782c365e5b3732' id='type-id-57'/>
+    <reference-type-def kind='lvalue' type-id='type-id-57' size-in-bits='64' hash='c1a2c2d06c5e591e' id='type-id-58'/>
+    <qualified-type-def type-id='type-id-18' const='yes' hash='6d30d2c0485b21b8' id='type-id-59'/>
+    <pointer-type-def type-id='type-id-59' size-in-bits='64' hash='934b82f269d593b3' id='type-id-60'/>
+    <qualified-type-def type-id='type-id-32' const='yes' hash='f2fba7dbc42fc9d5' id='type-id-61'/>
+    <pointer-type-def type-id='type-id-61' size-in-bits='64' hash='317089067e76910a' id='type-id-62'/>
+    <pointer-type-def type-id='type-id-62' size-in-bits='64' hash='535c62eb027026ae' id='type-id-63'/>
+    <pointer-type-def type-id='type-id-16' size-in-bits='64' hash='6921f81febec828e' id='type-id-64'/>
+    <pointer-type-def type-id='type-id-24' size-in-bits='64' hash='18fb85b101e2cd25' id='type-id-65'/>
+    <pointer-type-def type-id='type-id-20' size-in-bits='64' hash='32209790a214ec40' id='type-id-66'/>
+    <pointer-type-def type-id='type-id-32' size-in-bits='64' hash='fb9a8c973ae04ed8' id='type-id-67'/>
+    <pointer-type-def type-id='type-id-67' size-in-bits='64' hash='f6157ba411f3141d' id='type-id-68'/>
+    <pointer-type-def type-id='type-id-69' size-in-bits='64' id='type-id-70'/>
     <namespace-decl name='std'>
-      <class-decl name='allocator&lt;char&gt;' visibility='default' size-in-bits='8' filepath='/usr/include/c++/5.3.1/bits/allocator.h' line='92' column='1' hash='0e29bc311ca95715' id='type-id-49'>
-        <base-class access='public' layout-offset-in-bits='0' type-id='type-id-34'/>
+      <class-decl name='allocator&lt;char&gt;' visibility='default' size-in-bits='8' filepath='/usr/include/c++/5.3.1/bits/allocator.h' line='92' column='1' hash='0e29bc311ca95715' id='type-id-71'>
+        <base-class access='public' layout-offset-in-bits='0' type-id='type-id-33'/>
         <member-type access='public'>
-          <typedef-decl name='const_reference' type-id='type-id-42' size-in-bits='64' filepath='/usr/include/c++/5.3.1/bits/allocator.h' line='100' column='1' hash='78bf127c69ae91c1' id='type-id-92'/>
+          <typedef-decl name='const_reference' type-id='type-id-41' size-in-bits='64' filepath='/usr/include/c++/5.3.1/bits/allocator.h' line='100' column='1' hash='78bf127c69ae91c1' id='type-id-72'/>
         </member-type>
         <member-type access='public'>
-          <typedef-decl name='reference' type-id='type-id-36' size-in-bits='64' filepath='/usr/include/c++/5.3.1/bits/allocator.h' line='99' column='1' hash='ffc913127619398d' id='type-id-93'/>
+          <typedef-decl name='reference' type-id='type-id-35' size-in-bits='64' filepath='/usr/include/c++/5.3.1/bits/allocator.h' line='99' column='1' hash='ffc913127619398d' id='type-id-73'/>
         </member-type>
         <member-type access='public'>
-          <typedef-decl name='size_type' type-id='type-id-95' size-in-bits='64' filepath='/usr/include/c++/5.3.1/bits/allocator.h' line='95' column='1' hash='8fdc5eea2983a729' id='type-id-94'/>
+          <typedef-decl name='size_type' type-id='type-id-75' size-in-bits='64' filepath='/usr/include/c++/5.3.1/bits/allocator.h' line='95' column='1' hash='8fdc5eea2983a729' id='type-id-74'/>
         </member-type>
       </class-decl>
-      <class-decl name='basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;' visibility='default' size-in-bits='64' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2510' column='1' hash='c9b0684f73450e83' id='type-id-52'>
+      <class-decl name='basic_string&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;' visibility='default' size-in-bits='64' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2510' column='1' hash='c9b0684f73450e83' id='type-id-76'>
         <member-type access='private'>
-          <class-decl name='_Alloc_hider' is-struct='yes' visibility='default' size-in-bits='64' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2670' column='1' hash='b2053c926fcda493' id='type-id-81'>
-            <base-class access='public' layout-offset-in-bits='0' type-id='type-id-49'/>
+          <class-decl name='_Alloc_hider' is-struct='yes' visibility='default' size-in-bits='64' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2670' column='1' hash='b2053c926fcda493' id='type-id-77'>
+            <base-class access='public' layout-offset-in-bits='0' type-id='type-id-71'/>
             <data-member access='public' layout-offset-in-bits='0'>
-              <var-decl name='_M_p' type-id='type-id-18' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2675' column='1'/>
+              <var-decl name='_M_p' type-id='type-id-17' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2675' column='1'/>
             </data-member>
           </class-decl>
         </member-type>
         <member-type access='private'>
-          <class-decl name='_Rep' is-struct='yes' visibility='default' size-in-bits='192' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2553' column='1' hash='1100d7022e36b961' id='type-id-56'>
-            <base-class access='public' layout-offset-in-bits='0' type-id='type-id-96'/>
+          <class-decl name='_Rep' is-struct='yes' visibility='default' size-in-bits='192' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2553' column='1' hash='1100d7022e36b961' id='type-id-48'>
+            <base-class access='public' layout-offset-in-bits='0' type-id='type-id-78'/>
           </class-decl>
         </member-type>
         <member-type access='private'>
-          <class-decl name='_Rep_base' is-struct='yes' visibility='default' size-in-bits='192' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2546' column='1' hash='ef64d4b91b5de2fe' id='type-id-96'>
+          <class-decl name='_Rep_base' is-struct='yes' visibility='default' size-in-bits='192' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2546' column='1' hash='ef64d4b91b5de2fe' id='type-id-78'>
             <data-member access='public' layout-offset-in-bits='0'>
-              <var-decl name='_M_length' type-id='type-id-59' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2548' column='1'/>
+              <var-decl name='_M_length' type-id='type-id-50' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2548' column='1'/>
             </data-member>
             <data-member access='public' layout-offset-in-bits='64'>
-              <var-decl name='_M_capacity' type-id='type-id-59' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2549' column='1'/>
+              <var-decl name='_M_capacity' type-id='type-id-50' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2549' column='1'/>
             </data-member>
             <data-member access='public' layout-offset-in-bits='128'>
-              <var-decl name='_M_refcount' type-id='type-id-23' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2550' column='1'/>
+              <var-decl name='_M_refcount' type-id='type-id-22' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2550' column='1'/>
             </data-member>
           </class-decl>
         </member-type>
         <member-type access='public'>
-          <typedef-decl name='allocator_type' type-id='type-id-49' size-in-bits='8' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2518' column='1' id='type-id-97'/>
+          <typedef-decl name='allocator_type' type-id='type-id-71' size-in-bits='8' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2518' column='1' id='type-id-79'/>
         </member-type>
         <member-type access='public'>
-          <typedef-decl name='const_reference' type-id='type-id-92' size-in-bits='64' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2522' column='1' hash='78bf127c69ae91c1' id='type-id-98'/>
+          <typedef-decl name='const_reference' type-id='type-id-72' size-in-bits='64' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2522' column='1' hash='78bf127c69ae91c1' id='type-id-80'/>
         </member-type>
         <member-type access='public'>
-          <typedef-decl name='reference' type-id='type-id-93' size-in-bits='64' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2521' column='1' hash='ffc913127619398d' id='type-id-99'/>
+          <typedef-decl name='reference' type-id='type-id-73' size-in-bits='64' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2521' column='1' hash='ffc913127619398d' id='type-id-81'/>
         </member-type>
         <member-type access='public'>
-          <typedef-decl name='size_type' type-id='type-id-94' size-in-bits='64' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2519' column='1' hash='8fdc5eea2983a729' id='type-id-59'/>
+          <typedef-decl name='size_type' type-id='type-id-74' size-in-bits='64' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2519' column='1' hash='8fdc5eea2983a729' id='type-id-50'/>
         </member-type>
         <member-type access='public'>
-          <typedef-decl name='const_iterator' type-id='type-id-101' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2527' column='1' id='type-id-100'/>
+          <typedef-decl name='const_iterator' type-id='type-id-83' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2527' column='1' id='type-id-82'/>
         </member-type>
         <member-type access='public'>
-          <typedef-decl name='const_reverse_iterator' type-id='type-id-103' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2528' column='1' id='type-id-102'/>
+          <typedef-decl name='const_reverse_iterator' type-id='type-id-85' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2528' column='1' id='type-id-84'/>
         </member-type>
         <member-type access='public'>
-          <typedef-decl name='iterator' type-id='type-id-105' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2525' column='1' id='type-id-104'/>
+          <typedef-decl name='iterator' type-id='type-id-87' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2525' column='1' id='type-id-86'/>
         </member-type>
         <member-type access='public'>
-          <typedef-decl name='reverse_iterator' type-id='type-id-107' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2529' column='1' id='type-id-106'/>
+          <typedef-decl name='reverse_iterator' type-id='type-id-89' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2529' column='1' id='type-id-88'/>
         </member-type>
         <data-member access='private' layout-offset-in-bits='0'>
-          <var-decl name='_M_dataplus' type-id='type-id-81' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2687' column='1'/>
+          <var-decl name='_M_dataplus' type-id='type-id-77' visibility='default' filepath='/usr/include/c++/5.3.1/bits/basic_string.h' line='2687' column='1'/>
         </data-member>
       </class-decl>
-      <class-decl name='char_traits&lt;char&gt;' is-struct='yes' visibility='default' size-in-bits='8' filepath='/usr/include/c++/5.3.1/bits/char_traits.h' line='233' column='1' hash='fc88b5d70352b916' id='type-id-108'>
+      <class-decl name='char_traits&lt;char&gt;' is-struct='yes' visibility='default' size-in-bits='8' filepath='/usr/include/c++/5.3.1/bits/char_traits.h' line='233' column='1' hash='fc88b5d70352b916' id='type-id-90'>
         <member-type access='public'>
-          <typedef-decl name='char_type' type-id='type-id-2' size-in-bits='8' filepath='/usr/include/c++/5.3.1/bits/char_traits.h' line='235' column='1' hash='65b2d157027b431a' id='type-id-61'/>
+          <typedef-decl name='char_type' type-id='type-id-1' size-in-bits='8' filepath='/usr/include/c++/5.3.1/bits/char_traits.h' line='235' column='1' hash='65b2d157027b431a' id='type-id-52'/>
         </member-type>
         <member-type access='public'>
-          <typedef-decl name='int_type' type-id='type-id-8' size-in-bits='32' filepath='/usr/include/c++/5.3.1/bits/char_traits.h' line='236' column='1' hash='09d17c08f594edc7' id='type-id-65'/>
+          <typedef-decl name='int_type' type-id='type-id-7' size-in-bits='32' filepath='/usr/include/c++/5.3.1/bits/char_traits.h' line='236' column='1' hash='09d17c08f594edc7' id='type-id-54'/>
         </member-type>
-        <member-function access='public' static='yes'>
-          <function-decl name='length' mangled-name='_ZNSt11char_traitsIcE6lengthEPKc' filepath='/usr/include/c++/5.3.1/bits/char_traits.h' line='266' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZNSt11char_traitsIcE6lengthEPKc' hash='020ad60f75c8b018'>
-            <parameter type-id='type-id-64'/>
-            <return type-id='type-id-95'/>
-          </function-decl>
-        </member-function>
       </class-decl>
-      <typedef-decl name='size_t' type-id='type-id-26' size-in-bits='64' filepath='/usr/include/c++/5.3.1/x86_64-redhat-linux/bits/c++config.h' line='1969' column='1' hash='8fdc5eea2983a729' id='type-id-95'/>
-      <typedef-decl name='string' type-id='type-id-52' size-in-bits='64' filepath='/usr/include/c++/5.3.1/bits/stringfwd.h' line='74' column='1' id='type-id-68'/>
-      <class-decl name='basic_ostream&lt;char,std::char_traits&lt;char&gt;&gt;' visibility='default' is-declaration-only='yes' id='type-id-109'/>
-      <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-107'/>
-      <class-decl name='reverse_iterator&lt;__gnu_cxx::__normal_iterator&lt;charconst*,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-103'/>
-      <function-decl name='operator+&lt;char,std::char_traits&lt;char&gt;,std::allocator&lt;char&gt;&gt;' mangled-name='_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_' filepath='/usr/include/c++/5.3.1/bits/basic_string.tcc' line='1151' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_' hash='e176adab2711438b'>
-        <parameter type-id='type-id-20'/>
-        <parameter type-id='type-id-54'/>
-        <return type-id='type-id-52'/>
-      </function-decl>
-      <typedef-decl name='ostream' type-id='type-id-109' filepath='/usr/include/c++/5.3.1/iosfwd' line='141' column='1' id='type-id-110'/>
+      <typedef-decl name='size_t' type-id='type-id-25' size-in-bits='64' filepath='/usr/include/c++/5.3.1/x86_64-redhat-linux/bits/c++config.h' line='1969' column='1' hash='8fdc5eea2983a729' id='type-id-75'/>
+      <typedef-decl name='string' type-id='type-id-76' size-in-bits='64' filepath='/usr/include/c++/5.3.1/bits/stringfwd.h' line='74' column='1' id='type-id-56'/>
+      <class-decl name='basic_ostream&lt;char,std::char_traits&lt;char&gt;&gt;' visibility='default' is-declaration-only='yes' id='type-id-91'/>
+      <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-89'/>
+      <class-decl name='reverse_iterator&lt;__gnu_cxx::__normal_iterator&lt;charconst*,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-85'/>
+      <typedef-decl name='ostream' type-id='type-id-91' filepath='/usr/include/c++/5.3.1/iosfwd' line='141' column='1' id='type-id-92'/>
     </namespace-decl>
-    <pointer-type-def type-id='type-id-110' size-in-bits='64' id='type-id-111'/>
-    <class-decl name='_IO_FILE' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-112'/>
+    <pointer-type-def type-id='type-id-92' size-in-bits='64' id='type-id-93'/>
+    <class-decl name='_IO_FILE' is-struct='yes' visibility='default' is-declaration-only='yes' id='type-id-94'/>
     <function-decl name='foo' mangled-name='_Z3fooRKSs' filepath='/home/dodji/git/libabigail.git/suppr/tests/data/test-read-dwarf/test24-drop-fns.cc' line='14' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_Z3fooRKSs' hash='e4d69d935f5c1015'>
-      <parameter type-id='type-id-70' filepath='/home/dodji/git/libabigail.git/suppr/tests/data/test-read-dwarf/test24-drop-fns.cc' line='14' column='1'/>
-      <return type-id='type-id-68'/>
+      <parameter type-id='type-id-58' filepath='/home/dodji/git/libabigail.git/suppr/tests/data/test-read-dwarf/test24-drop-fns.cc' line='14' column='1'/>
+      <return type-id='type-id-56'/>
     </function-decl>
     <function-decl name='bar' mangled-name='_Z3barRKSs' filepath='/home/dodji/git/libabigail.git/suppr/tests/data/test-read-dwarf/test24-drop-fns.cc' line='21' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='_Z3barRKSs' hash='e4d69d935f5c1015'>
-      <parameter type-id='type-id-70' filepath='/home/dodji/git/libabigail.git/suppr/tests/data/test-read-dwarf/test24-drop-fns.cc' line='21' column='1'/>
-      <return type-id='type-id-111'/>
+      <parameter type-id='type-id-58' filepath='/home/dodji/git/libabigail.git/suppr/tests/data/test-read-dwarf/test24-drop-fns.cc' line='21' column='1'/>
+      <return type-id='type-id-93'/>
     </function-decl>
     <namespace-decl name='__gnu_cxx'>
-      <class-decl name='new_allocator&lt;char&gt;' visibility='default' size-in-bits='8' filepath='/usr/include/c++/5.3.1/ext/new_allocator.h' line='58' column='1' hash='084a85392ac35fed' id='type-id-34'>
+      <class-decl name='new_allocator&lt;char&gt;' visibility='default' size-in-bits='8' filepath='/usr/include/c++/5.3.1/ext/new_allocator.h' line='58' column='1' hash='084a85392ac35fed' id='type-id-33'>
         <member-type access='public'>
-          <typedef-decl name='const_pointer' type-id='type-id-20' size-in-bits='64' filepath='/usr/include/c++/5.3.1/ext/new_allocator.h' line='64' column='1' hash='c44743f354f6a443' id='type-id-113'/>
+          <typedef-decl name='const_pointer' type-id='type-id-19' size-in-bits='64' filepath='/usr/include/c++/5.3.1/ext/new_allocator.h' line='64' column='1' hash='c44743f354f6a443' id='type-id-95'/>
         </member-type>
         <member-type access='public'>
-          <typedef-decl name='const_reference' type-id='type-id-42' size-in-bits='64' filepath='/usr/include/c++/5.3.1/ext/new_allocator.h' line='66' column='1' hash='78bf127c69ae91c1' id='type-id-114'/>
+          <typedef-decl name='const_reference' type-id='type-id-41' size-in-bits='64' filepath='/usr/include/c++/5.3.1/ext/new_allocator.h' line='66' column='1' hash='78bf127c69ae91c1' id='type-id-96'/>
         </member-type>
         <member-type access='public'>
-          <typedef-decl name='pointer' type-id='type-id-18' size-in-bits='64' filepath='/usr/include/c++/5.3.1/ext/new_allocator.h' line='63' column='1' hash='e533f42d1dd4942c' id='type-id-115'/>
+          <typedef-decl name='pointer' type-id='type-id-17' size-in-bits='64' filepath='/usr/include/c++/5.3.1/ext/new_allocator.h' line='63' column='1' hash='e533f42d1dd4942c' id='type-id-97'/>
         </member-type>
         <member-type access='public'>
-          <typedef-decl name='reference' type-id='type-id-36' size-in-bits='64' filepath='/usr/include/c++/5.3.1/ext/new_allocator.h' line='65' column='1' hash='ffc913127619398d' id='type-id-116'/>
+          <typedef-decl name='reference' type-id='type-id-35' size-in-bits='64' filepath='/usr/include/c++/5.3.1/ext/new_allocator.h' line='65' column='1' hash='ffc913127619398d' id='type-id-98'/>
         </member-type>
         <member-type access='public'>
-          <typedef-decl name='size_type' type-id='type-id-95' size-in-bits='64' filepath='/usr/include/c++/5.3.1/ext/new_allocator.h' line='61' column='1' hash='8fdc5eea2983a729' id='type-id-117'/>
+          <typedef-decl name='size_type' type-id='type-id-75' size-in-bits='64' filepath='/usr/include/c++/5.3.1/ext/new_allocator.h' line='61' column='1' hash='8fdc5eea2983a729' id='type-id-99'/>
         </member-type>
       </class-decl>
-      <class-decl name='__numeric_traits_integer&lt;char&gt;' is-struct='yes' visibility='default' size-in-bits='8' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='55' column='1' hash='b155c1439fb8f926' id='type-id-118'>
+      <class-decl name='__numeric_traits_integer&lt;char&gt;' is-struct='yes' visibility='default' size-in-bits='8' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='55' column='1' hash='b155c1439fb8f926' id='type-id-100'>
         <data-member access='public' static='yes'>
-          <var-decl name='__max' type-id='type-id-41' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIcE5__maxE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='59' column='1'/>
+          <var-decl name='__max' type-id='type-id-40' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIcE5__maxE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='59' column='1'/>
         </data-member>
       </class-decl>
-      <class-decl name='__numeric_traits_integer&lt;int&gt;' is-struct='yes' visibility='default' size-in-bits='8' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='55' column='1' hash='93106c70be9cc18a' id='type-id-119'>
+      <class-decl name='__numeric_traits_integer&lt;int&gt;' is-struct='yes' visibility='default' size-in-bits='8' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='55' column='1' hash='93106c70be9cc18a' id='type-id-101'>
         <data-member access='public' static='yes'>
-          <var-decl name='__min' type-id='type-id-44' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIiE5__minE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='58' column='1'/>
+          <var-decl name='__min' type-id='type-id-43' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIiE5__minE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='58' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
-          <var-decl name='__max' type-id='type-id-44' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIiE5__maxE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='59' column='1'/>
+          <var-decl name='__max' type-id='type-id-43' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIiE5__maxE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='59' column='1'/>
         </data-member>
       </class-decl>
-      <class-decl name='__numeric_traits_integer&lt;longint&gt;' is-struct='yes' visibility='default' size-in-bits='8' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='55' column='1' hash='b83b6d736c3d7a3d' id='type-id-120'>
+      <class-decl name='__numeric_traits_integer&lt;longint&gt;' is-struct='yes' visibility='default' size-in-bits='8' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='55' column='1' hash='b83b6d736c3d7a3d' id='type-id-102'>
         <data-member access='public' static='yes'>
-          <var-decl name='__min' type-id='type-id-45' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIlE5__minE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='58' column='1'/>
+          <var-decl name='__min' type-id='type-id-44' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIlE5__minE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='58' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
-          <var-decl name='__max' type-id='type-id-45' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIlE5__maxE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='59' column='1'/>
+          <var-decl name='__max' type-id='type-id-44' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIlE5__maxE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='59' column='1'/>
         </data-member>
       </class-decl>
-      <class-decl name='__numeric_traits_integer&lt;longunsignedint&gt;' is-struct='yes' visibility='default' size-in-bits='8' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='55' column='1' hash='43c9314f28796314' id='type-id-121'>
+      <class-decl name='__numeric_traits_integer&lt;longunsignedint&gt;' is-struct='yes' visibility='default' size-in-bits='8' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='55' column='1' hash='43c9314f28796314' id='type-id-103'>
         <data-member access='public' static='yes'>
-          <var-decl name='__digits' type-id='type-id-44' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerImE8__digitsE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='64' column='1'/>
+          <var-decl name='__digits' type-id='type-id-43' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerImE8__digitsE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='64' column='1'/>
         </data-member>
       </class-decl>
-      <class-decl name='__numeric_traits_integer&lt;shortint&gt;' is-struct='yes' visibility='default' size-in-bits='8' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='55' column='1' hash='9d7868ef0e2cc9d6' id='type-id-122'>
+      <class-decl name='__numeric_traits_integer&lt;shortint&gt;' is-struct='yes' visibility='default' size-in-bits='8' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='55' column='1' hash='9d7868ef0e2cc9d6' id='type-id-104'>
         <data-member access='public' static='yes'>
-          <var-decl name='__min' type-id='type-id-48' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIsE5__minE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='58' column='1'/>
+          <var-decl name='__min' type-id='type-id-47' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIsE5__minE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='58' column='1'/>
         </data-member>
         <data-member access='public' static='yes'>
-          <var-decl name='__max' type-id='type-id-48' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIsE5__maxE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='59' column='1'/>
+          <var-decl name='__max' type-id='type-id-47' mangled-name='_ZN9__gnu_cxx24__numeric_traits_integerIsE5__maxE' visibility='default' filepath='/usr/include/c++/5.3.1/ext/numeric_traits.h' line='59' column='1'/>
         </data-member>
       </class-decl>
-      <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-105'/>
-      <class-decl name='__normal_iterator&lt;charconst*,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-101'/>
+      <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-87'/>
+      <class-decl name='__normal_iterator&lt;charconst*,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-83'/>
     </namespace-decl>
-    <typedef-decl name='__FILE' type-id='type-id-112' filepath='/usr/include/stdio.h' line='64' column='1' id='type-id-90'/>
-    <type-decl name='variadic parameter type' id='type-id-123'/>
-    <type-decl name='void' id='type-id-124'/>
-    <pointer-type-def type-id='type-id-124' id='type-id-22'/>
+    <typedef-decl name='__FILE' type-id='type-id-94' filepath='/usr/include/stdio.h' line='64' column='1' id='type-id-69'/>
+    <type-decl name='variadic parameter type' id='type-id-105'/>
+    <type-decl name='void' id='type-id-106'/>
+    <pointer-type-def type-id='type-id-106' id='type-id-21'/>
   </abi-instr>
 </abi-corpus>
diff --git a/tests/data/test-read-dwarf/test-suppressed-alias.o.abi b/tests/data/test-read-dwarf/test-suppressed-alias.o.abi
index ff154e87..dfc00e03 100644
--- a/tests/data/test-read-dwarf/test-suppressed-alias.o.abi
+++ b/tests/data/test-read-dwarf/test-suppressed-alias.o.abi
@@ -7,12 +7,4 @@ 
     <elf-symbol name='alias_var' size='4' type='object-type' binding='weak-binding' visibility='default-visibility' is-defined='yes'/>
     <elf-symbol name='main_var' size='4' type='object-type' binding='global-binding' visibility='default-visibility' alias='alias_var' is-defined='yes'/>
   </elf-variable-symbols>
-  <abi-instr address-size='64' path='test.c' comp-dir-path='/ws/android/aosp/kernel-build-tools/external/libabigail' language='LANG_C99'>
-    <type-decl name='int' size-in-bits='32' hash='09d17c08f594edc7' id='95e97e5e'/>
-    <function-decl name='main_func' mangled-name='main_func' filepath='/ws/android/aosp/kernel-build-tools/external/libabigail/test.c' line='7' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='main_func' hash='7f32ffea222edbe7'>
-      <return type-id='48b5725f'/>
-    </function-decl>
-    <var-decl name='main_var' type-id='95e97e5e' mangled-name='main_var' visibility='default' filepath='/ws/android/aosp/kernel-build-tools/external/libabigail/test.c' line='14' column='1' elf-symbol-id='main_var'/>
-    <type-decl name='void' id='48b5725f'/>
-  </abi-instr>
 </abi-corpus>
diff --git a/tests/data/test-read-dwarf/test3-alias-1.so.hash.abi b/tests/data/test-read-dwarf/test3-alias-1.so.hash.abi
index 63423970..e4e4e46a 100644
--- a/tests/data/test-read-dwarf/test3-alias-1.so.hash.abi
+++ b/tests/data/test-read-dwarf/test3-alias-1.so.hash.abi
@@ -5,8 +5,6 @@ 
   <elf-function-symbols>
     <elf-symbol name='__foo' type='func-type' binding='global-binding' visibility='default-visibility' alias='foo,foo__,__foo__' is-defined='yes'/>
     <elf-symbol name='__foo__' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
-    <elf-symbol name='_fini' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
-    <elf-symbol name='_init' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
     <elf-symbol name='foo' type='func-type' binding='weak-binding' visibility='default-visibility' is-defined='yes'/>
     <elf-symbol name='foo__' type='func-type' binding='weak-binding' visibility='default-visibility' is-defined='yes'/>
   </elf-function-symbols>
diff --git a/tests/data/test-read-dwarf/test3-alias-2.so.hash.abi b/tests/data/test-read-dwarf/test3-alias-2.so.hash.abi
index 63423970..dbf2387c 100644
--- a/tests/data/test-read-dwarf/test3-alias-2.so.hash.abi
+++ b/tests/data/test-read-dwarf/test3-alias-2.so.hash.abi
@@ -3,17 +3,10 @@ 
     <dependency name='libc.so.6'/>
   </elf-needed>
   <elf-function-symbols>
-    <elf-symbol name='__foo' type='func-type' binding='global-binding' visibility='default-visibility' alias='foo,foo__,__foo__' is-defined='yes'/>
     <elf-symbol name='__foo__' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
     <elf-symbol name='_fini' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
     <elf-symbol name='_init' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
-    <elf-symbol name='foo' type='func-type' binding='weak-binding' visibility='default-visibility' is-defined='yes'/>
+    <elf-symbol name='foo' type='func-type' binding='weak-binding' visibility='default-visibility' alias='foo__,__foo__' is-defined='yes'/>
     <elf-symbol name='foo__' type='func-type' binding='weak-binding' visibility='default-visibility' is-defined='yes'/>
   </elf-function-symbols>
-  <abi-instr address-size='64' path='test3.c' comp-dir-path='/home/byby/oracle/src/libabigail/tests/data/test-read-common' language='LANG_C89'>
-    <function-decl name='__foo' mangled-name='__foo' filepath='/home/byby/oracle/src/libabigail/tests/data/test-read-common/test3.c' line='23' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__foo' hash='7f32ffea222edbe7'>
-      <return type-id='48b5725f'/>
-    </function-decl>
-    <type-decl name='void' id='48b5725f'/>
-  </abi-instr>
 </abi-corpus>
diff --git a/tests/data/test-read-dwarf/test3-alias-3.so.hash.abi b/tests/data/test-read-dwarf/test3-alias-3.so.hash.abi
index 63423970..446397f3 100644
--- a/tests/data/test-read-dwarf/test3-alias-3.so.hash.abi
+++ b/tests/data/test-read-dwarf/test3-alias-3.so.hash.abi
@@ -3,17 +3,6 @@ 
     <dependency name='libc.so.6'/>
   </elf-needed>
   <elf-function-symbols>
-    <elf-symbol name='__foo' type='func-type' binding='global-binding' visibility='default-visibility' alias='foo,foo__,__foo__' is-defined='yes'/>
-    <elf-symbol name='__foo__' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
-    <elf-symbol name='_fini' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
-    <elf-symbol name='_init' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
     <elf-symbol name='foo' type='func-type' binding='weak-binding' visibility='default-visibility' is-defined='yes'/>
-    <elf-symbol name='foo__' type='func-type' binding='weak-binding' visibility='default-visibility' is-defined='yes'/>
   </elf-function-symbols>
-  <abi-instr address-size='64' path='test3.c' comp-dir-path='/home/byby/oracle/src/libabigail/tests/data/test-read-common' language='LANG_C89'>
-    <function-decl name='__foo' mangled-name='__foo' filepath='/home/byby/oracle/src/libabigail/tests/data/test-read-common/test3.c' line='23' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__foo' hash='7f32ffea222edbe7'>
-      <return type-id='48b5725f'/>
-    </function-decl>
-    <type-decl name='void' id='48b5725f'/>
-  </abi-instr>
 </abi-corpus>
diff --git a/tests/data/test-read-dwarf/test3-alias-4.so.hash.abi b/tests/data/test-read-dwarf/test3-alias-4.so.hash.abi
index 63423970..fccf3abc 100644
--- a/tests/data/test-read-dwarf/test3-alias-4.so.hash.abi
+++ b/tests/data/test-read-dwarf/test3-alias-4.so.hash.abi
@@ -3,17 +3,6 @@ 
     <dependency name='libc.so.6'/>
   </elf-needed>
   <elf-function-symbols>
-    <elf-symbol name='__foo' type='func-type' binding='global-binding' visibility='default-visibility' alias='foo,foo__,__foo__' is-defined='yes'/>
-    <elf-symbol name='__foo__' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
-    <elf-symbol name='_fini' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
     <elf-symbol name='_init' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
-    <elf-symbol name='foo' type='func-type' binding='weak-binding' visibility='default-visibility' is-defined='yes'/>
-    <elf-symbol name='foo__' type='func-type' binding='weak-binding' visibility='default-visibility' is-defined='yes'/>
   </elf-function-symbols>
-  <abi-instr address-size='64' path='test3.c' comp-dir-path='/home/byby/oracle/src/libabigail/tests/data/test-read-common' language='LANG_C89'>
-    <function-decl name='__foo' mangled-name='__foo' filepath='/home/byby/oracle/src/libabigail/tests/data/test-read-common/test3.c' line='23' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='__foo' hash='7f32ffea222edbe7'>
-      <return type-id='48b5725f'/>
-    </function-decl>
-    <type-decl name='void' id='48b5725f'/>
-  </abi-instr>
 </abi-corpus>
diff --git a/tests/test-read-common.h b/tests/test-read-common.h
index f00205b9..3b2884a0 100644
--- a/tests/test-read-common.h
+++ b/tests/test-read-common.h
@@ -10,6 +10,7 @@ 
 #ifndef __TEST_READ_COMMON_H__
 #define __TEST_READ_COMMON_H__
 
+#include <cstring>
 #include <string>
 #include "abg-ir.h"
 #include "abg-corpus.h"
@@ -77,7 +78,7 @@  struct test_task : public abigail::workers::task
   void
   set_in_suppr_spec_path()
   {
-    if (spec.in_suppr_spec_path)
+    if (spec.in_suppr_spec_path && strcmp(spec.in_suppr_spec_path, ""))
       in_suppr_spec_path = in_elf_base + spec.in_suppr_spec_path;
     else
       in_suppr_spec_path.clear();
diff --git a/tests/test-read-dwarf.cc b/tests/test-read-dwarf.cc
index 3d3d3932..194b3f88 100644
--- a/tests/test-read-dwarf.cc
+++ b/tests/test-read-dwarf.cc
@@ -661,10 +661,12 @@  test_task_dwarf::perform()
     return;
 
   string abidw = string(get_build_dir()) + "/tools/abidw";
-  string drop_private_types;
+  string drop_private_types, suppr_specs;
   if (!in_public_headers_path.empty())
     drop_private_types += "--headers-dir " + in_public_headers_path +
       " --drop-private-types";
+  if (!in_suppr_spec_path.empty())
+    suppr_specs = " --suppr " + in_suppr_spec_path + " ";
   string type_id_style = "sequence";
   if (spec.type_id_style == HASH_TYPE_ID_STYLE)
     type_id_style = "hash";
@@ -672,7 +674,7 @@  test_task_dwarf::perform()
   string cmd = abidw + " --no-parameter-names --no-architecture --no-load-undefined-interfaces"
     + " --type-id-style " + type_id_style
     + " --no-corpus-path "
-    + drop_private_types + " " + in_elf_path
+    + drop_private_types + suppr_specs + " " + in_elf_path
     +" > " + out_abi_path;
 
   if (system(cmd.c_str()))