diff mbox series

[3/5,abidiff] Eliminate some unnecessary blank lines in diff output.

Message ID 20200312063036.29419-4-gprocida@google.com
State Committed
Headers show
Series More whitespace and leaf-changes-only fixes | expand

Commit Message

Giuliano Procida March 12, 2020, 6:30 a.m. UTC
There is distributed responsibility for horizontal and vertical
whitespace in the reporting code with indent and new line control
information being manipulated by and passed in and out of functions.
Occasionally, this information is ignored or incorrect and the code
tends to err on the side of more rather than fewer new lines.

The outcome is that abidiff output sometimes contains extra blank
lines which can be confusing.

This patch eliminates some of the more obvious cases:

   - after data member deletions
   - in enumerator change lists
   - after "type size hasn't changed"
   - before listing impacted interfaces

The patch cleans up the reporting of data members. The code will
either emit indentation, a short description and a new line or do
nothing at all.

The patch also removes some stray location reporting code for array
diffs which would have produced some oddly placed output. I could not
get this code to trigger as loc = decl->get_location() was never
present on the array decls in question.

	* src/abg-default-reporter.cc (report): In the enum_diff
	override, simplify new line logic; emit just one
	blank line after each enum. In the array_diff override, remove
	stray location reporting which doesn't appear to ever trigger;
	fix new line logic. In the class_or_union_diff override,
	simplify new line logic for deleted members; pass indentation
	to represent_data_member.
	* src/abg-leaf-reporter.cc (report): In the array_diff
	override, remove stray location reporting which doesn't appear
	to ever trigger; fix new line handling. In the
	class_or_union_diff override, simplify new line logic for
	deleted members; pass indentation to represent_data_member.
	* src/abg-reporter-priv.cc (represent_data_member): Handle
	indentation; fix new line logic.
	(report_size_and_alignment_changes): Fix new line logic
	for "type size hasn't changed" message; simplify new line
	logic.
	(report_name_size_and_alignment_changes): Fix new line logic.
	(maybe_report_interfaces_impacted_by_diff) Remove new line
	prefix code and new_line_prefix argument.
	* src/abg-reporter-priv.h (represent_data_member): Add indent
	argument.
	(maybe_report_interfaces_impacted_by_diff) Remove
	new_line_prefix argument.
	* tests/data/test-*/*report*.txt: Remove some blank lines.

Signed-off-by: Giuliano Procida <gprocida@google.com>
---
 src/abg-default-reporter.cc                   |  43 +++-----
 src/abg-leaf-reporter.cc                      |  27 ++---
 src/abg-reporter-priv.cc                      |  34 +++---
 src/abg-reporter-priv.h                       |   9 +-
 .../test5-fn-changed-report-0.txt             |   1 -
 .../test5-fn-changed-report-1.txt             |   1 -
 .../test6-var-changed-report-0.txt            |   1 -
 .../test6-var-changed-report-1.txt            |   1 -
 .../test7-fn-changed-report-0.txt             |   1 -
 .../test-abidiff-exit/test-leaf3-report.txt   |   1 -
 .../test-loc-with-locs-report.txt             |   1 -
 .../test-loc-without-locs-report.txt          |   1 -
 .../test-abidiff/test-PR18791-report0.txt     |   2 -
 tests/data/test-abidiff/test-enum0-report.txt |   1 -
 tests/data/test-abidiff/test-enum1-report.txt |   1 -
 .../data/test-abidiff/test-struct1-report.txt |   1 -
 .../PR25058-liblttng-ctl-report-1.txt         |   5 -
 tests/data/test-diff-dwarf/test13-report.txt  |   1 -
 .../test-diff-dwarf/test38-union-report-0.txt |   1 -
 .../data/test-diff-dwarf/test40-report-0.txt  |   2 -
 .../test42-PR21296-clanggcc-report0.txt       |   1 -
 .../test43-PR22913-report-0.txt               |   1 -
 tests/data/test-diff-filter/test10-report.txt |   1 -
 tests/data/test-diff-filter/test18-report.txt |   1 -
 ...st23-redundant-fn-parm-change-report-0.txt |   2 -
 .../test30-pr18904-rvalueref-report0.txt      |   8 --
 .../test30-pr18904-rvalueref-report1.txt      |   8 --
 .../test30-pr18904-rvalueref-report2.txt      |   8 --
 .../test35-pr18754-no-added-syms-report-0.txt |   8 --
 .../data/test-diff-filter/test36-report-0.txt |   3 -
 .../test42-leaf-report-output-0.txt           |   1 -
 tests/data/test-diff-filter/test7-report.txt  |   1 -
 ...-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt |   2 -
 .../nss-3.23.0-1.0.fc23.x86_64-report-0.txt   |   4 -
 ...l7.x86_64-0.12.8-1.el7.x86_64-report-0.txt |   2 -
 ...l7.x86_64-0.12.8-1.el7.x86_64-report-1.txt |   2 -
 ...l7.x86_64-0.12.8-1.el7.x86_64-report-2.txt | 101 ------------------
 ...l7.x86_64-0.12.8-1.el7.x86_64-report-3.txt |   3 -
 ...bb-4.3-3.20141204.fc23.x86_64-report-0.txt |   5 -
 ...bb-4.3-3.20141204.fc23.x86_64-report-1.txt |   1 -
 .../test10-changed-parm-c-report-0.txt        |   3 -
 .../test-diff-suppr/test35-leaf-report-0.txt  |   1 -
 .../test-diff-suppr/test36-leaf-report-0.txt  |   2 -
 .../test41-enumerator-changes-report-0.txt    |   2 -
 44 files changed, 42 insertions(+), 264 deletions(-)

Comments

Matthias Maennich March 14, 2020, 8:09 p.m. UTC | #1
On Thu, Mar 12, 2020 at 06:30:34AM +0000, Android Kernel Team wrote:
>There is distributed responsibility for horizontal and vertical
>whitespace in the reporting code with indent and new line control
>information being manipulated by and passed in and out of functions.
>Occasionally, this information is ignored or incorrect and the code
>tends to err on the side of more rather than fewer new lines.
>
>The outcome is that abidiff output sometimes contains extra blank
>lines which can be confusing.
>
>This patch eliminates some of the more obvious cases:
>
>   - after data member deletions
>   - in enumerator change lists
>   - after "type size hasn't changed"
>   - before listing impacted interfaces
>
>The patch cleans up the reporting of data members. The code will
>either emit indentation, a short description and a new line or do
>nothing at all.
>
>The patch also removes some stray location reporting code for array
>diffs which would have produced some oddly placed output. I could not
>get this code to trigger as loc = decl->get_location() was never
>present on the array decls in question.
>
>	* src/abg-default-reporter.cc (report): In the enum_diff
>	override, simplify new line logic; emit just one
>	blank line after each enum. In the array_diff override, remove
>	stray location reporting which doesn't appear to ever trigger;
>	fix new line logic. In the class_or_union_diff override,
>	simplify new line logic for deleted members; pass indentation
>	to represent_data_member.
>	* src/abg-leaf-reporter.cc (report): In the array_diff
>	override, remove stray location reporting which doesn't appear
>	to ever trigger; fix new line handling. In the
>	class_or_union_diff override, simplify new line logic for
>	deleted members; pass indentation to represent_data_member.
>	* src/abg-reporter-priv.cc (represent_data_member): Handle
>	indentation; fix new line logic.
>	(report_size_and_alignment_changes): Fix new line logic
>	for "type size hasn't changed" message; simplify new line
>	logic.
>	(report_name_size_and_alignment_changes): Fix new line logic.
>	(maybe_report_interfaces_impacted_by_diff) Remove new line
>	prefix code and new_line_prefix argument.
>	* src/abg-reporter-priv.h (represent_data_member): Add indent
>	argument.
>	(maybe_report_interfaces_impacted_by_diff) Remove
>	new_line_prefix argument.
>	* tests/data/test-*/*report*.txt: Remove some blank lines.
>
>Signed-off-by: Giuliano Procida <gprocida@google.com>
>---
> src/abg-default-reporter.cc                   |  43 +++-----
> src/abg-leaf-reporter.cc                      |  27 ++---
> src/abg-reporter-priv.cc                      |  34 +++---
> src/abg-reporter-priv.h                       |   9 +-
> .../test5-fn-changed-report-0.txt             |   1 -
> .../test5-fn-changed-report-1.txt             |   1 -
> .../test6-var-changed-report-0.txt            |   1 -
> .../test6-var-changed-report-1.txt            |   1 -
> .../test7-fn-changed-report-0.txt             |   1 -
> .../test-abidiff-exit/test-leaf3-report.txt   |   1 -
> .../test-loc-with-locs-report.txt             |   1 -
> .../test-loc-without-locs-report.txt          |   1 -
> .../test-abidiff/test-PR18791-report0.txt     |   2 -
> tests/data/test-abidiff/test-enum0-report.txt |   1 -
> tests/data/test-abidiff/test-enum1-report.txt |   1 -
> .../data/test-abidiff/test-struct1-report.txt |   1 -
> .../PR25058-liblttng-ctl-report-1.txt         |   5 -
> tests/data/test-diff-dwarf/test13-report.txt  |   1 -
> .../test-diff-dwarf/test38-union-report-0.txt |   1 -
> .../data/test-diff-dwarf/test40-report-0.txt  |   2 -
> .../test42-PR21296-clanggcc-report0.txt       |   1 -
> .../test43-PR22913-report-0.txt               |   1 -
> tests/data/test-diff-filter/test10-report.txt |   1 -
> tests/data/test-diff-filter/test18-report.txt |   1 -
> ...st23-redundant-fn-parm-change-report-0.txt |   2 -
> .../test30-pr18904-rvalueref-report0.txt      |   8 --
> .../test30-pr18904-rvalueref-report1.txt      |   8 --
> .../test30-pr18904-rvalueref-report2.txt      |   8 --
> .../test35-pr18754-no-added-syms-report-0.txt |   8 --
> .../data/test-diff-filter/test36-report-0.txt |   3 -
> .../test42-leaf-report-output-0.txt           |   1 -
> tests/data/test-diff-filter/test7-report.txt  |   1 -
> ...-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt |   2 -
> .../nss-3.23.0-1.0.fc23.x86_64-report-0.txt   |   4 -
> ...l7.x86_64-0.12.8-1.el7.x86_64-report-0.txt |   2 -
> ...l7.x86_64-0.12.8-1.el7.x86_64-report-1.txt |   2 -
> ...l7.x86_64-0.12.8-1.el7.x86_64-report-2.txt | 101 ------------------
> ...l7.x86_64-0.12.8-1.el7.x86_64-report-3.txt |   3 -
> ...bb-4.3-3.20141204.fc23.x86_64-report-0.txt |   5 -
> ...bb-4.3-3.20141204.fc23.x86_64-report-1.txt |   1 -
> .../test10-changed-parm-c-report-0.txt        |   3 -
> .../test-diff-suppr/test35-leaf-report-0.txt  |   1 -
> .../test-diff-suppr/test36-leaf-report-0.txt  |   2 -
> .../test41-enumerator-changes-report-0.txt    |   2 -
> 44 files changed, 42 insertions(+), 264 deletions(-)
>
>diff --git a/src/abg-default-reporter.cc b/src/abg-default-reporter.cc
>index 3bfdfbc4..a0b9eeea 100644
>--- a/src/abg-default-reporter.cc
>+++ b/src/abg-default-reporter.cc
>@@ -130,16 +130,14 @@ default_reporter::report(const enum_diff& d, ostream& out,
> 	   i != sorted_deleted_enumerators.end();
> 	   ++i)
> 	{
>-	  if (i != sorted_deleted_enumerators.begin())
>-	    out << "\n";
> 	  out << indent
> 	      << "  '"
> 	      << i->get_qualified_name()
> 	      << "' value '"
> 	      << i->get_value()
> 	      << "'";
>+	  out << "\n";
> 	}
>-      out << "\n\n";
>     }
>   if (numins)
>     {
>@@ -151,16 +149,14 @@ default_reporter::report(const enum_diff& d, ostream& out,
> 	   i != sorted_inserted_enumerators.end();
> 	   ++i)
> 	{
>-	  if (i != sorted_inserted_enumerators.begin())
>-	    out << "\n";
> 	  out << indent
> 	      << "  '"
> 	      << i->get_qualified_name()
> 	      << "' value '"
> 	      << i->get_value()
> 	      << "'";
>+	  out << "\n";
> 	}
>-      out << "\n\n";
>     }
>   if (numchanges)
>     {
>@@ -173,8 +169,6 @@ default_reporter::report(const enum_diff& d, ostream& out,
> 	   i != sorted_changed_enumerators.end();
> 	   ++i)
> 	{
>-	  if (i != sorted_changed_enumerators.begin())
>-	    out << "\n";
> 	  out << indent
> 	      << "  '"
> 	      << i->first.get_qualified_name()
>@@ -182,13 +176,14 @@ default_reporter::report(const enum_diff& d, ostream& out,
> 	      << i->first.get_value() << "' to '"
> 	      << i->second.get_value() << "'";
> 	  report_loc_info(second, *d.context(), out);
>+	  out << "\n";
> 	}
>-      out << "\n\n";
>     }
>
>+  out << "\n";
>+
>   if (d.context()->show_leaf_changes_only())
>-    maybe_report_interfaces_impacted_by_diff(&d, out, indent,
>-					     /*new_line_prefix=*/false);
>+    maybe_report_interfaces_impacted_by_diff(&d, out, indent);
>
>   d.reported_once(true);
> }
>@@ -392,7 +387,7 @@ default_reporter::report(const pointer_diff& d, ostream& out,
> 	: string("void");
>
>       out << indent
>-	  << "in pointed to type '" <<  repr << "'";
>+	  << "in pointed to type '" << repr << "'";
>       report_loc_info(dif->second_subject(), *d.context(), out);
>       out << ":\n";
>       dif->report(out, indent + "  ");
>@@ -673,12 +668,12 @@ default_reporter::report(const array_diff& d, ostream& out,
>       dif->report(out, indent + "  ");
>     }
>
>-  report_name_size_and_alignment_changes(d.first_array(),
>-					 d.second_array(),
>-					 d.context(),
>-					 out, indent,
>-					 /*new line=*/false);
>-  report_loc_info(d.second_array(), *d.context(), out);
>+  if (report_name_size_and_alignment_changes(d.first_array(),
>+					     d.second_array(),
>+					     d.context(),
>+					     out, indent,
>+					     /*new line=*/false))

Though it is not required here, I would prefer braces for readability.

>+    out << "\n";
> }
>
> /// Generates a report for an intance of @ref base_diff.
>@@ -1014,7 +1009,6 @@ default_reporter::report(const class_or_union_diff& d,
> 	  sort_data_members
> 	    (d.class_or_union_diff::get_priv()->deleted_data_members_,
> 	     sorted_dms);
>-	  bool emitted = false;
> 	  for (vector<decl_base_sptr>::const_iterator i = sorted_dms.begin();
> 	       i != sorted_dms.end();
> 	       ++i)
>@@ -1024,14 +1018,8 @@ default_reporter::report(const class_or_union_diff& d,
> 	      ABG_ASSERT(data_mem);
> 	      if (get_member_is_static(data_mem))
> 		continue;
>-	      if (emitted)
>-		out << "\n";
>-	      out << indent << "  ";
>-	      represent_data_member(data_mem, ctxt, out);
>-	      emitted = true;
>+	      represent_data_member(data_mem, ctxt, out, indent + "  ");
> 	    }
>-	  if (emitted)
>-	    out << "\n";
> 	}
>
>       //report insertions
>@@ -1052,8 +1040,7 @@ default_reporter::report(const class_or_union_diff& d,
> 	      var_decl_sptr data_mem =
> 		dynamic_pointer_cast<var_decl>(*i);
> 	      ABG_ASSERT(data_mem);
>-	      out << indent << "  ";
>-	      represent_data_member(data_mem, ctxt, out);
>+	      represent_data_member(data_mem, ctxt, out, indent + "  ");
> 	    }
> 	}
>
>diff --git a/src/abg-leaf-reporter.cc b/src/abg-leaf-reporter.cc
>index bbd51dcb..f706bd21 100644
>--- a/src/abg-leaf-reporter.cc
>+++ b/src/abg-leaf-reporter.cc
>@@ -78,7 +78,7 @@ report_diffs(const reporter_base& r,
>
> 	  string n = (*i)->first_subject()->get_pretty_representation();
>
>-	  out << indent << "'" << n ;
>+	  out << indent << "'" << n;
>
> 	  report_loc_info((*i)->first_subject(),
> 			  *(*i)->context(), out);
>@@ -425,11 +425,12 @@ leaf_reporter::report(const array_diff& d,
> 						    d.second_array(),
> 						    "array type");
>
>-  report_name_size_and_alignment_changes(d.first_array(),
>-					 d.second_array(),
>-					 d.context(),
>-					 out, indent,
>-					 /*new line=*/false);
>+  if (report_name_size_and_alignment_changes(d.first_array(),
>+					     d.second_array(),
>+					     d.context(),
>+					     out, indent,
>+					     /*new line=*/false))

As above.

>+    out << "\n";
>
>   diff_sptr dif = d.element_type_diff();
>   if (diff_to_be_reported(dif.get()))
>@@ -441,8 +442,6 @@ leaf_reporter::report(const array_diff& d,
>       dif->report(out, indent + "  ");
>     }
>
>-  report_loc_info(d.second_array(), *d.context(), out);
>-
>   maybe_report_interfaces_impacted_by_diff(&d, out, indent);
> }
>
>@@ -592,7 +591,6 @@ leaf_reporter::report(const class_or_union_diff& d,
> 	  sort_data_members
> 	    (d.class_or_union_diff::get_priv()->deleted_data_members_,
> 	     sorted_dms);
>-	  bool emitted = false;
> 	  for (vector<decl_base_sptr>::const_iterator i = sorted_dms.begin();
> 	       i != sorted_dms.end();
> 	       ++i)
>@@ -602,14 +600,8 @@ leaf_reporter::report(const class_or_union_diff& d,
> 	      ABG_ASSERT(data_mem);
> 	      if (get_member_is_static(data_mem))
> 		continue;
>-	      if (emitted)
>-		out << "\n";
>-	      out << indent << "  ";
>-	      represent_data_member(data_mem, ctxt, out);
>-	      emitted = true;
>+	      represent_data_member(data_mem, ctxt, out, indent + "  ");
> 	    }
>-	  if (emitted)
>-	    out << "\n";
> 	}
>
>       //report insertions
>@@ -630,8 +622,7 @@ leaf_reporter::report(const class_or_union_diff& d,
> 	      var_decl_sptr data_mem =
> 		dynamic_pointer_cast<var_decl>(*i);
> 	      ABG_ASSERT(data_mem);
>-	      out << indent << "  ";
>-	      represent_data_member(data_mem, ctxt, out);
>+	      represent_data_member(data_mem, ctxt, out, indent + "  ");
> 	    }
> 	}
>
>diff --git a/src/abg-reporter-priv.cc b/src/abg-reporter-priv.cc
>index fbac85f8..948a32fc 100644
>--- a/src/abg-reporter-priv.cc
>+++ b/src/abg-reporter-priv.cc
>@@ -242,16 +242,19 @@ represent(const diff_context& ctxt,
> /// @param ctxt the current diff context.
> ///
> /// @param out the output stream to send the representation to
>+///
>+/// @param indent the indentation string to use for the change report.
> void
> represent_data_member(var_decl_sptr d,
> 		      const diff_context_sptr& ctxt,
>-		      ostream& out)
>+		      ostream& out,
>+		      const string& indent)

I would prefer out parameters after all input parameters. Since this is
a private implementation detail, we should be good to change that
interface.

> {
>   if (!is_data_member(d)
>       || (!get_member_is_static(d) && !get_data_member_is_laid_out(d)))
>     return;
>
>-  out << "'" << d->get_pretty_representation() << "'";
>+  out << indent << "'" << d->get_pretty_representation() << "'";
>   if (!get_member_is_static(d))
>     {
>       // Do not emit offset information for data member of a union
>@@ -262,8 +265,8 @@ represent_data_member(var_decl_sptr d,
> 			    get_data_member_offset(d),
> 			    *ctxt, out);
>       report_loc_info(d, *ctxt, out);
>-      out << "\n";
>     }
>+  out << "\n";
> }
>
> /// If a given @ref var_diff node carries a data member change in
>@@ -806,7 +809,10 @@ report_size_and_alignment_changes(type_or_decl_base_sptr	first,
> 	} // end if (fs != ss || fdc != sdc)
>       else
> 	if (ctxt->show_relative_offset_changes())
>-	  out << indent << "type size hasn't changed\n";
>+	  {
>+	    out << indent << "type size hasn't changed";
>+	    n = true;
>+	  }
>     }
>   if ((ctxt->get_allowed_category() & SIZE_OR_OFFSET_CHANGE_CATEGORY)
>       && (fa != sa))
>@@ -819,9 +825,7 @@ report_size_and_alignment_changes(type_or_decl_base_sptr	first,
>       n = true;
>     }
>
>-  if (n)
>-    return true;
>-  return false;
>+  return n;

We should give 'n' a better name. Not necessarily part of this change.

> }
>
> /// @param tod the type or declaration to emit loc info about
>@@ -910,8 +914,8 @@ report_name_size_and_alignment_changes(decl_base_sptr		first,
> 	}
>     }
>
>-  nl |= report_size_and_alignment_changes(first, second, ctxt,
>-					  out, indent, nl);
>+  nl = report_size_and_alignment_changes(first, second, ctxt,
>+                                         out, indent, nl);
>   return nl;
> }
>
>@@ -1366,14 +1370,10 @@ maybe_report_unreachable_type_changes(const corpus_diff& d,
> /// @param out the output stream to report to.
> ///
> /// @param indent the white space string to use for indentation.
>-///
>-/// @param new_line_prefix if set to true, it means there is going to
>-/// be a new line emitted before the report.
> void
> maybe_report_interfaces_impacted_by_diff(const diff	*d,
> 					 ostream	&out,
>-					 const string	&indent,
>-					 bool		new_line_prefix)
>+					 const string	&indent)
> {
>   const diff_context_sptr &ctxt = d->context();
>   const corpus_diff_sptr &corp_diff = ctxt->get_corpus_diff();
>@@ -1395,9 +1395,6 @@ maybe_report_interfaces_impacted_by_diff(const diff	*d,
>   vector<type_or_decl_base_sptr> sorted_impacted_interfaces;
>   sort_artifacts_set(*impacted_artifacts, sorted_impacted_interfaces);
>
>-  if (new_line_prefix)
>-    out << '\n';
>-

I think we need to keep this newline. It separates the cause (the leaf
node change) from the impacted interfaces (the top level nodes).


With the above addressed, feel free to add
Reviewed-by: Matthias Maennich <maennich@google.com>

Cheers,
Matthias

>   size_t num_impacted_interfaces = impacted_artifacts->size();
>   if (num_impacted_interfaces == 1)
>     out << indent << "one impacted interface:\n";
>@@ -1424,9 +1421,6 @@ maybe_report_interfaces_impacted_by_diff(const diff	*d,
> /// @param out the output stream to report to.
> ///
> /// @param indent the white space string to use for indentation.
>-///
>-/// @param new_line_prefix if set to true, it means there is going to
>-/// be a new line emitted before the report.
> void
> maybe_report_interfaces_impacted_by_diff(const diff_sptr	&d,
> 					 ostream		&out,
>diff --git a/src/abg-reporter-priv.h b/src/abg-reporter-priv.h
>index 7471c74f..04803f43 100644
>--- a/src/abg-reporter-priv.h
>+++ b/src/abg-reporter-priv.h
>@@ -151,7 +151,8 @@ represent(const diff_context& ctxt,
> void
> represent_data_member(var_decl_sptr d,
> 		      const diff_context_sptr& ctxt,
>-		      ostream& out);
>+		      ostream& out,
>+		      const string& indent);
>
> void
> maybe_show_relative_offset_change(const var_diff_sptr &diff,
>@@ -244,14 +245,12 @@ maybe_report_unreachable_type_changes(const corpus_diff& d,
> void
> maybe_report_interfaces_impacted_by_diff(const diff		*d,
> 					 ostream		&out,
>-					 const string		&indent,
>-					 bool new_line_prefix = true);
>+					 const string		&indent);
>
> void
> maybe_report_interfaces_impacted_by_diff(const diff_sptr	&d,
> 					 ostream		&out,
>-					 const string		&indent,
>-					 bool new_line_prefix = false);
>+					 const string		&indent);
>
> } // end namespace comparison
> } // end namespace abigail
>diff --git a/tests/data/test-abicompat/test5-fn-changed-report-0.txt b/tests/data/test-abicompat/test5-fn-changed-report-0.txt
>index 96d48ccf..04676908 100644
>--- a/tests/data/test-abicompat/test5-fn-changed-report-0.txt
>+++ b/tests/data/test-abicompat/test5-fn-changed-report-0.txt
>@@ -15,4 +15,3 @@ have sub-types that are different from what application 'test5-fn-changed-app' e
>         1 data member deletion:
>           'unsigned char S1::m1', at offset 32 (in bits)
>
>-
>diff --git a/tests/data/test-abicompat/test5-fn-changed-report-1.txt b/tests/data/test-abicompat/test5-fn-changed-report-1.txt
>index 3c8c4a8f..b39f650d 100644
>--- a/tests/data/test-abicompat/test5-fn-changed-report-1.txt
>+++ b/tests/data/test-abicompat/test5-fn-changed-report-1.txt
>@@ -15,4 +15,3 @@ have sub-types that are different from what application 'test5-fn-changed-app' e
>         1 data member deletion:
>           'unsigned char S1::m1', at offset 32 (in bits) at test5-fn-changed-libapp-v0.h:11:1
>
>-
>diff --git a/tests/data/test-abicompat/test6-var-changed-report-0.txt b/tests/data/test-abicompat/test6-var-changed-report-0.txt
>index 5d2bd89c..f5077879 100644
>--- a/tests/data/test-abicompat/test6-var-changed-report-0.txt
>+++ b/tests/data/test-abicompat/test6-var-changed-report-0.txt
>@@ -13,4 +13,3 @@ have sub-types that are different from what application 'test6-var-changed-app'
>       1 data member deletion:
>         'unsigned char S1::m1', at offset 32 (in bits)
>
>-
>diff --git a/tests/data/test-abicompat/test6-var-changed-report-1.txt b/tests/data/test-abicompat/test6-var-changed-report-1.txt
>index 697929f0..5b78c83c 100644
>--- a/tests/data/test-abicompat/test6-var-changed-report-1.txt
>+++ b/tests/data/test-abicompat/test6-var-changed-report-1.txt
>@@ -13,4 +13,3 @@ have sub-types that are different from what application 'test6-var-changed-app'
>       1 data member deletion:
>         'unsigned char S1::m1', at offset 32 (in bits) at test6-var-changed-libapp-v0.h:11:1
>
>-
>diff --git a/tests/data/test-abicompat/test7-fn-changed-report-0.txt b/tests/data/test-abicompat/test7-fn-changed-report-0.txt
>index 19db76e3..6a34710d 100644
>--- a/tests/data/test-abicompat/test7-fn-changed-report-0.txt
>+++ b/tests/data/test-abicompat/test7-fn-changed-report-0.txt
>@@ -9,7 +9,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>       type name changed from 'float' to 'int'
>       type size hasn't changed
>
>-
>   [C] 'function void print(const Student)' has some indirect sub-type changes:
>     parameter 1 of type 'const Student' has sub-type changes:
>       in unqualified underlying type 'struct Student':
>diff --git a/tests/data/test-abidiff-exit/test-leaf3-report.txt b/tests/data/test-abidiff-exit/test-leaf3-report.txt
>index 138c4b5a..7602e761 100644
>--- a/tests/data/test-abidiff-exit/test-leaf3-report.txt
>+++ b/tests/data/test-abidiff-exit/test-leaf3-report.txt
>@@ -10,7 +10,6 @@ Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
>       type name changed from 'sto1' to 'stn1'
>       type size hasn't changed
>
>-
>   [C] 'function void fn2(sto2)' at test-leaf3-v1.c:13:1 has some sub-type changes:
>     parameter 1 of type 'struct sto2' changed:
>       type name changed from 'sto2' to 'stn2'
>diff --git a/tests/data/test-abidiff-exit/test-loc-with-locs-report.txt b/tests/data/test-abidiff-exit/test-loc-with-locs-report.txt
>index 53672744..bc37ff53 100644
>--- a/tests/data/test-abidiff-exit/test-loc-with-locs-report.txt
>+++ b/tests/data/test-abidiff-exit/test-loc-with-locs-report.txt
>@@ -9,4 +9,3 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>       type size hasn't changed
>
>
>-
>diff --git a/tests/data/test-abidiff-exit/test-loc-without-locs-report.txt b/tests/data/test-abidiff-exit/test-loc-without-locs-report.txt
>index 6893e3fc..56c41d79 100644
>--- a/tests/data/test-abidiff-exit/test-loc-without-locs-report.txt
>+++ b/tests/data/test-abidiff-exit/test-loc-without-locs-report.txt
>@@ -9,4 +9,3 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>       type size hasn't changed
>
>
>-
>diff --git a/tests/data/test-abidiff/test-PR18791-report0.txt b/tests/data/test-abidiff/test-PR18791-report0.txt
>index 5758077d..7e16fe32 100644
>--- a/tests/data/test-abidiff/test-PR18791-report0.txt
>+++ b/tests/data/test-abidiff/test-PR18791-report0.txt
>@@ -48,9 +48,7 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>                                          struct std::__detail::_List_node_base
>                                        2 data member deletions:
>                                          'std::__detail::_List_node_base* std::__detail::_List_node_base::_M_next', at offset 0 (in bits)
>-
>                                          'std::__detail::_List_node_base* std::__detail::_List_node_base::_M_prev', at offset 64 (in bits)
>-
>                                        1 data member insertion:
>                                          'unsigned long int std::_List_node<long unsigned int>::_M_data', at offset 128 (in bits)
>                                      and name of 'std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl::_M_node' changed to 'std::__cxx11::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl::_M_node'
>diff --git a/tests/data/test-abidiff/test-enum0-report.txt b/tests/data/test-abidiff/test-enum0-report.txt
>index c7c5a682..1cd7eaaf 100644
>--- a/tests/data/test-abidiff/test-enum0-report.txt
>+++ b/tests/data/test-abidiff/test-enum0-report.txt
>@@ -3,7 +3,6 @@
>     type size hasn't changed
>     1 enumerator deletion:
>       'E::e2' value '1'
>-
>     1 enumerator insertion:
>       'E::e1' value '1'
>
>diff --git a/tests/data/test-abidiff/test-enum1-report.txt b/tests/data/test-abidiff/test-enum1-report.txt
>index f1198ef9..7e8acf80 100644
>--- a/tests/data/test-abidiff/test-enum1-report.txt
>+++ b/tests/data/test-abidiff/test-enum1-report.txt
>@@ -3,7 +3,6 @@
>     type size hasn't changed
>     1 enumerator insertion:
>       'E::e1' value '1'
>-
>     1 enumerator change:
>       'E::e2' from value '1' to '2'
>
>diff --git a/tests/data/test-abidiff/test-struct1-report.txt b/tests/data/test-abidiff/test-struct1-report.txt
>index 39b71e55..e334bf1a 100644
>--- a/tests/data/test-abidiff/test-struct1-report.txt
>+++ b/tests/data/test-abidiff/test-struct1-report.txt
>@@ -6,7 +6,6 @@
>
>     1 data member deletion:
>       'char s0::m1', at offset 96 (in bits)
>-
>     1 data member insertion:
>       'double s0::m01', at offset 128 (in bits)
>     2 data member changes:
>diff --git a/tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt b/tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt
>index 29f823ec..aab271ff 100644
>--- a/tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt
>+++ b/tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt
>@@ -100,7 +100,6 @@ Variables changes summary: 0 Removed, 0 Changed, 3 Added variables
>          type of 'union {lttng_event_perf_counter_ctx perf_counter; struct {char* provider_name; char* ctx_name;} app_ctx; char padding[288];} lttng_event_context::u' changed:
>            type name changed from '__anonymous_union__4' to '__anonymous_union__5'
>            type size hasn't changed
>-
>            3 data member changes:
>             name of '__anonymous_union__4::app_ctx' changed to '__anonymous_union__5::app_ctx'
>             name of '__anonymous_union__4::padding' changed to '__anonymous_union__5::padding'
>@@ -171,7 +170,6 @@ Variables changes summary: 0 Removed, 0 Changed, 3 Added variables
>           type size changed from 35008 to 35072 (in bits)
>           1 data member deletion:
>             'char lttng_session::padding[12]', at offset 34912 (in bits)
>-
>           1 data member insertion:
>             'union {char padding[12]; void* ptr;} lttng_session::extended', at offset 34944 (in bits)
>
>@@ -208,7 +206,6 @@ Variables changes summary: 0 Removed, 0 Changed, 3 Added variables
>           1 data member deletion:
>             'bool lttng_notification::owns_elements', at offset 128 (in bits)
>
>-
>   [C] 'function lttng_notification_channel_status lttng_notification_channel_subscribe(lttng_notification_channel*, const lttng_condition*)' has some indirect sub-type changes:
>     return type changed:
>       enum type 'enum lttng_notification_channel_status' changed, as reported earlier
>@@ -289,7 +286,6 @@ Variables changes summary: 0 Removed, 0 Changed, 3 Added variables
>                            'op_type::AST_OP_BIN_AND' value '10'
>                            'op_type::AST_OP_BIN_OR' value '11'
>                            'op_type::AST_OP_BIN_XOR' value '12'
>-
>                          5 enumerator insertions:
>                            'op_type::AST_OP_BIT_RSHIFT' value '6'
>                            'op_type::AST_OP_BIT_LSHIFT' value '7'
>@@ -319,7 +315,6 @@ Variables changes summary: 0 Removed, 0 Changed, 3 Added variables
>                          type size hasn't changed
>                          1 enumerator deletion:
>                            'unary_op_type::AST_UNARY_BIN_NOT' value '4'
>-
>                          1 enumerator insertion:
>                            'unary_op_type::AST_UNARY_BIT_NOT' value '4'
>
>diff --git a/tests/data/test-diff-dwarf/test13-report.txt b/tests/data/test-diff-dwarf/test13-report.txt
>index cf29a4fd..833879c7 100644
>--- a/tests/data/test-diff-dwarf/test13-report.txt
>+++ b/tests/data/test-diff-dwarf/test13-report.txt
>@@ -12,7 +12,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>            type name changed from 'int' to 'unsigned int'
>            type size hasn't changed
>
>-
>          type of 'unsigned int S::m2' changed:
>            type name changed from 'unsigned int' to 'long long int'
>            type size changed from 32 to 64 (in bits)
>diff --git a/tests/data/test-diff-dwarf/test38-union-report-0.txt b/tests/data/test-diff-dwarf/test38-union-report-0.txt
>index f7a75df7..fd9708e6 100644
>--- a/tests/data/test-diff-dwarf/test38-union-report-0.txt
>+++ b/tests/data/test-diff-dwarf/test38-union-report-0.txt
>@@ -9,7 +9,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>         type size hasn't changed
>         1 data member deletion:
>           'int some_union_type::m0'
>-
>         type changed from:
>           union some_union_type{int m0; char m1; S m2;}
>         to:
>diff --git a/tests/data/test-diff-dwarf/test40-report-0.txt b/tests/data/test-diff-dwarf/test40-report-0.txt
>index d0b8c52c..f0f9e1a1 100644
>--- a/tests/data/test-diff-dwarf/test40-report-0.txt
>+++ b/tests/data/test-diff-dwarf/test40-report-0.txt
>@@ -9,7 +9,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>         type size changed from 96 to 64 (in bits)
>         1 data member deletion:
>           'int S2::to_remove', at offset 0 (in bits)
>-
>         2 data member changes:
>          'int S2::m0' offset changed from 32 to 0 (in bits) (by -32 bits)
>          'char S2::m1' offset changed from 64 to 32 (in bits) (by -32 bits)
>@@ -24,7 +23,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>            type size hasn't changed
>
>
>-
>   [C] 'function int foo(S1*)' has some indirect sub-type changes:
>     parameter 1 of type 'S1*' has sub-type changes:
>       in pointed to type 'struct S1':
>diff --git a/tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt b/tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt
>index f0a25a2e..44918baa 100644
>--- a/tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt
>+++ b/tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt
>@@ -19,7 +19,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>     return type changed:
>       type name changed from 'std::tuple<STR&&>' to 'std::tuple<STR &&>'
>       type size hasn't changed
>-
>       1 base class deletion:
>         struct std::_Tuple_impl<0ul, STR&&>
>       1 base class insertion:
>diff --git a/tests/data/test-diff-dwarf/test43-PR22913-report-0.txt b/tests/data/test-diff-dwarf/test43-PR22913-report-0.txt
>index 1c0c773d..60681336 100644
>--- a/tests/data/test-diff-dwarf/test43-PR22913-report-0.txt
>+++ b/tests/data/test-diff-dwarf/test43-PR22913-report-0.txt
>@@ -12,4 +12,3 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>             'char m2', at offset 8 (in bits)
>
>
>-
>diff --git a/tests/data/test-diff-filter/test10-report.txt b/tests/data/test-diff-filter/test10-report.txt
>index bdc31fd0..5a505fc3 100644
>--- a/tests/data/test-diff-filter/test10-report.txt
>+++ b/tests/data/test-diff-filter/test10-report.txt
>@@ -16,4 +16,3 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>           'unsigned int S::m', at offset 0 (in bits)
>
>
>-
>diff --git a/tests/data/test-diff-filter/test18-report.txt b/tests/data/test-diff-filter/test18-report.txt
>index 0d30ef39..6ade5bdf 100644
>--- a/tests/data/test-diff-filter/test18-report.txt
>+++ b/tests/data/test-diff-filter/test18-report.txt
>@@ -14,4 +14,3 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>
>
>
>-
>diff --git a/tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt b/tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt
>index f847d32e..99c14329 100644
>--- a/tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt
>+++ b/tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt
>@@ -7,10 +7,8 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>     parameter 1 of type 'int' changed:
>       type name changed from 'int' to 'float'
>       type size hasn't changed
>-
>     parameter 2 of type 'int' changed:
>       type name changed from 'int' to 'float'
>       type size hasn't changed
>
>
>-
>diff --git a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt
>index b78215b0..5def3a08 100644
>--- a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt
>+++ b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt
>@@ -1200,7 +1200,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>           '__anonymous_enum__1::c_report_state_stream' value '142'
>           '__anonymous_enum__1::c_report_stream' value '143'
>           '__anonymous_enum__1::c_unload_library' value '144'
>-
>         92 enumerator changes:
>           '__anonymous_enum__::c_process_get_func_handles' from value '32' to '33'
>           '__anonymous_enum__::c_process_wait_shutdown' from value '33' to '34'
>@@ -1304,7 +1303,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>          type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} VarDesc::flags' changed:
>            type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags'
>            type size hasn't changed
>-
>            1 data member changes (1 filtered):
>             anonymous data member at offset 0 (in bits) changed from:
>               struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}
>@@ -1319,7 +1317,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>         entity changed from 'struct InitTableEntry' to compatible type 'typedef InitTableEntry'
>           type name changed from 'InitTableEntry' to '__anonymous_struct__2'
>           type size hasn't changed
>-
>           1 data member change:
>            type of 'void ()* InitTableEntry::func' changed:
>              in pointed to type 'function type void ()':
>@@ -1348,7 +1345,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>                type size changed from 2752 to 5504 (in bits)
>                1 data member deletion:
>                  'mutex_t Engine::m_ptr_lock', at offset 1344 (in bits)
>-
>                7 data member insertions:
>                  'PtrDataTable Engine::m_targetptr_set', at offset 1664 (in bits)
>                  'StreamMap Engine::m_stream_map', at offset 3072 (in bits)
>@@ -1370,20 +1366,16 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>                        underlying type 'class std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' changed:
>                          type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' to 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >'
>                          type size hasn't changed
>-
>                          1 data member change:
>                           type of 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' changed:
>                             entity changed from 'struct std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to compatible type 'typedef std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type'
>                               type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >'
>                               type size hasn't changed
>-
>                               1 base class deletion:
>                                 class std::allocator<std::_Rb_tree_node<PtrData> >
>                               2 data member deletions:
>                                 'std::_Rb_tree_node_base std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_header', at offset 64 (in bits)
>-
>                                 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::size_type std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_node_count', at offset 320 (in bits)
>-
>                               1 data member change:
>                                type of 'std::less<PtrData> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_key_compare' changed:
>                                  type name changed from 'std::less<PtrData>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>'
>diff --git a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt
>index ccaf8126..3bc8f6d7 100644
>--- a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt
>+++ b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt
>@@ -1200,7 +1200,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>           '__anonymous_enum__1::c_report_state_stream' value '142'
>           '__anonymous_enum__1::c_report_stream' value '143'
>           '__anonymous_enum__1::c_unload_library' value '144'
>-
>         92 enumerator changes:
>           '__anonymous_enum__::c_process_get_func_handles' from value '32' to '33' at liboffload_error_codes.h:38:1
>           '__anonymous_enum__::c_process_wait_shutdown' from value '33' to '34' at liboffload_error_codes.h:38:1
>@@ -1304,7 +1303,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>          type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} VarDesc::flags' changed:
>            type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags'
>            type size hasn't changed
>-
>            1 data member changes (1 filtered):
>             anonymous data member at offset 0 (in bits) changed from:
>               struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}
>@@ -1319,7 +1317,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>         entity changed from 'struct InitTableEntry' to compatible type 'typedef InitTableEntry' at offload_table.h:296:1
>           type name changed from 'InitTableEntry' to '__anonymous_struct__2'
>           type size hasn't changed
>-
>           1 data member change:
>            type of 'void ()* InitTableEntry::func' changed:
>              in pointed to type 'function type void ()':
>@@ -1348,7 +1345,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>                type size changed from 2752 to 5504 (in bits)
>                1 data member deletion:
>                  'mutex_t Engine::m_ptr_lock', at offset 1344 (in bits) at offload_engine.h:474:1
>-
>                7 data member insertions:
>                  'PtrDataTable Engine::m_targetptr_set', at offset 1664 (in bits) at offload_engine.h:630:1
>                  'StreamMap Engine::m_stream_map', at offset 3072 (in bits) at offload_engine.h:637:1
>@@ -1370,20 +1366,16 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>                        underlying type 'class std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' at stl_tree.h:357:1 changed:
>                          type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' to 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >'
>                          type size hasn't changed
>-
>                          1 data member change:
>                           type of 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' changed:
>                             entity changed from 'struct std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to compatible type 'typedef std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type' at stl_set.h:115:1
>                               type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >'
>                               type size hasn't changed
>-
>                               1 base class deletion:
>                                 class std::allocator<std::_Rb_tree_node<PtrData> > at allocator.h:95:1
>                               2 data member deletions:
>                                 'std::_Rb_tree_node_base std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_header', at offset 64 (in bits) at stl_tree.h:593:1
>-
>                                 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::size_type std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_node_count', at offset 320 (in bits) at stl_tree.h:594:1
>-
>                               1 data member change:
>                                type of 'std::less<PtrData> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_key_compare' changed:
>                                  type name changed from 'std::less<PtrData>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>'
>diff --git a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt
>index 44e78935..d91de66b 100644
>--- a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt
>+++ b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt
>@@ -1200,7 +1200,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>           '__anonymous_enum__1::c_report_state_stream' value '142'
>           '__anonymous_enum__1::c_report_stream' value '143'
>           '__anonymous_enum__1::c_unload_library' value '144'
>-
>         92 enumerator changes:
>           '__anonymous_enum__::c_process_get_func_handles' from value '32' to '33' at liboffload_error_codes.h:38:1
>           '__anonymous_enum__::c_process_wait_shutdown' from value '33' to '34' at liboffload_error_codes.h:38:1
>@@ -1304,7 +1303,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>          type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} VarDesc::flags' changed:
>            type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags'
>            type size hasn't changed
>-
>            1 data member changes (1 filtered):
>             anonymous data member at offset 0 (in bytes) changed from:
>               struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}
>@@ -1319,7 +1317,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>         entity changed from 'struct InitTableEntry' to compatible type 'typedef InitTableEntry' at offload_table.h:296:1
>           type name changed from 'InitTableEntry' to '__anonymous_struct__2'
>           type size hasn't changed
>-
>           1 data member change:
>            type of 'void ()* InitTableEntry::func' changed:
>              in pointed to type 'function type void ()':
>@@ -1348,7 +1345,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>                type size changed from 0x158 to 0x2b0 (in bytes)
>                1 data member deletion:
>                  'mutex_t Engine::m_ptr_lock', at offset 0xa8 (in bytes) at offload_engine.h:474:1
>-
>                7 data member insertions:
>                  'PtrDataTable Engine::m_targetptr_set', at offset 0xd0 (in bytes) at offload_engine.h:630:1
>                  'StreamMap Engine::m_stream_map', at offset 0x180 (in bytes) at offload_engine.h:637:1
>@@ -1370,20 +1366,16 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>                        underlying type 'class std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' at stl_tree.h:357:1 changed:
>                          type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' to 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >'
>                          type size hasn't changed
>-
>                          1 data member change:
>                           type of 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' changed:
>                             entity changed from 'struct std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to compatible type 'typedef std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type' at stl_set.h:115:1
>                               type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >'
>                               type size hasn't changed
>-
>                               1 base class deletion:
>                                 class std::allocator<std::_Rb_tree_node<PtrData> > at allocator.h:95:1
>                               2 data member deletions:
>                                 'std::_Rb_tree_node_base std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_header', at offset 0x8 (in bytes) at stl_tree.h:593:1
>-
>                                 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::size_type std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_node_count', at offset 0x28 (in bytes) at stl_tree.h:594:1
>-
>                               1 data member change:
>                                type of 'std::less<PtrData> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_key_compare' changed:
>                                  type name changed from 'std::less<PtrData>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>'
>diff --git a/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt b/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt
>index c9cb9246..306a9863 100644
>--- a/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt
>+++ b/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt
>@@ -116,7 +116,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>           '__anonymous_enum__1::c_report_state_stream' value '142'
>           '__anonymous_enum__1::c_report_stream' value '143'
>           '__anonymous_enum__1::c_unload_library' value '144'
>-
>         92 enumerator changes:
>           '__anonymous_enum__::c_process_get_func_handles' from value '32' to '33'
>           '__anonymous_enum__::c_process_wait_shutdown' from value '33' to '34'
>@@ -220,7 +219,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>          type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} VarDesc::flags' changed:
>            type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags'
>            type size hasn't changed
>-
>            1 data member changes (1 filtered):
>             anonymous data member at offset 0 (in bits) changed from:
>               struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}
>@@ -235,7 +233,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>         entity changed from 'struct InitTableEntry' to compatible type 'typedef InitTableEntry'
>           type name changed from 'InitTableEntry' to '__anonymous_struct__2'
>           type size hasn't changed
>-
>           1 data member change:
>            type of 'void ()* InitTableEntry::func' changed:
>              in pointed to type 'function type void ()':
>@@ -264,7 +261,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>                type size changed from 2752 to 5504 (in bits)
>                1 data member deletion:
>                  'mutex_t Engine::m_ptr_lock', at offset 1344 (in bits)
>-
>                7 data member insertions:
>                  'PtrDataTable Engine::m_targetptr_set', at offset 1664 (in bits)
>                  'StreamMap Engine::m_stream_map', at offset 3072 (in bits)
>@@ -286,20 +282,16 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>                        underlying type 'class std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' changed:
>                          type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' to 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >'
>                          type size hasn't changed
>-
>                          1 data member change:
>                           type of 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' changed:
>                             entity changed from 'struct std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to compatible type 'typedef std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type'
>                               type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >'
>                               type size hasn't changed
>-
>                               1 base class deletion:
>                                 class std::allocator<std::_Rb_tree_node<PtrData> >
>                               2 data member deletions:
>                                 'std::_Rb_tree_node_base std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_header', at offset 64 (in bits)
>-
>                                 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::size_type std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_node_count', at offset 320 (in bits)
>-
>                               1 data member change:
>                                type of 'std::less<PtrData> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_key_compare' changed:
>                                  type name changed from 'std::less<PtrData>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>'
>diff --git a/tests/data/test-diff-filter/test36-report-0.txt b/tests/data/test-diff-filter/test36-report-0.txt
>index 08692c1e..22e614d8 100644
>--- a/tests/data/test-diff-filter/test36-report-0.txt
>+++ b/tests/data/test-diff-filter/test36-report-0.txt
>@@ -13,7 +13,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>            type size hasn't changed
>
>
>-
>   [C] 'function int foo_2(S*)' at test36-2-v1.c:13:1 has some indirect sub-type changes:
>     parameter 1 of type 'S*' has sub-type changes:
>       in pointed to type 'struct S' at test36-2-v1.c:6:1:
>@@ -23,11 +22,9 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>            type name changed from 'int' to 'unsigned int'
>            type size hasn't changed
>
>-
>          type of 'int S::m1' changed:
>            type name changed from 'int' to 'unsigned int'
>            type size hasn't changed
>
>
>
>-
>diff --git a/tests/data/test-diff-filter/test42-leaf-report-output-0.txt b/tests/data/test-diff-filter/test42-leaf-report-output-0.txt
>index 94a0551d..d40a1374 100644
>--- a/tests/data/test-diff-filter/test42-leaf-report-output-0.txt
>+++ b/tests/data/test-diff-filter/test42-leaf-report-output-0.txt
>@@ -7,6 +7,5 @@ Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
>   type size changed from 32 to 64 (in bits)
>   1 data member insertion:
>     'char leaf::m1', at offset 32 (in bits) at test42-leaf-report-v1.cc:7:1
>-
>   one impacted interface:
>     function void fn(C&)
>diff --git a/tests/data/test-diff-filter/test7-report.txt b/tests/data/test-diff-filter/test7-report.txt
>index 7e3a4d47..26933033 100644
>--- a/tests/data/test-diff-filter/test7-report.txt
>+++ b/tests/data/test-diff-filter/test7-report.txt
>@@ -7,7 +7,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>     return type changed:
>       type name changed from 'return_type' to 'other_return_type'
>       type size hasn't changed
>-
>       no data member change (1 filtered);
>
>
>diff --git a/tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt b/tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt
>index 05d6fcad..873a84cd 100644
>--- a/tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt
>+++ b/tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt
>@@ -54,9 +54,7 @@
>                                                   struct std::__detail::_List_node_base
>                                                 2 data member deletions:
>                                                   'std::__detail::_List_node_base* std::__detail::_List_node_base::_M_next', at offset 0 (in bits)
>-
>                                                   'std::__detail::_List_node_base* std::__detail::_List_node_base::_M_prev', at offset 64 (in bits)
>-
>                                                 1 data member insertion:
>                                                   'unsigned long int std::_List_node<long unsigned int>::_M_data', at offset 128 (in bits)
>                                               and name of 'std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl::_M_node' changed to 'std::__cxx11::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl::_M_node'
>diff --git a/tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt b/tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt
>index c227fa5c..a0cc67c2 100644
>--- a/tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt
>+++ b/tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt
>@@ -10,7 +10,6 @@
>           type size hasn't changed
>           1 enumerator insertion:
>             '__anonymous_enum__1::SEC_OID_TLS_ECDHE_PSK' value '347'
>-
>           1 enumerator change:
>             '__anonymous_enum__1::SEC_OID_TOTAL' from value '347' to '348' at secoidt.h:34:1
>
>@@ -34,7 +33,6 @@
>           type size hasn't changed
>           1 enumerator insertion:
>             '__anonymous_enum__1::ssl_kea_ecdh_psk' value '5'
>-
>           1 enumerator change:
>             '__anonymous_enum__::ssl_kea_size' from value '5' to '6' at sslt.h:40:1
>
>@@ -52,7 +50,6 @@
>                  type size hasn't changed
>                  1 enumerator deletion:
>                    '__anonymous_enum__::ssl_auth_rsa' value '1'
>-
>                  7 enumerator insertions:
>                    '__anonymous_enum__::ssl_auth_rsa_decrypt' value '1'
>                    '__anonymous_enum__::ssl_auth_ecdh_rsa' value '5'
>@@ -114,7 +111,6 @@
>                                              type size hasn't changed
>                                              1 enumerator insertion:
>                                                '__anonymous_enum__1::SEC_OID_TLS_ECDHE_PSK' value '347'
>-
>                                              1 enumerator change:
>                                                '__anonymous_enum__1::SEC_OID_TOTAL' from value '347' to '348' at secoidt.h:34:1
>
>diff --git a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt
>index bf081f52..70b41ddd 100644
>--- a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt
>+++ b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt
>@@ -25,7 +25,6 @@
>         underlying type 'enum __anonymous_enum__2' at spice.h:471:1 changed:
>           type name changed from '__anonymous_enum__2' to 'SpiceImageCompression'
>           type size hasn't changed
>-
>           7 enumerator deletions:
>             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_INVALID' value '0'
>             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_OFF' value '1'
>@@ -34,7 +33,6 @@
>             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_QUIC' value '4'
>             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_GLZ' value '5'
>             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_LZ' value '6'
>-
>           9 enumerator insertions:
>             'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0'
>             'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1'
>diff --git a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt
>index 7b86b964..0b909f90 100644
>--- a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt
>+++ b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt
>@@ -25,7 +25,6 @@
>         underlying type 'enum __anonymous_enum__2' at spice.h:471:1 changed:
>           type name changed from '__anonymous_enum__2' to 'SpiceImageCompression'
>           type size hasn't changed
>-
>           7 enumerator deletions:
>             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_INVALID' value '0'
>             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_OFF' value '1'
>@@ -34,7 +33,6 @@
>             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_QUIC' value '4'
>             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_GLZ' value '5'
>             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_LZ' value '6'
>-
>           9 enumerator insertions:
>             'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0'
>             'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1'
>diff --git a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt
>index 3d20caf1..c247ef95 100644
>--- a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt
>+++ b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt
>@@ -239,15 +239,10 @@
>                                                  type size changed from 1280 to 256 (in bits)
>                                                  5 data member deletions:
>                                                    'RedsSASL RedsStream::sasl', at offset 256 (in bits) at reds.h:78:1
>-
>                                                    'SpiceChannelEventInfo* RedsStream::info', at offset 1024 (in bits) at reds.h:85:1
>-
>                                                    'typedef ssize_t (RedsStream*, void*, typedef size_t)* RedsStream::read', at offset 1088 (in bits) at reds.h:88:1
>-
>                                                    'typedef ssize_t (RedsStream*, void*, typedef size_t)* RedsStream::write', at offset 1152 (in bits) at reds.h:89:1
>-
>                                                    'typedef ssize_t (RedsStream*, const iovec*, int)* RedsStream::writev', at offset 1216 (in bits) at reds.h:90:1
>-
>                                                  1 data member change:
>                                                   type of 'SSL* RedsStream::ssl' changed:
>                                                     in pointed to type 'typedef SSL' at reds_stream.h:32:1:
>@@ -257,193 +252,99 @@
>                                                         type size changed from 5504 to 0 (in bits)
>                                                         94 data member deletions:
>                                                           'int ssl_st::version', at offset 0 (in bits) at ssl.h:1070:1
>-
>                                                           'int ssl_st::type', at offset 32 (in bits) at ssl.h:1071:1
>-
>                                                           'const SSL_METHOD* ssl_st::method', at offset 64 (in bits) at ssl.h:1073:1
>-
>                                                           'BIO* ssl_st::rbio', at offset 128 (in bits) at ssl.h:1080:1
>-
>                                                           'BIO* ssl_st::wbio', at offset 192 (in bits) at ssl.h:1081:1
>-
>                                                           'BIO* ssl_st::bbio', at offset 256 (in bits) at ssl.h:1082:1
>-
>                                                           'int ssl_st::rwstate', at offset 320 (in bits) at ssl.h:1093:1
>-
>                                                           'int ssl_st::in_handshake', at offset 352 (in bits) at ssl.h:1096:1
>-
>                                                           'int (SSL*)* ssl_st::handshake_func', at offset 384 (in bits) at ssl.h:1097:1
>-
>                                                           'int ssl_st::server', at offset 448 (in bits) at ssl.h:1107:1
>-
>                                                           'int ssl_st::new_session', at offset 480 (in bits) at ssl.h:1109:1
>-
>                                                           'int ssl_st::quiet_shutdown', at offset 512 (in bits) at ssl.h:1113:1
>-
>                                                           'int ssl_st::shutdown', at offset 544 (in bits) at ssl.h:1114:1
>-
>                                                           'int ssl_st::state', at offset 576 (in bits) at ssl.h:1116:1
>-
>                                                           'int ssl_st::rstate', at offset 608 (in bits) at ssl.h:1117:1
>-
>                                                           'BUF_MEM* ssl_st::init_buf', at offset 640 (in bits) at ssl.h:1119:1
>-
>                                                           'void* ssl_st::init_msg', at offset 704 (in bits) at ssl.h:1120:1
>-
>                                                           'int ssl_st::init_num', at offset 768 (in bits) at ssl.h:1121:1
>-
>                                                           'int ssl_st::init_off', at offset 800 (in bits) at ssl.h:1122:1
>-
>                                                           'unsigned char* ssl_st::packet', at offset 832 (in bits) at ssl.h:1125:1
>-
>                                                           'unsigned int ssl_st::packet_length', at offset 896 (in bits) at ssl.h:1126:1
>-
>                                                           'ssl2_state_st* ssl_st::s2', at offset 960 (in bits) at ssl.h:1128:1
>-
>                                                           'ssl3_state_st* ssl_st::s3', at offset 1024 (in bits) at ssl.h:1129:1
>-
>                                                           'dtls1_state_st* ssl_st::d1', at offset 1088 (in bits) at ssl.h:1130:1
>-
>                                                           'int ssl_st::read_ahead', at offset 1152 (in bits) at ssl.h:1132:1
>-
>                                                           'void (int, int, int, void*, typedef size_t, SSL*, void*)* ssl_st::msg_callback', at offset 1216 (in bits) at ssl.h:1136:1
>-
>                                                           'void* ssl_st::msg_callback_arg', at offset 1280 (in bits) at ssl.h:1137:1
>-
>                                                           'int ssl_st::hit', at offset 1344 (in bits) at ssl.h:1139:1
>-
>                                                           'X509_VERIFY_PARAM* ssl_st::param', at offset 1408 (in bits) at ssl.h:1141:1
>-
>                                                           'stack_st_SSL_CIPHER* ssl_st::cipher_list', at offset 1472 (in bits) at ssl.h:1149:1
>-
>                                                           'stack_st_SSL_CIPHER* ssl_st::cipher_list_by_id', at offset 1536 (in bits) at ssl.h:1150:1
>-
>                                                           'int ssl_st::mac_flags', at offset 1600 (in bits) at ssl.h:1154:1
>-
>                                                           'EVP_CIPHER_CTX* ssl_st::enc_read_ctx', at offset 1664 (in bits) at ssl.h:1155:1
>-
>                                                           'EVP_MD_CTX* ssl_st::read_hash', at offset 1728 (in bits) at ssl.h:1156:1
>-
>                                                           'COMP_CTX* ssl_st::expand', at offset 1792 (in bits) at ssl.h:1158:1
>-
>                                                           'EVP_CIPHER_CTX* ssl_st::enc_write_ctx', at offset 1856 (in bits) at ssl.h:1163:1
>-
>                                                           'EVP_MD_CTX* ssl_st::write_hash', at offset 1920 (in bits) at ssl.h:1164:1
>-
>                                                           'COMP_CTX* ssl_st::compress', at offset 1984 (in bits) at ssl.h:1166:1
>-
>                                                           'cert_st* ssl_st::cert', at offset 2048 (in bits) at ssl.h:1175:1
>-
>                                                           'unsigned int ssl_st::sid_ctx_length', at offset 2112 (in bits) at ssl.h:1179:1
>-
>                                                           'unsigned char ssl_st::sid_ctx[32]', at offset 2144 (in bits) at ssl.h:1180:1
>-
>                                                           'SSL_SESSION* ssl_st::session', at offset 2432 (in bits) at ssl.h:1183:1
>-
>                                                           'GEN_SESSION_CB ssl_st::generate_session_id', at offset 2496 (in bits) at ssl.h:1186:1
>-
>                                                           'int ssl_st::verify_mode', at offset 2560 (in bits) at ssl.h:1189:1
>-
>                                                           'int (int, X509_STORE_CTX*)* ssl_st::verify_callback', at offset 2624 (in bits) at ssl.h:1191:1
>-
>                                                           'void (const SSL*, int, int)* ssl_st::info_callback', at offset 2688 (in bits) at ssl.h:1193:1
>-
>                                                           'int ssl_st::error', at offset 2752 (in bits) at ssl.h:1195:1
>-
>                                                           'int ssl_st::error_code', at offset 2784 (in bits) at ssl.h:1196:1
>-
>                                                           'KSSL_CTX* ssl_st::kssl_ctx', at offset 2816 (in bits) at ssl.h:1199:1
>-
>                                                           'unsigned int (SSL*, const char*, char*, unsigned int, unsigned char*, unsigned int)* ssl_st::psk_client_callback', at offset 2880 (in bits) at ssl.h:1203:1
>-
>                                                           'unsigned int (SSL*, const char*, unsigned char*, unsigned int)* ssl_st::psk_server_callback', at offset 2944 (in bits) at ssl.h:1206:1
>-
>                                                           'SSL_CTX* ssl_st::ctx', at offset 3008 (in bits) at ssl.h:1210:1
>-
>                                                           'int ssl_st::debug', at offset 3072 (in bits) at ssl.h:1213:1
>-
>                                                           'long int ssl_st::verify_result', at offset 3136 (in bits) at ssl.h:1216:1
>-
>                                                           'CRYPTO_EX_DATA ssl_st::ex_data', at offset 3200 (in bits) at ssl.h:1217:1
>-
>                                                           'stack_st_X509_NAME* ssl_st::client_CA', at offset 3328 (in bits) at ssl.h:1220:1
>-
>                                                           'int ssl_st::references', at offset 3392 (in bits) at ssl.h:1222:1
>-
>                                                           'unsigned long int ssl_st::options', at offset 3456 (in bits) at ssl.h:1223:1
>-
>                                                           'unsigned long int ssl_st::mode', at offset 3520 (in bits) at ssl.h:1224:1
>-
>                                                           'long int ssl_st::max_cert_list', at offset 3584 (in bits) at ssl.h:1225:1
>-
>                                                           'int ssl_st::first_packet', at offset 3648 (in bits) at ssl.h:1226:1
>-
>                                                           'int ssl_st::client_version', at offset 3680 (in bits) at ssl.h:1227:1
>-
>                                                           'unsigned int ssl_st::max_send_fragment', at offset 3712 (in bits) at ssl.h:1229:1
>-
>                                                           'void (SSL*, int, int, unsigned char*, int, void*)* ssl_st::tlsext_debug_cb', at offset 3776 (in bits) at ssl.h:1232:1
>-
>                                                           'void* ssl_st::tlsext_debug_arg', at offset 3840 (in bits) at ssl.h:1235:1
>-
>                                                           'char* ssl_st::tlsext_hostname', at offset 3904 (in bits) at ssl.h:1236:1
>-
>                                                           'int ssl_st::servername_done', at offset 3968 (in bits) at ssl.h:1237:1
>-
>                                                           'int ssl_st::tlsext_status_type', at offset 4000 (in bits) at ssl.h:1244:1
>-
>                                                           'int ssl_st::tlsext_status_expected', at offset 4032 (in bits) at ssl.h:1246:1
>-
>                                                           'stack_st_OCSP_RESPID* ssl_st::tlsext_ocsp_ids', at offset 4096 (in bits) at ssl.h:1248:1
>-
>                                                           'X509_EXTENSIONS* ssl_st::tlsext_ocsp_exts', at offset 4160 (in bits) at ssl.h:1249:1
>-
>                                                           'unsigned char* ssl_st::tlsext_ocsp_resp', at offset 4224 (in bits) at ssl.h:1251:1
>-
>                                                           'int ssl_st::tlsext_ocsp_resplen', at offset 4288 (in bits) at ssl.h:1252:1
>-
>                                                           'int ssl_st::tlsext_ticket_expected', at offset 4320 (in bits) at ssl.h:1255:1
>-
>                                                           'size_t ssl_st::tlsext_ecpointformatlist_length', at offset 4352 (in bits) at ssl.h:1257:1
>-
>                                                           'unsigned char* ssl_st::tlsext_ecpointformatlist', at offset 4416 (in bits) at ssl.h:1258:1
>-
>                                                           'size_t ssl_st::tlsext_ellipticcurvelist_length', at offset 4480 (in bits) at ssl.h:1259:1
>-
>                                                           'unsigned char* ssl_st::tlsext_ellipticcurvelist', at offset 4544 (in bits) at ssl.h:1260:1
>-
>                                                           'void* ssl_st::tlsext_opaque_prf_input', at offset 4608 (in bits) at ssl.h:1264:1
>-
>                                                           'size_t ssl_st::tlsext_opaque_prf_input_len', at offset 4672 (in bits) at ssl.h:1265:1
>-
>                                                           'TLS_SESSION_TICKET_EXT* ssl_st::tlsext_session_ticket', at offset 4736 (in bits) at ssl.h:1268:1
>-
>                                                           'tls_session_ticket_ext_cb_fn ssl_st::tls_session_ticket_ext_cb', at offset 4800 (in bits) at ssl.h:1271:1
>-
>                                                           'void* ssl_st::tls_session_ticket_ext_cb_arg', at offset 4864 (in bits) at ssl.h:1272:1
>-
>                                                           'tls_session_secret_cb_fn ssl_st::tls_session_secret_cb', at offset 4928 (in bits) at ssl.h:1275:1
>-
>                                                           'void* ssl_st::tls_session_secret_cb_arg', at offset 4992 (in bits) at ssl.h:1276:1
>-
>                                                           'SSL_CTX* ssl_st::initial_ctx', at offset 5056 (in bits) at ssl.h:1278:1
>-
>                                                           'unsigned char* ssl_st::next_proto_negotiated', at offset 5120 (in bits) at ssl.h:1288:1
>-
>                                                           'unsigned char ssl_st::next_proto_negotiated_len', at offset 5184 (in bits) at ssl.h:1289:1
>-
>                                                           'stack_st_SRTP_PROTECTION_PROFILE* ssl_st::srtp_profiles', at offset 5248 (in bits) at ssl.h:1294:1
>-
>                                                           'SRTP_PROTECTION_PROFILE* ssl_st::srtp_profile', at offset 5312 (in bits) at ssl.h:1295:1
>-
>                                                           'unsigned int ssl_st::tlsext_heartbeat', at offset 5376 (in bits) at ssl.h:1297:1
>-
>                                                           'unsigned int ssl_st::tlsext_hb_pending', at offset 5408 (in bits) at ssl.h:1302:1
>-
>                                                           'unsigned int ssl_st::tlsext_hb_seq', at offset 5440 (in bits) at ssl.h:1303:1
>-
>                                                           'int ssl_st::renegotiate', at offset 5472 (in bits) at ssl.h:1308:1
>-
>                                                   and name of 'RedsStream::ssl' changed to 'RedsStream::priv' at reds_stream.h:42:1
>
>
>@@ -558,7 +459,6 @@
>         underlying type 'enum __anonymous_enum__2' at spice.h:471:1 changed:
>           type name changed from '__anonymous_enum__2' to 'SpiceImageCompression'
>           type size hasn't changed
>-
>           7 enumerator deletions:
>             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_INVALID' value '0'
>             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_OFF' value '1'
>@@ -567,7 +467,6 @@
>             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_QUIC' value '4'
>             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_GLZ' value '5'
>             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_LZ' value '6'
>-
>           9 enumerator insertions:
>             'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0'
>             'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1'
>diff --git a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt
>index 75ba0a50..11cd5682 100644
>--- a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt
>+++ b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt
>@@ -22,7 +22,6 @@ Leaf changes summary: 11 artifacts changed (7 filtered out)
>   'enum __anonymous_enum__2 at spice.h:471:1' changed:
>     type name changed from '__anonymous_enum__2' to 'SpiceImageCompression'
>     type size hasn't changed
>-
>     7 enumerator deletions:
>       '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_INVALID' value '0'
>       '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_OFF' value '1'
>@@ -31,7 +30,6 @@ Leaf changes summary: 11 artifacts changed (7 filtered out)
>       '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_QUIC' value '4'
>       '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_GLZ' value '5'
>       '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_LZ' value '6'
>-
>     9 enumerator insertions:
>       'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0'
>       'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1'
>@@ -48,7 +46,6 @@ Leaf changes summary: 11 artifacts changed (7 filtered out)
>       function int spice_server_set_image_compression(SpiceServer*, spice_image_compression_t)
>   'typedef spice_image_compression_t at spice.h:479:1' changed:
>     typedef name changed from spice_image_compression_t to SpiceImageCompression at enums.h:197:1
>-
>     2 impacted interfaces:
>       function spice_image_compression_t spice_server_get_image_compression(SpiceServer*)
>       function int spice_server_set_image_compression(SpiceServer*, spice_image_compression_t)
>diff --git a/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt b/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt
>index f8e60b50..d0381ce5 100644
>--- a/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt
>+++ b/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt
>@@ -60,7 +60,6 @@
>         type size hasn't changed
>         1 enumerator insertion:
>           'tbb::internal::exception_id::eid_bad_tagged_msg_cast' value '20'
>-
>         1 enumerator change:
>           'tbb::internal::exception_id::eid_max' from value '20' to '21' at tbb_exception.h:79:1
>
>@@ -129,7 +128,6 @@
>
>
>
>-
>                1 member function deletion:
>                  'method virtual tbb::task* tbb::internal::generic_scheduler::receive_or_steal_task(tbb::internal::reference_count&, bool)' at scheduler.h:391:1, virtual at voffset 7/7
>
>@@ -138,11 +136,8 @@
>
>                3 data member deletions:
>                  'unsigned int tbb::internal::generic_scheduler::hint_for_push', at offset 896 (in bits) at scheduler.h:171:1
>-
>                  'volatile intptr_t* tbb::internal::generic_scheduler::my_ref_top_priority', at offset 2560 (in bits) at scheduler.h:433:1
>-
>                  'volatile uintptr_t* tbb::internal::generic_scheduler::my_ref_reload_epoch', at offset 2752 (in bits) at scheduler.h:443:1
>-
>                18 data member changes:
>                 'uintptr_t tbb::internal::generic_scheduler::my_stealing_threshold' offset changed from 704 to 832 (in bits) (by +128 bits)
>                 type of 'tbb::internal::market* tbb::internal::generic_scheduler::my_market' changed:
>diff --git a/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt b/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt
>index 10816705..89c8efa3 100644
>--- a/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt
>+++ b/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt
>@@ -31,7 +31,6 @@
>         type size hasn't changed
>         1 enumerator insertion:
>           'tbb::internal::exception_id::eid_bad_tagged_msg_cast' value '20'
>-
>         1 enumerator change:
>           'tbb::internal::exception_id::eid_max' from value '20' to '21' at tbb_exception.h:79:1
>
>diff --git a/tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt b/tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt
>index 8f5d0b6b..c39851d3 100644
>--- a/tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt
>+++ b/tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt
>@@ -7,14 +7,11 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>     return type changed:
>       type name changed from 'int' to 'float'
>       type size hasn't changed
>-
>     parameter 1 of type 'int' changed:
>       type name changed from 'int' to 'float'
>       type size hasn't changed
>-
>     parameter 2 of type 'int' changed:
>       type name changed from 'int' to 'float'
>       type size hasn't changed
>
>
>-
>diff --git a/tests/data/test-diff-suppr/test35-leaf-report-0.txt b/tests/data/test-diff-suppr/test35-leaf-report-0.txt
>index 411cc1b4..244455ae 100644
>--- a/tests/data/test-diff-suppr/test35-leaf-report-0.txt
>+++ b/tests/data/test-diff-suppr/test35-leaf-report-0.txt
>@@ -7,6 +7,5 @@ Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
>   type size changed from 32 to 64 (in bits)
>   1 data member insertion:
>     'char leaf::m1', at offset 32 (in bits) at test35-leaf-v1.cc:8:1
>-
>   one impacted interface:
>     function void fn(C&)
>diff --git a/tests/data/test-diff-suppr/test36-leaf-report-0.txt b/tests/data/test-diff-suppr/test36-leaf-report-0.txt
>index b12a8a61..f286cc7b 100644
>--- a/tests/data/test-diff-suppr/test36-leaf-report-0.txt
>+++ b/tests/data/test-diff-suppr/test36-leaf-report-0.txt
>@@ -7,7 +7,6 @@ Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
>   type size changed from 32 to 64 (in bits)
>   1 data member insertion:
>     'char leaf1::m1', at offset 32 (in bits) at test36-leaf-v1.cc:7:1
>-
>   3 impacted interfaces:
>     function void interface1(struct_type*)
>     function void interface2(struct_type&)
>@@ -20,7 +19,6 @@ Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
>    type 'struct leaf1' of 'leaf2::member0' changed as reported earlier
>    and size changed from 32 to 64 (in bits) (by +32 bits)
>    'char leaf2::member1' offset changed from 32 to 64 (in bits) (by +32 bits)
>-
>   3 impacted interfaces:
>     function void interface1(struct_type*)
>     function void interface2(struct_type&)
>diff --git a/tests/data/test-diff-suppr/test41-enumerator-changes-report-0.txt b/tests/data/test-diff-suppr/test41-enumerator-changes-report-0.txt
>index 4b1681bc..d772bd1d 100644
>--- a/tests/data/test-diff-suppr/test41-enumerator-changes-report-0.txt
>+++ b/tests/data/test-diff-suppr/test41-enumerator-changes-report-0.txt
>@@ -8,7 +8,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>       type size hasn't changed
>       1 enumerator insertion:
>         'EnumType1::ee3_inserted' value '3'
>-
>       1 enumerator change:
>         'EnumType1::eenum_count' from value '3' to '4' at test41-enumerator-changes-v1.cc:10:1
>
>@@ -18,7 +17,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>       type size hasn't changed
>       1 enumerator insertion:
>         'EnumType0::e3_inserted' value '3'
>-
>       1 enumerator change:
>         'EnumType0::enum_count' from value '3' to '4' at test41-enumerator-changes-v1.cc:1:1
>
>-- 
>2.25.1.481.gfbce0eb801-goog
>
>
Giuliano Procida March 16, 2020, 10:51 a.m. UTC | #2
Hi Matthias.

On Sat, 14 Mar 2020 at 20:09, Matthias Maennich <maennich@google.com> wrote:
>
> On Thu, Mar 12, 2020 at 06:30:34AM +0000, Android Kernel Team wrote:
> >There is distributed responsibility for horizontal and vertical
> >whitespace in the reporting code with indent and new line control
> >information being manipulated by and passed in and out of functions.
> >Occasionally, this information is ignored or incorrect and the code
> >tends to err on the side of more rather than fewer new lines.
> >
> >The outcome is that abidiff output sometimes contains extra blank
> >lines which can be confusing.
> >
> >This patch eliminates some of the more obvious cases:
> >
> >   - after data member deletions
> >   - in enumerator change lists
> >   - after "type size hasn't changed"
> >   - before listing impacted interfaces
> >
> >The patch cleans up the reporting of data members. The code will
> >either emit indentation, a short description and a new line or do
> >nothing at all.
> >
> >The patch also removes some stray location reporting code for array
> >diffs which would have produced some oddly placed output. I could not
> >get this code to trigger as loc = decl->get_location() was never
> >present on the array decls in question.
> >
> >       * src/abg-default-reporter.cc (report): In the enum_diff
> >       override, simplify new line logic; emit just one
> >       blank line after each enum. In the array_diff override, remove
> >       stray location reporting which doesn't appear to ever trigger;
> >       fix new line logic. In the class_or_union_diff override,
> >       simplify new line logic for deleted members; pass indentation
> >       to represent_data_member.
> >       * src/abg-leaf-reporter.cc (report): In the array_diff
> >       override, remove stray location reporting which doesn't appear
> >       to ever trigger; fix new line handling. In the
> >       class_or_union_diff override, simplify new line logic for
> >       deleted members; pass indentation to represent_data_member.
> >       * src/abg-reporter-priv.cc (represent_data_member): Handle
> >       indentation; fix new line logic.
> >       (report_size_and_alignment_changes): Fix new line logic
> >       for "type size hasn't changed" message; simplify new line
> >       logic.
> >       (report_name_size_and_alignment_changes): Fix new line logic.
> >       (maybe_report_interfaces_impacted_by_diff) Remove new line
> >       prefix code and new_line_prefix argument.
> >       * src/abg-reporter-priv.h (represent_data_member): Add indent
> >       argument.
> >       (maybe_report_interfaces_impacted_by_diff) Remove
> >       new_line_prefix argument.
> >       * tests/data/test-*/*report*.txt: Remove some blank lines.
> >
> >Signed-off-by: Giuliano Procida <gprocida@google.com>
> >---
> > src/abg-default-reporter.cc                   |  43 +++-----
> > src/abg-leaf-reporter.cc                      |  27 ++---
> > src/abg-reporter-priv.cc                      |  34 +++---
> > src/abg-reporter-priv.h                       |   9 +-
> > .../test5-fn-changed-report-0.txt             |   1 -
> > .../test5-fn-changed-report-1.txt             |   1 -
> > .../test6-var-changed-report-0.txt            |   1 -
> > .../test6-var-changed-report-1.txt            |   1 -
> > .../test7-fn-changed-report-0.txt             |   1 -
> > .../test-abidiff-exit/test-leaf3-report.txt   |   1 -
> > .../test-loc-with-locs-report.txt             |   1 -
> > .../test-loc-without-locs-report.txt          |   1 -
> > .../test-abidiff/test-PR18791-report0.txt     |   2 -
> > tests/data/test-abidiff/test-enum0-report.txt |   1 -
> > tests/data/test-abidiff/test-enum1-report.txt |   1 -
> > .../data/test-abidiff/test-struct1-report.txt |   1 -
> > .../PR25058-liblttng-ctl-report-1.txt         |   5 -
> > tests/data/test-diff-dwarf/test13-report.txt  |   1 -
> > .../test-diff-dwarf/test38-union-report-0.txt |   1 -
> > .../data/test-diff-dwarf/test40-report-0.txt  |   2 -
> > .../test42-PR21296-clanggcc-report0.txt       |   1 -
> > .../test43-PR22913-report-0.txt               |   1 -
> > tests/data/test-diff-filter/test10-report.txt |   1 -
> > tests/data/test-diff-filter/test18-report.txt |   1 -
> > ...st23-redundant-fn-parm-change-report-0.txt |   2 -
> > .../test30-pr18904-rvalueref-report0.txt      |   8 --
> > .../test30-pr18904-rvalueref-report1.txt      |   8 --
> > .../test30-pr18904-rvalueref-report2.txt      |   8 --
> > .../test35-pr18754-no-added-syms-report-0.txt |   8 --
> > .../data/test-diff-filter/test36-report-0.txt |   3 -
> > .../test42-leaf-report-output-0.txt           |   1 -
> > tests/data/test-diff-filter/test7-report.txt  |   1 -
> > ...-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt |   2 -
> > .../nss-3.23.0-1.0.fc23.x86_64-report-0.txt   |   4 -
> > ...l7.x86_64-0.12.8-1.el7.x86_64-report-0.txt |   2 -
> > ...l7.x86_64-0.12.8-1.el7.x86_64-report-1.txt |   2 -
> > ...l7.x86_64-0.12.8-1.el7.x86_64-report-2.txt | 101 ------------------
> > ...l7.x86_64-0.12.8-1.el7.x86_64-report-3.txt |   3 -
> > ...bb-4.3-3.20141204.fc23.x86_64-report-0.txt |   5 -
> > ...bb-4.3-3.20141204.fc23.x86_64-report-1.txt |   1 -
> > .../test10-changed-parm-c-report-0.txt        |   3 -
> > .../test-diff-suppr/test35-leaf-report-0.txt  |   1 -
> > .../test-diff-suppr/test36-leaf-report-0.txt  |   2 -
> > .../test41-enumerator-changes-report-0.txt    |   2 -
> > 44 files changed, 42 insertions(+), 264 deletions(-)
> >
> >diff --git a/src/abg-default-reporter.cc b/src/abg-default-reporter.cc
> >index 3bfdfbc4..a0b9eeea 100644
> >--- a/src/abg-default-reporter.cc
> >+++ b/src/abg-default-reporter.cc
> >@@ -130,16 +130,14 @@ default_reporter::report(const enum_diff& d, ostream& out,
> >          i != sorted_deleted_enumerators.end();
> >          ++i)
> >       {
> >-        if (i != sorted_deleted_enumerators.begin())
> >-          out << "\n";
> >         out << indent
> >             << "  '"
> >             << i->get_qualified_name()
> >             << "' value '"
> >             << i->get_value()
> >             << "'";
> >+        out << "\n";
> >       }
> >-      out << "\n\n";
> >     }
> >   if (numins)
> >     {
> >@@ -151,16 +149,14 @@ default_reporter::report(const enum_diff& d, ostream& out,
> >          i != sorted_inserted_enumerators.end();
> >          ++i)
> >       {
> >-        if (i != sorted_inserted_enumerators.begin())
> >-          out << "\n";
> >         out << indent
> >             << "  '"
> >             << i->get_qualified_name()
> >             << "' value '"
> >             << i->get_value()
> >             << "'";
> >+        out << "\n";
> >       }
> >-      out << "\n\n";
> >     }
> >   if (numchanges)
> >     {
> >@@ -173,8 +169,6 @@ default_reporter::report(const enum_diff& d, ostream& out,
> >          i != sorted_changed_enumerators.end();
> >          ++i)
> >       {
> >-        if (i != sorted_changed_enumerators.begin())
> >-          out << "\n";
> >         out << indent
> >             << "  '"
> >             << i->first.get_qualified_name()
> >@@ -182,13 +176,14 @@ default_reporter::report(const enum_diff& d, ostream& out,
> >             << i->first.get_value() << "' to '"
> >             << i->second.get_value() << "'";
> >         report_loc_info(second, *d.context(), out);
> >+        out << "\n";
> >       }
> >-      out << "\n\n";
> >     }
> >
> >+  out << "\n";
> >+
> >   if (d.context()->show_leaf_changes_only())
> >-    maybe_report_interfaces_impacted_by_diff(&d, out, indent,
> >-                                           /*new_line_prefix=*/false);
> >+    maybe_report_interfaces_impacted_by_diff(&d, out, indent);
> >
> >   d.reported_once(true);
> > }
> >@@ -392,7 +387,7 @@ default_reporter::report(const pointer_diff& d, ostream& out,
> >       : string("void");
> >
> >       out << indent
> >-        << "in pointed to type '" <<  repr << "'";
> >+        << "in pointed to type '" << repr << "'";
> >       report_loc_info(dif->second_subject(), *d.context(), out);
> >       out << ":\n";
> >       dif->report(out, indent + "  ");
> >@@ -673,12 +668,12 @@ default_reporter::report(const array_diff& d, ostream& out,
> >       dif->report(out, indent + "  ");
> >     }
> >
> >-  report_name_size_and_alignment_changes(d.first_array(),
> >-                                       d.second_array(),
> >-                                       d.context(),
> >-                                       out, indent,
> >-                                       /*new line=*/false);
> >-  report_loc_info(d.second_array(), *d.context(), out);
> >+  if (report_name_size_and_alignment_changes(d.first_array(),
> >+                                           d.second_array(),
> >+                                           d.context(),
> >+                                           out, indent,
> >+                                           /*new line=*/false))
>
> Though it is not required here, I would prefer braces for readability.

Agreed, I think it's sensible here. In other places, with the coding
style in use, we'd end up with:

if (emitted)
  {
    out << "\n";
  }

which is pretty verbose. The following would be fine by me:

if (emitted) out << "\n";

Lastly, short but ugly:

  emitted && (out << "\n");

> >+    out << "\n";
> > }
> >
> > /// Generates a report for an intance of @ref base_diff.
> >@@ -1014,7 +1009,6 @@ default_reporter::report(const class_or_union_diff& d,
> >         sort_data_members
> >           (d.class_or_union_diff::get_priv()->deleted_data_members_,
> >            sorted_dms);
> >-        bool emitted = false;
> >         for (vector<decl_base_sptr>::const_iterator i = sorted_dms.begin();
> >              i != sorted_dms.end();
> >              ++i)
> >@@ -1024,14 +1018,8 @@ default_reporter::report(const class_or_union_diff& d,
> >             ABG_ASSERT(data_mem);
> >             if (get_member_is_static(data_mem))
> >               continue;
> >-            if (emitted)
> >-              out << "\n";
> >-            out << indent << "  ";
> >-            represent_data_member(data_mem, ctxt, out);
> >-            emitted = true;
> >+            represent_data_member(data_mem, ctxt, out, indent + "  ");
> >           }
> >-        if (emitted)
> >-          out << "\n";
> >       }
> >
> >       //report insertions
> >@@ -1052,8 +1040,7 @@ default_reporter::report(const class_or_union_diff& d,
> >             var_decl_sptr data_mem =
> >               dynamic_pointer_cast<var_decl>(*i);
> >             ABG_ASSERT(data_mem);
> >-            out << indent << "  ";
> >-            represent_data_member(data_mem, ctxt, out);
> >+            represent_data_member(data_mem, ctxt, out, indent + "  ");
> >           }
> >       }
> >
> >diff --git a/src/abg-leaf-reporter.cc b/src/abg-leaf-reporter.cc
> >index bbd51dcb..f706bd21 100644
> >--- a/src/abg-leaf-reporter.cc
> >+++ b/src/abg-leaf-reporter.cc
> >@@ -78,7 +78,7 @@ report_diffs(const reporter_base& r,
> >
> >         string n = (*i)->first_subject()->get_pretty_representation();
> >
> >-        out << indent << "'" << n ;
> >+        out << indent << "'" << n;
> >
> >         report_loc_info((*i)->first_subject(),
> >                         *(*i)->context(), out);
> >@@ -425,11 +425,12 @@ leaf_reporter::report(const array_diff& d,
> >                                                   d.second_array(),
> >                                                   "array type");
> >
> >-  report_name_size_and_alignment_changes(d.first_array(),
> >-                                       d.second_array(),
> >-                                       d.context(),
> >-                                       out, indent,
> >-                                       /*new line=*/false);
> >+  if (report_name_size_and_alignment_changes(d.first_array(),
> >+                                           d.second_array(),
> >+                                           d.context(),
> >+                                           out, indent,
> >+                                           /*new line=*/false))
>
> As above.

Agreed.

> >+    out << "\n";
> >
> >   diff_sptr dif = d.element_type_diff();
> >   if (diff_to_be_reported(dif.get()))
> >@@ -441,8 +442,6 @@ leaf_reporter::report(const array_diff& d,
> >       dif->report(out, indent + "  ");
> >     }
> >
> >-  report_loc_info(d.second_array(), *d.context(), out);
> >-
> >   maybe_report_interfaces_impacted_by_diff(&d, out, indent);
> > }
> >
> >@@ -592,7 +591,6 @@ leaf_reporter::report(const class_or_union_diff& d,
> >         sort_data_members
> >           (d.class_or_union_diff::get_priv()->deleted_data_members_,
> >            sorted_dms);
> >-        bool emitted = false;
> >         for (vector<decl_base_sptr>::const_iterator i = sorted_dms.begin();
> >              i != sorted_dms.end();
> >              ++i)
> >@@ -602,14 +600,8 @@ leaf_reporter::report(const class_or_union_diff& d,
> >             ABG_ASSERT(data_mem);
> >             if (get_member_is_static(data_mem))
> >               continue;
> >-            if (emitted)
> >-              out << "\n";
> >-            out << indent << "  ";
> >-            represent_data_member(data_mem, ctxt, out);
> >-            emitted = true;
> >+            represent_data_member(data_mem, ctxt, out, indent + "  ");
> >           }
> >-        if (emitted)
> >-          out << "\n";
> >       }
> >
> >       //report insertions
> >@@ -630,8 +622,7 @@ leaf_reporter::report(const class_or_union_diff& d,
> >             var_decl_sptr data_mem =
> >               dynamic_pointer_cast<var_decl>(*i);
> >             ABG_ASSERT(data_mem);
> >-            out << indent << "  ";
> >-            represent_data_member(data_mem, ctxt, out);
> >+            represent_data_member(data_mem, ctxt, out, indent + "  ");
> >           }
> >       }
> >
> >diff --git a/src/abg-reporter-priv.cc b/src/abg-reporter-priv.cc
> >index fbac85f8..948a32fc 100644
> >--- a/src/abg-reporter-priv.cc
> >+++ b/src/abg-reporter-priv.cc
> >@@ -242,16 +242,19 @@ represent(const diff_context& ctxt,
> > /// @param ctxt the current diff context.
> > ///
> > /// @param out the output stream to send the representation to
> >+///
> >+/// @param indent the indentation string to use for the change report.
> > void
> > represent_data_member(var_decl_sptr d,
> >                     const diff_context_sptr& ctxt,
> >-                    ostream& out)
> >+                    ostream& out,
> >+                    const string& indent)
>
> I would prefer out parameters after all input parameters. Since this is
> a private implementation detail, we should be good to change that
> interface.

I looked at the existing functions and copied an existing order for
consistency. out and indent belong together morally as well (writer
monad). If we switch to an indenting ostream, this issue goes away.

> > {
> >   if (!is_data_member(d)
> >       || (!get_member_is_static(d) && !get_data_member_is_laid_out(d)))
> >     return;
> >
> >-  out << "'" << d->get_pretty_representation() << "'";
> >+  out << indent << "'" << d->get_pretty_representation() << "'";
> >   if (!get_member_is_static(d))
> >     {
> >       // Do not emit offset information for data member of a union
> >@@ -262,8 +265,8 @@ represent_data_member(var_decl_sptr d,
> >                           get_data_member_offset(d),
> >                           *ctxt, out);
> >       report_loc_info(d, *ctxt, out);
> >-      out << "\n";
> >     }
> >+  out << "\n";
> > }
> >
> > /// If a given @ref var_diff node carries a data member change in
> >@@ -806,7 +809,10 @@ report_size_and_alignment_changes(type_or_decl_base_sptr  first,
> >       } // end if (fs != ss || fdc != sdc)
> >       else
> >       if (ctxt->show_relative_offset_changes())
> >-        out << indent << "type size hasn't changed\n";
> >+        {
> >+          out << indent << "type size hasn't changed";
> >+          n = true;
> >+        }
> >     }
> >   if ((ctxt->get_allowed_category() & SIZE_OR_OFFSET_CHANGE_CATEGORY)
> >       && (fa != sa))
> >@@ -819,9 +825,7 @@ report_size_and_alignment_changes(type_or_decl_base_sptr   first,
> >       n = true;
> >     }
> >
> >-  if (n)
> >-    return true;
> >-  return false;
> >+  return n;
>
> We should give 'n' a better name. Not necessarily part of this change.

Acknowledged. If we are going to review newline handling we should do
it everywhere and consistently. Ideally we should get to the point
where we don't have to pass information about newlines around (this
will likely be possible with an indenting ostream but may be doable
even without that).

> > }
> >
> > /// @param tod the type or declaration to emit loc info about
> >@@ -910,8 +914,8 @@ report_name_size_and_alignment_changes(decl_base_sptr              first,
> >       }
> >     }
> >
> >-  nl |= report_size_and_alignment_changes(first, second, ctxt,
> >-                                        out, indent, nl);
> >+  nl = report_size_and_alignment_changes(first, second, ctxt,
> >+                                         out, indent, nl);
> >   return nl;
> > }
> >
> >@@ -1366,14 +1370,10 @@ maybe_report_unreachable_type_changes(const corpus_diff& d,
> > /// @param out the output stream to report to.
> > ///
> > /// @param indent the white space string to use for indentation.
> >-///
> >-/// @param new_line_prefix if set to true, it means there is going to
> >-/// be a new line emitted before the report.
> > void
> > maybe_report_interfaces_impacted_by_diff(const diff   *d,
> >                                        ostream        &out,
> >-                                       const string   &indent,
> >-                                       bool           new_line_prefix)
> >+                                       const string   &indent)
> > {
> >   const diff_context_sptr &ctxt = d->context();
> >   const corpus_diff_sptr &corp_diff = ctxt->get_corpus_diff();
> >@@ -1395,9 +1395,6 @@ maybe_report_interfaces_impacted_by_diff(const diff      *d,
> >   vector<type_or_decl_base_sptr> sorted_impacted_interfaces;
> >   sort_artifacts_set(*impacted_artifacts, sorted_impacted_interfaces);
> >
> >-  if (new_line_prefix)
> >-    out << '\n';
> >-
>
> I think we need to keep this newline. It separates the cause (the leaf
> node change) from the impacted interfaces (the top level nodes).

I disagree.

I think the "impacted interfaces" block should be indented w.r.t leaf
node change's introductory text or separated from the whole node
change section by an extra new line, but not both. I'd prefer the
former as this should be a parent-child relationship in the text
output tree rather than a sibling one.

Phrased another way, the text would be equally meaningful like this
(adapting tests/data/test-diff-filter/test42-leaf-report-output-0.txt;
though abitool.py's short report would need a tweak; it needs a tweak
anyway for the case of 1 impacted interface):

'struct leaf at test42-leaf-report-v0.cc:4:1' changed:
  one impacted interface:
    function void fn(C&)
 type size changed from 32 to 64 (in bits)
  1 data member insertion:
    'char leaf::m1', at offset 32 (in bits) at test42-leaf-report-v1.cc:7:1

Happy to discuss further.

> With the above addressed, feel free to add
> Reviewed-by: Matthias Maennich <maennich@google.com>
>
> Cheers,
> Matthias

Regards,
Giuliano.

> >   size_t num_impacted_interfaces = impacted_artifacts->size();
> >   if (num_impacted_interfaces == 1)
> >     out << indent << "one impacted interface:\n";
> >@@ -1424,9 +1421,6 @@ maybe_report_interfaces_impacted_by_diff(const diff      *d,
> > /// @param out the output stream to report to.
> > ///
> > /// @param indent the white space string to use for indentation.
> >-///
> >-/// @param new_line_prefix if set to true, it means there is going to
> >-/// be a new line emitted before the report.
> > void
> > maybe_report_interfaces_impacted_by_diff(const diff_sptr      &d,
> >                                        ostream                &out,
> >diff --git a/src/abg-reporter-priv.h b/src/abg-reporter-priv.h
> >index 7471c74f..04803f43 100644
> >--- a/src/abg-reporter-priv.h
> >+++ b/src/abg-reporter-priv.h
> >@@ -151,7 +151,8 @@ represent(const diff_context& ctxt,
> > void
> > represent_data_member(var_decl_sptr d,
> >                     const diff_context_sptr& ctxt,
> >-                    ostream& out);
> >+                    ostream& out,
> >+                    const string& indent);
> >
> > void
> > maybe_show_relative_offset_change(const var_diff_sptr &diff,
> >@@ -244,14 +245,12 @@ maybe_report_unreachable_type_changes(const corpus_diff& d,
> > void
> > maybe_report_interfaces_impacted_by_diff(const diff           *d,
> >                                        ostream                &out,
> >-                                       const string           &indent,
> >-                                       bool new_line_prefix = true);
> >+                                       const string           &indent);
> >
> > void
> > maybe_report_interfaces_impacted_by_diff(const diff_sptr      &d,
> >                                        ostream                &out,
> >-                                       const string           &indent,
> >-                                       bool new_line_prefix = false);
> >+                                       const string           &indent);
> >
> > } // end namespace comparison
> > } // end namespace abigail
> >diff --git a/tests/data/test-abicompat/test5-fn-changed-report-0.txt b/tests/data/test-abicompat/test5-fn-changed-report-0.txt
> >index 96d48ccf..04676908 100644
> >--- a/tests/data/test-abicompat/test5-fn-changed-report-0.txt
> >+++ b/tests/data/test-abicompat/test5-fn-changed-report-0.txt
> >@@ -15,4 +15,3 @@ have sub-types that are different from what application 'test5-fn-changed-app' e
> >         1 data member deletion:
> >           'unsigned char S1::m1', at offset 32 (in bits)
> >
> >-
> >diff --git a/tests/data/test-abicompat/test5-fn-changed-report-1.txt b/tests/data/test-abicompat/test5-fn-changed-report-1.txt
> >index 3c8c4a8f..b39f650d 100644
> >--- a/tests/data/test-abicompat/test5-fn-changed-report-1.txt
> >+++ b/tests/data/test-abicompat/test5-fn-changed-report-1.txt
> >@@ -15,4 +15,3 @@ have sub-types that are different from what application 'test5-fn-changed-app' e
> >         1 data member deletion:
> >           'unsigned char S1::m1', at offset 32 (in bits) at test5-fn-changed-libapp-v0.h:11:1
> >
> >-
> >diff --git a/tests/data/test-abicompat/test6-var-changed-report-0.txt b/tests/data/test-abicompat/test6-var-changed-report-0.txt
> >index 5d2bd89c..f5077879 100644
> >--- a/tests/data/test-abicompat/test6-var-changed-report-0.txt
> >+++ b/tests/data/test-abicompat/test6-var-changed-report-0.txt
> >@@ -13,4 +13,3 @@ have sub-types that are different from what application 'test6-var-changed-app'
> >       1 data member deletion:
> >         'unsigned char S1::m1', at offset 32 (in bits)
> >
> >-
> >diff --git a/tests/data/test-abicompat/test6-var-changed-report-1.txt b/tests/data/test-abicompat/test6-var-changed-report-1.txt
> >index 697929f0..5b78c83c 100644
> >--- a/tests/data/test-abicompat/test6-var-changed-report-1.txt
> >+++ b/tests/data/test-abicompat/test6-var-changed-report-1.txt
> >@@ -13,4 +13,3 @@ have sub-types that are different from what application 'test6-var-changed-app'
> >       1 data member deletion:
> >         'unsigned char S1::m1', at offset 32 (in bits) at test6-var-changed-libapp-v0.h:11:1
> >
> >-
> >diff --git a/tests/data/test-abicompat/test7-fn-changed-report-0.txt b/tests/data/test-abicompat/test7-fn-changed-report-0.txt
> >index 19db76e3..6a34710d 100644
> >--- a/tests/data/test-abicompat/test7-fn-changed-report-0.txt
> >+++ b/tests/data/test-abicompat/test7-fn-changed-report-0.txt
> >@@ -9,7 +9,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >       type name changed from 'float' to 'int'
> >       type size hasn't changed
> >
> >-
> >   [C] 'function void print(const Student)' has some indirect sub-type changes:
> >     parameter 1 of type 'const Student' has sub-type changes:
> >       in unqualified underlying type 'struct Student':
> >diff --git a/tests/data/test-abidiff-exit/test-leaf3-report.txt b/tests/data/test-abidiff-exit/test-leaf3-report.txt
> >index 138c4b5a..7602e761 100644
> >--- a/tests/data/test-abidiff-exit/test-leaf3-report.txt
> >+++ b/tests/data/test-abidiff-exit/test-leaf3-report.txt
> >@@ -10,7 +10,6 @@ Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
> >       type name changed from 'sto1' to 'stn1'
> >       type size hasn't changed
> >
> >-
> >   [C] 'function void fn2(sto2)' at test-leaf3-v1.c:13:1 has some sub-type changes:
> >     parameter 1 of type 'struct sto2' changed:
> >       type name changed from 'sto2' to 'stn2'
> >diff --git a/tests/data/test-abidiff-exit/test-loc-with-locs-report.txt b/tests/data/test-abidiff-exit/test-loc-with-locs-report.txt
> >index 53672744..bc37ff53 100644
> >--- a/tests/data/test-abidiff-exit/test-loc-with-locs-report.txt
> >+++ b/tests/data/test-abidiff-exit/test-loc-with-locs-report.txt
> >@@ -9,4 +9,3 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >       type size hasn't changed
> >
> >
> >-
> >diff --git a/tests/data/test-abidiff-exit/test-loc-without-locs-report.txt b/tests/data/test-abidiff-exit/test-loc-without-locs-report.txt
> >index 6893e3fc..56c41d79 100644
> >--- a/tests/data/test-abidiff-exit/test-loc-without-locs-report.txt
> >+++ b/tests/data/test-abidiff-exit/test-loc-without-locs-report.txt
> >@@ -9,4 +9,3 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >       type size hasn't changed
> >
> >
> >-
> >diff --git a/tests/data/test-abidiff/test-PR18791-report0.txt b/tests/data/test-abidiff/test-PR18791-report0.txt
> >index 5758077d..7e16fe32 100644
> >--- a/tests/data/test-abidiff/test-PR18791-report0.txt
> >+++ b/tests/data/test-abidiff/test-PR18791-report0.txt
> >@@ -48,9 +48,7 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >                                          struct std::__detail::_List_node_base
> >                                        2 data member deletions:
> >                                          'std::__detail::_List_node_base* std::__detail::_List_node_base::_M_next', at offset 0 (in bits)
> >-
> >                                          'std::__detail::_List_node_base* std::__detail::_List_node_base::_M_prev', at offset 64 (in bits)
> >-
> >                                        1 data member insertion:
> >                                          'unsigned long int std::_List_node<long unsigned int>::_M_data', at offset 128 (in bits)
> >                                      and name of 'std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl::_M_node' changed to 'std::__cxx11::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl::_M_node'
> >diff --git a/tests/data/test-abidiff/test-enum0-report.txt b/tests/data/test-abidiff/test-enum0-report.txt
> >index c7c5a682..1cd7eaaf 100644
> >--- a/tests/data/test-abidiff/test-enum0-report.txt
> >+++ b/tests/data/test-abidiff/test-enum0-report.txt
> >@@ -3,7 +3,6 @@
> >     type size hasn't changed
> >     1 enumerator deletion:
> >       'E::e2' value '1'
> >-
> >     1 enumerator insertion:
> >       'E::e1' value '1'
> >
> >diff --git a/tests/data/test-abidiff/test-enum1-report.txt b/tests/data/test-abidiff/test-enum1-report.txt
> >index f1198ef9..7e8acf80 100644
> >--- a/tests/data/test-abidiff/test-enum1-report.txt
> >+++ b/tests/data/test-abidiff/test-enum1-report.txt
> >@@ -3,7 +3,6 @@
> >     type size hasn't changed
> >     1 enumerator insertion:
> >       'E::e1' value '1'
> >-
> >     1 enumerator change:
> >       'E::e2' from value '1' to '2'
> >
> >diff --git a/tests/data/test-abidiff/test-struct1-report.txt b/tests/data/test-abidiff/test-struct1-report.txt
> >index 39b71e55..e334bf1a 100644
> >--- a/tests/data/test-abidiff/test-struct1-report.txt
> >+++ b/tests/data/test-abidiff/test-struct1-report.txt
> >@@ -6,7 +6,6 @@
> >
> >     1 data member deletion:
> >       'char s0::m1', at offset 96 (in bits)
> >-
> >     1 data member insertion:
> >       'double s0::m01', at offset 128 (in bits)
> >     2 data member changes:
> >diff --git a/tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt b/tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt
> >index 29f823ec..aab271ff 100644
> >--- a/tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt
> >+++ b/tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt
> >@@ -100,7 +100,6 @@ Variables changes summary: 0 Removed, 0 Changed, 3 Added variables
> >          type of 'union {lttng_event_perf_counter_ctx perf_counter; struct {char* provider_name; char* ctx_name;} app_ctx; char padding[288];} lttng_event_context::u' changed:
> >            type name changed from '__anonymous_union__4' to '__anonymous_union__5'
> >            type size hasn't changed
> >-
> >            3 data member changes:
> >             name of '__anonymous_union__4::app_ctx' changed to '__anonymous_union__5::app_ctx'
> >             name of '__anonymous_union__4::padding' changed to '__anonymous_union__5::padding'
> >@@ -171,7 +170,6 @@ Variables changes summary: 0 Removed, 0 Changed, 3 Added variables
> >           type size changed from 35008 to 35072 (in bits)
> >           1 data member deletion:
> >             'char lttng_session::padding[12]', at offset 34912 (in bits)
> >-
> >           1 data member insertion:
> >             'union {char padding[12]; void* ptr;} lttng_session::extended', at offset 34944 (in bits)
> >
> >@@ -208,7 +206,6 @@ Variables changes summary: 0 Removed, 0 Changed, 3 Added variables
> >           1 data member deletion:
> >             'bool lttng_notification::owns_elements', at offset 128 (in bits)
> >
> >-
> >   [C] 'function lttng_notification_channel_status lttng_notification_channel_subscribe(lttng_notification_channel*, const lttng_condition*)' has some indirect sub-type changes:
> >     return type changed:
> >       enum type 'enum lttng_notification_channel_status' changed, as reported earlier
> >@@ -289,7 +286,6 @@ Variables changes summary: 0 Removed, 0 Changed, 3 Added variables
> >                            'op_type::AST_OP_BIN_AND' value '10'
> >                            'op_type::AST_OP_BIN_OR' value '11'
> >                            'op_type::AST_OP_BIN_XOR' value '12'
> >-
> >                          5 enumerator insertions:
> >                            'op_type::AST_OP_BIT_RSHIFT' value '6'
> >                            'op_type::AST_OP_BIT_LSHIFT' value '7'
> >@@ -319,7 +315,6 @@ Variables changes summary: 0 Removed, 0 Changed, 3 Added variables
> >                          type size hasn't changed
> >                          1 enumerator deletion:
> >                            'unary_op_type::AST_UNARY_BIN_NOT' value '4'
> >-
> >                          1 enumerator insertion:
> >                            'unary_op_type::AST_UNARY_BIT_NOT' value '4'
> >
> >diff --git a/tests/data/test-diff-dwarf/test13-report.txt b/tests/data/test-diff-dwarf/test13-report.txt
> >index cf29a4fd..833879c7 100644
> >--- a/tests/data/test-diff-dwarf/test13-report.txt
> >+++ b/tests/data/test-diff-dwarf/test13-report.txt
> >@@ -12,7 +12,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >            type name changed from 'int' to 'unsigned int'
> >            type size hasn't changed
> >
> >-
> >          type of 'unsigned int S::m2' changed:
> >            type name changed from 'unsigned int' to 'long long int'
> >            type size changed from 32 to 64 (in bits)
> >diff --git a/tests/data/test-diff-dwarf/test38-union-report-0.txt b/tests/data/test-diff-dwarf/test38-union-report-0.txt
> >index f7a75df7..fd9708e6 100644
> >--- a/tests/data/test-diff-dwarf/test38-union-report-0.txt
> >+++ b/tests/data/test-diff-dwarf/test38-union-report-0.txt
> >@@ -9,7 +9,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >         type size hasn't changed
> >         1 data member deletion:
> >           'int some_union_type::m0'
> >-
> >         type changed from:
> >           union some_union_type{int m0; char m1; S m2;}
> >         to:
> >diff --git a/tests/data/test-diff-dwarf/test40-report-0.txt b/tests/data/test-diff-dwarf/test40-report-0.txt
> >index d0b8c52c..f0f9e1a1 100644
> >--- a/tests/data/test-diff-dwarf/test40-report-0.txt
> >+++ b/tests/data/test-diff-dwarf/test40-report-0.txt
> >@@ -9,7 +9,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >         type size changed from 96 to 64 (in bits)
> >         1 data member deletion:
> >           'int S2::to_remove', at offset 0 (in bits)
> >-
> >         2 data member changes:
> >          'int S2::m0' offset changed from 32 to 0 (in bits) (by -32 bits)
> >          'char S2::m1' offset changed from 64 to 32 (in bits) (by -32 bits)
> >@@ -24,7 +23,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >            type size hasn't changed
> >
> >
> >-
> >   [C] 'function int foo(S1*)' has some indirect sub-type changes:
> >     parameter 1 of type 'S1*' has sub-type changes:
> >       in pointed to type 'struct S1':
> >diff --git a/tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt b/tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt
> >index f0a25a2e..44918baa 100644
> >--- a/tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt
> >+++ b/tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt
> >@@ -19,7 +19,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >     return type changed:
> >       type name changed from 'std::tuple<STR&&>' to 'std::tuple<STR &&>'
> >       type size hasn't changed
> >-
> >       1 base class deletion:
> >         struct std::_Tuple_impl<0ul, STR&&>
> >       1 base class insertion:
> >diff --git a/tests/data/test-diff-dwarf/test43-PR22913-report-0.txt b/tests/data/test-diff-dwarf/test43-PR22913-report-0.txt
> >index 1c0c773d..60681336 100644
> >--- a/tests/data/test-diff-dwarf/test43-PR22913-report-0.txt
> >+++ b/tests/data/test-diff-dwarf/test43-PR22913-report-0.txt
> >@@ -12,4 +12,3 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >             'char m2', at offset 8 (in bits)
> >
> >
> >-
> >diff --git a/tests/data/test-diff-filter/test10-report.txt b/tests/data/test-diff-filter/test10-report.txt
> >index bdc31fd0..5a505fc3 100644
> >--- a/tests/data/test-diff-filter/test10-report.txt
> >+++ b/tests/data/test-diff-filter/test10-report.txt
> >@@ -16,4 +16,3 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >           'unsigned int S::m', at offset 0 (in bits)
> >
> >
> >-
> >diff --git a/tests/data/test-diff-filter/test18-report.txt b/tests/data/test-diff-filter/test18-report.txt
> >index 0d30ef39..6ade5bdf 100644
> >--- a/tests/data/test-diff-filter/test18-report.txt
> >+++ b/tests/data/test-diff-filter/test18-report.txt
> >@@ -14,4 +14,3 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >
> >
> >
> >-
> >diff --git a/tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt b/tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt
> >index f847d32e..99c14329 100644
> >--- a/tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt
> >+++ b/tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt
> >@@ -7,10 +7,8 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >     parameter 1 of type 'int' changed:
> >       type name changed from 'int' to 'float'
> >       type size hasn't changed
> >-
> >     parameter 2 of type 'int' changed:
> >       type name changed from 'int' to 'float'
> >       type size hasn't changed
> >
> >
> >-
> >diff --git a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt
> >index b78215b0..5def3a08 100644
> >--- a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt
> >+++ b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt
> >@@ -1200,7 +1200,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >           '__anonymous_enum__1::c_report_state_stream' value '142'
> >           '__anonymous_enum__1::c_report_stream' value '143'
> >           '__anonymous_enum__1::c_unload_library' value '144'
> >-
> >         92 enumerator changes:
> >           '__anonymous_enum__::c_process_get_func_handles' from value '32' to '33'
> >           '__anonymous_enum__::c_process_wait_shutdown' from value '33' to '34'
> >@@ -1304,7 +1303,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >          type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} VarDesc::flags' changed:
> >            type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags'
> >            type size hasn't changed
> >-
> >            1 data member changes (1 filtered):
> >             anonymous data member at offset 0 (in bits) changed from:
> >               struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}
> >@@ -1319,7 +1317,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >         entity changed from 'struct InitTableEntry' to compatible type 'typedef InitTableEntry'
> >           type name changed from 'InitTableEntry' to '__anonymous_struct__2'
> >           type size hasn't changed
> >-
> >           1 data member change:
> >            type of 'void ()* InitTableEntry::func' changed:
> >              in pointed to type 'function type void ()':
> >@@ -1348,7 +1345,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >                type size changed from 2752 to 5504 (in bits)
> >                1 data member deletion:
> >                  'mutex_t Engine::m_ptr_lock', at offset 1344 (in bits)
> >-
> >                7 data member insertions:
> >                  'PtrDataTable Engine::m_targetptr_set', at offset 1664 (in bits)
> >                  'StreamMap Engine::m_stream_map', at offset 3072 (in bits)
> >@@ -1370,20 +1366,16 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >                        underlying type 'class std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' changed:
> >                          type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' to 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >'
> >                          type size hasn't changed
> >-
> >                          1 data member change:
> >                           type of 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' changed:
> >                             entity changed from 'struct std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to compatible type 'typedef std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type'
> >                               type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >'
> >                               type size hasn't changed
> >-
> >                               1 base class deletion:
> >                                 class std::allocator<std::_Rb_tree_node<PtrData> >
> >                               2 data member deletions:
> >                                 'std::_Rb_tree_node_base std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_header', at offset 64 (in bits)
> >-
> >                                 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::size_type std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_node_count', at offset 320 (in bits)
> >-
> >                               1 data member change:
> >                                type of 'std::less<PtrData> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_key_compare' changed:
> >                                  type name changed from 'std::less<PtrData>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>'
> >diff --git a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt
> >index ccaf8126..3bc8f6d7 100644
> >--- a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt
> >+++ b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt
> >@@ -1200,7 +1200,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >           '__anonymous_enum__1::c_report_state_stream' value '142'
> >           '__anonymous_enum__1::c_report_stream' value '143'
> >           '__anonymous_enum__1::c_unload_library' value '144'
> >-
> >         92 enumerator changes:
> >           '__anonymous_enum__::c_process_get_func_handles' from value '32' to '33' at liboffload_error_codes.h:38:1
> >           '__anonymous_enum__::c_process_wait_shutdown' from value '33' to '34' at liboffload_error_codes.h:38:1
> >@@ -1304,7 +1303,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >          type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} VarDesc::flags' changed:
> >            type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags'
> >            type size hasn't changed
> >-
> >            1 data member changes (1 filtered):
> >             anonymous data member at offset 0 (in bits) changed from:
> >               struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}
> >@@ -1319,7 +1317,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >         entity changed from 'struct InitTableEntry' to compatible type 'typedef InitTableEntry' at offload_table.h:296:1
> >           type name changed from 'InitTableEntry' to '__anonymous_struct__2'
> >           type size hasn't changed
> >-
> >           1 data member change:
> >            type of 'void ()* InitTableEntry::func' changed:
> >              in pointed to type 'function type void ()':
> >@@ -1348,7 +1345,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >                type size changed from 2752 to 5504 (in bits)
> >                1 data member deletion:
> >                  'mutex_t Engine::m_ptr_lock', at offset 1344 (in bits) at offload_engine.h:474:1
> >-
> >                7 data member insertions:
> >                  'PtrDataTable Engine::m_targetptr_set', at offset 1664 (in bits) at offload_engine.h:630:1
> >                  'StreamMap Engine::m_stream_map', at offset 3072 (in bits) at offload_engine.h:637:1
> >@@ -1370,20 +1366,16 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >                        underlying type 'class std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' at stl_tree.h:357:1 changed:
> >                          type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' to 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >'
> >                          type size hasn't changed
> >-
> >                          1 data member change:
> >                           type of 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' changed:
> >                             entity changed from 'struct std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to compatible type 'typedef std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type' at stl_set.h:115:1
> >                               type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >'
> >                               type size hasn't changed
> >-
> >                               1 base class deletion:
> >                                 class std::allocator<std::_Rb_tree_node<PtrData> > at allocator.h:95:1
> >                               2 data member deletions:
> >                                 'std::_Rb_tree_node_base std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_header', at offset 64 (in bits) at stl_tree.h:593:1
> >-
> >                                 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::size_type std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_node_count', at offset 320 (in bits) at stl_tree.h:594:1
> >-
> >                               1 data member change:
> >                                type of 'std::less<PtrData> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_key_compare' changed:
> >                                  type name changed from 'std::less<PtrData>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>'
> >diff --git a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt
> >index 44e78935..d91de66b 100644
> >--- a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt
> >+++ b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt
> >@@ -1200,7 +1200,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >           '__anonymous_enum__1::c_report_state_stream' value '142'
> >           '__anonymous_enum__1::c_report_stream' value '143'
> >           '__anonymous_enum__1::c_unload_library' value '144'
> >-
> >         92 enumerator changes:
> >           '__anonymous_enum__::c_process_get_func_handles' from value '32' to '33' at liboffload_error_codes.h:38:1
> >           '__anonymous_enum__::c_process_wait_shutdown' from value '33' to '34' at liboffload_error_codes.h:38:1
> >@@ -1304,7 +1303,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >          type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} VarDesc::flags' changed:
> >            type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags'
> >            type size hasn't changed
> >-
> >            1 data member changes (1 filtered):
> >             anonymous data member at offset 0 (in bytes) changed from:
> >               struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}
> >@@ -1319,7 +1317,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >         entity changed from 'struct InitTableEntry' to compatible type 'typedef InitTableEntry' at offload_table.h:296:1
> >           type name changed from 'InitTableEntry' to '__anonymous_struct__2'
> >           type size hasn't changed
> >-
> >           1 data member change:
> >            type of 'void ()* InitTableEntry::func' changed:
> >              in pointed to type 'function type void ()':
> >@@ -1348,7 +1345,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >                type size changed from 0x158 to 0x2b0 (in bytes)
> >                1 data member deletion:
> >                  'mutex_t Engine::m_ptr_lock', at offset 0xa8 (in bytes) at offload_engine.h:474:1
> >-
> >                7 data member insertions:
> >                  'PtrDataTable Engine::m_targetptr_set', at offset 0xd0 (in bytes) at offload_engine.h:630:1
> >                  'StreamMap Engine::m_stream_map', at offset 0x180 (in bytes) at offload_engine.h:637:1
> >@@ -1370,20 +1366,16 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >                        underlying type 'class std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' at stl_tree.h:357:1 changed:
> >                          type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' to 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >'
> >                          type size hasn't changed
> >-
> >                          1 data member change:
> >                           type of 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' changed:
> >                             entity changed from 'struct std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to compatible type 'typedef std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type' at stl_set.h:115:1
> >                               type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >'
> >                               type size hasn't changed
> >-
> >                               1 base class deletion:
> >                                 class std::allocator<std::_Rb_tree_node<PtrData> > at allocator.h:95:1
> >                               2 data member deletions:
> >                                 'std::_Rb_tree_node_base std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_header', at offset 0x8 (in bytes) at stl_tree.h:593:1
> >-
> >                                 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::size_type std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_node_count', at offset 0x28 (in bytes) at stl_tree.h:594:1
> >-
> >                               1 data member change:
> >                                type of 'std::less<PtrData> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_key_compare' changed:
> >                                  type name changed from 'std::less<PtrData>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>'
> >diff --git a/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt b/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt
> >index c9cb9246..306a9863 100644
> >--- a/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt
> >+++ b/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt
> >@@ -116,7 +116,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >           '__anonymous_enum__1::c_report_state_stream' value '142'
> >           '__anonymous_enum__1::c_report_stream' value '143'
> >           '__anonymous_enum__1::c_unload_library' value '144'
> >-
> >         92 enumerator changes:
> >           '__anonymous_enum__::c_process_get_func_handles' from value '32' to '33'
> >           '__anonymous_enum__::c_process_wait_shutdown' from value '33' to '34'
> >@@ -220,7 +219,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >          type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} VarDesc::flags' changed:
> >            type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags'
> >            type size hasn't changed
> >-
> >            1 data member changes (1 filtered):
> >             anonymous data member at offset 0 (in bits) changed from:
> >               struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}
> >@@ -235,7 +233,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >         entity changed from 'struct InitTableEntry' to compatible type 'typedef InitTableEntry'
> >           type name changed from 'InitTableEntry' to '__anonymous_struct__2'
> >           type size hasn't changed
> >-
> >           1 data member change:
> >            type of 'void ()* InitTableEntry::func' changed:
> >              in pointed to type 'function type void ()':
> >@@ -264,7 +261,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >                type size changed from 2752 to 5504 (in bits)
> >                1 data member deletion:
> >                  'mutex_t Engine::m_ptr_lock', at offset 1344 (in bits)
> >-
> >                7 data member insertions:
> >                  'PtrDataTable Engine::m_targetptr_set', at offset 1664 (in bits)
> >                  'StreamMap Engine::m_stream_map', at offset 3072 (in bits)
> >@@ -286,20 +282,16 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >                        underlying type 'class std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' changed:
> >                          type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' to 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >'
> >                          type size hasn't changed
> >-
> >                          1 data member change:
> >                           type of 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' changed:
> >                             entity changed from 'struct std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to compatible type 'typedef std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type'
> >                               type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >'
> >                               type size hasn't changed
> >-
> >                               1 base class deletion:
> >                                 class std::allocator<std::_Rb_tree_node<PtrData> >
> >                               2 data member deletions:
> >                                 'std::_Rb_tree_node_base std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_header', at offset 64 (in bits)
> >-
> >                                 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::size_type std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_node_count', at offset 320 (in bits)
> >-
> >                               1 data member change:
> >                                type of 'std::less<PtrData> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_key_compare' changed:
> >                                  type name changed from 'std::less<PtrData>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>'
> >diff --git a/tests/data/test-diff-filter/test36-report-0.txt b/tests/data/test-diff-filter/test36-report-0.txt
> >index 08692c1e..22e614d8 100644
> >--- a/tests/data/test-diff-filter/test36-report-0.txt
> >+++ b/tests/data/test-diff-filter/test36-report-0.txt
> >@@ -13,7 +13,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >            type size hasn't changed
> >
> >
> >-
> >   [C] 'function int foo_2(S*)' at test36-2-v1.c:13:1 has some indirect sub-type changes:
> >     parameter 1 of type 'S*' has sub-type changes:
> >       in pointed to type 'struct S' at test36-2-v1.c:6:1:
> >@@ -23,11 +22,9 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >            type name changed from 'int' to 'unsigned int'
> >            type size hasn't changed
> >
> >-
> >          type of 'int S::m1' changed:
> >            type name changed from 'int' to 'unsigned int'
> >            type size hasn't changed
> >
> >
> >
> >-
> >diff --git a/tests/data/test-diff-filter/test42-leaf-report-output-0.txt b/tests/data/test-diff-filter/test42-leaf-report-output-0.txt
> >index 94a0551d..d40a1374 100644
> >--- a/tests/data/test-diff-filter/test42-leaf-report-output-0.txt
> >+++ b/tests/data/test-diff-filter/test42-leaf-report-output-0.txt
> >@@ -7,6 +7,5 @@ Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
> >   type size changed from 32 to 64 (in bits)
> >   1 data member insertion:
> >     'char leaf::m1', at offset 32 (in bits) at test42-leaf-report-v1.cc:7:1
> >-
> >   one impacted interface:
> >     function void fn(C&)
> >diff --git a/tests/data/test-diff-filter/test7-report.txt b/tests/data/test-diff-filter/test7-report.txt
> >index 7e3a4d47..26933033 100644
> >--- a/tests/data/test-diff-filter/test7-report.txt
> >+++ b/tests/data/test-diff-filter/test7-report.txt
> >@@ -7,7 +7,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >     return type changed:
> >       type name changed from 'return_type' to 'other_return_type'
> >       type size hasn't changed
> >-
> >       no data member change (1 filtered);
> >
> >
> >diff --git a/tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt b/tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt
> >index 05d6fcad..873a84cd 100644
> >--- a/tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt
> >+++ b/tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt
> >@@ -54,9 +54,7 @@
> >                                                   struct std::__detail::_List_node_base
> >                                                 2 data member deletions:
> >                                                   'std::__detail::_List_node_base* std::__detail::_List_node_base::_M_next', at offset 0 (in bits)
> >-
> >                                                   'std::__detail::_List_node_base* std::__detail::_List_node_base::_M_prev', at offset 64 (in bits)
> >-
> >                                                 1 data member insertion:
> >                                                   'unsigned long int std::_List_node<long unsigned int>::_M_data', at offset 128 (in bits)
> >                                               and name of 'std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl::_M_node' changed to 'std::__cxx11::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl::_M_node'
> >diff --git a/tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt b/tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt
> >index c227fa5c..a0cc67c2 100644
> >--- a/tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt
> >+++ b/tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt
> >@@ -10,7 +10,6 @@
> >           type size hasn't changed
> >           1 enumerator insertion:
> >             '__anonymous_enum__1::SEC_OID_TLS_ECDHE_PSK' value '347'
> >-
> >           1 enumerator change:
> >             '__anonymous_enum__1::SEC_OID_TOTAL' from value '347' to '348' at secoidt.h:34:1
> >
> >@@ -34,7 +33,6 @@
> >           type size hasn't changed
> >           1 enumerator insertion:
> >             '__anonymous_enum__1::ssl_kea_ecdh_psk' value '5'
> >-
> >           1 enumerator change:
> >             '__anonymous_enum__::ssl_kea_size' from value '5' to '6' at sslt.h:40:1
> >
> >@@ -52,7 +50,6 @@
> >                  type size hasn't changed
> >                  1 enumerator deletion:
> >                    '__anonymous_enum__::ssl_auth_rsa' value '1'
> >-
> >                  7 enumerator insertions:
> >                    '__anonymous_enum__::ssl_auth_rsa_decrypt' value '1'
> >                    '__anonymous_enum__::ssl_auth_ecdh_rsa' value '5'
> >@@ -114,7 +111,6 @@
> >                                              type size hasn't changed
> >                                              1 enumerator insertion:
> >                                                '__anonymous_enum__1::SEC_OID_TLS_ECDHE_PSK' value '347'
> >-
> >                                              1 enumerator change:
> >                                                '__anonymous_enum__1::SEC_OID_TOTAL' from value '347' to '348' at secoidt.h:34:1
> >
> >diff --git a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt
> >index bf081f52..70b41ddd 100644
> >--- a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt
> >+++ b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt
> >@@ -25,7 +25,6 @@
> >         underlying type 'enum __anonymous_enum__2' at spice.h:471:1 changed:
> >           type name changed from '__anonymous_enum__2' to 'SpiceImageCompression'
> >           type size hasn't changed
> >-
> >           7 enumerator deletions:
> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_INVALID' value '0'
> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_OFF' value '1'
> >@@ -34,7 +33,6 @@
> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_QUIC' value '4'
> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_GLZ' value '5'
> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_LZ' value '6'
> >-
> >           9 enumerator insertions:
> >             'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0'
> >             'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1'
> >diff --git a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt
> >index 7b86b964..0b909f90 100644
> >--- a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt
> >+++ b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt
> >@@ -25,7 +25,6 @@
> >         underlying type 'enum __anonymous_enum__2' at spice.h:471:1 changed:
> >           type name changed from '__anonymous_enum__2' to 'SpiceImageCompression'
> >           type size hasn't changed
> >-
> >           7 enumerator deletions:
> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_INVALID' value '0'
> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_OFF' value '1'
> >@@ -34,7 +33,6 @@
> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_QUIC' value '4'
> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_GLZ' value '5'
> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_LZ' value '6'
> >-
> >           9 enumerator insertions:
> >             'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0'
> >             'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1'
> >diff --git a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt
> >index 3d20caf1..c247ef95 100644
> >--- a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt
> >+++ b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt
> >@@ -239,15 +239,10 @@
> >                                                  type size changed from 1280 to 256 (in bits)
> >                                                  5 data member deletions:
> >                                                    'RedsSASL RedsStream::sasl', at offset 256 (in bits) at reds.h:78:1
> >-
> >                                                    'SpiceChannelEventInfo* RedsStream::info', at offset 1024 (in bits) at reds.h:85:1
> >-
> >                                                    'typedef ssize_t (RedsStream*, void*, typedef size_t)* RedsStream::read', at offset 1088 (in bits) at reds.h:88:1
> >-
> >                                                    'typedef ssize_t (RedsStream*, void*, typedef size_t)* RedsStream::write', at offset 1152 (in bits) at reds.h:89:1
> >-
> >                                                    'typedef ssize_t (RedsStream*, const iovec*, int)* RedsStream::writev', at offset 1216 (in bits) at reds.h:90:1
> >-
> >                                                  1 data member change:
> >                                                   type of 'SSL* RedsStream::ssl' changed:
> >                                                     in pointed to type 'typedef SSL' at reds_stream.h:32:1:
> >@@ -257,193 +252,99 @@
> >                                                         type size changed from 5504 to 0 (in bits)
> >                                                         94 data member deletions:
> >                                                           'int ssl_st::version', at offset 0 (in bits) at ssl.h:1070:1
> >-
> >                                                           'int ssl_st::type', at offset 32 (in bits) at ssl.h:1071:1
> >-
> >                                                           'const SSL_METHOD* ssl_st::method', at offset 64 (in bits) at ssl.h:1073:1
> >-
> >                                                           'BIO* ssl_st::rbio', at offset 128 (in bits) at ssl.h:1080:1
> >-
> >                                                           'BIO* ssl_st::wbio', at offset 192 (in bits) at ssl.h:1081:1
> >-
> >                                                           'BIO* ssl_st::bbio', at offset 256 (in bits) at ssl.h:1082:1
> >-
> >                                                           'int ssl_st::rwstate', at offset 320 (in bits) at ssl.h:1093:1
> >-
> >                                                           'int ssl_st::in_handshake', at offset 352 (in bits) at ssl.h:1096:1
> >-
> >                                                           'int (SSL*)* ssl_st::handshake_func', at offset 384 (in bits) at ssl.h:1097:1
> >-
> >                                                           'int ssl_st::server', at offset 448 (in bits) at ssl.h:1107:1
> >-
> >                                                           'int ssl_st::new_session', at offset 480 (in bits) at ssl.h:1109:1
> >-
> >                                                           'int ssl_st::quiet_shutdown', at offset 512 (in bits) at ssl.h:1113:1
> >-
> >                                                           'int ssl_st::shutdown', at offset 544 (in bits) at ssl.h:1114:1
> >-
> >                                                           'int ssl_st::state', at offset 576 (in bits) at ssl.h:1116:1
> >-
> >                                                           'int ssl_st::rstate', at offset 608 (in bits) at ssl.h:1117:1
> >-
> >                                                           'BUF_MEM* ssl_st::init_buf', at offset 640 (in bits) at ssl.h:1119:1
> >-
> >                                                           'void* ssl_st::init_msg', at offset 704 (in bits) at ssl.h:1120:1
> >-
> >                                                           'int ssl_st::init_num', at offset 768 (in bits) at ssl.h:1121:1
> >-
> >                                                           'int ssl_st::init_off', at offset 800 (in bits) at ssl.h:1122:1
> >-
> >                                                           'unsigned char* ssl_st::packet', at offset 832 (in bits) at ssl.h:1125:1
> >-
> >                                                           'unsigned int ssl_st::packet_length', at offset 896 (in bits) at ssl.h:1126:1
> >-
> >                                                           'ssl2_state_st* ssl_st::s2', at offset 960 (in bits) at ssl.h:1128:1
> >-
> >                                                           'ssl3_state_st* ssl_st::s3', at offset 1024 (in bits) at ssl.h:1129:1
> >-
> >                                                           'dtls1_state_st* ssl_st::d1', at offset 1088 (in bits) at ssl.h:1130:1
> >-
> >                                                           'int ssl_st::read_ahead', at offset 1152 (in bits) at ssl.h:1132:1
> >-
> >                                                           'void (int, int, int, void*, typedef size_t, SSL*, void*)* ssl_st::msg_callback', at offset 1216 (in bits) at ssl.h:1136:1
> >-
> >                                                           'void* ssl_st::msg_callback_arg', at offset 1280 (in bits) at ssl.h:1137:1
> >-
> >                                                           'int ssl_st::hit', at offset 1344 (in bits) at ssl.h:1139:1
> >-
> >                                                           'X509_VERIFY_PARAM* ssl_st::param', at offset 1408 (in bits) at ssl.h:1141:1
> >-
> >                                                           'stack_st_SSL_CIPHER* ssl_st::cipher_list', at offset 1472 (in bits) at ssl.h:1149:1
> >-
> >                                                           'stack_st_SSL_CIPHER* ssl_st::cipher_list_by_id', at offset 1536 (in bits) at ssl.h:1150:1
> >-
> >                                                           'int ssl_st::mac_flags', at offset 1600 (in bits) at ssl.h:1154:1
> >-
> >                                                           'EVP_CIPHER_CTX* ssl_st::enc_read_ctx', at offset 1664 (in bits) at ssl.h:1155:1
> >-
> >                                                           'EVP_MD_CTX* ssl_st::read_hash', at offset 1728 (in bits) at ssl.h:1156:1
> >-
> >                                                           'COMP_CTX* ssl_st::expand', at offset 1792 (in bits) at ssl.h:1158:1
> >-
> >                                                           'EVP_CIPHER_CTX* ssl_st::enc_write_ctx', at offset 1856 (in bits) at ssl.h:1163:1
> >-
> >                                                           'EVP_MD_CTX* ssl_st::write_hash', at offset 1920 (in bits) at ssl.h:1164:1
> >-
> >                                                           'COMP_CTX* ssl_st::compress', at offset 1984 (in bits) at ssl.h:1166:1
> >-
> >                                                           'cert_st* ssl_st::cert', at offset 2048 (in bits) at ssl.h:1175:1
> >-
> >                                                           'unsigned int ssl_st::sid_ctx_length', at offset 2112 (in bits) at ssl.h:1179:1
> >-
> >                                                           'unsigned char ssl_st::sid_ctx[32]', at offset 2144 (in bits) at ssl.h:1180:1
> >-
> >                                                           'SSL_SESSION* ssl_st::session', at offset 2432 (in bits) at ssl.h:1183:1
> >-
> >                                                           'GEN_SESSION_CB ssl_st::generate_session_id', at offset 2496 (in bits) at ssl.h:1186:1
> >-
> >                                                           'int ssl_st::verify_mode', at offset 2560 (in bits) at ssl.h:1189:1
> >-
> >                                                           'int (int, X509_STORE_CTX*)* ssl_st::verify_callback', at offset 2624 (in bits) at ssl.h:1191:1
> >-
> >                                                           'void (const SSL*, int, int)* ssl_st::info_callback', at offset 2688 (in bits) at ssl.h:1193:1
> >-
> >                                                           'int ssl_st::error', at offset 2752 (in bits) at ssl.h:1195:1
> >-
> >                                                           'int ssl_st::error_code', at offset 2784 (in bits) at ssl.h:1196:1
> >-
> >                                                           'KSSL_CTX* ssl_st::kssl_ctx', at offset 2816 (in bits) at ssl.h:1199:1
> >-
> >                                                           'unsigned int (SSL*, const char*, char*, unsigned int, unsigned char*, unsigned int)* ssl_st::psk_client_callback', at offset 2880 (in bits) at ssl.h:1203:1
> >-
> >                                                           'unsigned int (SSL*, const char*, unsigned char*, unsigned int)* ssl_st::psk_server_callback', at offset 2944 (in bits) at ssl.h:1206:1
> >-
> >                                                           'SSL_CTX* ssl_st::ctx', at offset 3008 (in bits) at ssl.h:1210:1
> >-
> >                                                           'int ssl_st::debug', at offset 3072 (in bits) at ssl.h:1213:1
> >-
> >                                                           'long int ssl_st::verify_result', at offset 3136 (in bits) at ssl.h:1216:1
> >-
> >                                                           'CRYPTO_EX_DATA ssl_st::ex_data', at offset 3200 (in bits) at ssl.h:1217:1
> >-
> >                                                           'stack_st_X509_NAME* ssl_st::client_CA', at offset 3328 (in bits) at ssl.h:1220:1
> >-
> >                                                           'int ssl_st::references', at offset 3392 (in bits) at ssl.h:1222:1
> >-
> >                                                           'unsigned long int ssl_st::options', at offset 3456 (in bits) at ssl.h:1223:1
> >-
> >                                                           'unsigned long int ssl_st::mode', at offset 3520 (in bits) at ssl.h:1224:1
> >-
> >                                                           'long int ssl_st::max_cert_list', at offset 3584 (in bits) at ssl.h:1225:1
> >-
> >                                                           'int ssl_st::first_packet', at offset 3648 (in bits) at ssl.h:1226:1
> >-
> >                                                           'int ssl_st::client_version', at offset 3680 (in bits) at ssl.h:1227:1
> >-
> >                                                           'unsigned int ssl_st::max_send_fragment', at offset 3712 (in bits) at ssl.h:1229:1
> >-
> >                                                           'void (SSL*, int, int, unsigned char*, int, void*)* ssl_st::tlsext_debug_cb', at offset 3776 (in bits) at ssl.h:1232:1
> >-
> >                                                           'void* ssl_st::tlsext_debug_arg', at offset 3840 (in bits) at ssl.h:1235:1
> >-
> >                                                           'char* ssl_st::tlsext_hostname', at offset 3904 (in bits) at ssl.h:1236:1
> >-
> >                                                           'int ssl_st::servername_done', at offset 3968 (in bits) at ssl.h:1237:1
> >-
> >                                                           'int ssl_st::tlsext_status_type', at offset 4000 (in bits) at ssl.h:1244:1
> >-
> >                                                           'int ssl_st::tlsext_status_expected', at offset 4032 (in bits) at ssl.h:1246:1
> >-
> >                                                           'stack_st_OCSP_RESPID* ssl_st::tlsext_ocsp_ids', at offset 4096 (in bits) at ssl.h:1248:1
> >-
> >                                                           'X509_EXTENSIONS* ssl_st::tlsext_ocsp_exts', at offset 4160 (in bits) at ssl.h:1249:1
> >-
> >                                                           'unsigned char* ssl_st::tlsext_ocsp_resp', at offset 4224 (in bits) at ssl.h:1251:1
> >-
> >                                                           'int ssl_st::tlsext_ocsp_resplen', at offset 4288 (in bits) at ssl.h:1252:1
> >-
> >                                                           'int ssl_st::tlsext_ticket_expected', at offset 4320 (in bits) at ssl.h:1255:1
> >-
> >                                                           'size_t ssl_st::tlsext_ecpointformatlist_length', at offset 4352 (in bits) at ssl.h:1257:1
> >-
> >                                                           'unsigned char* ssl_st::tlsext_ecpointformatlist', at offset 4416 (in bits) at ssl.h:1258:1
> >-
> >                                                           'size_t ssl_st::tlsext_ellipticcurvelist_length', at offset 4480 (in bits) at ssl.h:1259:1
> >-
> >                                                           'unsigned char* ssl_st::tlsext_ellipticcurvelist', at offset 4544 (in bits) at ssl.h:1260:1
> >-
> >                                                           'void* ssl_st::tlsext_opaque_prf_input', at offset 4608 (in bits) at ssl.h:1264:1
> >-
> >                                                           'size_t ssl_st::tlsext_opaque_prf_input_len', at offset 4672 (in bits) at ssl.h:1265:1
> >-
> >                                                           'TLS_SESSION_TICKET_EXT* ssl_st::tlsext_session_ticket', at offset 4736 (in bits) at ssl.h:1268:1
> >-
> >                                                           'tls_session_ticket_ext_cb_fn ssl_st::tls_session_ticket_ext_cb', at offset 4800 (in bits) at ssl.h:1271:1
> >-
> >                                                           'void* ssl_st::tls_session_ticket_ext_cb_arg', at offset 4864 (in bits) at ssl.h:1272:1
> >-
> >                                                           'tls_session_secret_cb_fn ssl_st::tls_session_secret_cb', at offset 4928 (in bits) at ssl.h:1275:1
> >-
> >                                                           'void* ssl_st::tls_session_secret_cb_arg', at offset 4992 (in bits) at ssl.h:1276:1
> >-
> >                                                           'SSL_CTX* ssl_st::initial_ctx', at offset 5056 (in bits) at ssl.h:1278:1
> >-
> >                                                           'unsigned char* ssl_st::next_proto_negotiated', at offset 5120 (in bits) at ssl.h:1288:1
> >-
> >                                                           'unsigned char ssl_st::next_proto_negotiated_len', at offset 5184 (in bits) at ssl.h:1289:1
> >-
> >                                                           'stack_st_SRTP_PROTECTION_PROFILE* ssl_st::srtp_profiles', at offset 5248 (in bits) at ssl.h:1294:1
> >-
> >                                                           'SRTP_PROTECTION_PROFILE* ssl_st::srtp_profile', at offset 5312 (in bits) at ssl.h:1295:1
> >-
> >                                                           'unsigned int ssl_st::tlsext_heartbeat', at offset 5376 (in bits) at ssl.h:1297:1
> >-
> >                                                           'unsigned int ssl_st::tlsext_hb_pending', at offset 5408 (in bits) at ssl.h:1302:1
> >-
> >                                                           'unsigned int ssl_st::tlsext_hb_seq', at offset 5440 (in bits) at ssl.h:1303:1
> >-
> >                                                           'int ssl_st::renegotiate', at offset 5472 (in bits) at ssl.h:1308:1
> >-
> >                                                   and name of 'RedsStream::ssl' changed to 'RedsStream::priv' at reds_stream.h:42:1
> >
> >
> >@@ -558,7 +459,6 @@
> >         underlying type 'enum __anonymous_enum__2' at spice.h:471:1 changed:
> >           type name changed from '__anonymous_enum__2' to 'SpiceImageCompression'
> >           type size hasn't changed
> >-
> >           7 enumerator deletions:
> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_INVALID' value '0'
> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_OFF' value '1'
> >@@ -567,7 +467,6 @@
> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_QUIC' value '4'
> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_GLZ' value '5'
> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_LZ' value '6'
> >-
> >           9 enumerator insertions:
> >             'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0'
> >             'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1'
> >diff --git a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt
> >index 75ba0a50..11cd5682 100644
> >--- a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt
> >+++ b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt
> >@@ -22,7 +22,6 @@ Leaf changes summary: 11 artifacts changed (7 filtered out)
> >   'enum __anonymous_enum__2 at spice.h:471:1' changed:
> >     type name changed from '__anonymous_enum__2' to 'SpiceImageCompression'
> >     type size hasn't changed
> >-
> >     7 enumerator deletions:
> >       '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_INVALID' value '0'
> >       '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_OFF' value '1'
> >@@ -31,7 +30,6 @@ Leaf changes summary: 11 artifacts changed (7 filtered out)
> >       '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_QUIC' value '4'
> >       '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_GLZ' value '5'
> >       '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_LZ' value '6'
> >-
> >     9 enumerator insertions:
> >       'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0'
> >       'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1'
> >@@ -48,7 +46,6 @@ Leaf changes summary: 11 artifacts changed (7 filtered out)
> >       function int spice_server_set_image_compression(SpiceServer*, spice_image_compression_t)
> >   'typedef spice_image_compression_t at spice.h:479:1' changed:
> >     typedef name changed from spice_image_compression_t to SpiceImageCompression at enums.h:197:1
> >-
> >     2 impacted interfaces:
> >       function spice_image_compression_t spice_server_get_image_compression(SpiceServer*)
> >       function int spice_server_set_image_compression(SpiceServer*, spice_image_compression_t)
> >diff --git a/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt b/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt
> >index f8e60b50..d0381ce5 100644
> >--- a/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt
> >+++ b/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt
> >@@ -60,7 +60,6 @@
> >         type size hasn't changed
> >         1 enumerator insertion:
> >           'tbb::internal::exception_id::eid_bad_tagged_msg_cast' value '20'
> >-
> >         1 enumerator change:
> >           'tbb::internal::exception_id::eid_max' from value '20' to '21' at tbb_exception.h:79:1
> >
> >@@ -129,7 +128,6 @@
> >
> >
> >
> >-
> >                1 member function deletion:
> >                  'method virtual tbb::task* tbb::internal::generic_scheduler::receive_or_steal_task(tbb::internal::reference_count&, bool)' at scheduler.h:391:1, virtual at voffset 7/7
> >
> >@@ -138,11 +136,8 @@
> >
> >                3 data member deletions:
> >                  'unsigned int tbb::internal::generic_scheduler::hint_for_push', at offset 896 (in bits) at scheduler.h:171:1
> >-
> >                  'volatile intptr_t* tbb::internal::generic_scheduler::my_ref_top_priority', at offset 2560 (in bits) at scheduler.h:433:1
> >-
> >                  'volatile uintptr_t* tbb::internal::generic_scheduler::my_ref_reload_epoch', at offset 2752 (in bits) at scheduler.h:443:1
> >-
> >                18 data member changes:
> >                 'uintptr_t tbb::internal::generic_scheduler::my_stealing_threshold' offset changed from 704 to 832 (in bits) (by +128 bits)
> >                 type of 'tbb::internal::market* tbb::internal::generic_scheduler::my_market' changed:
> >diff --git a/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt b/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt
> >index 10816705..89c8efa3 100644
> >--- a/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt
> >+++ b/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt
> >@@ -31,7 +31,6 @@
> >         type size hasn't changed
> >         1 enumerator insertion:
> >           'tbb::internal::exception_id::eid_bad_tagged_msg_cast' value '20'
> >-
> >         1 enumerator change:
> >           'tbb::internal::exception_id::eid_max' from value '20' to '21' at tbb_exception.h:79:1
> >
> >diff --git a/tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt b/tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt
> >index 8f5d0b6b..c39851d3 100644
> >--- a/tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt
> >+++ b/tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt
> >@@ -7,14 +7,11 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >     return type changed:
> >       type name changed from 'int' to 'float'
> >       type size hasn't changed
> >-
> >     parameter 1 of type 'int' changed:
> >       type name changed from 'int' to 'float'
> >       type size hasn't changed
> >-
> >     parameter 2 of type 'int' changed:
> >       type name changed from 'int' to 'float'
> >       type size hasn't changed
> >
> >
> >-
> >diff --git a/tests/data/test-diff-suppr/test35-leaf-report-0.txt b/tests/data/test-diff-suppr/test35-leaf-report-0.txt
> >index 411cc1b4..244455ae 100644
> >--- a/tests/data/test-diff-suppr/test35-leaf-report-0.txt
> >+++ b/tests/data/test-diff-suppr/test35-leaf-report-0.txt
> >@@ -7,6 +7,5 @@ Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
> >   type size changed from 32 to 64 (in bits)
> >   1 data member insertion:
> >     'char leaf::m1', at offset 32 (in bits) at test35-leaf-v1.cc:8:1
> >-
> >   one impacted interface:
> >     function void fn(C&)
> >diff --git a/tests/data/test-diff-suppr/test36-leaf-report-0.txt b/tests/data/test-diff-suppr/test36-leaf-report-0.txt
> >index b12a8a61..f286cc7b 100644
> >--- a/tests/data/test-diff-suppr/test36-leaf-report-0.txt
> >+++ b/tests/data/test-diff-suppr/test36-leaf-report-0.txt
> >@@ -7,7 +7,6 @@ Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
> >   type size changed from 32 to 64 (in bits)
> >   1 data member insertion:
> >     'char leaf1::m1', at offset 32 (in bits) at test36-leaf-v1.cc:7:1
> >-
> >   3 impacted interfaces:
> >     function void interface1(struct_type*)
> >     function void interface2(struct_type&)
> >@@ -20,7 +19,6 @@ Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
> >    type 'struct leaf1' of 'leaf2::member0' changed as reported earlier
> >    and size changed from 32 to 64 (in bits) (by +32 bits)
> >    'char leaf2::member1' offset changed from 32 to 64 (in bits) (by +32 bits)
> >-
> >   3 impacted interfaces:
> >     function void interface1(struct_type*)
> >     function void interface2(struct_type&)
> >diff --git a/tests/data/test-diff-suppr/test41-enumerator-changes-report-0.txt b/tests/data/test-diff-suppr/test41-enumerator-changes-report-0.txt
> >index 4b1681bc..d772bd1d 100644
> >--- a/tests/data/test-diff-suppr/test41-enumerator-changes-report-0.txt
> >+++ b/tests/data/test-diff-suppr/test41-enumerator-changes-report-0.txt
> >@@ -8,7 +8,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >       type size hasn't changed
> >       1 enumerator insertion:
> >         'EnumType1::ee3_inserted' value '3'
> >-
> >       1 enumerator change:
> >         'EnumType1::eenum_count' from value '3' to '4' at test41-enumerator-changes-v1.cc:10:1
> >
> >@@ -18,7 +17,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >       type size hasn't changed
> >       1 enumerator insertion:
> >         'EnumType0::e3_inserted' value '3'
> >-
> >       1 enumerator change:
> >         'EnumType0::enum_count' from value '3' to '4' at test41-enumerator-changes-v1.cc:1:1
> >
> >--
> >2.25.1.481.gfbce0eb801-goog
> >
> >
Matthias Maennich March 16, 2020, 12:29 p.m. UTC | #3
On Mon, Mar 16, 2020 at 10:51:22AM +0000, Giuliano Procida wrote:
>Hi Matthias.
>
>On Sat, 14 Mar 2020 at 20:09, Matthias Maennich <maennich@google.com> wrote:
>>
>> On Thu, Mar 12, 2020 at 06:30:34AM +0000, Android Kernel Team wrote:
>> >There is distributed responsibility for horizontal and vertical
>> >whitespace in the reporting code with indent and new line control
>> >information being manipulated by and passed in and out of functions.
>> >Occasionally, this information is ignored or incorrect and the code
>> >tends to err on the side of more rather than fewer new lines.
>> >
>> >The outcome is that abidiff output sometimes contains extra blank
>> >lines which can be confusing.
>> >
>> >This patch eliminates some of the more obvious cases:
>> >
>> >   - after data member deletions
>> >   - in enumerator change lists
>> >   - after "type size hasn't changed"
>> >   - before listing impacted interfaces
>> >
>> >The patch cleans up the reporting of data members. The code will
>> >either emit indentation, a short description and a new line or do
>> >nothing at all.
>> >
>> >The patch also removes some stray location reporting code for array
>> >diffs which would have produced some oddly placed output. I could not
>> >get this code to trigger as loc = decl->get_location() was never
>> >present on the array decls in question.
>> >
>> >       * src/abg-default-reporter.cc (report): In the enum_diff
>> >       override, simplify new line logic; emit just one
>> >       blank line after each enum. In the array_diff override, remove
>> >       stray location reporting which doesn't appear to ever trigger;
>> >       fix new line logic. In the class_or_union_diff override,
>> >       simplify new line logic for deleted members; pass indentation
>> >       to represent_data_member.
>> >       * src/abg-leaf-reporter.cc (report): In the array_diff
>> >       override, remove stray location reporting which doesn't appear
>> >       to ever trigger; fix new line handling. In the
>> >       class_or_union_diff override, simplify new line logic for
>> >       deleted members; pass indentation to represent_data_member.
>> >       * src/abg-reporter-priv.cc (represent_data_member): Handle
>> >       indentation; fix new line logic.
>> >       (report_size_and_alignment_changes): Fix new line logic
>> >       for "type size hasn't changed" message; simplify new line
>> >       logic.
>> >       (report_name_size_and_alignment_changes): Fix new line logic.
>> >       (maybe_report_interfaces_impacted_by_diff) Remove new line
>> >       prefix code and new_line_prefix argument.
>> >       * src/abg-reporter-priv.h (represent_data_member): Add indent
>> >       argument.
>> >       (maybe_report_interfaces_impacted_by_diff) Remove
>> >       new_line_prefix argument.
>> >       * tests/data/test-*/*report*.txt: Remove some blank lines.
>> >
>> >Signed-off-by: Giuliano Procida <gprocida@google.com>
>> >---
>> > src/abg-default-reporter.cc                   |  43 +++-----
>> > src/abg-leaf-reporter.cc                      |  27 ++---
>> > src/abg-reporter-priv.cc                      |  34 +++---
>> > src/abg-reporter-priv.h                       |   9 +-
>> > .../test5-fn-changed-report-0.txt             |   1 -
>> > .../test5-fn-changed-report-1.txt             |   1 -
>> > .../test6-var-changed-report-0.txt            |   1 -
>> > .../test6-var-changed-report-1.txt            |   1 -
>> > .../test7-fn-changed-report-0.txt             |   1 -
>> > .../test-abidiff-exit/test-leaf3-report.txt   |   1 -
>> > .../test-loc-with-locs-report.txt             |   1 -
>> > .../test-loc-without-locs-report.txt          |   1 -
>> > .../test-abidiff/test-PR18791-report0.txt     |   2 -
>> > tests/data/test-abidiff/test-enum0-report.txt |   1 -
>> > tests/data/test-abidiff/test-enum1-report.txt |   1 -
>> > .../data/test-abidiff/test-struct1-report.txt |   1 -
>> > .../PR25058-liblttng-ctl-report-1.txt         |   5 -
>> > tests/data/test-diff-dwarf/test13-report.txt  |   1 -
>> > .../test-diff-dwarf/test38-union-report-0.txt |   1 -
>> > .../data/test-diff-dwarf/test40-report-0.txt  |   2 -
>> > .../test42-PR21296-clanggcc-report0.txt       |   1 -
>> > .../test43-PR22913-report-0.txt               |   1 -
>> > tests/data/test-diff-filter/test10-report.txt |   1 -
>> > tests/data/test-diff-filter/test18-report.txt |   1 -
>> > ...st23-redundant-fn-parm-change-report-0.txt |   2 -
>> > .../test30-pr18904-rvalueref-report0.txt      |   8 --
>> > .../test30-pr18904-rvalueref-report1.txt      |   8 --
>> > .../test30-pr18904-rvalueref-report2.txt      |   8 --
>> > .../test35-pr18754-no-added-syms-report-0.txt |   8 --
>> > .../data/test-diff-filter/test36-report-0.txt |   3 -
>> > .../test42-leaf-report-output-0.txt           |   1 -
>> > tests/data/test-diff-filter/test7-report.txt  |   1 -
>> > ...-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt |   2 -
>> > .../nss-3.23.0-1.0.fc23.x86_64-report-0.txt   |   4 -
>> > ...l7.x86_64-0.12.8-1.el7.x86_64-report-0.txt |   2 -
>> > ...l7.x86_64-0.12.8-1.el7.x86_64-report-1.txt |   2 -
>> > ...l7.x86_64-0.12.8-1.el7.x86_64-report-2.txt | 101 ------------------
>> > ...l7.x86_64-0.12.8-1.el7.x86_64-report-3.txt |   3 -
>> > ...bb-4.3-3.20141204.fc23.x86_64-report-0.txt |   5 -
>> > ...bb-4.3-3.20141204.fc23.x86_64-report-1.txt |   1 -
>> > .../test10-changed-parm-c-report-0.txt        |   3 -
>> > .../test-diff-suppr/test35-leaf-report-0.txt  |   1 -
>> > .../test-diff-suppr/test36-leaf-report-0.txt  |   2 -
>> > .../test41-enumerator-changes-report-0.txt    |   2 -
>> > 44 files changed, 42 insertions(+), 264 deletions(-)
>> >
>> >diff --git a/src/abg-default-reporter.cc b/src/abg-default-reporter.cc
>> >index 3bfdfbc4..a0b9eeea 100644
>> >--- a/src/abg-default-reporter.cc
>> >+++ b/src/abg-default-reporter.cc
>> >@@ -130,16 +130,14 @@ default_reporter::report(const enum_diff& d, ostream& out,
>> >          i != sorted_deleted_enumerators.end();
>> >          ++i)
>> >       {
>> >-        if (i != sorted_deleted_enumerators.begin())
>> >-          out << "\n";
>> >         out << indent
>> >             << "  '"
>> >             << i->get_qualified_name()
>> >             << "' value '"
>> >             << i->get_value()
>> >             << "'";
>> >+        out << "\n";
>> >       }
>> >-      out << "\n\n";
>> >     }
>> >   if (numins)
>> >     {
>> >@@ -151,16 +149,14 @@ default_reporter::report(const enum_diff& d, ostream& out,
>> >          i != sorted_inserted_enumerators.end();
>> >          ++i)
>> >       {
>> >-        if (i != sorted_inserted_enumerators.begin())
>> >-          out << "\n";
>> >         out << indent
>> >             << "  '"
>> >             << i->get_qualified_name()
>> >             << "' value '"
>> >             << i->get_value()
>> >             << "'";
>> >+        out << "\n";
>> >       }
>> >-      out << "\n\n";
>> >     }
>> >   if (numchanges)
>> >     {
>> >@@ -173,8 +169,6 @@ default_reporter::report(const enum_diff& d, ostream& out,
>> >          i != sorted_changed_enumerators.end();
>> >          ++i)
>> >       {
>> >-        if (i != sorted_changed_enumerators.begin())
>> >-          out << "\n";
>> >         out << indent
>> >             << "  '"
>> >             << i->first.get_qualified_name()
>> >@@ -182,13 +176,14 @@ default_reporter::report(const enum_diff& d, ostream& out,
>> >             << i->first.get_value() << "' to '"
>> >             << i->second.get_value() << "'";
>> >         report_loc_info(second, *d.context(), out);
>> >+        out << "\n";
>> >       }
>> >-      out << "\n\n";
>> >     }
>> >
>> >+  out << "\n";
>> >+
>> >   if (d.context()->show_leaf_changes_only())
>> >-    maybe_report_interfaces_impacted_by_diff(&d, out, indent,
>> >-                                           /*new_line_prefix=*/false);
>> >+    maybe_report_interfaces_impacted_by_diff(&d, out, indent);
>> >
>> >   d.reported_once(true);
>> > }
>> >@@ -392,7 +387,7 @@ default_reporter::report(const pointer_diff& d, ostream& out,
>> >       : string("void");
>> >
>> >       out << indent
>> >-        << "in pointed to type '" <<  repr << "'";
>> >+        << "in pointed to type '" << repr << "'";
>> >       report_loc_info(dif->second_subject(), *d.context(), out);
>> >       out << ":\n";
>> >       dif->report(out, indent + "  ");
>> >@@ -673,12 +668,12 @@ default_reporter::report(const array_diff& d, ostream& out,
>> >       dif->report(out, indent + "  ");
>> >     }
>> >
>> >-  report_name_size_and_alignment_changes(d.first_array(),
>> >-                                       d.second_array(),
>> >-                                       d.context(),
>> >-                                       out, indent,
>> >-                                       /*new line=*/false);
>> >-  report_loc_info(d.second_array(), *d.context(), out);
>> >+  if (report_name_size_and_alignment_changes(d.first_array(),
>> >+                                           d.second_array(),
>> >+                                           d.context(),
>> >+                                           out, indent,
>> >+                                           /*new line=*/false))
>>
>> Though it is not required here, I would prefer braces for readability.
>
>Agreed, I think it's sensible here. In other places, with the coding
>style in use, we'd end up with:
>
>if (emitted)
>  {
>    out << "\n";
>  }

Let's take this one at this location.

>
>which is pretty verbose. The following would be fine by me:
>
>if (emitted) out << "\n";
>
>Lastly, short but ugly:
>
>  emitted && (out << "\n");
>
>> >+    out << "\n";
>> > }
>> >
>> > /// Generates a report for an intance of @ref base_diff.
>> >@@ -1014,7 +1009,6 @@ default_reporter::report(const class_or_union_diff& d,
>> >         sort_data_members
>> >           (d.class_or_union_diff::get_priv()->deleted_data_members_,
>> >            sorted_dms);
>> >-        bool emitted = false;
>> >         for (vector<decl_base_sptr>::const_iterator i = sorted_dms.begin();
>> >              i != sorted_dms.end();
>> >              ++i)
>> >@@ -1024,14 +1018,8 @@ default_reporter::report(const class_or_union_diff& d,
>> >             ABG_ASSERT(data_mem);
>> >             if (get_member_is_static(data_mem))
>> >               continue;
>> >-            if (emitted)
>> >-              out << "\n";
>> >-            out << indent << "  ";
>> >-            represent_data_member(data_mem, ctxt, out);
>> >-            emitted = true;
>> >+            represent_data_member(data_mem, ctxt, out, indent + "  ");
>> >           }
>> >-        if (emitted)
>> >-          out << "\n";
>> >       }
>> >
>> >       //report insertions
>> >@@ -1052,8 +1040,7 @@ default_reporter::report(const class_or_union_diff& d,
>> >             var_decl_sptr data_mem =
>> >               dynamic_pointer_cast<var_decl>(*i);
>> >             ABG_ASSERT(data_mem);
>> >-            out << indent << "  ";
>> >-            represent_data_member(data_mem, ctxt, out);
>> >+            represent_data_member(data_mem, ctxt, out, indent + "  ");
>> >           }
>> >       }
>> >
>> >diff --git a/src/abg-leaf-reporter.cc b/src/abg-leaf-reporter.cc
>> >index bbd51dcb..f706bd21 100644
>> >--- a/src/abg-leaf-reporter.cc
>> >+++ b/src/abg-leaf-reporter.cc
>> >@@ -78,7 +78,7 @@ report_diffs(const reporter_base& r,
>> >
>> >         string n = (*i)->first_subject()->get_pretty_representation();
>> >
>> >-        out << indent << "'" << n ;
>> >+        out << indent << "'" << n;
>> >
>> >         report_loc_info((*i)->first_subject(),
>> >                         *(*i)->context(), out);
>> >@@ -425,11 +425,12 @@ leaf_reporter::report(const array_diff& d,
>> >                                                   d.second_array(),
>> >                                                   "array type");
>> >
>> >-  report_name_size_and_alignment_changes(d.first_array(),
>> >-                                       d.second_array(),
>> >-                                       d.context(),
>> >-                                       out, indent,
>> >-                                       /*new line=*/false);
>> >+  if (report_name_size_and_alignment_changes(d.first_array(),
>> >+                                           d.second_array(),
>> >+                                           d.context(),
>> >+                                           out, indent,
>> >+                                           /*new line=*/false))
>>
>> As above.
>
>Agreed.
>
>> >+    out << "\n";
>> >
>> >   diff_sptr dif = d.element_type_diff();
>> >   if (diff_to_be_reported(dif.get()))
>> >@@ -441,8 +442,6 @@ leaf_reporter::report(const array_diff& d,
>> >       dif->report(out, indent + "  ");
>> >     }
>> >
>> >-  report_loc_info(d.second_array(), *d.context(), out);
>> >-
>> >   maybe_report_interfaces_impacted_by_diff(&d, out, indent);
>> > }
>> >
>> >@@ -592,7 +591,6 @@ leaf_reporter::report(const class_or_union_diff& d,
>> >         sort_data_members
>> >           (d.class_or_union_diff::get_priv()->deleted_data_members_,
>> >            sorted_dms);
>> >-        bool emitted = false;
>> >         for (vector<decl_base_sptr>::const_iterator i = sorted_dms.begin();
>> >              i != sorted_dms.end();
>> >              ++i)
>> >@@ -602,14 +600,8 @@ leaf_reporter::report(const class_or_union_diff& d,
>> >             ABG_ASSERT(data_mem);
>> >             if (get_member_is_static(data_mem))
>> >               continue;
>> >-            if (emitted)
>> >-              out << "\n";
>> >-            out << indent << "  ";
>> >-            represent_data_member(data_mem, ctxt, out);
>> >-            emitted = true;
>> >+            represent_data_member(data_mem, ctxt, out, indent + "  ");
>> >           }
>> >-        if (emitted)
>> >-          out << "\n";
>> >       }
>> >
>> >       //report insertions
>> >@@ -630,8 +622,7 @@ leaf_reporter::report(const class_or_union_diff& d,
>> >             var_decl_sptr data_mem =
>> >               dynamic_pointer_cast<var_decl>(*i);
>> >             ABG_ASSERT(data_mem);
>> >-            out << indent << "  ";
>> >-            represent_data_member(data_mem, ctxt, out);
>> >+            represent_data_member(data_mem, ctxt, out, indent + "  ");
>> >           }
>> >       }
>> >
>> >diff --git a/src/abg-reporter-priv.cc b/src/abg-reporter-priv.cc
>> >index fbac85f8..948a32fc 100644
>> >--- a/src/abg-reporter-priv.cc
>> >+++ b/src/abg-reporter-priv.cc
>> >@@ -242,16 +242,19 @@ represent(const diff_context& ctxt,
>> > /// @param ctxt the current diff context.
>> > ///
>> > /// @param out the output stream to send the representation to
>> >+///
>> >+/// @param indent the indentation string to use for the change report.
>> > void
>> > represent_data_member(var_decl_sptr d,
>> >                     const diff_context_sptr& ctxt,
>> >-                    ostream& out)
>> >+                    ostream& out,
>> >+                    const string& indent)
>>
>> I would prefer out parameters after all input parameters. Since this is
>> a private implementation detail, we should be good to change that
>> interface.
>
>I looked at the existing functions and copied an existing order for
>consistency. out and indent belong together morally as well (writer
>monad). If we switch to an indenting ostream, this issue goes away.
>
>> > {
>> >   if (!is_data_member(d)
>> >       || (!get_member_is_static(d) && !get_data_member_is_laid_out(d)))
>> >     return;
>> >
>> >-  out << "'" << d->get_pretty_representation() << "'";
>> >+  out << indent << "'" << d->get_pretty_representation() << "'";
>> >   if (!get_member_is_static(d))
>> >     {
>> >       // Do not emit offset information for data member of a union
>> >@@ -262,8 +265,8 @@ represent_data_member(var_decl_sptr d,
>> >                           get_data_member_offset(d),
>> >                           *ctxt, out);
>> >       report_loc_info(d, *ctxt, out);
>> >-      out << "\n";
>> >     }
>> >+  out << "\n";
>> > }
>> >
>> > /// If a given @ref var_diff node carries a data member change in
>> >@@ -806,7 +809,10 @@ report_size_and_alignment_changes(type_or_decl_base_sptr  first,
>> >       } // end if (fs != ss || fdc != sdc)
>> >       else
>> >       if (ctxt->show_relative_offset_changes())
>> >-        out << indent << "type size hasn't changed\n";
>> >+        {
>> >+          out << indent << "type size hasn't changed";
>> >+          n = true;
>> >+        }
>> >     }
>> >   if ((ctxt->get_allowed_category() & SIZE_OR_OFFSET_CHANGE_CATEGORY)
>> >       && (fa != sa))
>> >@@ -819,9 +825,7 @@ report_size_and_alignment_changes(type_or_decl_base_sptr   first,
>> >       n = true;
>> >     }
>> >
>> >-  if (n)
>> >-    return true;
>> >-  return false;
>> >+  return n;
>>
>> We should give 'n' a better name. Not necessarily part of this change.
>
>Acknowledged. If we are going to review newline handling we should do
>it everywhere and consistently. Ideally we should get to the point
>where we don't have to pass information about newlines around (this
>will likely be possible with an indenting ostream but may be doable
>even without that).
>
>> > }
>> >
>> > /// @param tod the type or declaration to emit loc info about
>> >@@ -910,8 +914,8 @@ report_name_size_and_alignment_changes(decl_base_sptr              first,
>> >       }
>> >     }
>> >
>> >-  nl |= report_size_and_alignment_changes(first, second, ctxt,
>> >-                                        out, indent, nl);
>> >+  nl = report_size_and_alignment_changes(first, second, ctxt,
>> >+                                         out, indent, nl);
>> >   return nl;
>> > }
>> >
>> >@@ -1366,14 +1370,10 @@ maybe_report_unreachable_type_changes(const corpus_diff& d,
>> > /// @param out the output stream to report to.
>> > ///
>> > /// @param indent the white space string to use for indentation.
>> >-///
>> >-/// @param new_line_prefix if set to true, it means there is going to
>> >-/// be a new line emitted before the report.
>> > void
>> > maybe_report_interfaces_impacted_by_diff(const diff   *d,
>> >                                        ostream        &out,
>> >-                                       const string   &indent,
>> >-                                       bool           new_line_prefix)
>> >+                                       const string   &indent)
>> > {
>> >   const diff_context_sptr &ctxt = d->context();
>> >   const corpus_diff_sptr &corp_diff = ctxt->get_corpus_diff();
>> >@@ -1395,9 +1395,6 @@ maybe_report_interfaces_impacted_by_diff(const diff      *d,
>> >   vector<type_or_decl_base_sptr> sorted_impacted_interfaces;
>> >   sort_artifacts_set(*impacted_artifacts, sorted_impacted_interfaces);
>> >
>> >-  if (new_line_prefix)
>> >-    out << '\n';
>> >-
>>
>> I think we need to keep this newline. It separates the cause (the leaf
>> node change) from the impacted interfaces (the top level nodes).
>
>I disagree.
>
>I think the "impacted interfaces" block should be indented w.r.t leaf
>node change's introductory text or separated from the whole node
>change section by an extra new line, but not both. I'd prefer the
>former as this should be a parent-child relationship in the text
>output tree rather than a sibling one.
>
>Phrased another way, the text would be equally meaningful like this
>(adapting tests/data/test-diff-filter/test42-leaf-report-output-0.txt;
>though abitool.py's short report would need a tweak; it needs a tweak

Just for the context: abitool.py we use in Android to monitor the kernel
ABI with libabigail :-) See
https://android.googlesource.com/kernel/build/+/refs/heads/master/abi/

>anyway for the case of 1 impacted interface):
>
>'struct leaf at test42-leaf-report-v0.cc:4:1' changed:
>  one impacted interface:
>    function void fn(C&)
> type size changed from 32 to 64 (in bits)
>  1 data member insertion:
>    'char leaf::m1', at offset 32 (in bits) at test42-leaf-report-v1.cc:7:1
>

The only concern I have and that I would like to see addressed is that
the list of impacted interfaces can be considerably long (thousands for
a central struct). That can get difficult to work with if this is
'embedded' there.
In order to better address abi differences like that, I would prefer the
current format:

# what changed
'struct leaf at test42-leaf-report-v0.cc:4:1' changed:
 type size changed from 32 to 64 (in bits)
  1 data member insertion:
    'char leaf::m1', at offset 32 (in bits) at test42-leaf-report-v1.cc:7:1

# impact
  one impacted interface:
    function void fn(C&)

There we can also truncate the list of impacted interfaces.

Cheers,
Matthias

>Happy to discuss further.
>
>> With the above addressed, feel free to add
>> Reviewed-by: Matthias Maennich <maennich@google.com>
>>
>> Cheers,
>> Matthias
>
>Regards,
>Giuliano.
>
>> >   size_t num_impacted_interfaces = impacted_artifacts->size();
>> >   if (num_impacted_interfaces == 1)
>> >     out << indent << "one impacted interface:\n";
>> >@@ -1424,9 +1421,6 @@ maybe_report_interfaces_impacted_by_diff(const diff      *d,
>> > /// @param out the output stream to report to.
>> > ///
>> > /// @param indent the white space string to use for indentation.
>> >-///
>> >-/// @param new_line_prefix if set to true, it means there is going to
>> >-/// be a new line emitted before the report.
>> > void
>> > maybe_report_interfaces_impacted_by_diff(const diff_sptr      &d,
>> >                                        ostream                &out,
>> >diff --git a/src/abg-reporter-priv.h b/src/abg-reporter-priv.h
>> >index 7471c74f..04803f43 100644
>> >--- a/src/abg-reporter-priv.h
>> >+++ b/src/abg-reporter-priv.h
>> >@@ -151,7 +151,8 @@ represent(const diff_context& ctxt,
>> > void
>> > represent_data_member(var_decl_sptr d,
>> >                     const diff_context_sptr& ctxt,
>> >-                    ostream& out);
>> >+                    ostream& out,
>> >+                    const string& indent);
>> >
>> > void
>> > maybe_show_relative_offset_change(const var_diff_sptr &diff,
>> >@@ -244,14 +245,12 @@ maybe_report_unreachable_type_changes(const corpus_diff& d,
>> > void
>> > maybe_report_interfaces_impacted_by_diff(const diff           *d,
>> >                                        ostream                &out,
>> >-                                       const string           &indent,
>> >-                                       bool new_line_prefix = true);
>> >+                                       const string           &indent);
>> >
>> > void
>> > maybe_report_interfaces_impacted_by_diff(const diff_sptr      &d,
>> >                                        ostream                &out,
>> >-                                       const string           &indent,
>> >-                                       bool new_line_prefix = false);
>> >+                                       const string           &indent);
>> >
>> > } // end namespace comparison
>> > } // end namespace abigail
>> >diff --git a/tests/data/test-abicompat/test5-fn-changed-report-0.txt b/tests/data/test-abicompat/test5-fn-changed-report-0.txt
>> >index 96d48ccf..04676908 100644
>> >--- a/tests/data/test-abicompat/test5-fn-changed-report-0.txt
>> >+++ b/tests/data/test-abicompat/test5-fn-changed-report-0.txt
>> >@@ -15,4 +15,3 @@ have sub-types that are different from what application 'test5-fn-changed-app' e
>> >         1 data member deletion:
>> >           'unsigned char S1::m1', at offset 32 (in bits)
>> >
>> >-
>> >diff --git a/tests/data/test-abicompat/test5-fn-changed-report-1.txt b/tests/data/test-abicompat/test5-fn-changed-report-1.txt
>> >index 3c8c4a8f..b39f650d 100644
>> >--- a/tests/data/test-abicompat/test5-fn-changed-report-1.txt
>> >+++ b/tests/data/test-abicompat/test5-fn-changed-report-1.txt
>> >@@ -15,4 +15,3 @@ have sub-types that are different from what application 'test5-fn-changed-app' e
>> >         1 data member deletion:
>> >           'unsigned char S1::m1', at offset 32 (in bits) at test5-fn-changed-libapp-v0.h:11:1
>> >
>> >-
>> >diff --git a/tests/data/test-abicompat/test6-var-changed-report-0.txt b/tests/data/test-abicompat/test6-var-changed-report-0.txt
>> >index 5d2bd89c..f5077879 100644
>> >--- a/tests/data/test-abicompat/test6-var-changed-report-0.txt
>> >+++ b/tests/data/test-abicompat/test6-var-changed-report-0.txt
>> >@@ -13,4 +13,3 @@ have sub-types that are different from what application 'test6-var-changed-app'
>> >       1 data member deletion:
>> >         'unsigned char S1::m1', at offset 32 (in bits)
>> >
>> >-
>> >diff --git a/tests/data/test-abicompat/test6-var-changed-report-1.txt b/tests/data/test-abicompat/test6-var-changed-report-1.txt
>> >index 697929f0..5b78c83c 100644
>> >--- a/tests/data/test-abicompat/test6-var-changed-report-1.txt
>> >+++ b/tests/data/test-abicompat/test6-var-changed-report-1.txt
>> >@@ -13,4 +13,3 @@ have sub-types that are different from what application 'test6-var-changed-app'
>> >       1 data member deletion:
>> >         'unsigned char S1::m1', at offset 32 (in bits) at test6-var-changed-libapp-v0.h:11:1
>> >
>> >-
>> >diff --git a/tests/data/test-abicompat/test7-fn-changed-report-0.txt b/tests/data/test-abicompat/test7-fn-changed-report-0.txt
>> >index 19db76e3..6a34710d 100644
>> >--- a/tests/data/test-abicompat/test7-fn-changed-report-0.txt
>> >+++ b/tests/data/test-abicompat/test7-fn-changed-report-0.txt
>> >@@ -9,7 +9,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>> >       type name changed from 'float' to 'int'
>> >       type size hasn't changed
>> >
>> >-
>> >   [C] 'function void print(const Student)' has some indirect sub-type changes:
>> >     parameter 1 of type 'const Student' has sub-type changes:
>> >       in unqualified underlying type 'struct Student':
>> >diff --git a/tests/data/test-abidiff-exit/test-leaf3-report.txt b/tests/data/test-abidiff-exit/test-leaf3-report.txt
>> >index 138c4b5a..7602e761 100644
>> >--- a/tests/data/test-abidiff-exit/test-leaf3-report.txt
>> >+++ b/tests/data/test-abidiff-exit/test-leaf3-report.txt
>> >@@ -10,7 +10,6 @@ Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
>> >       type name changed from 'sto1' to 'stn1'
>> >       type size hasn't changed
>> >
>> >-
>> >   [C] 'function void fn2(sto2)' at test-leaf3-v1.c:13:1 has some sub-type changes:
>> >     parameter 1 of type 'struct sto2' changed:
>> >       type name changed from 'sto2' to 'stn2'
>> >diff --git a/tests/data/test-abidiff-exit/test-loc-with-locs-report.txt b/tests/data/test-abidiff-exit/test-loc-with-locs-report.txt
>> >index 53672744..bc37ff53 100644
>> >--- a/tests/data/test-abidiff-exit/test-loc-with-locs-report.txt
>> >+++ b/tests/data/test-abidiff-exit/test-loc-with-locs-report.txt
>> >@@ -9,4 +9,3 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>> >       type size hasn't changed
>> >
>> >
>> >-
>> >diff --git a/tests/data/test-abidiff-exit/test-loc-without-locs-report.txt b/tests/data/test-abidiff-exit/test-loc-without-locs-report.txt
>> >index 6893e3fc..56c41d79 100644
>> >--- a/tests/data/test-abidiff-exit/test-loc-without-locs-report.txt
>> >+++ b/tests/data/test-abidiff-exit/test-loc-without-locs-report.txt
>> >@@ -9,4 +9,3 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>> >       type size hasn't changed
>> >
>> >
>> >-
>> >diff --git a/tests/data/test-abidiff/test-PR18791-report0.txt b/tests/data/test-abidiff/test-PR18791-report0.txt
>> >index 5758077d..7e16fe32 100644
>> >--- a/tests/data/test-abidiff/test-PR18791-report0.txt
>> >+++ b/tests/data/test-abidiff/test-PR18791-report0.txt
>> >@@ -48,9 +48,7 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>> >                                          struct std::__detail::_List_node_base
>> >                                        2 data member deletions:
>> >                                          'std::__detail::_List_node_base* std::__detail::_List_node_base::_M_next', at offset 0 (in bits)
>> >-
>> >                                          'std::__detail::_List_node_base* std::__detail::_List_node_base::_M_prev', at offset 64 (in bits)
>> >-
>> >                                        1 data member insertion:
>> >                                          'unsigned long int std::_List_node<long unsigned int>::_M_data', at offset 128 (in bits)
>> >                                      and name of 'std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl::_M_node' changed to 'std::__cxx11::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl::_M_node'
>> >diff --git a/tests/data/test-abidiff/test-enum0-report.txt b/tests/data/test-abidiff/test-enum0-report.txt
>> >index c7c5a682..1cd7eaaf 100644
>> >--- a/tests/data/test-abidiff/test-enum0-report.txt
>> >+++ b/tests/data/test-abidiff/test-enum0-report.txt
>> >@@ -3,7 +3,6 @@
>> >     type size hasn't changed
>> >     1 enumerator deletion:
>> >       'E::e2' value '1'
>> >-
>> >     1 enumerator insertion:
>> >       'E::e1' value '1'
>> >
>> >diff --git a/tests/data/test-abidiff/test-enum1-report.txt b/tests/data/test-abidiff/test-enum1-report.txt
>> >index f1198ef9..7e8acf80 100644
>> >--- a/tests/data/test-abidiff/test-enum1-report.txt
>> >+++ b/tests/data/test-abidiff/test-enum1-report.txt
>> >@@ -3,7 +3,6 @@
>> >     type size hasn't changed
>> >     1 enumerator insertion:
>> >       'E::e1' value '1'
>> >-
>> >     1 enumerator change:
>> >       'E::e2' from value '1' to '2'
>> >
>> >diff --git a/tests/data/test-abidiff/test-struct1-report.txt b/tests/data/test-abidiff/test-struct1-report.txt
>> >index 39b71e55..e334bf1a 100644
>> >--- a/tests/data/test-abidiff/test-struct1-report.txt
>> >+++ b/tests/data/test-abidiff/test-struct1-report.txt
>> >@@ -6,7 +6,6 @@
>> >
>> >     1 data member deletion:
>> >       'char s0::m1', at offset 96 (in bits)
>> >-
>> >     1 data member insertion:
>> >       'double s0::m01', at offset 128 (in bits)
>> >     2 data member changes:
>> >diff --git a/tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt b/tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt
>> >index 29f823ec..aab271ff 100644
>> >--- a/tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt
>> >+++ b/tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt
>> >@@ -100,7 +100,6 @@ Variables changes summary: 0 Removed, 0 Changed, 3 Added variables
>> >          type of 'union {lttng_event_perf_counter_ctx perf_counter; struct {char* provider_name; char* ctx_name;} app_ctx; char padding[288];} lttng_event_context::u' changed:
>> >            type name changed from '__anonymous_union__4' to '__anonymous_union__5'
>> >            type size hasn't changed
>> >-
>> >            3 data member changes:
>> >             name of '__anonymous_union__4::app_ctx' changed to '__anonymous_union__5::app_ctx'
>> >             name of '__anonymous_union__4::padding' changed to '__anonymous_union__5::padding'
>> >@@ -171,7 +170,6 @@ Variables changes summary: 0 Removed, 0 Changed, 3 Added variables
>> >           type size changed from 35008 to 35072 (in bits)
>> >           1 data member deletion:
>> >             'char lttng_session::padding[12]', at offset 34912 (in bits)
>> >-
>> >           1 data member insertion:
>> >             'union {char padding[12]; void* ptr;} lttng_session::extended', at offset 34944 (in bits)
>> >
>> >@@ -208,7 +206,6 @@ Variables changes summary: 0 Removed, 0 Changed, 3 Added variables
>> >           1 data member deletion:
>> >             'bool lttng_notification::owns_elements', at offset 128 (in bits)
>> >
>> >-
>> >   [C] 'function lttng_notification_channel_status lttng_notification_channel_subscribe(lttng_notification_channel*, const lttng_condition*)' has some indirect sub-type changes:
>> >     return type changed:
>> >       enum type 'enum lttng_notification_channel_status' changed, as reported earlier
>> >@@ -289,7 +286,6 @@ Variables changes summary: 0 Removed, 0 Changed, 3 Added variables
>> >                            'op_type::AST_OP_BIN_AND' value '10'
>> >                            'op_type::AST_OP_BIN_OR' value '11'
>> >                            'op_type::AST_OP_BIN_XOR' value '12'
>> >-
>> >                          5 enumerator insertions:
>> >                            'op_type::AST_OP_BIT_RSHIFT' value '6'
>> >                            'op_type::AST_OP_BIT_LSHIFT' value '7'
>> >@@ -319,7 +315,6 @@ Variables changes summary: 0 Removed, 0 Changed, 3 Added variables
>> >                          type size hasn't changed
>> >                          1 enumerator deletion:
>> >                            'unary_op_type::AST_UNARY_BIN_NOT' value '4'
>> >-
>> >                          1 enumerator insertion:
>> >                            'unary_op_type::AST_UNARY_BIT_NOT' value '4'
>> >
>> >diff --git a/tests/data/test-diff-dwarf/test13-report.txt b/tests/data/test-diff-dwarf/test13-report.txt
>> >index cf29a4fd..833879c7 100644
>> >--- a/tests/data/test-diff-dwarf/test13-report.txt
>> >+++ b/tests/data/test-diff-dwarf/test13-report.txt
>> >@@ -12,7 +12,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>> >            type name changed from 'int' to 'unsigned int'
>> >            type size hasn't changed
>> >
>> >-
>> >          type of 'unsigned int S::m2' changed:
>> >            type name changed from 'unsigned int' to 'long long int'
>> >            type size changed from 32 to 64 (in bits)
>> >diff --git a/tests/data/test-diff-dwarf/test38-union-report-0.txt b/tests/data/test-diff-dwarf/test38-union-report-0.txt
>> >index f7a75df7..fd9708e6 100644
>> >--- a/tests/data/test-diff-dwarf/test38-union-report-0.txt
>> >+++ b/tests/data/test-diff-dwarf/test38-union-report-0.txt
>> >@@ -9,7 +9,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>> >         type size hasn't changed
>> >         1 data member deletion:
>> >           'int some_union_type::m0'
>> >-
>> >         type changed from:
>> >           union some_union_type{int m0; char m1; S m2;}
>> >         to:
>> >diff --git a/tests/data/test-diff-dwarf/test40-report-0.txt b/tests/data/test-diff-dwarf/test40-report-0.txt
>> >index d0b8c52c..f0f9e1a1 100644
>> >--- a/tests/data/test-diff-dwarf/test40-report-0.txt
>> >+++ b/tests/data/test-diff-dwarf/test40-report-0.txt
>> >@@ -9,7 +9,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>> >         type size changed from 96 to 64 (in bits)
>> >         1 data member deletion:
>> >           'int S2::to_remove', at offset 0 (in bits)
>> >-
>> >         2 data member changes:
>> >          'int S2::m0' offset changed from 32 to 0 (in bits) (by -32 bits)
>> >          'char S2::m1' offset changed from 64 to 32 (in bits) (by -32 bits)
>> >@@ -24,7 +23,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>> >            type size hasn't changed
>> >
>> >
>> >-
>> >   [C] 'function int foo(S1*)' has some indirect sub-type changes:
>> >     parameter 1 of type 'S1*' has sub-type changes:
>> >       in pointed to type 'struct S1':
>> >diff --git a/tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt b/tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt
>> >index f0a25a2e..44918baa 100644
>> >--- a/tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt
>> >+++ b/tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt
>> >@@ -19,7 +19,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>> >     return type changed:
>> >       type name changed from 'std::tuple<STR&&>' to 'std::tuple<STR &&>'
>> >       type size hasn't changed
>> >-
>> >       1 base class deletion:
>> >         struct std::_Tuple_impl<0ul, STR&&>
>> >       1 base class insertion:
>> >diff --git a/tests/data/test-diff-dwarf/test43-PR22913-report-0.txt b/tests/data/test-diff-dwarf/test43-PR22913-report-0.txt
>> >index 1c0c773d..60681336 100644
>> >--- a/tests/data/test-diff-dwarf/test43-PR22913-report-0.txt
>> >+++ b/tests/data/test-diff-dwarf/test43-PR22913-report-0.txt
>> >@@ -12,4 +12,3 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>> >             'char m2', at offset 8 (in bits)
>> >
>> >
>> >-
>> >diff --git a/tests/data/test-diff-filter/test10-report.txt b/tests/data/test-diff-filter/test10-report.txt
>> >index bdc31fd0..5a505fc3 100644
>> >--- a/tests/data/test-diff-filter/test10-report.txt
>> >+++ b/tests/data/test-diff-filter/test10-report.txt
>> >@@ -16,4 +16,3 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>> >           'unsigned int S::m', at offset 0 (in bits)
>> >
>> >
>> >-
>> >diff --git a/tests/data/test-diff-filter/test18-report.txt b/tests/data/test-diff-filter/test18-report.txt
>> >index 0d30ef39..6ade5bdf 100644
>> >--- a/tests/data/test-diff-filter/test18-report.txt
>> >+++ b/tests/data/test-diff-filter/test18-report.txt
>> >@@ -14,4 +14,3 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>> >
>> >
>> >
>> >-
>> >diff --git a/tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt b/tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt
>> >index f847d32e..99c14329 100644
>> >--- a/tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt
>> >+++ b/tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt
>> >@@ -7,10 +7,8 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>> >     parameter 1 of type 'int' changed:
>> >       type name changed from 'int' to 'float'
>> >       type size hasn't changed
>> >-
>> >     parameter 2 of type 'int' changed:
>> >       type name changed from 'int' to 'float'
>> >       type size hasn't changed
>> >
>> >
>> >-
>> >diff --git a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt
>> >index b78215b0..5def3a08 100644
>> >--- a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt
>> >+++ b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt
>> >@@ -1200,7 +1200,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>> >           '__anonymous_enum__1::c_report_state_stream' value '142'
>> >           '__anonymous_enum__1::c_report_stream' value '143'
>> >           '__anonymous_enum__1::c_unload_library' value '144'
>> >-
>> >         92 enumerator changes:
>> >           '__anonymous_enum__::c_process_get_func_handles' from value '32' to '33'
>> >           '__anonymous_enum__::c_process_wait_shutdown' from value '33' to '34'
>> >@@ -1304,7 +1303,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>> >          type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} VarDesc::flags' changed:
>> >            type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags'
>> >            type size hasn't changed
>> >-
>> >            1 data member changes (1 filtered):
>> >             anonymous data member at offset 0 (in bits) changed from:
>> >               struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}
>> >@@ -1319,7 +1317,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>> >         entity changed from 'struct InitTableEntry' to compatible type 'typedef InitTableEntry'
>> >           type name changed from 'InitTableEntry' to '__anonymous_struct__2'
>> >           type size hasn't changed
>> >-
>> >           1 data member change:
>> >            type of 'void ()* InitTableEntry::func' changed:
>> >              in pointed to type 'function type void ()':
>> >@@ -1348,7 +1345,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>> >                type size changed from 2752 to 5504 (in bits)
>> >                1 data member deletion:
>> >                  'mutex_t Engine::m_ptr_lock', at offset 1344 (in bits)
>> >-
>> >                7 data member insertions:
>> >                  'PtrDataTable Engine::m_targetptr_set', at offset 1664 (in bits)
>> >                  'StreamMap Engine::m_stream_map', at offset 3072 (in bits)
>> >@@ -1370,20 +1366,16 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>> >                        underlying type 'class std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' changed:
>> >                          type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' to 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >'
>> >                          type size hasn't changed
>> >-
>> >                          1 data member change:
>> >                           type of 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' changed:
>> >                             entity changed from 'struct std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to compatible type 'typedef std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type'
>> >                               type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >'
>> >                               type size hasn't changed
>> >-
>> >                               1 base class deletion:
>> >                                 class std::allocator<std::_Rb_tree_node<PtrData> >
>> >                               2 data member deletions:
>> >                                 'std::_Rb_tree_node_base std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_header', at offset 64 (in bits)
>> >-
>> >                                 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::size_type std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_node_count', at offset 320 (in bits)
>> >-
>> >                               1 data member change:
>> >                                type of 'std::less<PtrData> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_key_compare' changed:
>> >                                  type name changed from 'std::less<PtrData>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>'
>> >diff --git a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt
>> >index ccaf8126..3bc8f6d7 100644
>> >--- a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt
>> >+++ b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt
>> >@@ -1200,7 +1200,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>> >           '__anonymous_enum__1::c_report_state_stream' value '142'
>> >           '__anonymous_enum__1::c_report_stream' value '143'
>> >           '__anonymous_enum__1::c_unload_library' value '144'
>> >-
>> >         92 enumerator changes:
>> >           '__anonymous_enum__::c_process_get_func_handles' from value '32' to '33' at liboffload_error_codes.h:38:1
>> >           '__anonymous_enum__::c_process_wait_shutdown' from value '33' to '34' at liboffload_error_codes.h:38:1
>> >@@ -1304,7 +1303,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>> >          type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} VarDesc::flags' changed:
>> >            type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags'
>> >            type size hasn't changed
>> >-
>> >            1 data member changes (1 filtered):
>> >             anonymous data member at offset 0 (in bits) changed from:
>> >               struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}
>> >@@ -1319,7 +1317,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>> >         entity changed from 'struct InitTableEntry' to compatible type 'typedef InitTableEntry' at offload_table.h:296:1
>> >           type name changed from 'InitTableEntry' to '__anonymous_struct__2'
>> >           type size hasn't changed
>> >-
>> >           1 data member change:
>> >            type of 'void ()* InitTableEntry::func' changed:
>> >              in pointed to type 'function type void ()':
>> >@@ -1348,7 +1345,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>> >                type size changed from 2752 to 5504 (in bits)
>> >                1 data member deletion:
>> >                  'mutex_t Engine::m_ptr_lock', at offset 1344 (in bits) at offload_engine.h:474:1
>> >-
>> >                7 data member insertions:
>> >                  'PtrDataTable Engine::m_targetptr_set', at offset 1664 (in bits) at offload_engine.h:630:1
>> >                  'StreamMap Engine::m_stream_map', at offset 3072 (in bits) at offload_engine.h:637:1
>> >@@ -1370,20 +1366,16 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>> >                        underlying type 'class std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' at stl_tree.h:357:1 changed:
>> >                          type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' to 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >'
>> >                          type size hasn't changed
>> >-
>> >                          1 data member change:
>> >                           type of 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' changed:
>> >                             entity changed from 'struct std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to compatible type 'typedef std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type' at stl_set.h:115:1
>> >                               type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >'
>> >                               type size hasn't changed
>> >-
>> >                               1 base class deletion:
>> >                                 class std::allocator<std::_Rb_tree_node<PtrData> > at allocator.h:95:1
>> >                               2 data member deletions:
>> >                                 'std::_Rb_tree_node_base std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_header', at offset 64 (in bits) at stl_tree.h:593:1
>> >-
>> >                                 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::size_type std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_node_count', at offset 320 (in bits) at stl_tree.h:594:1
>> >-
>> >                               1 data member change:
>> >                                type of 'std::less<PtrData> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_key_compare' changed:
>> >                                  type name changed from 'std::less<PtrData>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>'
>> >diff --git a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt
>> >index 44e78935..d91de66b 100644
>> >--- a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt
>> >+++ b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt
>> >@@ -1200,7 +1200,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>> >           '__anonymous_enum__1::c_report_state_stream' value '142'
>> >           '__anonymous_enum__1::c_report_stream' value '143'
>> >           '__anonymous_enum__1::c_unload_library' value '144'
>> >-
>> >         92 enumerator changes:
>> >           '__anonymous_enum__::c_process_get_func_handles' from value '32' to '33' at liboffload_error_codes.h:38:1
>> >           '__anonymous_enum__::c_process_wait_shutdown' from value '33' to '34' at liboffload_error_codes.h:38:1
>> >@@ -1304,7 +1303,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>> >          type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} VarDesc::flags' changed:
>> >            type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags'
>> >            type size hasn't changed
>> >-
>> >            1 data member changes (1 filtered):
>> >             anonymous data member at offset 0 (in bytes) changed from:
>> >               struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}
>> >@@ -1319,7 +1317,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>> >         entity changed from 'struct InitTableEntry' to compatible type 'typedef InitTableEntry' at offload_table.h:296:1
>> >           type name changed from 'InitTableEntry' to '__anonymous_struct__2'
>> >           type size hasn't changed
>> >-
>> >           1 data member change:
>> >            type of 'void ()* InitTableEntry::func' changed:
>> >              in pointed to type 'function type void ()':
>> >@@ -1348,7 +1345,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>> >                type size changed from 0x158 to 0x2b0 (in bytes)
>> >                1 data member deletion:
>> >                  'mutex_t Engine::m_ptr_lock', at offset 0xa8 (in bytes) at offload_engine.h:474:1
>> >-
>> >                7 data member insertions:
>> >                  'PtrDataTable Engine::m_targetptr_set', at offset 0xd0 (in bytes) at offload_engine.h:630:1
>> >                  'StreamMap Engine::m_stream_map', at offset 0x180 (in bytes) at offload_engine.h:637:1
>> >@@ -1370,20 +1366,16 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>> >                        underlying type 'class std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' at stl_tree.h:357:1 changed:
>> >                          type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' to 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >'
>> >                          type size hasn't changed
>> >-
>> >                          1 data member change:
>> >                           type of 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' changed:
>> >                             entity changed from 'struct std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to compatible type 'typedef std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type' at stl_set.h:115:1
>> >                               type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >'
>> >                               type size hasn't changed
>> >-
>> >                               1 base class deletion:
>> >                                 class std::allocator<std::_Rb_tree_node<PtrData> > at allocator.h:95:1
>> >                               2 data member deletions:
>> >                                 'std::_Rb_tree_node_base std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_header', at offset 0x8 (in bytes) at stl_tree.h:593:1
>> >-
>> >                                 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::size_type std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_node_count', at offset 0x28 (in bytes) at stl_tree.h:594:1
>> >-
>> >                               1 data member change:
>> >                                type of 'std::less<PtrData> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_key_compare' changed:
>> >                                  type name changed from 'std::less<PtrData>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>'
>> >diff --git a/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt b/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt
>> >index c9cb9246..306a9863 100644
>> >--- a/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt
>> >+++ b/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt
>> >@@ -116,7 +116,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>> >           '__anonymous_enum__1::c_report_state_stream' value '142'
>> >           '__anonymous_enum__1::c_report_stream' value '143'
>> >           '__anonymous_enum__1::c_unload_library' value '144'
>> >-
>> >         92 enumerator changes:
>> >           '__anonymous_enum__::c_process_get_func_handles' from value '32' to '33'
>> >           '__anonymous_enum__::c_process_wait_shutdown' from value '33' to '34'
>> >@@ -220,7 +219,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>> >          type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} VarDesc::flags' changed:
>> >            type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags'
>> >            type size hasn't changed
>> >-
>> >            1 data member changes (1 filtered):
>> >             anonymous data member at offset 0 (in bits) changed from:
>> >               struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}
>> >@@ -235,7 +233,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>> >         entity changed from 'struct InitTableEntry' to compatible type 'typedef InitTableEntry'
>> >           type name changed from 'InitTableEntry' to '__anonymous_struct__2'
>> >           type size hasn't changed
>> >-
>> >           1 data member change:
>> >            type of 'void ()* InitTableEntry::func' changed:
>> >              in pointed to type 'function type void ()':
>> >@@ -264,7 +261,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>> >                type size changed from 2752 to 5504 (in bits)
>> >                1 data member deletion:
>> >                  'mutex_t Engine::m_ptr_lock', at offset 1344 (in bits)
>> >-
>> >                7 data member insertions:
>> >                  'PtrDataTable Engine::m_targetptr_set', at offset 1664 (in bits)
>> >                  'StreamMap Engine::m_stream_map', at offset 3072 (in bits)
>> >@@ -286,20 +282,16 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>> >                        underlying type 'class std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' changed:
>> >                          type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' to 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >'
>> >                          type size hasn't changed
>> >-
>> >                          1 data member change:
>> >                           type of 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' changed:
>> >                             entity changed from 'struct std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to compatible type 'typedef std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type'
>> >                               type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >'
>> >                               type size hasn't changed
>> >-
>> >                               1 base class deletion:
>> >                                 class std::allocator<std::_Rb_tree_node<PtrData> >
>> >                               2 data member deletions:
>> >                                 'std::_Rb_tree_node_base std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_header', at offset 64 (in bits)
>> >-
>> >                                 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::size_type std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_node_count', at offset 320 (in bits)
>> >-
>> >                               1 data member change:
>> >                                type of 'std::less<PtrData> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_key_compare' changed:
>> >                                  type name changed from 'std::less<PtrData>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>'
>> >diff --git a/tests/data/test-diff-filter/test36-report-0.txt b/tests/data/test-diff-filter/test36-report-0.txt
>> >index 08692c1e..22e614d8 100644
>> >--- a/tests/data/test-diff-filter/test36-report-0.txt
>> >+++ b/tests/data/test-diff-filter/test36-report-0.txt
>> >@@ -13,7 +13,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>> >            type size hasn't changed
>> >
>> >
>> >-
>> >   [C] 'function int foo_2(S*)' at test36-2-v1.c:13:1 has some indirect sub-type changes:
>> >     parameter 1 of type 'S*' has sub-type changes:
>> >       in pointed to type 'struct S' at test36-2-v1.c:6:1:
>> >@@ -23,11 +22,9 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>> >            type name changed from 'int' to 'unsigned int'
>> >            type size hasn't changed
>> >
>> >-
>> >          type of 'int S::m1' changed:
>> >            type name changed from 'int' to 'unsigned int'
>> >            type size hasn't changed
>> >
>> >
>> >
>> >-
>> >diff --git a/tests/data/test-diff-filter/test42-leaf-report-output-0.txt b/tests/data/test-diff-filter/test42-leaf-report-output-0.txt
>> >index 94a0551d..d40a1374 100644
>> >--- a/tests/data/test-diff-filter/test42-leaf-report-output-0.txt
>> >+++ b/tests/data/test-diff-filter/test42-leaf-report-output-0.txt
>> >@@ -7,6 +7,5 @@ Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
>> >   type size changed from 32 to 64 (in bits)
>> >   1 data member insertion:
>> >     'char leaf::m1', at offset 32 (in bits) at test42-leaf-report-v1.cc:7:1
>> >-
>> >   one impacted interface:
>> >     function void fn(C&)
>> >diff --git a/tests/data/test-diff-filter/test7-report.txt b/tests/data/test-diff-filter/test7-report.txt
>> >index 7e3a4d47..26933033 100644
>> >--- a/tests/data/test-diff-filter/test7-report.txt
>> >+++ b/tests/data/test-diff-filter/test7-report.txt
>> >@@ -7,7 +7,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>> >     return type changed:
>> >       type name changed from 'return_type' to 'other_return_type'
>> >       type size hasn't changed
>> >-
>> >       no data member change (1 filtered);
>> >
>> >
>> >diff --git a/tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt b/tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt
>> >index 05d6fcad..873a84cd 100644
>> >--- a/tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt
>> >+++ b/tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt
>> >@@ -54,9 +54,7 @@
>> >                                                   struct std::__detail::_List_node_base
>> >                                                 2 data member deletions:
>> >                                                   'std::__detail::_List_node_base* std::__detail::_List_node_base::_M_next', at offset 0 (in bits)
>> >-
>> >                                                   'std::__detail::_List_node_base* std::__detail::_List_node_base::_M_prev', at offset 64 (in bits)
>> >-
>> >                                                 1 data member insertion:
>> >                                                   'unsigned long int std::_List_node<long unsigned int>::_M_data', at offset 128 (in bits)
>> >                                               and name of 'std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl::_M_node' changed to 'std::__cxx11::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl::_M_node'
>> >diff --git a/tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt b/tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt
>> >index c227fa5c..a0cc67c2 100644
>> >--- a/tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt
>> >+++ b/tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt
>> >@@ -10,7 +10,6 @@
>> >           type size hasn't changed
>> >           1 enumerator insertion:
>> >             '__anonymous_enum__1::SEC_OID_TLS_ECDHE_PSK' value '347'
>> >-
>> >           1 enumerator change:
>> >             '__anonymous_enum__1::SEC_OID_TOTAL' from value '347' to '348' at secoidt.h:34:1
>> >
>> >@@ -34,7 +33,6 @@
>> >           type size hasn't changed
>> >           1 enumerator insertion:
>> >             '__anonymous_enum__1::ssl_kea_ecdh_psk' value '5'
>> >-
>> >           1 enumerator change:
>> >             '__anonymous_enum__::ssl_kea_size' from value '5' to '6' at sslt.h:40:1
>> >
>> >@@ -52,7 +50,6 @@
>> >                  type size hasn't changed
>> >                  1 enumerator deletion:
>> >                    '__anonymous_enum__::ssl_auth_rsa' value '1'
>> >-
>> >                  7 enumerator insertions:
>> >                    '__anonymous_enum__::ssl_auth_rsa_decrypt' value '1'
>> >                    '__anonymous_enum__::ssl_auth_ecdh_rsa' value '5'
>> >@@ -114,7 +111,6 @@
>> >                                              type size hasn't changed
>> >                                              1 enumerator insertion:
>> >                                                '__anonymous_enum__1::SEC_OID_TLS_ECDHE_PSK' value '347'
>> >-
>> >                                              1 enumerator change:
>> >                                                '__anonymous_enum__1::SEC_OID_TOTAL' from value '347' to '348' at secoidt.h:34:1
>> >
>> >diff --git a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt
>> >index bf081f52..70b41ddd 100644
>> >--- a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt
>> >+++ b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt
>> >@@ -25,7 +25,6 @@
>> >         underlying type 'enum __anonymous_enum__2' at spice.h:471:1 changed:
>> >           type name changed from '__anonymous_enum__2' to 'SpiceImageCompression'
>> >           type size hasn't changed
>> >-
>> >           7 enumerator deletions:
>> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_INVALID' value '0'
>> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_OFF' value '1'
>> >@@ -34,7 +33,6 @@
>> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_QUIC' value '4'
>> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_GLZ' value '5'
>> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_LZ' value '6'
>> >-
>> >           9 enumerator insertions:
>> >             'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0'
>> >             'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1'
>> >diff --git a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt
>> >index 7b86b964..0b909f90 100644
>> >--- a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt
>> >+++ b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt
>> >@@ -25,7 +25,6 @@
>> >         underlying type 'enum __anonymous_enum__2' at spice.h:471:1 changed:
>> >           type name changed from '__anonymous_enum__2' to 'SpiceImageCompression'
>> >           type size hasn't changed
>> >-
>> >           7 enumerator deletions:
>> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_INVALID' value '0'
>> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_OFF' value '1'
>> >@@ -34,7 +33,6 @@
>> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_QUIC' value '4'
>> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_GLZ' value '5'
>> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_LZ' value '6'
>> >-
>> >           9 enumerator insertions:
>> >             'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0'
>> >             'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1'
>> >diff --git a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt
>> >index 3d20caf1..c247ef95 100644
>> >--- a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt
>> >+++ b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt
>> >@@ -239,15 +239,10 @@
>> >                                                  type size changed from 1280 to 256 (in bits)
>> >                                                  5 data member deletions:
>> >                                                    'RedsSASL RedsStream::sasl', at offset 256 (in bits) at reds.h:78:1
>> >-
>> >                                                    'SpiceChannelEventInfo* RedsStream::info', at offset 1024 (in bits) at reds.h:85:1
>> >-
>> >                                                    'typedef ssize_t (RedsStream*, void*, typedef size_t)* RedsStream::read', at offset 1088 (in bits) at reds.h:88:1
>> >-
>> >                                                    'typedef ssize_t (RedsStream*, void*, typedef size_t)* RedsStream::write', at offset 1152 (in bits) at reds.h:89:1
>> >-
>> >                                                    'typedef ssize_t (RedsStream*, const iovec*, int)* RedsStream::writev', at offset 1216 (in bits) at reds.h:90:1
>> >-
>> >                                                  1 data member change:
>> >                                                   type of 'SSL* RedsStream::ssl' changed:
>> >                                                     in pointed to type 'typedef SSL' at reds_stream.h:32:1:
>> >@@ -257,193 +252,99 @@
>> >                                                         type size changed from 5504 to 0 (in bits)
>> >                                                         94 data member deletions:
>> >                                                           'int ssl_st::version', at offset 0 (in bits) at ssl.h:1070:1
>> >-
>> >                                                           'int ssl_st::type', at offset 32 (in bits) at ssl.h:1071:1
>> >-
>> >                                                           'const SSL_METHOD* ssl_st::method', at offset 64 (in bits) at ssl.h:1073:1
>> >-
>> >                                                           'BIO* ssl_st::rbio', at offset 128 (in bits) at ssl.h:1080:1
>> >-
>> >                                                           'BIO* ssl_st::wbio', at offset 192 (in bits) at ssl.h:1081:1
>> >-
>> >                                                           'BIO* ssl_st::bbio', at offset 256 (in bits) at ssl.h:1082:1
>> >-
>> >                                                           'int ssl_st::rwstate', at offset 320 (in bits) at ssl.h:1093:1
>> >-
>> >                                                           'int ssl_st::in_handshake', at offset 352 (in bits) at ssl.h:1096:1
>> >-
>> >                                                           'int (SSL*)* ssl_st::handshake_func', at offset 384 (in bits) at ssl.h:1097:1
>> >-
>> >                                                           'int ssl_st::server', at offset 448 (in bits) at ssl.h:1107:1
>> >-
>> >                                                           'int ssl_st::new_session', at offset 480 (in bits) at ssl.h:1109:1
>> >-
>> >                                                           'int ssl_st::quiet_shutdown', at offset 512 (in bits) at ssl.h:1113:1
>> >-
>> >                                                           'int ssl_st::shutdown', at offset 544 (in bits) at ssl.h:1114:1
>> >-
>> >                                                           'int ssl_st::state', at offset 576 (in bits) at ssl.h:1116:1
>> >-
>> >                                                           'int ssl_st::rstate', at offset 608 (in bits) at ssl.h:1117:1
>> >-
>> >                                                           'BUF_MEM* ssl_st::init_buf', at offset 640 (in bits) at ssl.h:1119:1
>> >-
>> >                                                           'void* ssl_st::init_msg', at offset 704 (in bits) at ssl.h:1120:1
>> >-
>> >                                                           'int ssl_st::init_num', at offset 768 (in bits) at ssl.h:1121:1
>> >-
>> >                                                           'int ssl_st::init_off', at offset 800 (in bits) at ssl.h:1122:1
>> >-
>> >                                                           'unsigned char* ssl_st::packet', at offset 832 (in bits) at ssl.h:1125:1
>> >-
>> >                                                           'unsigned int ssl_st::packet_length', at offset 896 (in bits) at ssl.h:1126:1
>> >-
>> >                                                           'ssl2_state_st* ssl_st::s2', at offset 960 (in bits) at ssl.h:1128:1
>> >-
>> >                                                           'ssl3_state_st* ssl_st::s3', at offset 1024 (in bits) at ssl.h:1129:1
>> >-
>> >                                                           'dtls1_state_st* ssl_st::d1', at offset 1088 (in bits) at ssl.h:1130:1
>> >-
>> >                                                           'int ssl_st::read_ahead', at offset 1152 (in bits) at ssl.h:1132:1
>> >-
>> >                                                           'void (int, int, int, void*, typedef size_t, SSL*, void*)* ssl_st::msg_callback', at offset 1216 (in bits) at ssl.h:1136:1
>> >-
>> >                                                           'void* ssl_st::msg_callback_arg', at offset 1280 (in bits) at ssl.h:1137:1
>> >-
>> >                                                           'int ssl_st::hit', at offset 1344 (in bits) at ssl.h:1139:1
>> >-
>> >                                                           'X509_VERIFY_PARAM* ssl_st::param', at offset 1408 (in bits) at ssl.h:1141:1
>> >-
>> >                                                           'stack_st_SSL_CIPHER* ssl_st::cipher_list', at offset 1472 (in bits) at ssl.h:1149:1
>> >-
>> >                                                           'stack_st_SSL_CIPHER* ssl_st::cipher_list_by_id', at offset 1536 (in bits) at ssl.h:1150:1
>> >-
>> >                                                           'int ssl_st::mac_flags', at offset 1600 (in bits) at ssl.h:1154:1
>> >-
>> >                                                           'EVP_CIPHER_CTX* ssl_st::enc_read_ctx', at offset 1664 (in bits) at ssl.h:1155:1
>> >-
>> >                                                           'EVP_MD_CTX* ssl_st::read_hash', at offset 1728 (in bits) at ssl.h:1156:1
>> >-
>> >                                                           'COMP_CTX* ssl_st::expand', at offset 1792 (in bits) at ssl.h:1158:1
>> >-
>> >                                                           'EVP_CIPHER_CTX* ssl_st::enc_write_ctx', at offset 1856 (in bits) at ssl.h:1163:1
>> >-
>> >                                                           'EVP_MD_CTX* ssl_st::write_hash', at offset 1920 (in bits) at ssl.h:1164:1
>> >-
>> >                                                           'COMP_CTX* ssl_st::compress', at offset 1984 (in bits) at ssl.h:1166:1
>> >-
>> >                                                           'cert_st* ssl_st::cert', at offset 2048 (in bits) at ssl.h:1175:1
>> >-
>> >                                                           'unsigned int ssl_st::sid_ctx_length', at offset 2112 (in bits) at ssl.h:1179:1
>> >-
>> >                                                           'unsigned char ssl_st::sid_ctx[32]', at offset 2144 (in bits) at ssl.h:1180:1
>> >-
>> >                                                           'SSL_SESSION* ssl_st::session', at offset 2432 (in bits) at ssl.h:1183:1
>> >-
>> >                                                           'GEN_SESSION_CB ssl_st::generate_session_id', at offset 2496 (in bits) at ssl.h:1186:1
>> >-
>> >                                                           'int ssl_st::verify_mode', at offset 2560 (in bits) at ssl.h:1189:1
>> >-
>> >                                                           'int (int, X509_STORE_CTX*)* ssl_st::verify_callback', at offset 2624 (in bits) at ssl.h:1191:1
>> >-
>> >                                                           'void (const SSL*, int, int)* ssl_st::info_callback', at offset 2688 (in bits) at ssl.h:1193:1
>> >-
>> >                                                           'int ssl_st::error', at offset 2752 (in bits) at ssl.h:1195:1
>> >-
>> >                                                           'int ssl_st::error_code', at offset 2784 (in bits) at ssl.h:1196:1
>> >-
>> >                                                           'KSSL_CTX* ssl_st::kssl_ctx', at offset 2816 (in bits) at ssl.h:1199:1
>> >-
>> >                                                           'unsigned int (SSL*, const char*, char*, unsigned int, unsigned char*, unsigned int)* ssl_st::psk_client_callback', at offset 2880 (in bits) at ssl.h:1203:1
>> >-
>> >                                                           'unsigned int (SSL*, const char*, unsigned char*, unsigned int)* ssl_st::psk_server_callback', at offset 2944 (in bits) at ssl.h:1206:1
>> >-
>> >                                                           'SSL_CTX* ssl_st::ctx', at offset 3008 (in bits) at ssl.h:1210:1
>> >-
>> >                                                           'int ssl_st::debug', at offset 3072 (in bits) at ssl.h:1213:1
>> >-
>> >                                                           'long int ssl_st::verify_result', at offset 3136 (in bits) at ssl.h:1216:1
>> >-
>> >                                                           'CRYPTO_EX_DATA ssl_st::ex_data', at offset 3200 (in bits) at ssl.h:1217:1
>> >-
>> >                                                           'stack_st_X509_NAME* ssl_st::client_CA', at offset 3328 (in bits) at ssl.h:1220:1
>> >-
>> >                                                           'int ssl_st::references', at offset 3392 (in bits) at ssl.h:1222:1
>> >-
>> >                                                           'unsigned long int ssl_st::options', at offset 3456 (in bits) at ssl.h:1223:1
>> >-
>> >                                                           'unsigned long int ssl_st::mode', at offset 3520 (in bits) at ssl.h:1224:1
>> >-
>> >                                                           'long int ssl_st::max_cert_list', at offset 3584 (in bits) at ssl.h:1225:1
>> >-
>> >                                                           'int ssl_st::first_packet', at offset 3648 (in bits) at ssl.h:1226:1
>> >-
>> >                                                           'int ssl_st::client_version', at offset 3680 (in bits) at ssl.h:1227:1
>> >-
>> >                                                           'unsigned int ssl_st::max_send_fragment', at offset 3712 (in bits) at ssl.h:1229:1
>> >-
>> >                                                           'void (SSL*, int, int, unsigned char*, int, void*)* ssl_st::tlsext_debug_cb', at offset 3776 (in bits) at ssl.h:1232:1
>> >-
>> >                                                           'void* ssl_st::tlsext_debug_arg', at offset 3840 (in bits) at ssl.h:1235:1
>> >-
>> >                                                           'char* ssl_st::tlsext_hostname', at offset 3904 (in bits) at ssl.h:1236:1
>> >-
>> >                                                           'int ssl_st::servername_done', at offset 3968 (in bits) at ssl.h:1237:1
>> >-
>> >                                                           'int ssl_st::tlsext_status_type', at offset 4000 (in bits) at ssl.h:1244:1
>> >-
>> >                                                           'int ssl_st::tlsext_status_expected', at offset 4032 (in bits) at ssl.h:1246:1
>> >-
>> >                                                           'stack_st_OCSP_RESPID* ssl_st::tlsext_ocsp_ids', at offset 4096 (in bits) at ssl.h:1248:1
>> >-
>> >                                                           'X509_EXTENSIONS* ssl_st::tlsext_ocsp_exts', at offset 4160 (in bits) at ssl.h:1249:1
>> >-
>> >                                                           'unsigned char* ssl_st::tlsext_ocsp_resp', at offset 4224 (in bits) at ssl.h:1251:1
>> >-
>> >                                                           'int ssl_st::tlsext_ocsp_resplen', at offset 4288 (in bits) at ssl.h:1252:1
>> >-
>> >                                                           'int ssl_st::tlsext_ticket_expected', at offset 4320 (in bits) at ssl.h:1255:1
>> >-
>> >                                                           'size_t ssl_st::tlsext_ecpointformatlist_length', at offset 4352 (in bits) at ssl.h:1257:1
>> >-
>> >                                                           'unsigned char* ssl_st::tlsext_ecpointformatlist', at offset 4416 (in bits) at ssl.h:1258:1
>> >-
>> >                                                           'size_t ssl_st::tlsext_ellipticcurvelist_length', at offset 4480 (in bits) at ssl.h:1259:1
>> >-
>> >                                                           'unsigned char* ssl_st::tlsext_ellipticcurvelist', at offset 4544 (in bits) at ssl.h:1260:1
>> >-
>> >                                                           'void* ssl_st::tlsext_opaque_prf_input', at offset 4608 (in bits) at ssl.h:1264:1
>> >-
>> >                                                           'size_t ssl_st::tlsext_opaque_prf_input_len', at offset 4672 (in bits) at ssl.h:1265:1
>> >-
>> >                                                           'TLS_SESSION_TICKET_EXT* ssl_st::tlsext_session_ticket', at offset 4736 (in bits) at ssl.h:1268:1
>> >-
>> >                                                           'tls_session_ticket_ext_cb_fn ssl_st::tls_session_ticket_ext_cb', at offset 4800 (in bits) at ssl.h:1271:1
>> >-
>> >                                                           'void* ssl_st::tls_session_ticket_ext_cb_arg', at offset 4864 (in bits) at ssl.h:1272:1
>> >-
>> >                                                           'tls_session_secret_cb_fn ssl_st::tls_session_secret_cb', at offset 4928 (in bits) at ssl.h:1275:1
>> >-
>> >                                                           'void* ssl_st::tls_session_secret_cb_arg', at offset 4992 (in bits) at ssl.h:1276:1
>> >-
>> >                                                           'SSL_CTX* ssl_st::initial_ctx', at offset 5056 (in bits) at ssl.h:1278:1
>> >-
>> >                                                           'unsigned char* ssl_st::next_proto_negotiated', at offset 5120 (in bits) at ssl.h:1288:1
>> >-
>> >                                                           'unsigned char ssl_st::next_proto_negotiated_len', at offset 5184 (in bits) at ssl.h:1289:1
>> >-
>> >                                                           'stack_st_SRTP_PROTECTION_PROFILE* ssl_st::srtp_profiles', at offset 5248 (in bits) at ssl.h:1294:1
>> >-
>> >                                                           'SRTP_PROTECTION_PROFILE* ssl_st::srtp_profile', at offset 5312 (in bits) at ssl.h:1295:1
>> >-
>> >                                                           'unsigned int ssl_st::tlsext_heartbeat', at offset 5376 (in bits) at ssl.h:1297:1
>> >-
>> >                                                           'unsigned int ssl_st::tlsext_hb_pending', at offset 5408 (in bits) at ssl.h:1302:1
>> >-
>> >                                                           'unsigned int ssl_st::tlsext_hb_seq', at offset 5440 (in bits) at ssl.h:1303:1
>> >-
>> >                                                           'int ssl_st::renegotiate', at offset 5472 (in bits) at ssl.h:1308:1
>> >-
>> >                                                   and name of 'RedsStream::ssl' changed to 'RedsStream::priv' at reds_stream.h:42:1
>> >
>> >
>> >@@ -558,7 +459,6 @@
>> >         underlying type 'enum __anonymous_enum__2' at spice.h:471:1 changed:
>> >           type name changed from '__anonymous_enum__2' to 'SpiceImageCompression'
>> >           type size hasn't changed
>> >-
>> >           7 enumerator deletions:
>> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_INVALID' value '0'
>> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_OFF' value '1'
>> >@@ -567,7 +467,6 @@
>> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_QUIC' value '4'
>> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_GLZ' value '5'
>> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_LZ' value '6'
>> >-
>> >           9 enumerator insertions:
>> >             'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0'
>> >             'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1'
>> >diff --git a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt
>> >index 75ba0a50..11cd5682 100644
>> >--- a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt
>> >+++ b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt
>> >@@ -22,7 +22,6 @@ Leaf changes summary: 11 artifacts changed (7 filtered out)
>> >   'enum __anonymous_enum__2 at spice.h:471:1' changed:
>> >     type name changed from '__anonymous_enum__2' to 'SpiceImageCompression'
>> >     type size hasn't changed
>> >-
>> >     7 enumerator deletions:
>> >       '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_INVALID' value '0'
>> >       '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_OFF' value '1'
>> >@@ -31,7 +30,6 @@ Leaf changes summary: 11 artifacts changed (7 filtered out)
>> >       '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_QUIC' value '4'
>> >       '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_GLZ' value '5'
>> >       '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_LZ' value '6'
>> >-
>> >     9 enumerator insertions:
>> >       'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0'
>> >       'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1'
>> >@@ -48,7 +46,6 @@ Leaf changes summary: 11 artifacts changed (7 filtered out)
>> >       function int spice_server_set_image_compression(SpiceServer*, spice_image_compression_t)
>> >   'typedef spice_image_compression_t at spice.h:479:1' changed:
>> >     typedef name changed from spice_image_compression_t to SpiceImageCompression at enums.h:197:1
>> >-
>> >     2 impacted interfaces:
>> >       function spice_image_compression_t spice_server_get_image_compression(SpiceServer*)
>> >       function int spice_server_set_image_compression(SpiceServer*, spice_image_compression_t)
>> >diff --git a/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt b/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt
>> >index f8e60b50..d0381ce5 100644
>> >--- a/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt
>> >+++ b/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt
>> >@@ -60,7 +60,6 @@
>> >         type size hasn't changed
>> >         1 enumerator insertion:
>> >           'tbb::internal::exception_id::eid_bad_tagged_msg_cast' value '20'
>> >-
>> >         1 enumerator change:
>> >           'tbb::internal::exception_id::eid_max' from value '20' to '21' at tbb_exception.h:79:1
>> >
>> >@@ -129,7 +128,6 @@
>> >
>> >
>> >
>> >-
>> >                1 member function deletion:
>> >                  'method virtual tbb::task* tbb::internal::generic_scheduler::receive_or_steal_task(tbb::internal::reference_count&, bool)' at scheduler.h:391:1, virtual at voffset 7/7
>> >
>> >@@ -138,11 +136,8 @@
>> >
>> >                3 data member deletions:
>> >                  'unsigned int tbb::internal::generic_scheduler::hint_for_push', at offset 896 (in bits) at scheduler.h:171:1
>> >-
>> >                  'volatile intptr_t* tbb::internal::generic_scheduler::my_ref_top_priority', at offset 2560 (in bits) at scheduler.h:433:1
>> >-
>> >                  'volatile uintptr_t* tbb::internal::generic_scheduler::my_ref_reload_epoch', at offset 2752 (in bits) at scheduler.h:443:1
>> >-
>> >                18 data member changes:
>> >                 'uintptr_t tbb::internal::generic_scheduler::my_stealing_threshold' offset changed from 704 to 832 (in bits) (by +128 bits)
>> >                 type of 'tbb::internal::market* tbb::internal::generic_scheduler::my_market' changed:
>> >diff --git a/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt b/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt
>> >index 10816705..89c8efa3 100644
>> >--- a/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt
>> >+++ b/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt
>> >@@ -31,7 +31,6 @@
>> >         type size hasn't changed
>> >         1 enumerator insertion:
>> >           'tbb::internal::exception_id::eid_bad_tagged_msg_cast' value '20'
>> >-
>> >         1 enumerator change:
>> >           'tbb::internal::exception_id::eid_max' from value '20' to '21' at tbb_exception.h:79:1
>> >
>> >diff --git a/tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt b/tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt
>> >index 8f5d0b6b..c39851d3 100644
>> >--- a/tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt
>> >+++ b/tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt
>> >@@ -7,14 +7,11 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>> >     return type changed:
>> >       type name changed from 'int' to 'float'
>> >       type size hasn't changed
>> >-
>> >     parameter 1 of type 'int' changed:
>> >       type name changed from 'int' to 'float'
>> >       type size hasn't changed
>> >-
>> >     parameter 2 of type 'int' changed:
>> >       type name changed from 'int' to 'float'
>> >       type size hasn't changed
>> >
>> >
>> >-
>> >diff --git a/tests/data/test-diff-suppr/test35-leaf-report-0.txt b/tests/data/test-diff-suppr/test35-leaf-report-0.txt
>> >index 411cc1b4..244455ae 100644
>> >--- a/tests/data/test-diff-suppr/test35-leaf-report-0.txt
>> >+++ b/tests/data/test-diff-suppr/test35-leaf-report-0.txt
>> >@@ -7,6 +7,5 @@ Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
>> >   type size changed from 32 to 64 (in bits)
>> >   1 data member insertion:
>> >     'char leaf::m1', at offset 32 (in bits) at test35-leaf-v1.cc:8:1
>> >-
>> >   one impacted interface:
>> >     function void fn(C&)
>> >diff --git a/tests/data/test-diff-suppr/test36-leaf-report-0.txt b/tests/data/test-diff-suppr/test36-leaf-report-0.txt
>> >index b12a8a61..f286cc7b 100644
>> >--- a/tests/data/test-diff-suppr/test36-leaf-report-0.txt
>> >+++ b/tests/data/test-diff-suppr/test36-leaf-report-0.txt
>> >@@ -7,7 +7,6 @@ Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
>> >   type size changed from 32 to 64 (in bits)
>> >   1 data member insertion:
>> >     'char leaf1::m1', at offset 32 (in bits) at test36-leaf-v1.cc:7:1
>> >-
>> >   3 impacted interfaces:
>> >     function void interface1(struct_type*)
>> >     function void interface2(struct_type&)
>> >@@ -20,7 +19,6 @@ Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
>> >    type 'struct leaf1' of 'leaf2::member0' changed as reported earlier
>> >    and size changed from 32 to 64 (in bits) (by +32 bits)
>> >    'char leaf2::member1' offset changed from 32 to 64 (in bits) (by +32 bits)
>> >-
>> >   3 impacted interfaces:
>> >     function void interface1(struct_type*)
>> >     function void interface2(struct_type&)
>> >diff --git a/tests/data/test-diff-suppr/test41-enumerator-changes-report-0.txt b/tests/data/test-diff-suppr/test41-enumerator-changes-report-0.txt
>> >index 4b1681bc..d772bd1d 100644
>> >--- a/tests/data/test-diff-suppr/test41-enumerator-changes-report-0.txt
>> >+++ b/tests/data/test-diff-suppr/test41-enumerator-changes-report-0.txt
>> >@@ -8,7 +8,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>> >       type size hasn't changed
>> >       1 enumerator insertion:
>> >         'EnumType1::ee3_inserted' value '3'
>> >-
>> >       1 enumerator change:
>> >         'EnumType1::eenum_count' from value '3' to '4' at test41-enumerator-changes-v1.cc:10:1
>> >
>> >@@ -18,7 +17,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>> >       type size hasn't changed
>> >       1 enumerator insertion:
>> >         'EnumType0::e3_inserted' value '3'
>> >-
>> >       1 enumerator change:
>> >         'EnumType0::enum_count' from value '3' to '4' at test41-enumerator-changes-v1.cc:1:1
>> >
>> >--
>> >2.25.1.481.gfbce0eb801-goog
>> >
>> >
Giuliano Procida March 16, 2020, 1:04 p.m. UTC | #4
Hi.

On Mon, 16 Mar 2020 at 12:29, Matthias Maennich <maennich@google.com> wrote:
>
> On Mon, Mar 16, 2020 at 10:51:22AM +0000, Giuliano Procida wrote:
> >Hi Matthias.
> >
> >On Sat, 14 Mar 2020 at 20:09, Matthias Maennich <maennich@google.com> wrote:
> >>
> >> On Thu, Mar 12, 2020 at 06:30:34AM +0000, Android Kernel Team wrote:
> >> >There is distributed responsibility for horizontal and vertical
> >> >whitespace in the reporting code with indent and new line control
> >> >information being manipulated by and passed in and out of functions.
> >> >Occasionally, this information is ignored or incorrect and the code
> >> >tends to err on the side of more rather than fewer new lines.
> >> >
> >> >The outcome is that abidiff output sometimes contains extra blank
> >> >lines which can be confusing.
> >> >
> >> >This patch eliminates some of the more obvious cases:
> >> >
> >> >   - after data member deletions
> >> >   - in enumerator change lists
> >> >   - after "type size hasn't changed"
> >> >   - before listing impacted interfaces
> >> >
> >> >The patch cleans up the reporting of data members. The code will
> >> >either emit indentation, a short description and a new line or do
> >> >nothing at all.
> >> >
> >> >The patch also removes some stray location reporting code for array
> >> >diffs which would have produced some oddly placed output. I could not
> >> >get this code to trigger as loc = decl->get_location() was never
> >> >present on the array decls in question.
> >> >
> >> >       * src/abg-default-reporter.cc (report): In the enum_diff
> >> >       override, simplify new line logic; emit just one
> >> >       blank line after each enum. In the array_diff override, remove
> >> >       stray location reporting which doesn't appear to ever trigger;
> >> >       fix new line logic. In the class_or_union_diff override,
> >> >       simplify new line logic for deleted members; pass indentation
> >> >       to represent_data_member.
> >> >       * src/abg-leaf-reporter.cc (report): In the array_diff
> >> >       override, remove stray location reporting which doesn't appear
> >> >       to ever trigger; fix new line handling. In the
> >> >       class_or_union_diff override, simplify new line logic for
> >> >       deleted members; pass indentation to represent_data_member.
> >> >       * src/abg-reporter-priv.cc (represent_data_member): Handle
> >> >       indentation; fix new line logic.
> >> >       (report_size_and_alignment_changes): Fix new line logic
> >> >       for "type size hasn't changed" message; simplify new line
> >> >       logic.
> >> >       (report_name_size_and_alignment_changes): Fix new line logic.
> >> >       (maybe_report_interfaces_impacted_by_diff) Remove new line
> >> >       prefix code and new_line_prefix argument.
> >> >       * src/abg-reporter-priv.h (represent_data_member): Add indent
> >> >       argument.
> >> >       (maybe_report_interfaces_impacted_by_diff) Remove
> >> >       new_line_prefix argument.
> >> >       * tests/data/test-*/*report*.txt: Remove some blank lines.
> >> >
> >> >Signed-off-by: Giuliano Procida <gprocida@google.com>
> >> >---
> >> > src/abg-default-reporter.cc                   |  43 +++-----
> >> > src/abg-leaf-reporter.cc                      |  27 ++---
> >> > src/abg-reporter-priv.cc                      |  34 +++---
> >> > src/abg-reporter-priv.h                       |   9 +-
> >> > .../test5-fn-changed-report-0.txt             |   1 -
> >> > .../test5-fn-changed-report-1.txt             |   1 -
> >> > .../test6-var-changed-report-0.txt            |   1 -
> >> > .../test6-var-changed-report-1.txt            |   1 -
> >> > .../test7-fn-changed-report-0.txt             |   1 -
> >> > .../test-abidiff-exit/test-leaf3-report.txt   |   1 -
> >> > .../test-loc-with-locs-report.txt             |   1 -
> >> > .../test-loc-without-locs-report.txt          |   1 -
> >> > .../test-abidiff/test-PR18791-report0.txt     |   2 -
> >> > tests/data/test-abidiff/test-enum0-report.txt |   1 -
> >> > tests/data/test-abidiff/test-enum1-report.txt |   1 -
> >> > .../data/test-abidiff/test-struct1-report.txt |   1 -
> >> > .../PR25058-liblttng-ctl-report-1.txt         |   5 -
> >> > tests/data/test-diff-dwarf/test13-report.txt  |   1 -
> >> > .../test-diff-dwarf/test38-union-report-0.txt |   1 -
> >> > .../data/test-diff-dwarf/test40-report-0.txt  |   2 -
> >> > .../test42-PR21296-clanggcc-report0.txt       |   1 -
> >> > .../test43-PR22913-report-0.txt               |   1 -
> >> > tests/data/test-diff-filter/test10-report.txt |   1 -
> >> > tests/data/test-diff-filter/test18-report.txt |   1 -
> >> > ...st23-redundant-fn-parm-change-report-0.txt |   2 -
> >> > .../test30-pr18904-rvalueref-report0.txt      |   8 --
> >> > .../test30-pr18904-rvalueref-report1.txt      |   8 --
> >> > .../test30-pr18904-rvalueref-report2.txt      |   8 --
> >> > .../test35-pr18754-no-added-syms-report-0.txt |   8 --
> >> > .../data/test-diff-filter/test36-report-0.txt |   3 -
> >> > .../test42-leaf-report-output-0.txt           |   1 -
> >> > tests/data/test-diff-filter/test7-report.txt  |   1 -
> >> > ...-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt |   2 -
> >> > .../nss-3.23.0-1.0.fc23.x86_64-report-0.txt   |   4 -
> >> > ...l7.x86_64-0.12.8-1.el7.x86_64-report-0.txt |   2 -
> >> > ...l7.x86_64-0.12.8-1.el7.x86_64-report-1.txt |   2 -
> >> > ...l7.x86_64-0.12.8-1.el7.x86_64-report-2.txt | 101 ------------------
> >> > ...l7.x86_64-0.12.8-1.el7.x86_64-report-3.txt |   3 -
> >> > ...bb-4.3-3.20141204.fc23.x86_64-report-0.txt |   5 -
> >> > ...bb-4.3-3.20141204.fc23.x86_64-report-1.txt |   1 -
> >> > .../test10-changed-parm-c-report-0.txt        |   3 -
> >> > .../test-diff-suppr/test35-leaf-report-0.txt  |   1 -
> >> > .../test-diff-suppr/test36-leaf-report-0.txt  |   2 -
> >> > .../test41-enumerator-changes-report-0.txt    |   2 -
> >> > 44 files changed, 42 insertions(+), 264 deletions(-)
> >> >
> >> >diff --git a/src/abg-default-reporter.cc b/src/abg-default-reporter.cc
> >> >index 3bfdfbc4..a0b9eeea 100644
> >> >--- a/src/abg-default-reporter.cc
> >> >+++ b/src/abg-default-reporter.cc
> >> >@@ -130,16 +130,14 @@ default_reporter::report(const enum_diff& d, ostream& out,
> >> >          i != sorted_deleted_enumerators.end();
> >> >          ++i)
> >> >       {
> >> >-        if (i != sorted_deleted_enumerators.begin())
> >> >-          out << "\n";
> >> >         out << indent
> >> >             << "  '"
> >> >             << i->get_qualified_name()
> >> >             << "' value '"
> >> >             << i->get_value()
> >> >             << "'";
> >> >+        out << "\n";
> >> >       }
> >> >-      out << "\n\n";
> >> >     }
> >> >   if (numins)
> >> >     {
> >> >@@ -151,16 +149,14 @@ default_reporter::report(const enum_diff& d, ostream& out,
> >> >          i != sorted_inserted_enumerators.end();
> >> >          ++i)
> >> >       {
> >> >-        if (i != sorted_inserted_enumerators.begin())
> >> >-          out << "\n";
> >> >         out << indent
> >> >             << "  '"
> >> >             << i->get_qualified_name()
> >> >             << "' value '"
> >> >             << i->get_value()
> >> >             << "'";
> >> >+        out << "\n";
> >> >       }
> >> >-      out << "\n\n";
> >> >     }
> >> >   if (numchanges)
> >> >     {
> >> >@@ -173,8 +169,6 @@ default_reporter::report(const enum_diff& d, ostream& out,
> >> >          i != sorted_changed_enumerators.end();
> >> >          ++i)
> >> >       {
> >> >-        if (i != sorted_changed_enumerators.begin())
> >> >-          out << "\n";
> >> >         out << indent
> >> >             << "  '"
> >> >             << i->first.get_qualified_name()
> >> >@@ -182,13 +176,14 @@ default_reporter::report(const enum_diff& d, ostream& out,
> >> >             << i->first.get_value() << "' to '"
> >> >             << i->second.get_value() << "'";
> >> >         report_loc_info(second, *d.context(), out);
> >> >+        out << "\n";
> >> >       }
> >> >-      out << "\n\n";
> >> >     }
> >> >
> >> >+  out << "\n";
> >> >+
> >> >   if (d.context()->show_leaf_changes_only())
> >> >-    maybe_report_interfaces_impacted_by_diff(&d, out, indent,
> >> >-                                           /*new_line_prefix=*/false);
> >> >+    maybe_report_interfaces_impacted_by_diff(&d, out, indent);
> >> >
> >> >   d.reported_once(true);
> >> > }
> >> >@@ -392,7 +387,7 @@ default_reporter::report(const pointer_diff& d, ostream& out,
> >> >       : string("void");
> >> >
> >> >       out << indent
> >> >-        << "in pointed to type '" <<  repr << "'";
> >> >+        << "in pointed to type '" << repr << "'";
> >> >       report_loc_info(dif->second_subject(), *d.context(), out);
> >> >       out << ":\n";
> >> >       dif->report(out, indent + "  ");
> >> >@@ -673,12 +668,12 @@ default_reporter::report(const array_diff& d, ostream& out,
> >> >       dif->report(out, indent + "  ");
> >> >     }
> >> >
> >> >-  report_name_size_and_alignment_changes(d.first_array(),
> >> >-                                       d.second_array(),
> >> >-                                       d.context(),
> >> >-                                       out, indent,
> >> >-                                       /*new line=*/false);
> >> >-  report_loc_info(d.second_array(), *d.context(), out);
> >> >+  if (report_name_size_and_alignment_changes(d.first_array(),
> >> >+                                           d.second_array(),
> >> >+                                           d.context(),
> >> >+                                           out, indent,
> >> >+                                           /*new line=*/false))
> >>
> >> Though it is not required here, I would prefer braces for readability.
> >
> >Agreed, I think it's sensible here. In other places, with the coding
> >style in use, we'd end up with:
> >
> >if (emitted)
> >  {
> >    out << "\n";
> >  }
>
> Let's take this one at this location.

I've been able to eliminate it.

> >
> >which is pretty verbose. The following would be fine by me:
> >
> >if (emitted) out << "\n";
> >
> >Lastly, short but ugly:
> >
> >  emitted && (out << "\n");
> >
> >> >+    out << "\n";
> >> > }
> >> >
> >> > /// Generates a report for an intance of @ref base_diff.
> >> >@@ -1014,7 +1009,6 @@ default_reporter::report(const class_or_union_diff& d,
> >> >         sort_data_members
> >> >           (d.class_or_union_diff::get_priv()->deleted_data_members_,
> >> >            sorted_dms);
> >> >-        bool emitted = false;
> >> >         for (vector<decl_base_sptr>::const_iterator i = sorted_dms.begin();
> >> >              i != sorted_dms.end();
> >> >              ++i)
> >> >@@ -1024,14 +1018,8 @@ default_reporter::report(const class_or_union_diff& d,
> >> >             ABG_ASSERT(data_mem);
> >> >             if (get_member_is_static(data_mem))
> >> >               continue;
> >> >-            if (emitted)
> >> >-              out << "\n";
> >> >-            out << indent << "  ";
> >> >-            represent_data_member(data_mem, ctxt, out);
> >> >-            emitted = true;
> >> >+            represent_data_member(data_mem, ctxt, out, indent + "  ");
> >> >           }
> >> >-        if (emitted)
> >> >-          out << "\n";
> >> >       }
> >> >
> >> >       //report insertions
> >> >@@ -1052,8 +1040,7 @@ default_reporter::report(const class_or_union_diff& d,
> >> >             var_decl_sptr data_mem =
> >> >               dynamic_pointer_cast<var_decl>(*i);
> >> >             ABG_ASSERT(data_mem);
> >> >-            out << indent << "  ";
> >> >-            represent_data_member(data_mem, ctxt, out);
> >> >+            represent_data_member(data_mem, ctxt, out, indent + "  ");
> >> >           }
> >> >       }
> >> >
> >> >diff --git a/src/abg-leaf-reporter.cc b/src/abg-leaf-reporter.cc
> >> >index bbd51dcb..f706bd21 100644
> >> >--- a/src/abg-leaf-reporter.cc
> >> >+++ b/src/abg-leaf-reporter.cc
> >> >@@ -78,7 +78,7 @@ report_diffs(const reporter_base& r,
> >> >
> >> >         string n = (*i)->first_subject()->get_pretty_representation();
> >> >
> >> >-        out << indent << "'" << n ;
> >> >+        out << indent << "'" << n;
> >> >
> >> >         report_loc_info((*i)->first_subject(),
> >> >                         *(*i)->context(), out);
> >> >@@ -425,11 +425,12 @@ leaf_reporter::report(const array_diff& d,
> >> >                                                   d.second_array(),
> >> >                                                   "array type");
> >> >
> >> >-  report_name_size_and_alignment_changes(d.first_array(),
> >> >-                                       d.second_array(),
> >> >-                                       d.context(),
> >> >-                                       out, indent,
> >> >-                                       /*new line=*/false);
> >> >+  if (report_name_size_and_alignment_changes(d.first_array(),
> >> >+                                           d.second_array(),
> >> >+                                           d.context(),
> >> >+                                           out, indent,
> >> >+                                           /*new line=*/false))
> >>
> >> As above.
> >
> >Agreed.
> >
> >> >+    out << "\n";
> >> >
> >> >   diff_sptr dif = d.element_type_diff();
> >> >   if (diff_to_be_reported(dif.get()))
> >> >@@ -441,8 +442,6 @@ leaf_reporter::report(const array_diff& d,
> >> >       dif->report(out, indent + "  ");
> >> >     }
> >> >
> >> >-  report_loc_info(d.second_array(), *d.context(), out);
> >> >-
> >> >   maybe_report_interfaces_impacted_by_diff(&d, out, indent);
> >> > }
> >> >
> >> >@@ -592,7 +591,6 @@ leaf_reporter::report(const class_or_union_diff& d,
> >> >         sort_data_members
> >> >           (d.class_or_union_diff::get_priv()->deleted_data_members_,
> >> >            sorted_dms);
> >> >-        bool emitted = false;
> >> >         for (vector<decl_base_sptr>::const_iterator i = sorted_dms.begin();
> >> >              i != sorted_dms.end();
> >> >              ++i)
> >> >@@ -602,14 +600,8 @@ leaf_reporter::report(const class_or_union_diff& d,
> >> >             ABG_ASSERT(data_mem);
> >> >             if (get_member_is_static(data_mem))
> >> >               continue;
> >> >-            if (emitted)
> >> >-              out << "\n";
> >> >-            out << indent << "  ";
> >> >-            represent_data_member(data_mem, ctxt, out);
> >> >-            emitted = true;
> >> >+            represent_data_member(data_mem, ctxt, out, indent + "  ");
> >> >           }
> >> >-        if (emitted)
> >> >-          out << "\n";
> >> >       }
> >> >
> >> >       //report insertions
> >> >@@ -630,8 +622,7 @@ leaf_reporter::report(const class_or_union_diff& d,
> >> >             var_decl_sptr data_mem =
> >> >               dynamic_pointer_cast<var_decl>(*i);
> >> >             ABG_ASSERT(data_mem);
> >> >-            out << indent << "  ";
> >> >-            represent_data_member(data_mem, ctxt, out);
> >> >+            represent_data_member(data_mem, ctxt, out, indent + "  ");
> >> >           }
> >> >       }
> >> >
> >> >diff --git a/src/abg-reporter-priv.cc b/src/abg-reporter-priv.cc
> >> >index fbac85f8..948a32fc 100644
> >> >--- a/src/abg-reporter-priv.cc
> >> >+++ b/src/abg-reporter-priv.cc
> >> >@@ -242,16 +242,19 @@ represent(const diff_context& ctxt,
> >> > /// @param ctxt the current diff context.
> >> > ///
> >> > /// @param out the output stream to send the representation to
> >> >+///
> >> >+/// @param indent the indentation string to use for the change report.
> >> > void
> >> > represent_data_member(var_decl_sptr d,
> >> >                     const diff_context_sptr& ctxt,
> >> >-                    ostream& out)
> >> >+                    ostream& out,
> >> >+                    const string& indent)
> >>
> >> I would prefer out parameters after all input parameters. Since this is
> >> a private implementation detail, we should be good to change that
> >> interface.
> >
> >I looked at the existing functions and copied an existing order for
> >consistency. out and indent belong together morally as well (writer
> >monad). If we switch to an indenting ostream, this issue goes away.
> >
> >> > {
> >> >   if (!is_data_member(d)
> >> >       || (!get_member_is_static(d) && !get_data_member_is_laid_out(d)))
> >> >     return;
> >> >
> >> >-  out << "'" << d->get_pretty_representation() << "'";
> >> >+  out << indent << "'" << d->get_pretty_representation() << "'";
> >> >   if (!get_member_is_static(d))
> >> >     {
> >> >       // Do not emit offset information for data member of a union
> >> >@@ -262,8 +265,8 @@ represent_data_member(var_decl_sptr d,
> >> >                           get_data_member_offset(d),
> >> >                           *ctxt, out);
> >> >       report_loc_info(d, *ctxt, out);
> >> >-      out << "\n";
> >> >     }
> >> >+  out << "\n";
> >> > }
> >> >
> >> > /// If a given @ref var_diff node carries a data member change in
> >> >@@ -806,7 +809,10 @@ report_size_and_alignment_changes(type_or_decl_base_sptr  first,
> >> >       } // end if (fs != ss || fdc != sdc)
> >> >       else
> >> >       if (ctxt->show_relative_offset_changes())
> >> >-        out << indent << "type size hasn't changed\n";
> >> >+        {
> >> >+          out << indent << "type size hasn't changed";
> >> >+          n = true;
> >> >+        }
> >> >     }
> >> >   if ((ctxt->get_allowed_category() & SIZE_OR_OFFSET_CHANGE_CATEGORY)
> >> >       && (fa != sa))
> >> >@@ -819,9 +825,7 @@ report_size_and_alignment_changes(type_or_decl_base_sptr   first,
> >> >       n = true;
> >> >     }
> >> >
> >> >-  if (n)
> >> >-    return true;
> >> >-  return false;
> >> >+  return n;
> >>
> >> We should give 'n' a better name. Not necessarily part of this change.
> >
> >Acknowledged. If we are going to review newline handling we should do
> >it everywhere and consistently. Ideally we should get to the point
> >where we don't have to pass information about newlines around (this
> >will likely be possible with an indenting ostream but may be doable
> >even without that).
> >
> >> > }
> >> >
> >> > /// @param tod the type or declaration to emit loc info about
> >> >@@ -910,8 +914,8 @@ report_name_size_and_alignment_changes(decl_base_sptr              first,
> >> >       }
> >> >     }
> >> >
> >> >-  nl |= report_size_and_alignment_changes(first, second, ctxt,
> >> >-                                        out, indent, nl);
> >> >+  nl = report_size_and_alignment_changes(first, second, ctxt,
> >> >+                                         out, indent, nl);
> >> >   return nl;
> >> > }
> >> >
> >> >@@ -1366,14 +1370,10 @@ maybe_report_unreachable_type_changes(const corpus_diff& d,
> >> > /// @param out the output stream to report to.
> >> > ///
> >> > /// @param indent the white space string to use for indentation.
> >> >-///
> >> >-/// @param new_line_prefix if set to true, it means there is going to
> >> >-/// be a new line emitted before the report.
> >> > void
> >> > maybe_report_interfaces_impacted_by_diff(const diff   *d,
> >> >                                        ostream        &out,
> >> >-                                       const string   &indent,
> >> >-                                       bool           new_line_prefix)
> >> >+                                       const string   &indent)
> >> > {
> >> >   const diff_context_sptr &ctxt = d->context();
> >> >   const corpus_diff_sptr &corp_diff = ctxt->get_corpus_diff();
> >> >@@ -1395,9 +1395,6 @@ maybe_report_interfaces_impacted_by_diff(const diff      *d,
> >> >   vector<type_or_decl_base_sptr> sorted_impacted_interfaces;
> >> >   sort_artifacts_set(*impacted_artifacts, sorted_impacted_interfaces);
> >> >
> >> >-  if (new_line_prefix)
> >> >-    out << '\n';
> >> >-
> >>
> >> I think we need to keep this newline. It separates the cause (the leaf
> >> node change) from the impacted interfaces (the top level nodes).
> >
> >I disagree.
> >
> >I think the "impacted interfaces" block should be indented w.r.t leaf
> >node change's introductory text or separated from the whole node
> >change section by an extra new line, but not both. I'd prefer the
> >former as this should be a parent-child relationship in the text
> >output tree rather than a sibling one.
> >
> >Phrased another way, the text would be equally meaningful like this
> >(adapting tests/data/test-diff-filter/test42-leaf-report-output-0.txt;
> >though abitool.py's short report would need a tweak; it needs a tweak
>
> Just for the context: abitool.py we use in Android to monitor the kernel
> ABI with libabigail :-) See
> https://android.googlesource.com/kernel/build/+/refs/heads/master/abi/
>
> >anyway for the case of 1 impacted interface):
> >
> >'struct leaf at test42-leaf-report-v0.cc:4:1' changed:
> >  one impacted interface:
> >    function void fn(C&)
> > type size changed from 32 to 64 (in bits)
> >  1 data member insertion:
> >    'char leaf::m1', at offset 32 (in bits) at test42-leaf-report-v1.cc:7:1
> >
>
> The only concern I have and that I would like to see addressed is that
> the list of impacted interfaces can be considerably long (thousands for
> a central struct). That can get difficult to work with if this is
> 'embedded' there.
> In order to better address abi differences like that, I would prefer the
> current format:
>
> # what changed
> 'struct leaf at test42-leaf-report-v0.cc:4:1' changed:
>  type size changed from 32 to 64 (in bits)
>   1 data member insertion:
>     'char leaf::m1', at offset 32 (in bits) at test42-leaf-report-v1.cc:7:1
>
> # impact
>   one impacted interface:
>     function void fn(C&)

Just to clear, I wasn't advocating moving impacted interfaces up in
any way. I was just pointing out that it is really a child of
"changed" and I suppose it would be safer to prune based on
indentation if you are going to post-process the output.

# untested Perl
$text =~ s/^( *)([^ ]* impacted interfaces?):\n(\g1 .*\n)+:/$1$2\n/g;

Anyway, the format is (previous to my patch) looks like:

foo changed:
  detailsA

  M impacted interface(s):
   detailsB

bar changed:
  detailsC

  N impacted interface(s):
    detailsD

We want to post-process to remove detailsB and detailsD. This is
equally easy so long as we just consume non-empty lines following
"impacted interfaces". My patch to remove the blank line between
detailsA/C and "impacted interfaces" doesn't change this.

> There we can also truncate the list of impacted interfaces.
>
> Cheers,
> Matthias
>
> >Happy to discuss further.
> >
> >> With the above addressed, feel free to add
> >> Reviewed-by: Matthias Maennich <maennich@google.com>
> >>
> >> Cheers,
> >> Matthias
> >
> >Regards,
> >Giuliano.
> >
> >> >   size_t num_impacted_interfaces = impacted_artifacts->size();
> >> >   if (num_impacted_interfaces == 1)
> >> >     out << indent << "one impacted interface:\n";
> >> >@@ -1424,9 +1421,6 @@ maybe_report_interfaces_impacted_by_diff(const diff      *d,
> >> > /// @param out the output stream to report to.
> >> > ///
> >> > /// @param indent the white space string to use for indentation.
> >> >-///
> >> >-/// @param new_line_prefix if set to true, it means there is going to
> >> >-/// be a new line emitted before the report.
> >> > void
> >> > maybe_report_interfaces_impacted_by_diff(const diff_sptr      &d,
> >> >                                        ostream                &out,
> >> >diff --git a/src/abg-reporter-priv.h b/src/abg-reporter-priv.h
> >> >index 7471c74f..04803f43 100644
> >> >--- a/src/abg-reporter-priv.h
> >> >+++ b/src/abg-reporter-priv.h
> >> >@@ -151,7 +151,8 @@ represent(const diff_context& ctxt,
> >> > void
> >> > represent_data_member(var_decl_sptr d,
> >> >                     const diff_context_sptr& ctxt,
> >> >-                    ostream& out);
> >> >+                    ostream& out,
> >> >+                    const string& indent);
> >> >
> >> > void
> >> > maybe_show_relative_offset_change(const var_diff_sptr &diff,
> >> >@@ -244,14 +245,12 @@ maybe_report_unreachable_type_changes(const corpus_diff& d,
> >> > void
> >> > maybe_report_interfaces_impacted_by_diff(const diff           *d,
> >> >                                        ostream                &out,
> >> >-                                       const string           &indent,
> >> >-                                       bool new_line_prefix = true);
> >> >+                                       const string           &indent);
> >> >
> >> > void
> >> > maybe_report_interfaces_impacted_by_diff(const diff_sptr      &d,
> >> >                                        ostream                &out,
> >> >-                                       const string           &indent,
> >> >-                                       bool new_line_prefix = false);
> >> >+                                       const string           &indent);
> >> >
> >> > } // end namespace comparison
> >> > } // end namespace abigail
> >> >diff --git a/tests/data/test-abicompat/test5-fn-changed-report-0.txt b/tests/data/test-abicompat/test5-fn-changed-report-0.txt
> >> >index 96d48ccf..04676908 100644
> >> >--- a/tests/data/test-abicompat/test5-fn-changed-report-0.txt
> >> >+++ b/tests/data/test-abicompat/test5-fn-changed-report-0.txt
> >> >@@ -15,4 +15,3 @@ have sub-types that are different from what application 'test5-fn-changed-app' e
> >> >         1 data member deletion:
> >> >           'unsigned char S1::m1', at offset 32 (in bits)
> >> >
> >> >-
> >> >diff --git a/tests/data/test-abicompat/test5-fn-changed-report-1.txt b/tests/data/test-abicompat/test5-fn-changed-report-1.txt
> >> >index 3c8c4a8f..b39f650d 100644
> >> >--- a/tests/data/test-abicompat/test5-fn-changed-report-1.txt
> >> >+++ b/tests/data/test-abicompat/test5-fn-changed-report-1.txt
> >> >@@ -15,4 +15,3 @@ have sub-types that are different from what application 'test5-fn-changed-app' e
> >> >         1 data member deletion:
> >> >           'unsigned char S1::m1', at offset 32 (in bits) at test5-fn-changed-libapp-v0.h:11:1
> >> >
> >> >-
> >> >diff --git a/tests/data/test-abicompat/test6-var-changed-report-0.txt b/tests/data/test-abicompat/test6-var-changed-report-0.txt
> >> >index 5d2bd89c..f5077879 100644
> >> >--- a/tests/data/test-abicompat/test6-var-changed-report-0.txt
> >> >+++ b/tests/data/test-abicompat/test6-var-changed-report-0.txt
> >> >@@ -13,4 +13,3 @@ have sub-types that are different from what application 'test6-var-changed-app'
> >> >       1 data member deletion:
> >> >         'unsigned char S1::m1', at offset 32 (in bits)
> >> >
> >> >-
> >> >diff --git a/tests/data/test-abicompat/test6-var-changed-report-1.txt b/tests/data/test-abicompat/test6-var-changed-report-1.txt
> >> >index 697929f0..5b78c83c 100644
> >> >--- a/tests/data/test-abicompat/test6-var-changed-report-1.txt
> >> >+++ b/tests/data/test-abicompat/test6-var-changed-report-1.txt
> >> >@@ -13,4 +13,3 @@ have sub-types that are different from what application 'test6-var-changed-app'
> >> >       1 data member deletion:
> >> >         'unsigned char S1::m1', at offset 32 (in bits) at test6-var-changed-libapp-v0.h:11:1
> >> >
> >> >-
> >> >diff --git a/tests/data/test-abicompat/test7-fn-changed-report-0.txt b/tests/data/test-abicompat/test7-fn-changed-report-0.txt
> >> >index 19db76e3..6a34710d 100644
> >> >--- a/tests/data/test-abicompat/test7-fn-changed-report-0.txt
> >> >+++ b/tests/data/test-abicompat/test7-fn-changed-report-0.txt
> >> >@@ -9,7 +9,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >> >       type name changed from 'float' to 'int'
> >> >       type size hasn't changed
> >> >
> >> >-
> >> >   [C] 'function void print(const Student)' has some indirect sub-type changes:
> >> >     parameter 1 of type 'const Student' has sub-type changes:
> >> >       in unqualified underlying type 'struct Student':
> >> >diff --git a/tests/data/test-abidiff-exit/test-leaf3-report.txt b/tests/data/test-abidiff-exit/test-leaf3-report.txt
> >> >index 138c4b5a..7602e761 100644
> >> >--- a/tests/data/test-abidiff-exit/test-leaf3-report.txt
> >> >+++ b/tests/data/test-abidiff-exit/test-leaf3-report.txt
> >> >@@ -10,7 +10,6 @@ Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
> >> >       type name changed from 'sto1' to 'stn1'
> >> >       type size hasn't changed
> >> >
> >> >-
> >> >   [C] 'function void fn2(sto2)' at test-leaf3-v1.c:13:1 has some sub-type changes:
> >> >     parameter 1 of type 'struct sto2' changed:
> >> >       type name changed from 'sto2' to 'stn2'
> >> >diff --git a/tests/data/test-abidiff-exit/test-loc-with-locs-report.txt b/tests/data/test-abidiff-exit/test-loc-with-locs-report.txt
> >> >index 53672744..bc37ff53 100644
> >> >--- a/tests/data/test-abidiff-exit/test-loc-with-locs-report.txt
> >> >+++ b/tests/data/test-abidiff-exit/test-loc-with-locs-report.txt
> >> >@@ -9,4 +9,3 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >> >       type size hasn't changed
> >> >
> >> >
> >> >-
> >> >diff --git a/tests/data/test-abidiff-exit/test-loc-without-locs-report.txt b/tests/data/test-abidiff-exit/test-loc-without-locs-report.txt
> >> >index 6893e3fc..56c41d79 100644
> >> >--- a/tests/data/test-abidiff-exit/test-loc-without-locs-report.txt
> >> >+++ b/tests/data/test-abidiff-exit/test-loc-without-locs-report.txt
> >> >@@ -9,4 +9,3 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >> >       type size hasn't changed
> >> >
> >> >
> >> >-
> >> >diff --git a/tests/data/test-abidiff/test-PR18791-report0.txt b/tests/data/test-abidiff/test-PR18791-report0.txt
> >> >index 5758077d..7e16fe32 100644
> >> >--- a/tests/data/test-abidiff/test-PR18791-report0.txt
> >> >+++ b/tests/data/test-abidiff/test-PR18791-report0.txt
> >> >@@ -48,9 +48,7 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >> >                                          struct std::__detail::_List_node_base
> >> >                                        2 data member deletions:
> >> >                                          'std::__detail::_List_node_base* std::__detail::_List_node_base::_M_next', at offset 0 (in bits)
> >> >-
> >> >                                          'std::__detail::_List_node_base* std::__detail::_List_node_base::_M_prev', at offset 64 (in bits)
> >> >-
> >> >                                        1 data member insertion:
> >> >                                          'unsigned long int std::_List_node<long unsigned int>::_M_data', at offset 128 (in bits)
> >> >                                      and name of 'std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl::_M_node' changed to 'std::__cxx11::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl::_M_node'
> >> >diff --git a/tests/data/test-abidiff/test-enum0-report.txt b/tests/data/test-abidiff/test-enum0-report.txt
> >> >index c7c5a682..1cd7eaaf 100644
> >> >--- a/tests/data/test-abidiff/test-enum0-report.txt
> >> >+++ b/tests/data/test-abidiff/test-enum0-report.txt
> >> >@@ -3,7 +3,6 @@
> >> >     type size hasn't changed
> >> >     1 enumerator deletion:
> >> >       'E::e2' value '1'
> >> >-
> >> >     1 enumerator insertion:
> >> >       'E::e1' value '1'
> >> >
> >> >diff --git a/tests/data/test-abidiff/test-enum1-report.txt b/tests/data/test-abidiff/test-enum1-report.txt
> >> >index f1198ef9..7e8acf80 100644
> >> >--- a/tests/data/test-abidiff/test-enum1-report.txt
> >> >+++ b/tests/data/test-abidiff/test-enum1-report.txt
> >> >@@ -3,7 +3,6 @@
> >> >     type size hasn't changed
> >> >     1 enumerator insertion:
> >> >       'E::e1' value '1'
> >> >-
> >> >     1 enumerator change:
> >> >       'E::e2' from value '1' to '2'
> >> >
> >> >diff --git a/tests/data/test-abidiff/test-struct1-report.txt b/tests/data/test-abidiff/test-struct1-report.txt
> >> >index 39b71e55..e334bf1a 100644
> >> >--- a/tests/data/test-abidiff/test-struct1-report.txt
> >> >+++ b/tests/data/test-abidiff/test-struct1-report.txt
> >> >@@ -6,7 +6,6 @@
> >> >
> >> >     1 data member deletion:
> >> >       'char s0::m1', at offset 96 (in bits)
> >> >-
> >> >     1 data member insertion:
> >> >       'double s0::m01', at offset 128 (in bits)
> >> >     2 data member changes:
> >> >diff --git a/tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt b/tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt
> >> >index 29f823ec..aab271ff 100644
> >> >--- a/tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt
> >> >+++ b/tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt
> >> >@@ -100,7 +100,6 @@ Variables changes summary: 0 Removed, 0 Changed, 3 Added variables
> >> >          type of 'union {lttng_event_perf_counter_ctx perf_counter; struct {char* provider_name; char* ctx_name;} app_ctx; char padding[288];} lttng_event_context::u' changed:
> >> >            type name changed from '__anonymous_union__4' to '__anonymous_union__5'
> >> >            type size hasn't changed
> >> >-
> >> >            3 data member changes:
> >> >             name of '__anonymous_union__4::app_ctx' changed to '__anonymous_union__5::app_ctx'
> >> >             name of '__anonymous_union__4::padding' changed to '__anonymous_union__5::padding'
> >> >@@ -171,7 +170,6 @@ Variables changes summary: 0 Removed, 0 Changed, 3 Added variables
> >> >           type size changed from 35008 to 35072 (in bits)
> >> >           1 data member deletion:
> >> >             'char lttng_session::padding[12]', at offset 34912 (in bits)
> >> >-
> >> >           1 data member insertion:
> >> >             'union {char padding[12]; void* ptr;} lttng_session::extended', at offset 34944 (in bits)
> >> >
> >> >@@ -208,7 +206,6 @@ Variables changes summary: 0 Removed, 0 Changed, 3 Added variables
> >> >           1 data member deletion:
> >> >             'bool lttng_notification::owns_elements', at offset 128 (in bits)
> >> >
> >> >-
> >> >   [C] 'function lttng_notification_channel_status lttng_notification_channel_subscribe(lttng_notification_channel*, const lttng_condition*)' has some indirect sub-type changes:
> >> >     return type changed:
> >> >       enum type 'enum lttng_notification_channel_status' changed, as reported earlier
> >> >@@ -289,7 +286,6 @@ Variables changes summary: 0 Removed, 0 Changed, 3 Added variables
> >> >                            'op_type::AST_OP_BIN_AND' value '10'
> >> >                            'op_type::AST_OP_BIN_OR' value '11'
> >> >                            'op_type::AST_OP_BIN_XOR' value '12'
> >> >-
> >> >                          5 enumerator insertions:
> >> >                            'op_type::AST_OP_BIT_RSHIFT' value '6'
> >> >                            'op_type::AST_OP_BIT_LSHIFT' value '7'
> >> >@@ -319,7 +315,6 @@ Variables changes summary: 0 Removed, 0 Changed, 3 Added variables
> >> >                          type size hasn't changed
> >> >                          1 enumerator deletion:
> >> >                            'unary_op_type::AST_UNARY_BIN_NOT' value '4'
> >> >-
> >> >                          1 enumerator insertion:
> >> >                            'unary_op_type::AST_UNARY_BIT_NOT' value '4'
> >> >
> >> >diff --git a/tests/data/test-diff-dwarf/test13-report.txt b/tests/data/test-diff-dwarf/test13-report.txt
> >> >index cf29a4fd..833879c7 100644
> >> >--- a/tests/data/test-diff-dwarf/test13-report.txt
> >> >+++ b/tests/data/test-diff-dwarf/test13-report.txt
> >> >@@ -12,7 +12,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >> >            type name changed from 'int' to 'unsigned int'
> >> >            type size hasn't changed
> >> >
> >> >-
> >> >          type of 'unsigned int S::m2' changed:
> >> >            type name changed from 'unsigned int' to 'long long int'
> >> >            type size changed from 32 to 64 (in bits)
> >> >diff --git a/tests/data/test-diff-dwarf/test38-union-report-0.txt b/tests/data/test-diff-dwarf/test38-union-report-0.txt
> >> >index f7a75df7..fd9708e6 100644
> >> >--- a/tests/data/test-diff-dwarf/test38-union-report-0.txt
> >> >+++ b/tests/data/test-diff-dwarf/test38-union-report-0.txt
> >> >@@ -9,7 +9,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >> >         type size hasn't changed
> >> >         1 data member deletion:
> >> >           'int some_union_type::m0'
> >> >-
> >> >         type changed from:
> >> >           union some_union_type{int m0; char m1; S m2;}
> >> >         to:
> >> >diff --git a/tests/data/test-diff-dwarf/test40-report-0.txt b/tests/data/test-diff-dwarf/test40-report-0.txt
> >> >index d0b8c52c..f0f9e1a1 100644
> >> >--- a/tests/data/test-diff-dwarf/test40-report-0.txt
> >> >+++ b/tests/data/test-diff-dwarf/test40-report-0.txt
> >> >@@ -9,7 +9,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >> >         type size changed from 96 to 64 (in bits)
> >> >         1 data member deletion:
> >> >           'int S2::to_remove', at offset 0 (in bits)
> >> >-
> >> >         2 data member changes:
> >> >          'int S2::m0' offset changed from 32 to 0 (in bits) (by -32 bits)
> >> >          'char S2::m1' offset changed from 64 to 32 (in bits) (by -32 bits)
> >> >@@ -24,7 +23,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >> >            type size hasn't changed
> >> >
> >> >
> >> >-
> >> >   [C] 'function int foo(S1*)' has some indirect sub-type changes:
> >> >     parameter 1 of type 'S1*' has sub-type changes:
> >> >       in pointed to type 'struct S1':
> >> >diff --git a/tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt b/tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt
> >> >index f0a25a2e..44918baa 100644
> >> >--- a/tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt
> >> >+++ b/tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt
> >> >@@ -19,7 +19,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >> >     return type changed:
> >> >       type name changed from 'std::tuple<STR&&>' to 'std::tuple<STR &&>'
> >> >       type size hasn't changed
> >> >-
> >> >       1 base class deletion:
> >> >         struct std::_Tuple_impl<0ul, STR&&>
> >> >       1 base class insertion:
> >> >diff --git a/tests/data/test-diff-dwarf/test43-PR22913-report-0.txt b/tests/data/test-diff-dwarf/test43-PR22913-report-0.txt
> >> >index 1c0c773d..60681336 100644
> >> >--- a/tests/data/test-diff-dwarf/test43-PR22913-report-0.txt
> >> >+++ b/tests/data/test-diff-dwarf/test43-PR22913-report-0.txt
> >> >@@ -12,4 +12,3 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >> >             'char m2', at offset 8 (in bits)
> >> >
> >> >
> >> >-
> >> >diff --git a/tests/data/test-diff-filter/test10-report.txt b/tests/data/test-diff-filter/test10-report.txt
> >> >index bdc31fd0..5a505fc3 100644
> >> >--- a/tests/data/test-diff-filter/test10-report.txt
> >> >+++ b/tests/data/test-diff-filter/test10-report.txt
> >> >@@ -16,4 +16,3 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >> >           'unsigned int S::m', at offset 0 (in bits)
> >> >
> >> >
> >> >-
> >> >diff --git a/tests/data/test-diff-filter/test18-report.txt b/tests/data/test-diff-filter/test18-report.txt
> >> >index 0d30ef39..6ade5bdf 100644
> >> >--- a/tests/data/test-diff-filter/test18-report.txt
> >> >+++ b/tests/data/test-diff-filter/test18-report.txt
> >> >@@ -14,4 +14,3 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >> >
> >> >
> >> >
> >> >-
> >> >diff --git a/tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt b/tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt
> >> >index f847d32e..99c14329 100644
> >> >--- a/tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt
> >> >+++ b/tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt
> >> >@@ -7,10 +7,8 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >> >     parameter 1 of type 'int' changed:
> >> >       type name changed from 'int' to 'float'
> >> >       type size hasn't changed
> >> >-
> >> >     parameter 2 of type 'int' changed:
> >> >       type name changed from 'int' to 'float'
> >> >       type size hasn't changed
> >> >
> >> >
> >> >-
> >> >diff --git a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt
> >> >index b78215b0..5def3a08 100644
> >> >--- a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt
> >> >+++ b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt
> >> >@@ -1200,7 +1200,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >> >           '__anonymous_enum__1::c_report_state_stream' value '142'
> >> >           '__anonymous_enum__1::c_report_stream' value '143'
> >> >           '__anonymous_enum__1::c_unload_library' value '144'
> >> >-
> >> >         92 enumerator changes:
> >> >           '__anonymous_enum__::c_process_get_func_handles' from value '32' to '33'
> >> >           '__anonymous_enum__::c_process_wait_shutdown' from value '33' to '34'
> >> >@@ -1304,7 +1303,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >> >          type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} VarDesc::flags' changed:
> >> >            type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags'
> >> >            type size hasn't changed
> >> >-
> >> >            1 data member changes (1 filtered):
> >> >             anonymous data member at offset 0 (in bits) changed from:
> >> >               struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}
> >> >@@ -1319,7 +1317,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >> >         entity changed from 'struct InitTableEntry' to compatible type 'typedef InitTableEntry'
> >> >           type name changed from 'InitTableEntry' to '__anonymous_struct__2'
> >> >           type size hasn't changed
> >> >-
> >> >           1 data member change:
> >> >            type of 'void ()* InitTableEntry::func' changed:
> >> >              in pointed to type 'function type void ()':
> >> >@@ -1348,7 +1345,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >> >                type size changed from 2752 to 5504 (in bits)
> >> >                1 data member deletion:
> >> >                  'mutex_t Engine::m_ptr_lock', at offset 1344 (in bits)
> >> >-
> >> >                7 data member insertions:
> >> >                  'PtrDataTable Engine::m_targetptr_set', at offset 1664 (in bits)
> >> >                  'StreamMap Engine::m_stream_map', at offset 3072 (in bits)
> >> >@@ -1370,20 +1366,16 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >> >                        underlying type 'class std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' changed:
> >> >                          type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' to 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >'
> >> >                          type size hasn't changed
> >> >-
> >> >                          1 data member change:
> >> >                           type of 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' changed:
> >> >                             entity changed from 'struct std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to compatible type 'typedef std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type'
> >> >                               type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >'
> >> >                               type size hasn't changed
> >> >-
> >> >                               1 base class deletion:
> >> >                                 class std::allocator<std::_Rb_tree_node<PtrData> >
> >> >                               2 data member deletions:
> >> >                                 'std::_Rb_tree_node_base std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_header', at offset 64 (in bits)
> >> >-
> >> >                                 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::size_type std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_node_count', at offset 320 (in bits)
> >> >-
> >> >                               1 data member change:
> >> >                                type of 'std::less<PtrData> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_key_compare' changed:
> >> >                                  type name changed from 'std::less<PtrData>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>'
> >> >diff --git a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt
> >> >index ccaf8126..3bc8f6d7 100644
> >> >--- a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt
> >> >+++ b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt
> >> >@@ -1200,7 +1200,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >> >           '__anonymous_enum__1::c_report_state_stream' value '142'
> >> >           '__anonymous_enum__1::c_report_stream' value '143'
> >> >           '__anonymous_enum__1::c_unload_library' value '144'
> >> >-
> >> >         92 enumerator changes:
> >> >           '__anonymous_enum__::c_process_get_func_handles' from value '32' to '33' at liboffload_error_codes.h:38:1
> >> >           '__anonymous_enum__::c_process_wait_shutdown' from value '33' to '34' at liboffload_error_codes.h:38:1
> >> >@@ -1304,7 +1303,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >> >          type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} VarDesc::flags' changed:
> >> >            type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags'
> >> >            type size hasn't changed
> >> >-
> >> >            1 data member changes (1 filtered):
> >> >             anonymous data member at offset 0 (in bits) changed from:
> >> >               struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}
> >> >@@ -1319,7 +1317,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >> >         entity changed from 'struct InitTableEntry' to compatible type 'typedef InitTableEntry' at offload_table.h:296:1
> >> >           type name changed from 'InitTableEntry' to '__anonymous_struct__2'
> >> >           type size hasn't changed
> >> >-
> >> >           1 data member change:
> >> >            type of 'void ()* InitTableEntry::func' changed:
> >> >              in pointed to type 'function type void ()':
> >> >@@ -1348,7 +1345,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >> >                type size changed from 2752 to 5504 (in bits)
> >> >                1 data member deletion:
> >> >                  'mutex_t Engine::m_ptr_lock', at offset 1344 (in bits) at offload_engine.h:474:1
> >> >-
> >> >                7 data member insertions:
> >> >                  'PtrDataTable Engine::m_targetptr_set', at offset 1664 (in bits) at offload_engine.h:630:1
> >> >                  'StreamMap Engine::m_stream_map', at offset 3072 (in bits) at offload_engine.h:637:1
> >> >@@ -1370,20 +1366,16 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >> >                        underlying type 'class std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' at stl_tree.h:357:1 changed:
> >> >                          type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' to 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >'
> >> >                          type size hasn't changed
> >> >-
> >> >                          1 data member change:
> >> >                           type of 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' changed:
> >> >                             entity changed from 'struct std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to compatible type 'typedef std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type' at stl_set.h:115:1
> >> >                               type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >'
> >> >                               type size hasn't changed
> >> >-
> >> >                               1 base class deletion:
> >> >                                 class std::allocator<std::_Rb_tree_node<PtrData> > at allocator.h:95:1
> >> >                               2 data member deletions:
> >> >                                 'std::_Rb_tree_node_base std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_header', at offset 64 (in bits) at stl_tree.h:593:1
> >> >-
> >> >                                 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::size_type std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_node_count', at offset 320 (in bits) at stl_tree.h:594:1
> >> >-
> >> >                               1 data member change:
> >> >                                type of 'std::less<PtrData> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_key_compare' changed:
> >> >                                  type name changed from 'std::less<PtrData>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>'
> >> >diff --git a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt
> >> >index 44e78935..d91de66b 100644
> >> >--- a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt
> >> >+++ b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt
> >> >@@ -1200,7 +1200,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >> >           '__anonymous_enum__1::c_report_state_stream' value '142'
> >> >           '__anonymous_enum__1::c_report_stream' value '143'
> >> >           '__anonymous_enum__1::c_unload_library' value '144'
> >> >-
> >> >         92 enumerator changes:
> >> >           '__anonymous_enum__::c_process_get_func_handles' from value '32' to '33' at liboffload_error_codes.h:38:1
> >> >           '__anonymous_enum__::c_process_wait_shutdown' from value '33' to '34' at liboffload_error_codes.h:38:1
> >> >@@ -1304,7 +1303,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >> >          type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} VarDesc::flags' changed:
> >> >            type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags'
> >> >            type size hasn't changed
> >> >-
> >> >            1 data member changes (1 filtered):
> >> >             anonymous data member at offset 0 (in bytes) changed from:
> >> >               struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}
> >> >@@ -1319,7 +1317,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >> >         entity changed from 'struct InitTableEntry' to compatible type 'typedef InitTableEntry' at offload_table.h:296:1
> >> >           type name changed from 'InitTableEntry' to '__anonymous_struct__2'
> >> >           type size hasn't changed
> >> >-
> >> >           1 data member change:
> >> >            type of 'void ()* InitTableEntry::func' changed:
> >> >              in pointed to type 'function type void ()':
> >> >@@ -1348,7 +1345,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >> >                type size changed from 0x158 to 0x2b0 (in bytes)
> >> >                1 data member deletion:
> >> >                  'mutex_t Engine::m_ptr_lock', at offset 0xa8 (in bytes) at offload_engine.h:474:1
> >> >-
> >> >                7 data member insertions:
> >> >                  'PtrDataTable Engine::m_targetptr_set', at offset 0xd0 (in bytes) at offload_engine.h:630:1
> >> >                  'StreamMap Engine::m_stream_map', at offset 0x180 (in bytes) at offload_engine.h:637:1
> >> >@@ -1370,20 +1366,16 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >> >                        underlying type 'class std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' at stl_tree.h:357:1 changed:
> >> >                          type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' to 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >'
> >> >                          type size hasn't changed
> >> >-
> >> >                          1 data member change:
> >> >                           type of 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' changed:
> >> >                             entity changed from 'struct std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to compatible type 'typedef std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type' at stl_set.h:115:1
> >> >                               type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >'
> >> >                               type size hasn't changed
> >> >-
> >> >                               1 base class deletion:
> >> >                                 class std::allocator<std::_Rb_tree_node<PtrData> > at allocator.h:95:1
> >> >                               2 data member deletions:
> >> >                                 'std::_Rb_tree_node_base std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_header', at offset 0x8 (in bytes) at stl_tree.h:593:1
> >> >-
> >> >                                 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::size_type std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_node_count', at offset 0x28 (in bytes) at stl_tree.h:594:1
> >> >-
> >> >                               1 data member change:
> >> >                                type of 'std::less<PtrData> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_key_compare' changed:
> >> >                                  type name changed from 'std::less<PtrData>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>'
> >> >diff --git a/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt b/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt
> >> >index c9cb9246..306a9863 100644
> >> >--- a/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt
> >> >+++ b/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt
> >> >@@ -116,7 +116,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >> >           '__anonymous_enum__1::c_report_state_stream' value '142'
> >> >           '__anonymous_enum__1::c_report_stream' value '143'
> >> >           '__anonymous_enum__1::c_unload_library' value '144'
> >> >-
> >> >         92 enumerator changes:
> >> >           '__anonymous_enum__::c_process_get_func_handles' from value '32' to '33'
> >> >           '__anonymous_enum__::c_process_wait_shutdown' from value '33' to '34'
> >> >@@ -220,7 +219,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >> >          type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} VarDesc::flags' changed:
> >> >            type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags'
> >> >            type size hasn't changed
> >> >-
> >> >            1 data member changes (1 filtered):
> >> >             anonymous data member at offset 0 (in bits) changed from:
> >> >               struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}
> >> >@@ -235,7 +233,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >> >         entity changed from 'struct InitTableEntry' to compatible type 'typedef InitTableEntry'
> >> >           type name changed from 'InitTableEntry' to '__anonymous_struct__2'
> >> >           type size hasn't changed
> >> >-
> >> >           1 data member change:
> >> >            type of 'void ()* InitTableEntry::func' changed:
> >> >              in pointed to type 'function type void ()':
> >> >@@ -264,7 +261,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >> >                type size changed from 2752 to 5504 (in bits)
> >> >                1 data member deletion:
> >> >                  'mutex_t Engine::m_ptr_lock', at offset 1344 (in bits)
> >> >-
> >> >                7 data member insertions:
> >> >                  'PtrDataTable Engine::m_targetptr_set', at offset 1664 (in bits)
> >> >                  'StreamMap Engine::m_stream_map', at offset 3072 (in bits)
> >> >@@ -286,20 +282,16 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >> >                        underlying type 'class std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' changed:
> >> >                          type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' to 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >'
> >> >                          type size hasn't changed
> >> >-
> >> >                          1 data member change:
> >> >                           type of 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' changed:
> >> >                             entity changed from 'struct std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to compatible type 'typedef std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type'
> >> >                               type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >'
> >> >                               type size hasn't changed
> >> >-
> >> >                               1 base class deletion:
> >> >                                 class std::allocator<std::_Rb_tree_node<PtrData> >
> >> >                               2 data member deletions:
> >> >                                 'std::_Rb_tree_node_base std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_header', at offset 64 (in bits)
> >> >-
> >> >                                 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::size_type std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_node_count', at offset 320 (in bits)
> >> >-
> >> >                               1 data member change:
> >> >                                type of 'std::less<PtrData> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_key_compare' changed:
> >> >                                  type name changed from 'std::less<PtrData>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>'
> >> >diff --git a/tests/data/test-diff-filter/test36-report-0.txt b/tests/data/test-diff-filter/test36-report-0.txt
> >> >index 08692c1e..22e614d8 100644
> >> >--- a/tests/data/test-diff-filter/test36-report-0.txt
> >> >+++ b/tests/data/test-diff-filter/test36-report-0.txt
> >> >@@ -13,7 +13,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >> >            type size hasn't changed
> >> >
> >> >
> >> >-
> >> >   [C] 'function int foo_2(S*)' at test36-2-v1.c:13:1 has some indirect sub-type changes:
> >> >     parameter 1 of type 'S*' has sub-type changes:
> >> >       in pointed to type 'struct S' at test36-2-v1.c:6:1:
> >> >@@ -23,11 +22,9 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >> >            type name changed from 'int' to 'unsigned int'
> >> >            type size hasn't changed
> >> >
> >> >-
> >> >          type of 'int S::m1' changed:
> >> >            type name changed from 'int' to 'unsigned int'
> >> >            type size hasn't changed
> >> >
> >> >
> >> >
> >> >-
> >> >diff --git a/tests/data/test-diff-filter/test42-leaf-report-output-0.txt b/tests/data/test-diff-filter/test42-leaf-report-output-0.txt
> >> >index 94a0551d..d40a1374 100644
> >> >--- a/tests/data/test-diff-filter/test42-leaf-report-output-0.txt
> >> >+++ b/tests/data/test-diff-filter/test42-leaf-report-output-0.txt
> >> >@@ -7,6 +7,5 @@ Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
> >> >   type size changed from 32 to 64 (in bits)
> >> >   1 data member insertion:
> >> >     'char leaf::m1', at offset 32 (in bits) at test42-leaf-report-v1.cc:7:1
> >> >-
> >> >   one impacted interface:
> >> >     function void fn(C&)
> >> >diff --git a/tests/data/test-diff-filter/test7-report.txt b/tests/data/test-diff-filter/test7-report.txt
> >> >index 7e3a4d47..26933033 100644
> >> >--- a/tests/data/test-diff-filter/test7-report.txt
> >> >+++ b/tests/data/test-diff-filter/test7-report.txt
> >> >@@ -7,7 +7,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >> >     return type changed:
> >> >       type name changed from 'return_type' to 'other_return_type'
> >> >       type size hasn't changed
> >> >-
> >> >       no data member change (1 filtered);
> >> >
> >> >
> >> >diff --git a/tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt b/tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt
> >> >index 05d6fcad..873a84cd 100644
> >> >--- a/tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt
> >> >+++ b/tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt
> >> >@@ -54,9 +54,7 @@
> >> >                                                   struct std::__detail::_List_node_base
> >> >                                                 2 data member deletions:
> >> >                                                   'std::__detail::_List_node_base* std::__detail::_List_node_base::_M_next', at offset 0 (in bits)
> >> >-
> >> >                                                   'std::__detail::_List_node_base* std::__detail::_List_node_base::_M_prev', at offset 64 (in bits)
> >> >-
> >> >                                                 1 data member insertion:
> >> >                                                   'unsigned long int std::_List_node<long unsigned int>::_M_data', at offset 128 (in bits)
> >> >                                               and name of 'std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl::_M_node' changed to 'std::__cxx11::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl::_M_node'
> >> >diff --git a/tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt b/tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt
> >> >index c227fa5c..a0cc67c2 100644
> >> >--- a/tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt
> >> >+++ b/tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt
> >> >@@ -10,7 +10,6 @@
> >> >           type size hasn't changed
> >> >           1 enumerator insertion:
> >> >             '__anonymous_enum__1::SEC_OID_TLS_ECDHE_PSK' value '347'
> >> >-
> >> >           1 enumerator change:
> >> >             '__anonymous_enum__1::SEC_OID_TOTAL' from value '347' to '348' at secoidt.h:34:1
> >> >
> >> >@@ -34,7 +33,6 @@
> >> >           type size hasn't changed
> >> >           1 enumerator insertion:
> >> >             '__anonymous_enum__1::ssl_kea_ecdh_psk' value '5'
> >> >-
> >> >           1 enumerator change:
> >> >             '__anonymous_enum__::ssl_kea_size' from value '5' to '6' at sslt.h:40:1
> >> >
> >> >@@ -52,7 +50,6 @@
> >> >                  type size hasn't changed
> >> >                  1 enumerator deletion:
> >> >                    '__anonymous_enum__::ssl_auth_rsa' value '1'
> >> >-
> >> >                  7 enumerator insertions:
> >> >                    '__anonymous_enum__::ssl_auth_rsa_decrypt' value '1'
> >> >                    '__anonymous_enum__::ssl_auth_ecdh_rsa' value '5'
> >> >@@ -114,7 +111,6 @@
> >> >                                              type size hasn't changed
> >> >                                              1 enumerator insertion:
> >> >                                                '__anonymous_enum__1::SEC_OID_TLS_ECDHE_PSK' value '347'
> >> >-
> >> >                                              1 enumerator change:
> >> >                                                '__anonymous_enum__1::SEC_OID_TOTAL' from value '347' to '348' at secoidt.h:34:1
> >> >
> >> >diff --git a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt
> >> >index bf081f52..70b41ddd 100644
> >> >--- a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt
> >> >+++ b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt
> >> >@@ -25,7 +25,6 @@
> >> >         underlying type 'enum __anonymous_enum__2' at spice.h:471:1 changed:
> >> >           type name changed from '__anonymous_enum__2' to 'SpiceImageCompression'
> >> >           type size hasn't changed
> >> >-
> >> >           7 enumerator deletions:
> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_INVALID' value '0'
> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_OFF' value '1'
> >> >@@ -34,7 +33,6 @@
> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_QUIC' value '4'
> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_GLZ' value '5'
> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_LZ' value '6'
> >> >-
> >> >           9 enumerator insertions:
> >> >             'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0'
> >> >             'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1'
> >> >diff --git a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt
> >> >index 7b86b964..0b909f90 100644
> >> >--- a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt
> >> >+++ b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt
> >> >@@ -25,7 +25,6 @@
> >> >         underlying type 'enum __anonymous_enum__2' at spice.h:471:1 changed:
> >> >           type name changed from '__anonymous_enum__2' to 'SpiceImageCompression'
> >> >           type size hasn't changed
> >> >-
> >> >           7 enumerator deletions:
> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_INVALID' value '0'
> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_OFF' value '1'
> >> >@@ -34,7 +33,6 @@
> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_QUIC' value '4'
> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_GLZ' value '5'
> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_LZ' value '6'
> >> >-
> >> >           9 enumerator insertions:
> >> >             'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0'
> >> >             'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1'
> >> >diff --git a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt
> >> >index 3d20caf1..c247ef95 100644
> >> >--- a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt
> >> >+++ b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt
> >> >@@ -239,15 +239,10 @@
> >> >                                                  type size changed from 1280 to 256 (in bits)
> >> >                                                  5 data member deletions:
> >> >                                                    'RedsSASL RedsStream::sasl', at offset 256 (in bits) at reds.h:78:1
> >> >-
> >> >                                                    'SpiceChannelEventInfo* RedsStream::info', at offset 1024 (in bits) at reds.h:85:1
> >> >-
> >> >                                                    'typedef ssize_t (RedsStream*, void*, typedef size_t)* RedsStream::read', at offset 1088 (in bits) at reds.h:88:1
> >> >-
> >> >                                                    'typedef ssize_t (RedsStream*, void*, typedef size_t)* RedsStream::write', at offset 1152 (in bits) at reds.h:89:1
> >> >-
> >> >                                                    'typedef ssize_t (RedsStream*, const iovec*, int)* RedsStream::writev', at offset 1216 (in bits) at reds.h:90:1
> >> >-
> >> >                                                  1 data member change:
> >> >                                                   type of 'SSL* RedsStream::ssl' changed:
> >> >                                                     in pointed to type 'typedef SSL' at reds_stream.h:32:1:
> >> >@@ -257,193 +252,99 @@
> >> >                                                         type size changed from 5504 to 0 (in bits)
> >> >                                                         94 data member deletions:
> >> >                                                           'int ssl_st::version', at offset 0 (in bits) at ssl.h:1070:1
> >> >-
> >> >                                                           'int ssl_st::type', at offset 32 (in bits) at ssl.h:1071:1
> >> >-
> >> >                                                           'const SSL_METHOD* ssl_st::method', at offset 64 (in bits) at ssl.h:1073:1
> >> >-
> >> >                                                           'BIO* ssl_st::rbio', at offset 128 (in bits) at ssl.h:1080:1
> >> >-
> >> >                                                           'BIO* ssl_st::wbio', at offset 192 (in bits) at ssl.h:1081:1
> >> >-
> >> >                                                           'BIO* ssl_st::bbio', at offset 256 (in bits) at ssl.h:1082:1
> >> >-
> >> >                                                           'int ssl_st::rwstate', at offset 320 (in bits) at ssl.h:1093:1
> >> >-
> >> >                                                           'int ssl_st::in_handshake', at offset 352 (in bits) at ssl.h:1096:1
> >> >-
> >> >                                                           'int (SSL*)* ssl_st::handshake_func', at offset 384 (in bits) at ssl.h:1097:1
> >> >-
> >> >                                                           'int ssl_st::server', at offset 448 (in bits) at ssl.h:1107:1
> >> >-
> >> >                                                           'int ssl_st::new_session', at offset 480 (in bits) at ssl.h:1109:1
> >> >-
> >> >                                                           'int ssl_st::quiet_shutdown', at offset 512 (in bits) at ssl.h:1113:1
> >> >-
> >> >                                                           'int ssl_st::shutdown', at offset 544 (in bits) at ssl.h:1114:1
> >> >-
> >> >                                                           'int ssl_st::state', at offset 576 (in bits) at ssl.h:1116:1
> >> >-
> >> >                                                           'int ssl_st::rstate', at offset 608 (in bits) at ssl.h:1117:1
> >> >-
> >> >                                                           'BUF_MEM* ssl_st::init_buf', at offset 640 (in bits) at ssl.h:1119:1
> >> >-
> >> >                                                           'void* ssl_st::init_msg', at offset 704 (in bits) at ssl.h:1120:1
> >> >-
> >> >                                                           'int ssl_st::init_num', at offset 768 (in bits) at ssl.h:1121:1
> >> >-
> >> >                                                           'int ssl_st::init_off', at offset 800 (in bits) at ssl.h:1122:1
> >> >-
> >> >                                                           'unsigned char* ssl_st::packet', at offset 832 (in bits) at ssl.h:1125:1
> >> >-
> >> >                                                           'unsigned int ssl_st::packet_length', at offset 896 (in bits) at ssl.h:1126:1
> >> >-
> >> >                                                           'ssl2_state_st* ssl_st::s2', at offset 960 (in bits) at ssl.h:1128:1
> >> >-
> >> >                                                           'ssl3_state_st* ssl_st::s3', at offset 1024 (in bits) at ssl.h:1129:1
> >> >-
> >> >                                                           'dtls1_state_st* ssl_st::d1', at offset 1088 (in bits) at ssl.h:1130:1
> >> >-
> >> >                                                           'int ssl_st::read_ahead', at offset 1152 (in bits) at ssl.h:1132:1
> >> >-
> >> >                                                           'void (int, int, int, void*, typedef size_t, SSL*, void*)* ssl_st::msg_callback', at offset 1216 (in bits) at ssl.h:1136:1
> >> >-
> >> >                                                           'void* ssl_st::msg_callback_arg', at offset 1280 (in bits) at ssl.h:1137:1
> >> >-
> >> >                                                           'int ssl_st::hit', at offset 1344 (in bits) at ssl.h:1139:1
> >> >-
> >> >                                                           'X509_VERIFY_PARAM* ssl_st::param', at offset 1408 (in bits) at ssl.h:1141:1
> >> >-
> >> >                                                           'stack_st_SSL_CIPHER* ssl_st::cipher_list', at offset 1472 (in bits) at ssl.h:1149:1
> >> >-
> >> >                                                           'stack_st_SSL_CIPHER* ssl_st::cipher_list_by_id', at offset 1536 (in bits) at ssl.h:1150:1
> >> >-
> >> >                                                           'int ssl_st::mac_flags', at offset 1600 (in bits) at ssl.h:1154:1
> >> >-
> >> >                                                           'EVP_CIPHER_CTX* ssl_st::enc_read_ctx', at offset 1664 (in bits) at ssl.h:1155:1
> >> >-
> >> >                                                           'EVP_MD_CTX* ssl_st::read_hash', at offset 1728 (in bits) at ssl.h:1156:1
> >> >-
> >> >                                                           'COMP_CTX* ssl_st::expand', at offset 1792 (in bits) at ssl.h:1158:1
> >> >-
> >> >                                                           'EVP_CIPHER_CTX* ssl_st::enc_write_ctx', at offset 1856 (in bits) at ssl.h:1163:1
> >> >-
> >> >                                                           'EVP_MD_CTX* ssl_st::write_hash', at offset 1920 (in bits) at ssl.h:1164:1
> >> >-
> >> >                                                           'COMP_CTX* ssl_st::compress', at offset 1984 (in bits) at ssl.h:1166:1
> >> >-
> >> >                                                           'cert_st* ssl_st::cert', at offset 2048 (in bits) at ssl.h:1175:1
> >> >-
> >> >                                                           'unsigned int ssl_st::sid_ctx_length', at offset 2112 (in bits) at ssl.h:1179:1
> >> >-
> >> >                                                           'unsigned char ssl_st::sid_ctx[32]', at offset 2144 (in bits) at ssl.h:1180:1
> >> >-
> >> >                                                           'SSL_SESSION* ssl_st::session', at offset 2432 (in bits) at ssl.h:1183:1
> >> >-
> >> >                                                           'GEN_SESSION_CB ssl_st::generate_session_id', at offset 2496 (in bits) at ssl.h:1186:1
> >> >-
> >> >                                                           'int ssl_st::verify_mode', at offset 2560 (in bits) at ssl.h:1189:1
> >> >-
> >> >                                                           'int (int, X509_STORE_CTX*)* ssl_st::verify_callback', at offset 2624 (in bits) at ssl.h:1191:1
> >> >-
> >> >                                                           'void (const SSL*, int, int)* ssl_st::info_callback', at offset 2688 (in bits) at ssl.h:1193:1
> >> >-
> >> >                                                           'int ssl_st::error', at offset 2752 (in bits) at ssl.h:1195:1
> >> >-
> >> >                                                           'int ssl_st::error_code', at offset 2784 (in bits) at ssl.h:1196:1
> >> >-
> >> >                                                           'KSSL_CTX* ssl_st::kssl_ctx', at offset 2816 (in bits) at ssl.h:1199:1
> >> >-
> >> >                                                           'unsigned int (SSL*, const char*, char*, unsigned int, unsigned char*, unsigned int)* ssl_st::psk_client_callback', at offset 2880 (in bits) at ssl.h:1203:1
> >> >-
> >> >                                                           'unsigned int (SSL*, const char*, unsigned char*, unsigned int)* ssl_st::psk_server_callback', at offset 2944 (in bits) at ssl.h:1206:1
> >> >-
> >> >                                                           'SSL_CTX* ssl_st::ctx', at offset 3008 (in bits) at ssl.h:1210:1
> >> >-
> >> >                                                           'int ssl_st::debug', at offset 3072 (in bits) at ssl.h:1213:1
> >> >-
> >> >                                                           'long int ssl_st::verify_result', at offset 3136 (in bits) at ssl.h:1216:1
> >> >-
> >> >                                                           'CRYPTO_EX_DATA ssl_st::ex_data', at offset 3200 (in bits) at ssl.h:1217:1
> >> >-
> >> >                                                           'stack_st_X509_NAME* ssl_st::client_CA', at offset 3328 (in bits) at ssl.h:1220:1
> >> >-
> >> >                                                           'int ssl_st::references', at offset 3392 (in bits) at ssl.h:1222:1
> >> >-
> >> >                                                           'unsigned long int ssl_st::options', at offset 3456 (in bits) at ssl.h:1223:1
> >> >-
> >> >                                                           'unsigned long int ssl_st::mode', at offset 3520 (in bits) at ssl.h:1224:1
> >> >-
> >> >                                                           'long int ssl_st::max_cert_list', at offset 3584 (in bits) at ssl.h:1225:1
> >> >-
> >> >                                                           'int ssl_st::first_packet', at offset 3648 (in bits) at ssl.h:1226:1
> >> >-
> >> >                                                           'int ssl_st::client_version', at offset 3680 (in bits) at ssl.h:1227:1
> >> >-
> >> >                                                           'unsigned int ssl_st::max_send_fragment', at offset 3712 (in bits) at ssl.h:1229:1
> >> >-
> >> >                                                           'void (SSL*, int, int, unsigned char*, int, void*)* ssl_st::tlsext_debug_cb', at offset 3776 (in bits) at ssl.h:1232:1
> >> >-
> >> >                                                           'void* ssl_st::tlsext_debug_arg', at offset 3840 (in bits) at ssl.h:1235:1
> >> >-
> >> >                                                           'char* ssl_st::tlsext_hostname', at offset 3904 (in bits) at ssl.h:1236:1
> >> >-
> >> >                                                           'int ssl_st::servername_done', at offset 3968 (in bits) at ssl.h:1237:1
> >> >-
> >> >                                                           'int ssl_st::tlsext_status_type', at offset 4000 (in bits) at ssl.h:1244:1
> >> >-
> >> >                                                           'int ssl_st::tlsext_status_expected', at offset 4032 (in bits) at ssl.h:1246:1
> >> >-
> >> >                                                           'stack_st_OCSP_RESPID* ssl_st::tlsext_ocsp_ids', at offset 4096 (in bits) at ssl.h:1248:1
> >> >-
> >> >                                                           'X509_EXTENSIONS* ssl_st::tlsext_ocsp_exts', at offset 4160 (in bits) at ssl.h:1249:1
> >> >-
> >> >                                                           'unsigned char* ssl_st::tlsext_ocsp_resp', at offset 4224 (in bits) at ssl.h:1251:1
> >> >-
> >> >                                                           'int ssl_st::tlsext_ocsp_resplen', at offset 4288 (in bits) at ssl.h:1252:1
> >> >-
> >> >                                                           'int ssl_st::tlsext_ticket_expected', at offset 4320 (in bits) at ssl.h:1255:1
> >> >-
> >> >                                                           'size_t ssl_st::tlsext_ecpointformatlist_length', at offset 4352 (in bits) at ssl.h:1257:1
> >> >-
> >> >                                                           'unsigned char* ssl_st::tlsext_ecpointformatlist', at offset 4416 (in bits) at ssl.h:1258:1
> >> >-
> >> >                                                           'size_t ssl_st::tlsext_ellipticcurvelist_length', at offset 4480 (in bits) at ssl.h:1259:1
> >> >-
> >> >                                                           'unsigned char* ssl_st::tlsext_ellipticcurvelist', at offset 4544 (in bits) at ssl.h:1260:1
> >> >-
> >> >                                                           'void* ssl_st::tlsext_opaque_prf_input', at offset 4608 (in bits) at ssl.h:1264:1
> >> >-
> >> >                                                           'size_t ssl_st::tlsext_opaque_prf_input_len', at offset 4672 (in bits) at ssl.h:1265:1
> >> >-
> >> >                                                           'TLS_SESSION_TICKET_EXT* ssl_st::tlsext_session_ticket', at offset 4736 (in bits) at ssl.h:1268:1
> >> >-
> >> >                                                           'tls_session_ticket_ext_cb_fn ssl_st::tls_session_ticket_ext_cb', at offset 4800 (in bits) at ssl.h:1271:1
> >> >-
> >> >                                                           'void* ssl_st::tls_session_ticket_ext_cb_arg', at offset 4864 (in bits) at ssl.h:1272:1
> >> >-
> >> >                                                           'tls_session_secret_cb_fn ssl_st::tls_session_secret_cb', at offset 4928 (in bits) at ssl.h:1275:1
> >> >-
> >> >                                                           'void* ssl_st::tls_session_secret_cb_arg', at offset 4992 (in bits) at ssl.h:1276:1
> >> >-
> >> >                                                           'SSL_CTX* ssl_st::initial_ctx', at offset 5056 (in bits) at ssl.h:1278:1
> >> >-
> >> >                                                           'unsigned char* ssl_st::next_proto_negotiated', at offset 5120 (in bits) at ssl.h:1288:1
> >> >-
> >> >                                                           'unsigned char ssl_st::next_proto_negotiated_len', at offset 5184 (in bits) at ssl.h:1289:1
> >> >-
> >> >                                                           'stack_st_SRTP_PROTECTION_PROFILE* ssl_st::srtp_profiles', at offset 5248 (in bits) at ssl.h:1294:1
> >> >-
> >> >                                                           'SRTP_PROTECTION_PROFILE* ssl_st::srtp_profile', at offset 5312 (in bits) at ssl.h:1295:1
> >> >-
> >> >                                                           'unsigned int ssl_st::tlsext_heartbeat', at offset 5376 (in bits) at ssl.h:1297:1
> >> >-
> >> >                                                           'unsigned int ssl_st::tlsext_hb_pending', at offset 5408 (in bits) at ssl.h:1302:1
> >> >-
> >> >                                                           'unsigned int ssl_st::tlsext_hb_seq', at offset 5440 (in bits) at ssl.h:1303:1
> >> >-
> >> >                                                           'int ssl_st::renegotiate', at offset 5472 (in bits) at ssl.h:1308:1
> >> >-
> >> >                                                   and name of 'RedsStream::ssl' changed to 'RedsStream::priv' at reds_stream.h:42:1
> >> >
> >> >
> >> >@@ -558,7 +459,6 @@
> >> >         underlying type 'enum __anonymous_enum__2' at spice.h:471:1 changed:
> >> >           type name changed from '__anonymous_enum__2' to 'SpiceImageCompression'
> >> >           type size hasn't changed
> >> >-
> >> >           7 enumerator deletions:
> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_INVALID' value '0'
> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_OFF' value '1'
> >> >@@ -567,7 +467,6 @@
> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_QUIC' value '4'
> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_GLZ' value '5'
> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_LZ' value '6'
> >> >-
> >> >           9 enumerator insertions:
> >> >             'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0'
> >> >             'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1'
> >> >diff --git a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt
> >> >index 75ba0a50..11cd5682 100644
> >> >--- a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt
> >> >+++ b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt
> >> >@@ -22,7 +22,6 @@ Leaf changes summary: 11 artifacts changed (7 filtered out)
> >> >   'enum __anonymous_enum__2 at spice.h:471:1' changed:
> >> >     type name changed from '__anonymous_enum__2' to 'SpiceImageCompression'
> >> >     type size hasn't changed
> >> >-
> >> >     7 enumerator deletions:
> >> >       '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_INVALID' value '0'
> >> >       '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_OFF' value '1'
> >> >@@ -31,7 +30,6 @@ Leaf changes summary: 11 artifacts changed (7 filtered out)
> >> >       '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_QUIC' value '4'
> >> >       '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_GLZ' value '5'
> >> >       '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_LZ' value '6'
> >> >-
> >> >     9 enumerator insertions:
> >> >       'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0'
> >> >       'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1'
> >> >@@ -48,7 +46,6 @@ Leaf changes summary: 11 artifacts changed (7 filtered out)
> >> >       function int spice_server_set_image_compression(SpiceServer*, spice_image_compression_t)
> >> >   'typedef spice_image_compression_t at spice.h:479:1' changed:
> >> >     typedef name changed from spice_image_compression_t to SpiceImageCompression at enums.h:197:1
> >> >-
> >> >     2 impacted interfaces:
> >> >       function spice_image_compression_t spice_server_get_image_compression(SpiceServer*)
> >> >       function int spice_server_set_image_compression(SpiceServer*, spice_image_compression_t)
> >> >diff --git a/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt b/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt
> >> >index f8e60b50..d0381ce5 100644
> >> >--- a/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt
> >> >+++ b/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt
> >> >@@ -60,7 +60,6 @@
> >> >         type size hasn't changed
> >> >         1 enumerator insertion:
> >> >           'tbb::internal::exception_id::eid_bad_tagged_msg_cast' value '20'
> >> >-
> >> >         1 enumerator change:
> >> >           'tbb::internal::exception_id::eid_max' from value '20' to '21' at tbb_exception.h:79:1
> >> >
> >> >@@ -129,7 +128,6 @@
> >> >
> >> >
> >> >
> >> >-
> >> >                1 member function deletion:
> >> >                  'method virtual tbb::task* tbb::internal::generic_scheduler::receive_or_steal_task(tbb::internal::reference_count&, bool)' at scheduler.h:391:1, virtual at voffset 7/7
> >> >
> >> >@@ -138,11 +136,8 @@
> >> >
> >> >                3 data member deletions:
> >> >                  'unsigned int tbb::internal::generic_scheduler::hint_for_push', at offset 896 (in bits) at scheduler.h:171:1
> >> >-
> >> >                  'volatile intptr_t* tbb::internal::generic_scheduler::my_ref_top_priority', at offset 2560 (in bits) at scheduler.h:433:1
> >> >-
> >> >                  'volatile uintptr_t* tbb::internal::generic_scheduler::my_ref_reload_epoch', at offset 2752 (in bits) at scheduler.h:443:1
> >> >-
> >> >                18 data member changes:
> >> >                 'uintptr_t tbb::internal::generic_scheduler::my_stealing_threshold' offset changed from 704 to 832 (in bits) (by +128 bits)
> >> >                 type of 'tbb::internal::market* tbb::internal::generic_scheduler::my_market' changed:
> >> >diff --git a/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt b/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt
> >> >index 10816705..89c8efa3 100644
> >> >--- a/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt
> >> >+++ b/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt
> >> >@@ -31,7 +31,6 @@
> >> >         type size hasn't changed
> >> >         1 enumerator insertion:
> >> >           'tbb::internal::exception_id::eid_bad_tagged_msg_cast' value '20'
> >> >-
> >> >         1 enumerator change:
> >> >           'tbb::internal::exception_id::eid_max' from value '20' to '21' at tbb_exception.h:79:1
> >> >
> >> >diff --git a/tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt b/tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt
> >> >index 8f5d0b6b..c39851d3 100644
> >> >--- a/tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt
> >> >+++ b/tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt
> >> >@@ -7,14 +7,11 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >> >     return type changed:
> >> >       type name changed from 'int' to 'float'
> >> >       type size hasn't changed
> >> >-
> >> >     parameter 1 of type 'int' changed:
> >> >       type name changed from 'int' to 'float'
> >> >       type size hasn't changed
> >> >-
> >> >     parameter 2 of type 'int' changed:
> >> >       type name changed from 'int' to 'float'
> >> >       type size hasn't changed
> >> >
> >> >
> >> >-
> >> >diff --git a/tests/data/test-diff-suppr/test35-leaf-report-0.txt b/tests/data/test-diff-suppr/test35-leaf-report-0.txt
> >> >index 411cc1b4..244455ae 100644
> >> >--- a/tests/data/test-diff-suppr/test35-leaf-report-0.txt
> >> >+++ b/tests/data/test-diff-suppr/test35-leaf-report-0.txt
> >> >@@ -7,6 +7,5 @@ Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
> >> >   type size changed from 32 to 64 (in bits)
> >> >   1 data member insertion:
> >> >     'char leaf::m1', at offset 32 (in bits) at test35-leaf-v1.cc:8:1
> >> >-
> >> >   one impacted interface:
> >> >     function void fn(C&)
> >> >diff --git a/tests/data/test-diff-suppr/test36-leaf-report-0.txt b/tests/data/test-diff-suppr/test36-leaf-report-0.txt
> >> >index b12a8a61..f286cc7b 100644
> >> >--- a/tests/data/test-diff-suppr/test36-leaf-report-0.txt
> >> >+++ b/tests/data/test-diff-suppr/test36-leaf-report-0.txt
> >> >@@ -7,7 +7,6 @@ Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
> >> >   type size changed from 32 to 64 (in bits)
> >> >   1 data member insertion:
> >> >     'char leaf1::m1', at offset 32 (in bits) at test36-leaf-v1.cc:7:1
> >> >-
> >> >   3 impacted interfaces:
> >> >     function void interface1(struct_type*)
> >> >     function void interface2(struct_type&)
> >> >@@ -20,7 +19,6 @@ Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
> >> >    type 'struct leaf1' of 'leaf2::member0' changed as reported earlier
> >> >    and size changed from 32 to 64 (in bits) (by +32 bits)
> >> >    'char leaf2::member1' offset changed from 32 to 64 (in bits) (by +32 bits)
> >> >-
> >> >   3 impacted interfaces:
> >> >     function void interface1(struct_type*)
> >> >     function void interface2(struct_type&)
> >> >diff --git a/tests/data/test-diff-suppr/test41-enumerator-changes-report-0.txt b/tests/data/test-diff-suppr/test41-enumerator-changes-report-0.txt
> >> >index 4b1681bc..d772bd1d 100644
> >> >--- a/tests/data/test-diff-suppr/test41-enumerator-changes-report-0.txt
> >> >+++ b/tests/data/test-diff-suppr/test41-enumerator-changes-report-0.txt
> >> >@@ -8,7 +8,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >> >       type size hasn't changed
> >> >       1 enumerator insertion:
> >> >         'EnumType1::ee3_inserted' value '3'
> >> >-
> >> >       1 enumerator change:
> >> >         'EnumType1::eenum_count' from value '3' to '4' at test41-enumerator-changes-v1.cc:10:1
> >> >
> >> >@@ -18,7 +17,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >> >       type size hasn't changed
> >> >       1 enumerator insertion:
> >> >         'EnumType0::e3_inserted' value '3'
> >> >-
> >> >       1 enumerator change:
> >> >         'EnumType0::enum_count' from value '3' to '4' at test41-enumerator-changes-v1.cc:1:1
> >> >
> >> >--
> >> >2.25.1.481.gfbce0eb801-goog
> >> >
> >> >
Matthias Maennich March 16, 2020, 1:44 p.m. UTC | #5
On Mon, Mar 16, 2020 at 01:04:31PM +0000, Giuliano Procida wrote:
>Hi.
>
>On Mon, 16 Mar 2020 at 12:29, Matthias Maennich <maennich@google.com> wrote:
>>
>> On Mon, Mar 16, 2020 at 10:51:22AM +0000, Giuliano Procida wrote:
>> >Hi Matthias.
>> >
>> >On Sat, 14 Mar 2020 at 20:09, Matthias Maennich <maennich@google.com> wrote:
>> >>
>> >> On Thu, Mar 12, 2020 at 06:30:34AM +0000, Android Kernel Team wrote:
>> >> >There is distributed responsibility for horizontal and vertical
>> >> >whitespace in the reporting code with indent and new line control
>> >> >information being manipulated by and passed in and out of functions.
>> >> >Occasionally, this information is ignored or incorrect and the code
>> >> >tends to err on the side of more rather than fewer new lines.
>> >> >
>> >> >The outcome is that abidiff output sometimes contains extra blank
>> >> >lines which can be confusing.
>> >> >
>> >> >This patch eliminates some of the more obvious cases:
>> >> >
>> >> >   - after data member deletions
>> >> >   - in enumerator change lists
>> >> >   - after "type size hasn't changed"
>> >> >   - before listing impacted interfaces
>> >> >
>> >> >The patch cleans up the reporting of data members. The code will
>> >> >either emit indentation, a short description and a new line or do
>> >> >nothing at all.
>> >> >
>> >> >The patch also removes some stray location reporting code for array
>> >> >diffs which would have produced some oddly placed output. I could not
>> >> >get this code to trigger as loc = decl->get_location() was never
>> >> >present on the array decls in question.
>> >> >
>> >> >       * src/abg-default-reporter.cc (report): In the enum_diff
>> >> >       override, simplify new line logic; emit just one
>> >> >       blank line after each enum. In the array_diff override, remove
>> >> >       stray location reporting which doesn't appear to ever trigger;
>> >> >       fix new line logic. In the class_or_union_diff override,
>> >> >       simplify new line logic for deleted members; pass indentation
>> >> >       to represent_data_member.
>> >> >       * src/abg-leaf-reporter.cc (report): In the array_diff
>> >> >       override, remove stray location reporting which doesn't appear
>> >> >       to ever trigger; fix new line handling. In the
>> >> >       class_or_union_diff override, simplify new line logic for
>> >> >       deleted members; pass indentation to represent_data_member.
>> >> >       * src/abg-reporter-priv.cc (represent_data_member): Handle
>> >> >       indentation; fix new line logic.
>> >> >       (report_size_and_alignment_changes): Fix new line logic
>> >> >       for "type size hasn't changed" message; simplify new line
>> >> >       logic.
>> >> >       (report_name_size_and_alignment_changes): Fix new line logic.
>> >> >       (maybe_report_interfaces_impacted_by_diff) Remove new line
>> >> >       prefix code and new_line_prefix argument.
>> >> >       * src/abg-reporter-priv.h (represent_data_member): Add indent
>> >> >       argument.
>> >> >       (maybe_report_interfaces_impacted_by_diff) Remove
>> >> >       new_line_prefix argument.
>> >> >       * tests/data/test-*/*report*.txt: Remove some blank lines.
>> >> >
>> >> >Signed-off-by: Giuliano Procida <gprocida@google.com>
>> >> >---
>> >> > src/abg-default-reporter.cc                   |  43 +++-----
>> >> > src/abg-leaf-reporter.cc                      |  27 ++---
>> >> > src/abg-reporter-priv.cc                      |  34 +++---
>> >> > src/abg-reporter-priv.h                       |   9 +-
>> >> > .../test5-fn-changed-report-0.txt             |   1 -
>> >> > .../test5-fn-changed-report-1.txt             |   1 -
>> >> > .../test6-var-changed-report-0.txt            |   1 -
>> >> > .../test6-var-changed-report-1.txt            |   1 -
>> >> > .../test7-fn-changed-report-0.txt             |   1 -
>> >> > .../test-abidiff-exit/test-leaf3-report.txt   |   1 -
>> >> > .../test-loc-with-locs-report.txt             |   1 -
>> >> > .../test-loc-without-locs-report.txt          |   1 -
>> >> > .../test-abidiff/test-PR18791-report0.txt     |   2 -
>> >> > tests/data/test-abidiff/test-enum0-report.txt |   1 -
>> >> > tests/data/test-abidiff/test-enum1-report.txt |   1 -
>> >> > .../data/test-abidiff/test-struct1-report.txt |   1 -
>> >> > .../PR25058-liblttng-ctl-report-1.txt         |   5 -
>> >> > tests/data/test-diff-dwarf/test13-report.txt  |   1 -
>> >> > .../test-diff-dwarf/test38-union-report-0.txt |   1 -
>> >> > .../data/test-diff-dwarf/test40-report-0.txt  |   2 -
>> >> > .../test42-PR21296-clanggcc-report0.txt       |   1 -
>> >> > .../test43-PR22913-report-0.txt               |   1 -
>> >> > tests/data/test-diff-filter/test10-report.txt |   1 -
>> >> > tests/data/test-diff-filter/test18-report.txt |   1 -
>> >> > ...st23-redundant-fn-parm-change-report-0.txt |   2 -
>> >> > .../test30-pr18904-rvalueref-report0.txt      |   8 --
>> >> > .../test30-pr18904-rvalueref-report1.txt      |   8 --
>> >> > .../test30-pr18904-rvalueref-report2.txt      |   8 --
>> >> > .../test35-pr18754-no-added-syms-report-0.txt |   8 --
>> >> > .../data/test-diff-filter/test36-report-0.txt |   3 -
>> >> > .../test42-leaf-report-output-0.txt           |   1 -
>> >> > tests/data/test-diff-filter/test7-report.txt  |   1 -
>> >> > ...-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt |   2 -
>> >> > .../nss-3.23.0-1.0.fc23.x86_64-report-0.txt   |   4 -
>> >> > ...l7.x86_64-0.12.8-1.el7.x86_64-report-0.txt |   2 -
>> >> > ...l7.x86_64-0.12.8-1.el7.x86_64-report-1.txt |   2 -
>> >> > ...l7.x86_64-0.12.8-1.el7.x86_64-report-2.txt | 101 ------------------
>> >> > ...l7.x86_64-0.12.8-1.el7.x86_64-report-3.txt |   3 -
>> >> > ...bb-4.3-3.20141204.fc23.x86_64-report-0.txt |   5 -
>> >> > ...bb-4.3-3.20141204.fc23.x86_64-report-1.txt |   1 -
>> >> > .../test10-changed-parm-c-report-0.txt        |   3 -
>> >> > .../test-diff-suppr/test35-leaf-report-0.txt  |   1 -
>> >> > .../test-diff-suppr/test36-leaf-report-0.txt  |   2 -
>> >> > .../test41-enumerator-changes-report-0.txt    |   2 -
>> >> > 44 files changed, 42 insertions(+), 264 deletions(-)
>> >> >
>> >> >diff --git a/src/abg-default-reporter.cc b/src/abg-default-reporter.cc
>> >> >index 3bfdfbc4..a0b9eeea 100644
>> >> >--- a/src/abg-default-reporter.cc
>> >> >+++ b/src/abg-default-reporter.cc
>> >> >@@ -130,16 +130,14 @@ default_reporter::report(const enum_diff& d, ostream& out,
>> >> >          i != sorted_deleted_enumerators.end();
>> >> >          ++i)
>> >> >       {
>> >> >-        if (i != sorted_deleted_enumerators.begin())
>> >> >-          out << "\n";
>> >> >         out << indent
>> >> >             << "  '"
>> >> >             << i->get_qualified_name()
>> >> >             << "' value '"
>> >> >             << i->get_value()
>> >> >             << "'";
>> >> >+        out << "\n";
>> >> >       }
>> >> >-      out << "\n\n";
>> >> >     }
>> >> >   if (numins)
>> >> >     {
>> >> >@@ -151,16 +149,14 @@ default_reporter::report(const enum_diff& d, ostream& out,
>> >> >          i != sorted_inserted_enumerators.end();
>> >> >          ++i)
>> >> >       {
>> >> >-        if (i != sorted_inserted_enumerators.begin())
>> >> >-          out << "\n";
>> >> >         out << indent
>> >> >             << "  '"
>> >> >             << i->get_qualified_name()
>> >> >             << "' value '"
>> >> >             << i->get_value()
>> >> >             << "'";
>> >> >+        out << "\n";
>> >> >       }
>> >> >-      out << "\n\n";
>> >> >     }
>> >> >   if (numchanges)
>> >> >     {
>> >> >@@ -173,8 +169,6 @@ default_reporter::report(const enum_diff& d, ostream& out,
>> >> >          i != sorted_changed_enumerators.end();
>> >> >          ++i)
>> >> >       {
>> >> >-        if (i != sorted_changed_enumerators.begin())
>> >> >-          out << "\n";
>> >> >         out << indent
>> >> >             << "  '"
>> >> >             << i->first.get_qualified_name()
>> >> >@@ -182,13 +176,14 @@ default_reporter::report(const enum_diff& d, ostream& out,
>> >> >             << i->first.get_value() << "' to '"
>> >> >             << i->second.get_value() << "'";
>> >> >         report_loc_info(second, *d.context(), out);
>> >> >+        out << "\n";
>> >> >       }
>> >> >-      out << "\n\n";
>> >> >     }
>> >> >
>> >> >+  out << "\n";
>> >> >+
>> >> >   if (d.context()->show_leaf_changes_only())
>> >> >-    maybe_report_interfaces_impacted_by_diff(&d, out, indent,
>> >> >-                                           /*new_line_prefix=*/false);
>> >> >+    maybe_report_interfaces_impacted_by_diff(&d, out, indent);
>> >> >
>> >> >   d.reported_once(true);
>> >> > }
>> >> >@@ -392,7 +387,7 @@ default_reporter::report(const pointer_diff& d, ostream& out,
>> >> >       : string("void");
>> >> >
>> >> >       out << indent
>> >> >-        << "in pointed to type '" <<  repr << "'";
>> >> >+        << "in pointed to type '" << repr << "'";
>> >> >       report_loc_info(dif->second_subject(), *d.context(), out);
>> >> >       out << ":\n";
>> >> >       dif->report(out, indent + "  ");
>> >> >@@ -673,12 +668,12 @@ default_reporter::report(const array_diff& d, ostream& out,
>> >> >       dif->report(out, indent + "  ");
>> >> >     }
>> >> >
>> >> >-  report_name_size_and_alignment_changes(d.first_array(),
>> >> >-                                       d.second_array(),
>> >> >-                                       d.context(),
>> >> >-                                       out, indent,
>> >> >-                                       /*new line=*/false);
>> >> >-  report_loc_info(d.second_array(), *d.context(), out);
>> >> >+  if (report_name_size_and_alignment_changes(d.first_array(),
>> >> >+                                           d.second_array(),
>> >> >+                                           d.context(),
>> >> >+                                           out, indent,
>> >> >+                                           /*new line=*/false))
>> >>
>> >> Though it is not required here, I would prefer braces for readability.
>> >
>> >Agreed, I think it's sensible here. In other places, with the coding
>> >style in use, we'd end up with:
>> >
>> >if (emitted)
>> >  {
>> >    out << "\n";
>> >  }
>>
>> Let's take this one at this location.
>
>I've been able to eliminate it.
>
>> >
>> >which is pretty verbose. The following would be fine by me:
>> >
>> >if (emitted) out << "\n";
>> >
>> >Lastly, short but ugly:
>> >
>> >  emitted && (out << "\n");
>> >
>> >> >+    out << "\n";
>> >> > }
>> >> >
>> >> > /// Generates a report for an intance of @ref base_diff.
>> >> >@@ -1014,7 +1009,6 @@ default_reporter::report(const class_or_union_diff& d,
>> >> >         sort_data_members
>> >> >           (d.class_or_union_diff::get_priv()->deleted_data_members_,
>> >> >            sorted_dms);
>> >> >-        bool emitted = false;
>> >> >         for (vector<decl_base_sptr>::const_iterator i = sorted_dms.begin();
>> >> >              i != sorted_dms.end();
>> >> >              ++i)
>> >> >@@ -1024,14 +1018,8 @@ default_reporter::report(const class_or_union_diff& d,
>> >> >             ABG_ASSERT(data_mem);
>> >> >             if (get_member_is_static(data_mem))
>> >> >               continue;
>> >> >-            if (emitted)
>> >> >-              out << "\n";
>> >> >-            out << indent << "  ";
>> >> >-            represent_data_member(data_mem, ctxt, out);
>> >> >-            emitted = true;
>> >> >+            represent_data_member(data_mem, ctxt, out, indent + "  ");
>> >> >           }
>> >> >-        if (emitted)
>> >> >-          out << "\n";
>> >> >       }
>> >> >
>> >> >       //report insertions
>> >> >@@ -1052,8 +1040,7 @@ default_reporter::report(const class_or_union_diff& d,
>> >> >             var_decl_sptr data_mem =
>> >> >               dynamic_pointer_cast<var_decl>(*i);
>> >> >             ABG_ASSERT(data_mem);
>> >> >-            out << indent << "  ";
>> >> >-            represent_data_member(data_mem, ctxt, out);
>> >> >+            represent_data_member(data_mem, ctxt, out, indent + "  ");
>> >> >           }
>> >> >       }
>> >> >
>> >> >diff --git a/src/abg-leaf-reporter.cc b/src/abg-leaf-reporter.cc
>> >> >index bbd51dcb..f706bd21 100644
>> >> >--- a/src/abg-leaf-reporter.cc
>> >> >+++ b/src/abg-leaf-reporter.cc
>> >> >@@ -78,7 +78,7 @@ report_diffs(const reporter_base& r,
>> >> >
>> >> >         string n = (*i)->first_subject()->get_pretty_representation();
>> >> >
>> >> >-        out << indent << "'" << n ;
>> >> >+        out << indent << "'" << n;
>> >> >
>> >> >         report_loc_info((*i)->first_subject(),
>> >> >                         *(*i)->context(), out);
>> >> >@@ -425,11 +425,12 @@ leaf_reporter::report(const array_diff& d,
>> >> >                                                   d.second_array(),
>> >> >                                                   "array type");
>> >> >
>> >> >-  report_name_size_and_alignment_changes(d.first_array(),
>> >> >-                                       d.second_array(),
>> >> >-                                       d.context(),
>> >> >-                                       out, indent,
>> >> >-                                       /*new line=*/false);
>> >> >+  if (report_name_size_and_alignment_changes(d.first_array(),
>> >> >+                                           d.second_array(),
>> >> >+                                           d.context(),
>> >> >+                                           out, indent,
>> >> >+                                           /*new line=*/false))
>> >>
>> >> As above.
>> >
>> >Agreed.
>> >
>> >> >+    out << "\n";
>> >> >
>> >> >   diff_sptr dif = d.element_type_diff();
>> >> >   if (diff_to_be_reported(dif.get()))
>> >> >@@ -441,8 +442,6 @@ leaf_reporter::report(const array_diff& d,
>> >> >       dif->report(out, indent + "  ");
>> >> >     }
>> >> >
>> >> >-  report_loc_info(d.second_array(), *d.context(), out);
>> >> >-
>> >> >   maybe_report_interfaces_impacted_by_diff(&d, out, indent);
>> >> > }
>> >> >
>> >> >@@ -592,7 +591,6 @@ leaf_reporter::report(const class_or_union_diff& d,
>> >> >         sort_data_members
>> >> >           (d.class_or_union_diff::get_priv()->deleted_data_members_,
>> >> >            sorted_dms);
>> >> >-        bool emitted = false;
>> >> >         for (vector<decl_base_sptr>::const_iterator i = sorted_dms.begin();
>> >> >              i != sorted_dms.end();
>> >> >              ++i)
>> >> >@@ -602,14 +600,8 @@ leaf_reporter::report(const class_or_union_diff& d,
>> >> >             ABG_ASSERT(data_mem);
>> >> >             if (get_member_is_static(data_mem))
>> >> >               continue;
>> >> >-            if (emitted)
>> >> >-              out << "\n";
>> >> >-            out << indent << "  ";
>> >> >-            represent_data_member(data_mem, ctxt, out);
>> >> >-            emitted = true;
>> >> >+            represent_data_member(data_mem, ctxt, out, indent + "  ");
>> >> >           }
>> >> >-        if (emitted)
>> >> >-          out << "\n";
>> >> >       }
>> >> >
>> >> >       //report insertions
>> >> >@@ -630,8 +622,7 @@ leaf_reporter::report(const class_or_union_diff& d,
>> >> >             var_decl_sptr data_mem =
>> >> >               dynamic_pointer_cast<var_decl>(*i);
>> >> >             ABG_ASSERT(data_mem);
>> >> >-            out << indent << "  ";
>> >> >-            represent_data_member(data_mem, ctxt, out);
>> >> >+            represent_data_member(data_mem, ctxt, out, indent + "  ");
>> >> >           }
>> >> >       }
>> >> >
>> >> >diff --git a/src/abg-reporter-priv.cc b/src/abg-reporter-priv.cc
>> >> >index fbac85f8..948a32fc 100644
>> >> >--- a/src/abg-reporter-priv.cc
>> >> >+++ b/src/abg-reporter-priv.cc
>> >> >@@ -242,16 +242,19 @@ represent(const diff_context& ctxt,
>> >> > /// @param ctxt the current diff context.
>> >> > ///
>> >> > /// @param out the output stream to send the representation to
>> >> >+///
>> >> >+/// @param indent the indentation string to use for the change report.
>> >> > void
>> >> > represent_data_member(var_decl_sptr d,
>> >> >                     const diff_context_sptr& ctxt,
>> >> >-                    ostream& out)
>> >> >+                    ostream& out,
>> >> >+                    const string& indent)
>> >>
>> >> I would prefer out parameters after all input parameters. Since this is
>> >> a private implementation detail, we should be good to change that
>> >> interface.
>> >
>> >I looked at the existing functions and copied an existing order for
>> >consistency. out and indent belong together morally as well (writer
>> >monad). If we switch to an indenting ostream, this issue goes away.
>> >
>> >> > {
>> >> >   if (!is_data_member(d)
>> >> >       || (!get_member_is_static(d) && !get_data_member_is_laid_out(d)))
>> >> >     return;
>> >> >
>> >> >-  out << "'" << d->get_pretty_representation() << "'";
>> >> >+  out << indent << "'" << d->get_pretty_representation() << "'";
>> >> >   if (!get_member_is_static(d))
>> >> >     {
>> >> >       // Do not emit offset information for data member of a union
>> >> >@@ -262,8 +265,8 @@ represent_data_member(var_decl_sptr d,
>> >> >                           get_data_member_offset(d),
>> >> >                           *ctxt, out);
>> >> >       report_loc_info(d, *ctxt, out);
>> >> >-      out << "\n";
>> >> >     }
>> >> >+  out << "\n";
>> >> > }
>> >> >
>> >> > /// If a given @ref var_diff node carries a data member change in
>> >> >@@ -806,7 +809,10 @@ report_size_and_alignment_changes(type_or_decl_base_sptr  first,
>> >> >       } // end if (fs != ss || fdc != sdc)
>> >> >       else
>> >> >       if (ctxt->show_relative_offset_changes())
>> >> >-        out << indent << "type size hasn't changed\n";
>> >> >+        {
>> >> >+          out << indent << "type size hasn't changed";
>> >> >+          n = true;
>> >> >+        }
>> >> >     }
>> >> >   if ((ctxt->get_allowed_category() & SIZE_OR_OFFSET_CHANGE_CATEGORY)
>> >> >       && (fa != sa))
>> >> >@@ -819,9 +825,7 @@ report_size_and_alignment_changes(type_or_decl_base_sptr   first,
>> >> >       n = true;
>> >> >     }
>> >> >
>> >> >-  if (n)
>> >> >-    return true;
>> >> >-  return false;
>> >> >+  return n;
>> >>
>> >> We should give 'n' a better name. Not necessarily part of this change.
>> >
>> >Acknowledged. If we are going to review newline handling we should do
>> >it everywhere and consistently. Ideally we should get to the point
>> >where we don't have to pass information about newlines around (this
>> >will likely be possible with an indenting ostream but may be doable
>> >even without that).
>> >
>> >> > }
>> >> >
>> >> > /// @param tod the type or declaration to emit loc info about
>> >> >@@ -910,8 +914,8 @@ report_name_size_and_alignment_changes(decl_base_sptr              first,
>> >> >       }
>> >> >     }
>> >> >
>> >> >-  nl |= report_size_and_alignment_changes(first, second, ctxt,
>> >> >-                                        out, indent, nl);
>> >> >+  nl = report_size_and_alignment_changes(first, second, ctxt,
>> >> >+                                         out, indent, nl);
>> >> >   return nl;
>> >> > }
>> >> >
>> >> >@@ -1366,14 +1370,10 @@ maybe_report_unreachable_type_changes(const corpus_diff& d,
>> >> > /// @param out the output stream to report to.
>> >> > ///
>> >> > /// @param indent the white space string to use for indentation.
>> >> >-///
>> >> >-/// @param new_line_prefix if set to true, it means there is going to
>> >> >-/// be a new line emitted before the report.
>> >> > void
>> >> > maybe_report_interfaces_impacted_by_diff(const diff   *d,
>> >> >                                        ostream        &out,
>> >> >-                                       const string   &indent,
>> >> >-                                       bool           new_line_prefix)
>> >> >+                                       const string   &indent)
>> >> > {
>> >> >   const diff_context_sptr &ctxt = d->context();
>> >> >   const corpus_diff_sptr &corp_diff = ctxt->get_corpus_diff();
>> >> >@@ -1395,9 +1395,6 @@ maybe_report_interfaces_impacted_by_diff(const diff      *d,
>> >> >   vector<type_or_decl_base_sptr> sorted_impacted_interfaces;
>> >> >   sort_artifacts_set(*impacted_artifacts, sorted_impacted_interfaces);
>> >> >
>> >> >-  if (new_line_prefix)
>> >> >-    out << '\n';
>> >> >-
>> >>
>> >> I think we need to keep this newline. It separates the cause (the leaf
>> >> node change) from the impacted interfaces (the top level nodes).
>> >
>> >I disagree.
>> >
>> >I think the "impacted interfaces" block should be indented w.r.t leaf
>> >node change's introductory text or separated from the whole node
>> >change section by an extra new line, but not both. I'd prefer the
>> >former as this should be a parent-child relationship in the text
>> >output tree rather than a sibling one.
>> >
>> >Phrased another way, the text would be equally meaningful like this
>> >(adapting tests/data/test-diff-filter/test42-leaf-report-output-0.txt;
>> >though abitool.py's short report would need a tweak; it needs a tweak
>>
>> Just for the context: abitool.py we use in Android to monitor the kernel
>> ABI with libabigail :-) See
>> https://android.googlesource.com/kernel/build/+/refs/heads/master/abi/
>>
>> >anyway for the case of 1 impacted interface):
>> >
>> >'struct leaf at test42-leaf-report-v0.cc:4:1' changed:
>> >  one impacted interface:
>> >    function void fn(C&)
>> > type size changed from 32 to 64 (in bits)
>> >  1 data member insertion:
>> >    'char leaf::m1', at offset 32 (in bits) at test42-leaf-report-v1.cc:7:1
>> >
>>
>> The only concern I have and that I would like to see addressed is that
>> the list of impacted interfaces can be considerably long (thousands for
>> a central struct). That can get difficult to work with if this is
>> 'embedded' there.
>> In order to better address abi differences like that, I would prefer the
>> current format:
>>
>> # what changed
>> 'struct leaf at test42-leaf-report-v0.cc:4:1' changed:
>>  type size changed from 32 to 64 (in bits)
>>   1 data member insertion:
>>     'char leaf::m1', at offset 32 (in bits) at test42-leaf-report-v1.cc:7:1
>>
>> # impact
>>   one impacted interface:
>>     function void fn(C&)
>
>Just to clear, I wasn't advocating moving impacted interfaces up in
>any way. I was just pointing out that it is really a child of
>"changed" and I suppose it would be safer to prune based on
>indentation if you are going to post-process the output.
>
># untested Perl
>$text =~ s/^( *)([^ ]* impacted interfaces?):\n(\g1 .*\n)+:/$1$2\n/g;
>
>Anyway, the format is (previous to my patch) looks like:
>
>foo changed:
>  detailsA
>
>  M impacted interface(s):
>   detailsB
>
>bar changed:
>  detailsC
>
>  N impacted interface(s):
>    detailsD
>
>We want to post-process to remove detailsB and detailsD. This is
>equally easy so long as we just consume non-empty lines following
>"impacted interfaces". My patch to remove the blank line between
>detailsA/C and "impacted interfaces" doesn't change this.

I definitely agree it belongs to the 'changed' block (hence the
indentation). Yet I have the feeling the newline belongs there since the
structural change and the impact are separable things. But I am not
crazy picky on this and making it consistent with all the other removed
newlines is also an agreeable way as thinking about it (as long as we
still can truncate it properly). I like consistency :-)

Cheers,
Matthias

>
>> There we can also truncate the list of impacted interfaces.
>>
>> Cheers,
>> Matthias
>>
>> >Happy to discuss further.
>> >
>> >> With the above addressed, feel free to add
>> >> Reviewed-by: Matthias Maennich <maennich@google.com>
>> >>
>> >> Cheers,
>> >> Matthias
>> >
>> >Regards,
>> >Giuliano.
>> >
>> >> >   size_t num_impacted_interfaces = impacted_artifacts->size();
>> >> >   if (num_impacted_interfaces == 1)
>> >> >     out << indent << "one impacted interface:\n";
>> >> >@@ -1424,9 +1421,6 @@ maybe_report_interfaces_impacted_by_diff(const diff      *d,
>> >> > /// @param out the output stream to report to.
>> >> > ///
>> >> > /// @param indent the white space string to use for indentation.
>> >> >-///
>> >> >-/// @param new_line_prefix if set to true, it means there is going to
>> >> >-/// be a new line emitted before the report.
>> >> > void
>> >> > maybe_report_interfaces_impacted_by_diff(const diff_sptr      &d,
>> >> >                                        ostream                &out,
>> >> >diff --git a/src/abg-reporter-priv.h b/src/abg-reporter-priv.h
>> >> >index 7471c74f..04803f43 100644
>> >> >--- a/src/abg-reporter-priv.h
>> >> >+++ b/src/abg-reporter-priv.h
>> >> >@@ -151,7 +151,8 @@ represent(const diff_context& ctxt,
>> >> > void
>> >> > represent_data_member(var_decl_sptr d,
>> >> >                     const diff_context_sptr& ctxt,
>> >> >-                    ostream& out);
>> >> >+                    ostream& out,
>> >> >+                    const string& indent);
>> >> >
>> >> > void
>> >> > maybe_show_relative_offset_change(const var_diff_sptr &diff,
>> >> >@@ -244,14 +245,12 @@ maybe_report_unreachable_type_changes(const corpus_diff& d,
>> >> > void
>> >> > maybe_report_interfaces_impacted_by_diff(const diff           *d,
>> >> >                                        ostream                &out,
>> >> >-                                       const string           &indent,
>> >> >-                                       bool new_line_prefix = true);
>> >> >+                                       const string           &indent);
>> >> >
>> >> > void
>> >> > maybe_report_interfaces_impacted_by_diff(const diff_sptr      &d,
>> >> >                                        ostream                &out,
>> >> >-                                       const string           &indent,
>> >> >-                                       bool new_line_prefix = false);
>> >> >+                                       const string           &indent);
>> >> >
>> >> > } // end namespace comparison
>> >> > } // end namespace abigail
>> >> >diff --git a/tests/data/test-abicompat/test5-fn-changed-report-0.txt b/tests/data/test-abicompat/test5-fn-changed-report-0.txt
>> >> >index 96d48ccf..04676908 100644
>> >> >--- a/tests/data/test-abicompat/test5-fn-changed-report-0.txt
>> >> >+++ b/tests/data/test-abicompat/test5-fn-changed-report-0.txt
>> >> >@@ -15,4 +15,3 @@ have sub-types that are different from what application 'test5-fn-changed-app' e
>> >> >         1 data member deletion:
>> >> >           'unsigned char S1::m1', at offset 32 (in bits)
>> >> >
>> >> >-
>> >> >diff --git a/tests/data/test-abicompat/test5-fn-changed-report-1.txt b/tests/data/test-abicompat/test5-fn-changed-report-1.txt
>> >> >index 3c8c4a8f..b39f650d 100644
>> >> >--- a/tests/data/test-abicompat/test5-fn-changed-report-1.txt
>> >> >+++ b/tests/data/test-abicompat/test5-fn-changed-report-1.txt
>> >> >@@ -15,4 +15,3 @@ have sub-types that are different from what application 'test5-fn-changed-app' e
>> >> >         1 data member deletion:
>> >> >           'unsigned char S1::m1', at offset 32 (in bits) at test5-fn-changed-libapp-v0.h:11:1
>> >> >
>> >> >-
>> >> >diff --git a/tests/data/test-abicompat/test6-var-changed-report-0.txt b/tests/data/test-abicompat/test6-var-changed-report-0.txt
>> >> >index 5d2bd89c..f5077879 100644
>> >> >--- a/tests/data/test-abicompat/test6-var-changed-report-0.txt
>> >> >+++ b/tests/data/test-abicompat/test6-var-changed-report-0.txt
>> >> >@@ -13,4 +13,3 @@ have sub-types that are different from what application 'test6-var-changed-app'
>> >> >       1 data member deletion:
>> >> >         'unsigned char S1::m1', at offset 32 (in bits)
>> >> >
>> >> >-
>> >> >diff --git a/tests/data/test-abicompat/test6-var-changed-report-1.txt b/tests/data/test-abicompat/test6-var-changed-report-1.txt
>> >> >index 697929f0..5b78c83c 100644
>> >> >--- a/tests/data/test-abicompat/test6-var-changed-report-1.txt
>> >> >+++ b/tests/data/test-abicompat/test6-var-changed-report-1.txt
>> >> >@@ -13,4 +13,3 @@ have sub-types that are different from what application 'test6-var-changed-app'
>> >> >       1 data member deletion:
>> >> >         'unsigned char S1::m1', at offset 32 (in bits) at test6-var-changed-libapp-v0.h:11:1
>> >> >
>> >> >-
>> >> >diff --git a/tests/data/test-abicompat/test7-fn-changed-report-0.txt b/tests/data/test-abicompat/test7-fn-changed-report-0.txt
>> >> >index 19db76e3..6a34710d 100644
>> >> >--- a/tests/data/test-abicompat/test7-fn-changed-report-0.txt
>> >> >+++ b/tests/data/test-abicompat/test7-fn-changed-report-0.txt
>> >> >@@ -9,7 +9,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>> >> >       type name changed from 'float' to 'int'
>> >> >       type size hasn't changed
>> >> >
>> >> >-
>> >> >   [C] 'function void print(const Student)' has some indirect sub-type changes:
>> >> >     parameter 1 of type 'const Student' has sub-type changes:
>> >> >       in unqualified underlying type 'struct Student':
>> >> >diff --git a/tests/data/test-abidiff-exit/test-leaf3-report.txt b/tests/data/test-abidiff-exit/test-leaf3-report.txt
>> >> >index 138c4b5a..7602e761 100644
>> >> >--- a/tests/data/test-abidiff-exit/test-leaf3-report.txt
>> >> >+++ b/tests/data/test-abidiff-exit/test-leaf3-report.txt
>> >> >@@ -10,7 +10,6 @@ Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
>> >> >       type name changed from 'sto1' to 'stn1'
>> >> >       type size hasn't changed
>> >> >
>> >> >-
>> >> >   [C] 'function void fn2(sto2)' at test-leaf3-v1.c:13:1 has some sub-type changes:
>> >> >     parameter 1 of type 'struct sto2' changed:
>> >> >       type name changed from 'sto2' to 'stn2'
>> >> >diff --git a/tests/data/test-abidiff-exit/test-loc-with-locs-report.txt b/tests/data/test-abidiff-exit/test-loc-with-locs-report.txt
>> >> >index 53672744..bc37ff53 100644
>> >> >--- a/tests/data/test-abidiff-exit/test-loc-with-locs-report.txt
>> >> >+++ b/tests/data/test-abidiff-exit/test-loc-with-locs-report.txt
>> >> >@@ -9,4 +9,3 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>> >> >       type size hasn't changed
>> >> >
>> >> >
>> >> >-
>> >> >diff --git a/tests/data/test-abidiff-exit/test-loc-without-locs-report.txt b/tests/data/test-abidiff-exit/test-loc-without-locs-report.txt
>> >> >index 6893e3fc..56c41d79 100644
>> >> >--- a/tests/data/test-abidiff-exit/test-loc-without-locs-report.txt
>> >> >+++ b/tests/data/test-abidiff-exit/test-loc-without-locs-report.txt
>> >> >@@ -9,4 +9,3 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>> >> >       type size hasn't changed
>> >> >
>> >> >
>> >> >-
>> >> >diff --git a/tests/data/test-abidiff/test-PR18791-report0.txt b/tests/data/test-abidiff/test-PR18791-report0.txt
>> >> >index 5758077d..7e16fe32 100644
>> >> >--- a/tests/data/test-abidiff/test-PR18791-report0.txt
>> >> >+++ b/tests/data/test-abidiff/test-PR18791-report0.txt
>> >> >@@ -48,9 +48,7 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>> >> >                                          struct std::__detail::_List_node_base
>> >> >                                        2 data member deletions:
>> >> >                                          'std::__detail::_List_node_base* std::__detail::_List_node_base::_M_next', at offset 0 (in bits)
>> >> >-
>> >> >                                          'std::__detail::_List_node_base* std::__detail::_List_node_base::_M_prev', at offset 64 (in bits)
>> >> >-
>> >> >                                        1 data member insertion:
>> >> >                                          'unsigned long int std::_List_node<long unsigned int>::_M_data', at offset 128 (in bits)
>> >> >                                      and name of 'std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl::_M_node' changed to 'std::__cxx11::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl::_M_node'
>> >> >diff --git a/tests/data/test-abidiff/test-enum0-report.txt b/tests/data/test-abidiff/test-enum0-report.txt
>> >> >index c7c5a682..1cd7eaaf 100644
>> >> >--- a/tests/data/test-abidiff/test-enum0-report.txt
>> >> >+++ b/tests/data/test-abidiff/test-enum0-report.txt
>> >> >@@ -3,7 +3,6 @@
>> >> >     type size hasn't changed
>> >> >     1 enumerator deletion:
>> >> >       'E::e2' value '1'
>> >> >-
>> >> >     1 enumerator insertion:
>> >> >       'E::e1' value '1'
>> >> >
>> >> >diff --git a/tests/data/test-abidiff/test-enum1-report.txt b/tests/data/test-abidiff/test-enum1-report.txt
>> >> >index f1198ef9..7e8acf80 100644
>> >> >--- a/tests/data/test-abidiff/test-enum1-report.txt
>> >> >+++ b/tests/data/test-abidiff/test-enum1-report.txt
>> >> >@@ -3,7 +3,6 @@
>> >> >     type size hasn't changed
>> >> >     1 enumerator insertion:
>> >> >       'E::e1' value '1'
>> >> >-
>> >> >     1 enumerator change:
>> >> >       'E::e2' from value '1' to '2'
>> >> >
>> >> >diff --git a/tests/data/test-abidiff/test-struct1-report.txt b/tests/data/test-abidiff/test-struct1-report.txt
>> >> >index 39b71e55..e334bf1a 100644
>> >> >--- a/tests/data/test-abidiff/test-struct1-report.txt
>> >> >+++ b/tests/data/test-abidiff/test-struct1-report.txt
>> >> >@@ -6,7 +6,6 @@
>> >> >
>> >> >     1 data member deletion:
>> >> >       'char s0::m1', at offset 96 (in bits)
>> >> >-
>> >> >     1 data member insertion:
>> >> >       'double s0::m01', at offset 128 (in bits)
>> >> >     2 data member changes:
>> >> >diff --git a/tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt b/tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt
>> >> >index 29f823ec..aab271ff 100644
>> >> >--- a/tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt
>> >> >+++ b/tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt
>> >> >@@ -100,7 +100,6 @@ Variables changes summary: 0 Removed, 0 Changed, 3 Added variables
>> >> >          type of 'union {lttng_event_perf_counter_ctx perf_counter; struct {char* provider_name; char* ctx_name;} app_ctx; char padding[288];} lttng_event_context::u' changed:
>> >> >            type name changed from '__anonymous_union__4' to '__anonymous_union__5'
>> >> >            type size hasn't changed
>> >> >-
>> >> >            3 data member changes:
>> >> >             name of '__anonymous_union__4::app_ctx' changed to '__anonymous_union__5::app_ctx'
>> >> >             name of '__anonymous_union__4::padding' changed to '__anonymous_union__5::padding'
>> >> >@@ -171,7 +170,6 @@ Variables changes summary: 0 Removed, 0 Changed, 3 Added variables
>> >> >           type size changed from 35008 to 35072 (in bits)
>> >> >           1 data member deletion:
>> >> >             'char lttng_session::padding[12]', at offset 34912 (in bits)
>> >> >-
>> >> >           1 data member insertion:
>> >> >             'union {char padding[12]; void* ptr;} lttng_session::extended', at offset 34944 (in bits)
>> >> >
>> >> >@@ -208,7 +206,6 @@ Variables changes summary: 0 Removed, 0 Changed, 3 Added variables
>> >> >           1 data member deletion:
>> >> >             'bool lttng_notification::owns_elements', at offset 128 (in bits)
>> >> >
>> >> >-
>> >> >   [C] 'function lttng_notification_channel_status lttng_notification_channel_subscribe(lttng_notification_channel*, const lttng_condition*)' has some indirect sub-type changes:
>> >> >     return type changed:
>> >> >       enum type 'enum lttng_notification_channel_status' changed, as reported earlier
>> >> >@@ -289,7 +286,6 @@ Variables changes summary: 0 Removed, 0 Changed, 3 Added variables
>> >> >                            'op_type::AST_OP_BIN_AND' value '10'
>> >> >                            'op_type::AST_OP_BIN_OR' value '11'
>> >> >                            'op_type::AST_OP_BIN_XOR' value '12'
>> >> >-
>> >> >                          5 enumerator insertions:
>> >> >                            'op_type::AST_OP_BIT_RSHIFT' value '6'
>> >> >                            'op_type::AST_OP_BIT_LSHIFT' value '7'
>> >> >@@ -319,7 +315,6 @@ Variables changes summary: 0 Removed, 0 Changed, 3 Added variables
>> >> >                          type size hasn't changed
>> >> >                          1 enumerator deletion:
>> >> >                            'unary_op_type::AST_UNARY_BIN_NOT' value '4'
>> >> >-
>> >> >                          1 enumerator insertion:
>> >> >                            'unary_op_type::AST_UNARY_BIT_NOT' value '4'
>> >> >
>> >> >diff --git a/tests/data/test-diff-dwarf/test13-report.txt b/tests/data/test-diff-dwarf/test13-report.txt
>> >> >index cf29a4fd..833879c7 100644
>> >> >--- a/tests/data/test-diff-dwarf/test13-report.txt
>> >> >+++ b/tests/data/test-diff-dwarf/test13-report.txt
>> >> >@@ -12,7 +12,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>> >> >            type name changed from 'int' to 'unsigned int'
>> >> >            type size hasn't changed
>> >> >
>> >> >-
>> >> >          type of 'unsigned int S::m2' changed:
>> >> >            type name changed from 'unsigned int' to 'long long int'
>> >> >            type size changed from 32 to 64 (in bits)
>> >> >diff --git a/tests/data/test-diff-dwarf/test38-union-report-0.txt b/tests/data/test-diff-dwarf/test38-union-report-0.txt
>> >> >index f7a75df7..fd9708e6 100644
>> >> >--- a/tests/data/test-diff-dwarf/test38-union-report-0.txt
>> >> >+++ b/tests/data/test-diff-dwarf/test38-union-report-0.txt
>> >> >@@ -9,7 +9,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>> >> >         type size hasn't changed
>> >> >         1 data member deletion:
>> >> >           'int some_union_type::m0'
>> >> >-
>> >> >         type changed from:
>> >> >           union some_union_type{int m0; char m1; S m2;}
>> >> >         to:
>> >> >diff --git a/tests/data/test-diff-dwarf/test40-report-0.txt b/tests/data/test-diff-dwarf/test40-report-0.txt
>> >> >index d0b8c52c..f0f9e1a1 100644
>> >> >--- a/tests/data/test-diff-dwarf/test40-report-0.txt
>> >> >+++ b/tests/data/test-diff-dwarf/test40-report-0.txt
>> >> >@@ -9,7 +9,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>> >> >         type size changed from 96 to 64 (in bits)
>> >> >         1 data member deletion:
>> >> >           'int S2::to_remove', at offset 0 (in bits)
>> >> >-
>> >> >         2 data member changes:
>> >> >          'int S2::m0' offset changed from 32 to 0 (in bits) (by -32 bits)
>> >> >          'char S2::m1' offset changed from 64 to 32 (in bits) (by -32 bits)
>> >> >@@ -24,7 +23,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>> >> >            type size hasn't changed
>> >> >
>> >> >
>> >> >-
>> >> >   [C] 'function int foo(S1*)' has some indirect sub-type changes:
>> >> >     parameter 1 of type 'S1*' has sub-type changes:
>> >> >       in pointed to type 'struct S1':
>> >> >diff --git a/tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt b/tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt
>> >> >index f0a25a2e..44918baa 100644
>> >> >--- a/tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt
>> >> >+++ b/tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt
>> >> >@@ -19,7 +19,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>> >> >     return type changed:
>> >> >       type name changed from 'std::tuple<STR&&>' to 'std::tuple<STR &&>'
>> >> >       type size hasn't changed
>> >> >-
>> >> >       1 base class deletion:
>> >> >         struct std::_Tuple_impl<0ul, STR&&>
>> >> >       1 base class insertion:
>> >> >diff --git a/tests/data/test-diff-dwarf/test43-PR22913-report-0.txt b/tests/data/test-diff-dwarf/test43-PR22913-report-0.txt
>> >> >index 1c0c773d..60681336 100644
>> >> >--- a/tests/data/test-diff-dwarf/test43-PR22913-report-0.txt
>> >> >+++ b/tests/data/test-diff-dwarf/test43-PR22913-report-0.txt
>> >> >@@ -12,4 +12,3 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>> >> >             'char m2', at offset 8 (in bits)
>> >> >
>> >> >
>> >> >-
>> >> >diff --git a/tests/data/test-diff-filter/test10-report.txt b/tests/data/test-diff-filter/test10-report.txt
>> >> >index bdc31fd0..5a505fc3 100644
>> >> >--- a/tests/data/test-diff-filter/test10-report.txt
>> >> >+++ b/tests/data/test-diff-filter/test10-report.txt
>> >> >@@ -16,4 +16,3 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>> >> >           'unsigned int S::m', at offset 0 (in bits)
>> >> >
>> >> >
>> >> >-
>> >> >diff --git a/tests/data/test-diff-filter/test18-report.txt b/tests/data/test-diff-filter/test18-report.txt
>> >> >index 0d30ef39..6ade5bdf 100644
>> >> >--- a/tests/data/test-diff-filter/test18-report.txt
>> >> >+++ b/tests/data/test-diff-filter/test18-report.txt
>> >> >@@ -14,4 +14,3 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>> >> >
>> >> >
>> >> >
>> >> >-
>> >> >diff --git a/tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt b/tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt
>> >> >index f847d32e..99c14329 100644
>> >> >--- a/tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt
>> >> >+++ b/tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt
>> >> >@@ -7,10 +7,8 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>> >> >     parameter 1 of type 'int' changed:
>> >> >       type name changed from 'int' to 'float'
>> >> >       type size hasn't changed
>> >> >-
>> >> >     parameter 2 of type 'int' changed:
>> >> >       type name changed from 'int' to 'float'
>> >> >       type size hasn't changed
>> >> >
>> >> >
>> >> >-
>> >> >diff --git a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt
>> >> >index b78215b0..5def3a08 100644
>> >> >--- a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt
>> >> >+++ b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt
>> >> >@@ -1200,7 +1200,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>> >> >           '__anonymous_enum__1::c_report_state_stream' value '142'
>> >> >           '__anonymous_enum__1::c_report_stream' value '143'
>> >> >           '__anonymous_enum__1::c_unload_library' value '144'
>> >> >-
>> >> >         92 enumerator changes:
>> >> >           '__anonymous_enum__::c_process_get_func_handles' from value '32' to '33'
>> >> >           '__anonymous_enum__::c_process_wait_shutdown' from value '33' to '34'
>> >> >@@ -1304,7 +1303,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>> >> >          type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} VarDesc::flags' changed:
>> >> >            type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags'
>> >> >            type size hasn't changed
>> >> >-
>> >> >            1 data member changes (1 filtered):
>> >> >             anonymous data member at offset 0 (in bits) changed from:
>> >> >               struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}
>> >> >@@ -1319,7 +1317,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>> >> >         entity changed from 'struct InitTableEntry' to compatible type 'typedef InitTableEntry'
>> >> >           type name changed from 'InitTableEntry' to '__anonymous_struct__2'
>> >> >           type size hasn't changed
>> >> >-
>> >> >           1 data member change:
>> >> >            type of 'void ()* InitTableEntry::func' changed:
>> >> >              in pointed to type 'function type void ()':
>> >> >@@ -1348,7 +1345,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>> >> >                type size changed from 2752 to 5504 (in bits)
>> >> >                1 data member deletion:
>> >> >                  'mutex_t Engine::m_ptr_lock', at offset 1344 (in bits)
>> >> >-
>> >> >                7 data member insertions:
>> >> >                  'PtrDataTable Engine::m_targetptr_set', at offset 1664 (in bits)
>> >> >                  'StreamMap Engine::m_stream_map', at offset 3072 (in bits)
>> >> >@@ -1370,20 +1366,16 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>> >> >                        underlying type 'class std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' changed:
>> >> >                          type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' to 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >'
>> >> >                          type size hasn't changed
>> >> >-
>> >> >                          1 data member change:
>> >> >                           type of 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' changed:
>> >> >                             entity changed from 'struct std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to compatible type 'typedef std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type'
>> >> >                               type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >'
>> >> >                               type size hasn't changed
>> >> >-
>> >> >                               1 base class deletion:
>> >> >                                 class std::allocator<std::_Rb_tree_node<PtrData> >
>> >> >                               2 data member deletions:
>> >> >                                 'std::_Rb_tree_node_base std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_header', at offset 64 (in bits)
>> >> >-
>> >> >                                 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::size_type std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_node_count', at offset 320 (in bits)
>> >> >-
>> >> >                               1 data member change:
>> >> >                                type of 'std::less<PtrData> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_key_compare' changed:
>> >> >                                  type name changed from 'std::less<PtrData>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>'
>> >> >diff --git a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt
>> >> >index ccaf8126..3bc8f6d7 100644
>> >> >--- a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt
>> >> >+++ b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt
>> >> >@@ -1200,7 +1200,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>> >> >           '__anonymous_enum__1::c_report_state_stream' value '142'
>> >> >           '__anonymous_enum__1::c_report_stream' value '143'
>> >> >           '__anonymous_enum__1::c_unload_library' value '144'
>> >> >-
>> >> >         92 enumerator changes:
>> >> >           '__anonymous_enum__::c_process_get_func_handles' from value '32' to '33' at liboffload_error_codes.h:38:1
>> >> >           '__anonymous_enum__::c_process_wait_shutdown' from value '33' to '34' at liboffload_error_codes.h:38:1
>> >> >@@ -1304,7 +1303,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>> >> >          type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} VarDesc::flags' changed:
>> >> >            type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags'
>> >> >            type size hasn't changed
>> >> >-
>> >> >            1 data member changes (1 filtered):
>> >> >             anonymous data member at offset 0 (in bits) changed from:
>> >> >               struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}
>> >> >@@ -1319,7 +1317,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>> >> >         entity changed from 'struct InitTableEntry' to compatible type 'typedef InitTableEntry' at offload_table.h:296:1
>> >> >           type name changed from 'InitTableEntry' to '__anonymous_struct__2'
>> >> >           type size hasn't changed
>> >> >-
>> >> >           1 data member change:
>> >> >            type of 'void ()* InitTableEntry::func' changed:
>> >> >              in pointed to type 'function type void ()':
>> >> >@@ -1348,7 +1345,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>> >> >                type size changed from 2752 to 5504 (in bits)
>> >> >                1 data member deletion:
>> >> >                  'mutex_t Engine::m_ptr_lock', at offset 1344 (in bits) at offload_engine.h:474:1
>> >> >-
>> >> >                7 data member insertions:
>> >> >                  'PtrDataTable Engine::m_targetptr_set', at offset 1664 (in bits) at offload_engine.h:630:1
>> >> >                  'StreamMap Engine::m_stream_map', at offset 3072 (in bits) at offload_engine.h:637:1
>> >> >@@ -1370,20 +1366,16 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>> >> >                        underlying type 'class std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' at stl_tree.h:357:1 changed:
>> >> >                          type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' to 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >'
>> >> >                          type size hasn't changed
>> >> >-
>> >> >                          1 data member change:
>> >> >                           type of 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' changed:
>> >> >                             entity changed from 'struct std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to compatible type 'typedef std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type' at stl_set.h:115:1
>> >> >                               type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >'
>> >> >                               type size hasn't changed
>> >> >-
>> >> >                               1 base class deletion:
>> >> >                                 class std::allocator<std::_Rb_tree_node<PtrData> > at allocator.h:95:1
>> >> >                               2 data member deletions:
>> >> >                                 'std::_Rb_tree_node_base std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_header', at offset 64 (in bits) at stl_tree.h:593:1
>> >> >-
>> >> >                                 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::size_type std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_node_count', at offset 320 (in bits) at stl_tree.h:594:1
>> >> >-
>> >> >                               1 data member change:
>> >> >                                type of 'std::less<PtrData> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_key_compare' changed:
>> >> >                                  type name changed from 'std::less<PtrData>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>'
>> >> >diff --git a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt
>> >> >index 44e78935..d91de66b 100644
>> >> >--- a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt
>> >> >+++ b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt
>> >> >@@ -1200,7 +1200,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>> >> >           '__anonymous_enum__1::c_report_state_stream' value '142'
>> >> >           '__anonymous_enum__1::c_report_stream' value '143'
>> >> >           '__anonymous_enum__1::c_unload_library' value '144'
>> >> >-
>> >> >         92 enumerator changes:
>> >> >           '__anonymous_enum__::c_process_get_func_handles' from value '32' to '33' at liboffload_error_codes.h:38:1
>> >> >           '__anonymous_enum__::c_process_wait_shutdown' from value '33' to '34' at liboffload_error_codes.h:38:1
>> >> >@@ -1304,7 +1303,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>> >> >          type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} VarDesc::flags' changed:
>> >> >            type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags'
>> >> >            type size hasn't changed
>> >> >-
>> >> >            1 data member changes (1 filtered):
>> >> >             anonymous data member at offset 0 (in bytes) changed from:
>> >> >               struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}
>> >> >@@ -1319,7 +1317,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>> >> >         entity changed from 'struct InitTableEntry' to compatible type 'typedef InitTableEntry' at offload_table.h:296:1
>> >> >           type name changed from 'InitTableEntry' to '__anonymous_struct__2'
>> >> >           type size hasn't changed
>> >> >-
>> >> >           1 data member change:
>> >> >            type of 'void ()* InitTableEntry::func' changed:
>> >> >              in pointed to type 'function type void ()':
>> >> >@@ -1348,7 +1345,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>> >> >                type size changed from 0x158 to 0x2b0 (in bytes)
>> >> >                1 data member deletion:
>> >> >                  'mutex_t Engine::m_ptr_lock', at offset 0xa8 (in bytes) at offload_engine.h:474:1
>> >> >-
>> >> >                7 data member insertions:
>> >> >                  'PtrDataTable Engine::m_targetptr_set', at offset 0xd0 (in bytes) at offload_engine.h:630:1
>> >> >                  'StreamMap Engine::m_stream_map', at offset 0x180 (in bytes) at offload_engine.h:637:1
>> >> >@@ -1370,20 +1366,16 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>> >> >                        underlying type 'class std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' at stl_tree.h:357:1 changed:
>> >> >                          type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' to 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >'
>> >> >                          type size hasn't changed
>> >> >-
>> >> >                          1 data member change:
>> >> >                           type of 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' changed:
>> >> >                             entity changed from 'struct std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to compatible type 'typedef std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type' at stl_set.h:115:1
>> >> >                               type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >'
>> >> >                               type size hasn't changed
>> >> >-
>> >> >                               1 base class deletion:
>> >> >                                 class std::allocator<std::_Rb_tree_node<PtrData> > at allocator.h:95:1
>> >> >                               2 data member deletions:
>> >> >                                 'std::_Rb_tree_node_base std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_header', at offset 0x8 (in bytes) at stl_tree.h:593:1
>> >> >-
>> >> >                                 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::size_type std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_node_count', at offset 0x28 (in bytes) at stl_tree.h:594:1
>> >> >-
>> >> >                               1 data member change:
>> >> >                                type of 'std::less<PtrData> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_key_compare' changed:
>> >> >                                  type name changed from 'std::less<PtrData>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>'
>> >> >diff --git a/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt b/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt
>> >> >index c9cb9246..306a9863 100644
>> >> >--- a/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt
>> >> >+++ b/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt
>> >> >@@ -116,7 +116,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>> >> >           '__anonymous_enum__1::c_report_state_stream' value '142'
>> >> >           '__anonymous_enum__1::c_report_stream' value '143'
>> >> >           '__anonymous_enum__1::c_unload_library' value '144'
>> >> >-
>> >> >         92 enumerator changes:
>> >> >           '__anonymous_enum__::c_process_get_func_handles' from value '32' to '33'
>> >> >           '__anonymous_enum__::c_process_wait_shutdown' from value '33' to '34'
>> >> >@@ -220,7 +219,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>> >> >          type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} VarDesc::flags' changed:
>> >> >            type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags'
>> >> >            type size hasn't changed
>> >> >-
>> >> >            1 data member changes (1 filtered):
>> >> >             anonymous data member at offset 0 (in bits) changed from:
>> >> >               struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}
>> >> >@@ -235,7 +233,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>> >> >         entity changed from 'struct InitTableEntry' to compatible type 'typedef InitTableEntry'
>> >> >           type name changed from 'InitTableEntry' to '__anonymous_struct__2'
>> >> >           type size hasn't changed
>> >> >-
>> >> >           1 data member change:
>> >> >            type of 'void ()* InitTableEntry::func' changed:
>> >> >              in pointed to type 'function type void ()':
>> >> >@@ -264,7 +261,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>> >> >                type size changed from 2752 to 5504 (in bits)
>> >> >                1 data member deletion:
>> >> >                  'mutex_t Engine::m_ptr_lock', at offset 1344 (in bits)
>> >> >-
>> >> >                7 data member insertions:
>> >> >                  'PtrDataTable Engine::m_targetptr_set', at offset 1664 (in bits)
>> >> >                  'StreamMap Engine::m_stream_map', at offset 3072 (in bits)
>> >> >@@ -286,20 +282,16 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
>> >> >                        underlying type 'class std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' changed:
>> >> >                          type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' to 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >'
>> >> >                          type size hasn't changed
>> >> >-
>> >> >                          1 data member change:
>> >> >                           type of 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' changed:
>> >> >                             entity changed from 'struct std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to compatible type 'typedef std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type'
>> >> >                               type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >'
>> >> >                               type size hasn't changed
>> >> >-
>> >> >                               1 base class deletion:
>> >> >                                 class std::allocator<std::_Rb_tree_node<PtrData> >
>> >> >                               2 data member deletions:
>> >> >                                 'std::_Rb_tree_node_base std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_header', at offset 64 (in bits)
>> >> >-
>> >> >                                 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::size_type std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_node_count', at offset 320 (in bits)
>> >> >-
>> >> >                               1 data member change:
>> >> >                                type of 'std::less<PtrData> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_key_compare' changed:
>> >> >                                  type name changed from 'std::less<PtrData>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>'
>> >> >diff --git a/tests/data/test-diff-filter/test36-report-0.txt b/tests/data/test-diff-filter/test36-report-0.txt
>> >> >index 08692c1e..22e614d8 100644
>> >> >--- a/tests/data/test-diff-filter/test36-report-0.txt
>> >> >+++ b/tests/data/test-diff-filter/test36-report-0.txt
>> >> >@@ -13,7 +13,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>> >> >            type size hasn't changed
>> >> >
>> >> >
>> >> >-
>> >> >   [C] 'function int foo_2(S*)' at test36-2-v1.c:13:1 has some indirect sub-type changes:
>> >> >     parameter 1 of type 'S*' has sub-type changes:
>> >> >       in pointed to type 'struct S' at test36-2-v1.c:6:1:
>> >> >@@ -23,11 +22,9 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>> >> >            type name changed from 'int' to 'unsigned int'
>> >> >            type size hasn't changed
>> >> >
>> >> >-
>> >> >          type of 'int S::m1' changed:
>> >> >            type name changed from 'int' to 'unsigned int'
>> >> >            type size hasn't changed
>> >> >
>> >> >
>> >> >
>> >> >-
>> >> >diff --git a/tests/data/test-diff-filter/test42-leaf-report-output-0.txt b/tests/data/test-diff-filter/test42-leaf-report-output-0.txt
>> >> >index 94a0551d..d40a1374 100644
>> >> >--- a/tests/data/test-diff-filter/test42-leaf-report-output-0.txt
>> >> >+++ b/tests/data/test-diff-filter/test42-leaf-report-output-0.txt
>> >> >@@ -7,6 +7,5 @@ Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
>> >> >   type size changed from 32 to 64 (in bits)
>> >> >   1 data member insertion:
>> >> >     'char leaf::m1', at offset 32 (in bits) at test42-leaf-report-v1.cc:7:1
>> >> >-
>> >> >   one impacted interface:
>> >> >     function void fn(C&)
>> >> >diff --git a/tests/data/test-diff-filter/test7-report.txt b/tests/data/test-diff-filter/test7-report.txt
>> >> >index 7e3a4d47..26933033 100644
>> >> >--- a/tests/data/test-diff-filter/test7-report.txt
>> >> >+++ b/tests/data/test-diff-filter/test7-report.txt
>> >> >@@ -7,7 +7,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>> >> >     return type changed:
>> >> >       type name changed from 'return_type' to 'other_return_type'
>> >> >       type size hasn't changed
>> >> >-
>> >> >       no data member change (1 filtered);
>> >> >
>> >> >
>> >> >diff --git a/tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt b/tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt
>> >> >index 05d6fcad..873a84cd 100644
>> >> >--- a/tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt
>> >> >+++ b/tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt
>> >> >@@ -54,9 +54,7 @@
>> >> >                                                   struct std::__detail::_List_node_base
>> >> >                                                 2 data member deletions:
>> >> >                                                   'std::__detail::_List_node_base* std::__detail::_List_node_base::_M_next', at offset 0 (in bits)
>> >> >-
>> >> >                                                   'std::__detail::_List_node_base* std::__detail::_List_node_base::_M_prev', at offset 64 (in bits)
>> >> >-
>> >> >                                                 1 data member insertion:
>> >> >                                                   'unsigned long int std::_List_node<long unsigned int>::_M_data', at offset 128 (in bits)
>> >> >                                               and name of 'std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl::_M_node' changed to 'std::__cxx11::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl::_M_node'
>> >> >diff --git a/tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt b/tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt
>> >> >index c227fa5c..a0cc67c2 100644
>> >> >--- a/tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt
>> >> >+++ b/tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt
>> >> >@@ -10,7 +10,6 @@
>> >> >           type size hasn't changed
>> >> >           1 enumerator insertion:
>> >> >             '__anonymous_enum__1::SEC_OID_TLS_ECDHE_PSK' value '347'
>> >> >-
>> >> >           1 enumerator change:
>> >> >             '__anonymous_enum__1::SEC_OID_TOTAL' from value '347' to '348' at secoidt.h:34:1
>> >> >
>> >> >@@ -34,7 +33,6 @@
>> >> >           type size hasn't changed
>> >> >           1 enumerator insertion:
>> >> >             '__anonymous_enum__1::ssl_kea_ecdh_psk' value '5'
>> >> >-
>> >> >           1 enumerator change:
>> >> >             '__anonymous_enum__::ssl_kea_size' from value '5' to '6' at sslt.h:40:1
>> >> >
>> >> >@@ -52,7 +50,6 @@
>> >> >                  type size hasn't changed
>> >> >                  1 enumerator deletion:
>> >> >                    '__anonymous_enum__::ssl_auth_rsa' value '1'
>> >> >-
>> >> >                  7 enumerator insertions:
>> >> >                    '__anonymous_enum__::ssl_auth_rsa_decrypt' value '1'
>> >> >                    '__anonymous_enum__::ssl_auth_ecdh_rsa' value '5'
>> >> >@@ -114,7 +111,6 @@
>> >> >                                              type size hasn't changed
>> >> >                                              1 enumerator insertion:
>> >> >                                                '__anonymous_enum__1::SEC_OID_TLS_ECDHE_PSK' value '347'
>> >> >-
>> >> >                                              1 enumerator change:
>> >> >                                                '__anonymous_enum__1::SEC_OID_TOTAL' from value '347' to '348' at secoidt.h:34:1
>> >> >
>> >> >diff --git a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt
>> >> >index bf081f52..70b41ddd 100644
>> >> >--- a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt
>> >> >+++ b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt
>> >> >@@ -25,7 +25,6 @@
>> >> >         underlying type 'enum __anonymous_enum__2' at spice.h:471:1 changed:
>> >> >           type name changed from '__anonymous_enum__2' to 'SpiceImageCompression'
>> >> >           type size hasn't changed
>> >> >-
>> >> >           7 enumerator deletions:
>> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_INVALID' value '0'
>> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_OFF' value '1'
>> >> >@@ -34,7 +33,6 @@
>> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_QUIC' value '4'
>> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_GLZ' value '5'
>> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_LZ' value '6'
>> >> >-
>> >> >           9 enumerator insertions:
>> >> >             'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0'
>> >> >             'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1'
>> >> >diff --git a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt
>> >> >index 7b86b964..0b909f90 100644
>> >> >--- a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt
>> >> >+++ b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt
>> >> >@@ -25,7 +25,6 @@
>> >> >         underlying type 'enum __anonymous_enum__2' at spice.h:471:1 changed:
>> >> >           type name changed from '__anonymous_enum__2' to 'SpiceImageCompression'
>> >> >           type size hasn't changed
>> >> >-
>> >> >           7 enumerator deletions:
>> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_INVALID' value '0'
>> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_OFF' value '1'
>> >> >@@ -34,7 +33,6 @@
>> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_QUIC' value '4'
>> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_GLZ' value '5'
>> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_LZ' value '6'
>> >> >-
>> >> >           9 enumerator insertions:
>> >> >             'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0'
>> >> >             'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1'
>> >> >diff --git a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt
>> >> >index 3d20caf1..c247ef95 100644
>> >> >--- a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt
>> >> >+++ b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt
>> >> >@@ -239,15 +239,10 @@
>> >> >                                                  type size changed from 1280 to 256 (in bits)
>> >> >                                                  5 data member deletions:
>> >> >                                                    'RedsSASL RedsStream::sasl', at offset 256 (in bits) at reds.h:78:1
>> >> >-
>> >> >                                                    'SpiceChannelEventInfo* RedsStream::info', at offset 1024 (in bits) at reds.h:85:1
>> >> >-
>> >> >                                                    'typedef ssize_t (RedsStream*, void*, typedef size_t)* RedsStream::read', at offset 1088 (in bits) at reds.h:88:1
>> >> >-
>> >> >                                                    'typedef ssize_t (RedsStream*, void*, typedef size_t)* RedsStream::write', at offset 1152 (in bits) at reds.h:89:1
>> >> >-
>> >> >                                                    'typedef ssize_t (RedsStream*, const iovec*, int)* RedsStream::writev', at offset 1216 (in bits) at reds.h:90:1
>> >> >-
>> >> >                                                  1 data member change:
>> >> >                                                   type of 'SSL* RedsStream::ssl' changed:
>> >> >                                                     in pointed to type 'typedef SSL' at reds_stream.h:32:1:
>> >> >@@ -257,193 +252,99 @@
>> >> >                                                         type size changed from 5504 to 0 (in bits)
>> >> >                                                         94 data member deletions:
>> >> >                                                           'int ssl_st::version', at offset 0 (in bits) at ssl.h:1070:1
>> >> >-
>> >> >                                                           'int ssl_st::type', at offset 32 (in bits) at ssl.h:1071:1
>> >> >-
>> >> >                                                           'const SSL_METHOD* ssl_st::method', at offset 64 (in bits) at ssl.h:1073:1
>> >> >-
>> >> >                                                           'BIO* ssl_st::rbio', at offset 128 (in bits) at ssl.h:1080:1
>> >> >-
>> >> >                                                           'BIO* ssl_st::wbio', at offset 192 (in bits) at ssl.h:1081:1
>> >> >-
>> >> >                                                           'BIO* ssl_st::bbio', at offset 256 (in bits) at ssl.h:1082:1
>> >> >-
>> >> >                                                           'int ssl_st::rwstate', at offset 320 (in bits) at ssl.h:1093:1
>> >> >-
>> >> >                                                           'int ssl_st::in_handshake', at offset 352 (in bits) at ssl.h:1096:1
>> >> >-
>> >> >                                                           'int (SSL*)* ssl_st::handshake_func', at offset 384 (in bits) at ssl.h:1097:1
>> >> >-
>> >> >                                                           'int ssl_st::server', at offset 448 (in bits) at ssl.h:1107:1
>> >> >-
>> >> >                                                           'int ssl_st::new_session', at offset 480 (in bits) at ssl.h:1109:1
>> >> >-
>> >> >                                                           'int ssl_st::quiet_shutdown', at offset 512 (in bits) at ssl.h:1113:1
>> >> >-
>> >> >                                                           'int ssl_st::shutdown', at offset 544 (in bits) at ssl.h:1114:1
>> >> >-
>> >> >                                                           'int ssl_st::state', at offset 576 (in bits) at ssl.h:1116:1
>> >> >-
>> >> >                                                           'int ssl_st::rstate', at offset 608 (in bits) at ssl.h:1117:1
>> >> >-
>> >> >                                                           'BUF_MEM* ssl_st::init_buf', at offset 640 (in bits) at ssl.h:1119:1
>> >> >-
>> >> >                                                           'void* ssl_st::init_msg', at offset 704 (in bits) at ssl.h:1120:1
>> >> >-
>> >> >                                                           'int ssl_st::init_num', at offset 768 (in bits) at ssl.h:1121:1
>> >> >-
>> >> >                                                           'int ssl_st::init_off', at offset 800 (in bits) at ssl.h:1122:1
>> >> >-
>> >> >                                                           'unsigned char* ssl_st::packet', at offset 832 (in bits) at ssl.h:1125:1
>> >> >-
>> >> >                                                           'unsigned int ssl_st::packet_length', at offset 896 (in bits) at ssl.h:1126:1
>> >> >-
>> >> >                                                           'ssl2_state_st* ssl_st::s2', at offset 960 (in bits) at ssl.h:1128:1
>> >> >-
>> >> >                                                           'ssl3_state_st* ssl_st::s3', at offset 1024 (in bits) at ssl.h:1129:1
>> >> >-
>> >> >                                                           'dtls1_state_st* ssl_st::d1', at offset 1088 (in bits) at ssl.h:1130:1
>> >> >-
>> >> >                                                           'int ssl_st::read_ahead', at offset 1152 (in bits) at ssl.h:1132:1
>> >> >-
>> >> >                                                           'void (int, int, int, void*, typedef size_t, SSL*, void*)* ssl_st::msg_callback', at offset 1216 (in bits) at ssl.h:1136:1
>> >> >-
>> >> >                                                           'void* ssl_st::msg_callback_arg', at offset 1280 (in bits) at ssl.h:1137:1
>> >> >-
>> >> >                                                           'int ssl_st::hit', at offset 1344 (in bits) at ssl.h:1139:1
>> >> >-
>> >> >                                                           'X509_VERIFY_PARAM* ssl_st::param', at offset 1408 (in bits) at ssl.h:1141:1
>> >> >-
>> >> >                                                           'stack_st_SSL_CIPHER* ssl_st::cipher_list', at offset 1472 (in bits) at ssl.h:1149:1
>> >> >-
>> >> >                                                           'stack_st_SSL_CIPHER* ssl_st::cipher_list_by_id', at offset 1536 (in bits) at ssl.h:1150:1
>> >> >-
>> >> >                                                           'int ssl_st::mac_flags', at offset 1600 (in bits) at ssl.h:1154:1
>> >> >-
>> >> >                                                           'EVP_CIPHER_CTX* ssl_st::enc_read_ctx', at offset 1664 (in bits) at ssl.h:1155:1
>> >> >-
>> >> >                                                           'EVP_MD_CTX* ssl_st::read_hash', at offset 1728 (in bits) at ssl.h:1156:1
>> >> >-
>> >> >                                                           'COMP_CTX* ssl_st::expand', at offset 1792 (in bits) at ssl.h:1158:1
>> >> >-
>> >> >                                                           'EVP_CIPHER_CTX* ssl_st::enc_write_ctx', at offset 1856 (in bits) at ssl.h:1163:1
>> >> >-
>> >> >                                                           'EVP_MD_CTX* ssl_st::write_hash', at offset 1920 (in bits) at ssl.h:1164:1
>> >> >-
>> >> >                                                           'COMP_CTX* ssl_st::compress', at offset 1984 (in bits) at ssl.h:1166:1
>> >> >-
>> >> >                                                           'cert_st* ssl_st::cert', at offset 2048 (in bits) at ssl.h:1175:1
>> >> >-
>> >> >                                                           'unsigned int ssl_st::sid_ctx_length', at offset 2112 (in bits) at ssl.h:1179:1
>> >> >-
>> >> >                                                           'unsigned char ssl_st::sid_ctx[32]', at offset 2144 (in bits) at ssl.h:1180:1
>> >> >-
>> >> >                                                           'SSL_SESSION* ssl_st::session', at offset 2432 (in bits) at ssl.h:1183:1
>> >> >-
>> >> >                                                           'GEN_SESSION_CB ssl_st::generate_session_id', at offset 2496 (in bits) at ssl.h:1186:1
>> >> >-
>> >> >                                                           'int ssl_st::verify_mode', at offset 2560 (in bits) at ssl.h:1189:1
>> >> >-
>> >> >                                                           'int (int, X509_STORE_CTX*)* ssl_st::verify_callback', at offset 2624 (in bits) at ssl.h:1191:1
>> >> >-
>> >> >                                                           'void (const SSL*, int, int)* ssl_st::info_callback', at offset 2688 (in bits) at ssl.h:1193:1
>> >> >-
>> >> >                                                           'int ssl_st::error', at offset 2752 (in bits) at ssl.h:1195:1
>> >> >-
>> >> >                                                           'int ssl_st::error_code', at offset 2784 (in bits) at ssl.h:1196:1
>> >> >-
>> >> >                                                           'KSSL_CTX* ssl_st::kssl_ctx', at offset 2816 (in bits) at ssl.h:1199:1
>> >> >-
>> >> >                                                           'unsigned int (SSL*, const char*, char*, unsigned int, unsigned char*, unsigned int)* ssl_st::psk_client_callback', at offset 2880 (in bits) at ssl.h:1203:1
>> >> >-
>> >> >                                                           'unsigned int (SSL*, const char*, unsigned char*, unsigned int)* ssl_st::psk_server_callback', at offset 2944 (in bits) at ssl.h:1206:1
>> >> >-
>> >> >                                                           'SSL_CTX* ssl_st::ctx', at offset 3008 (in bits) at ssl.h:1210:1
>> >> >-
>> >> >                                                           'int ssl_st::debug', at offset 3072 (in bits) at ssl.h:1213:1
>> >> >-
>> >> >                                                           'long int ssl_st::verify_result', at offset 3136 (in bits) at ssl.h:1216:1
>> >> >-
>> >> >                                                           'CRYPTO_EX_DATA ssl_st::ex_data', at offset 3200 (in bits) at ssl.h:1217:1
>> >> >-
>> >> >                                                           'stack_st_X509_NAME* ssl_st::client_CA', at offset 3328 (in bits) at ssl.h:1220:1
>> >> >-
>> >> >                                                           'int ssl_st::references', at offset 3392 (in bits) at ssl.h:1222:1
>> >> >-
>> >> >                                                           'unsigned long int ssl_st::options', at offset 3456 (in bits) at ssl.h:1223:1
>> >> >-
>> >> >                                                           'unsigned long int ssl_st::mode', at offset 3520 (in bits) at ssl.h:1224:1
>> >> >-
>> >> >                                                           'long int ssl_st::max_cert_list', at offset 3584 (in bits) at ssl.h:1225:1
>> >> >-
>> >> >                                                           'int ssl_st::first_packet', at offset 3648 (in bits) at ssl.h:1226:1
>> >> >-
>> >> >                                                           'int ssl_st::client_version', at offset 3680 (in bits) at ssl.h:1227:1
>> >> >-
>> >> >                                                           'unsigned int ssl_st::max_send_fragment', at offset 3712 (in bits) at ssl.h:1229:1
>> >> >-
>> >> >                                                           'void (SSL*, int, int, unsigned char*, int, void*)* ssl_st::tlsext_debug_cb', at offset 3776 (in bits) at ssl.h:1232:1
>> >> >-
>> >> >                                                           'void* ssl_st::tlsext_debug_arg', at offset 3840 (in bits) at ssl.h:1235:1
>> >> >-
>> >> >                                                           'char* ssl_st::tlsext_hostname', at offset 3904 (in bits) at ssl.h:1236:1
>> >> >-
>> >> >                                                           'int ssl_st::servername_done', at offset 3968 (in bits) at ssl.h:1237:1
>> >> >-
>> >> >                                                           'int ssl_st::tlsext_status_type', at offset 4000 (in bits) at ssl.h:1244:1
>> >> >-
>> >> >                                                           'int ssl_st::tlsext_status_expected', at offset 4032 (in bits) at ssl.h:1246:1
>> >> >-
>> >> >                                                           'stack_st_OCSP_RESPID* ssl_st::tlsext_ocsp_ids', at offset 4096 (in bits) at ssl.h:1248:1
>> >> >-
>> >> >                                                           'X509_EXTENSIONS* ssl_st::tlsext_ocsp_exts', at offset 4160 (in bits) at ssl.h:1249:1
>> >> >-
>> >> >                                                           'unsigned char* ssl_st::tlsext_ocsp_resp', at offset 4224 (in bits) at ssl.h:1251:1
>> >> >-
>> >> >                                                           'int ssl_st::tlsext_ocsp_resplen', at offset 4288 (in bits) at ssl.h:1252:1
>> >> >-
>> >> >                                                           'int ssl_st::tlsext_ticket_expected', at offset 4320 (in bits) at ssl.h:1255:1
>> >> >-
>> >> >                                                           'size_t ssl_st::tlsext_ecpointformatlist_length', at offset 4352 (in bits) at ssl.h:1257:1
>> >> >-
>> >> >                                                           'unsigned char* ssl_st::tlsext_ecpointformatlist', at offset 4416 (in bits) at ssl.h:1258:1
>> >> >-
>> >> >                                                           'size_t ssl_st::tlsext_ellipticcurvelist_length', at offset 4480 (in bits) at ssl.h:1259:1
>> >> >-
>> >> >                                                           'unsigned char* ssl_st::tlsext_ellipticcurvelist', at offset 4544 (in bits) at ssl.h:1260:1
>> >> >-
>> >> >                                                           'void* ssl_st::tlsext_opaque_prf_input', at offset 4608 (in bits) at ssl.h:1264:1
>> >> >-
>> >> >                                                           'size_t ssl_st::tlsext_opaque_prf_input_len', at offset 4672 (in bits) at ssl.h:1265:1
>> >> >-
>> >> >                                                           'TLS_SESSION_TICKET_EXT* ssl_st::tlsext_session_ticket', at offset 4736 (in bits) at ssl.h:1268:1
>> >> >-
>> >> >                                                           'tls_session_ticket_ext_cb_fn ssl_st::tls_session_ticket_ext_cb', at offset 4800 (in bits) at ssl.h:1271:1
>> >> >-
>> >> >                                                           'void* ssl_st::tls_session_ticket_ext_cb_arg', at offset 4864 (in bits) at ssl.h:1272:1
>> >> >-
>> >> >                                                           'tls_session_secret_cb_fn ssl_st::tls_session_secret_cb', at offset 4928 (in bits) at ssl.h:1275:1
>> >> >-
>> >> >                                                           'void* ssl_st::tls_session_secret_cb_arg', at offset 4992 (in bits) at ssl.h:1276:1
>> >> >-
>> >> >                                                           'SSL_CTX* ssl_st::initial_ctx', at offset 5056 (in bits) at ssl.h:1278:1
>> >> >-
>> >> >                                                           'unsigned char* ssl_st::next_proto_negotiated', at offset 5120 (in bits) at ssl.h:1288:1
>> >> >-
>> >> >                                                           'unsigned char ssl_st::next_proto_negotiated_len', at offset 5184 (in bits) at ssl.h:1289:1
>> >> >-
>> >> >                                                           'stack_st_SRTP_PROTECTION_PROFILE* ssl_st::srtp_profiles', at offset 5248 (in bits) at ssl.h:1294:1
>> >> >-
>> >> >                                                           'SRTP_PROTECTION_PROFILE* ssl_st::srtp_profile', at offset 5312 (in bits) at ssl.h:1295:1
>> >> >-
>> >> >                                                           'unsigned int ssl_st::tlsext_heartbeat', at offset 5376 (in bits) at ssl.h:1297:1
>> >> >-
>> >> >                                                           'unsigned int ssl_st::tlsext_hb_pending', at offset 5408 (in bits) at ssl.h:1302:1
>> >> >-
>> >> >                                                           'unsigned int ssl_st::tlsext_hb_seq', at offset 5440 (in bits) at ssl.h:1303:1
>> >> >-
>> >> >                                                           'int ssl_st::renegotiate', at offset 5472 (in bits) at ssl.h:1308:1
>> >> >-
>> >> >                                                   and name of 'RedsStream::ssl' changed to 'RedsStream::priv' at reds_stream.h:42:1
>> >> >
>> >> >
>> >> >@@ -558,7 +459,6 @@
>> >> >         underlying type 'enum __anonymous_enum__2' at spice.h:471:1 changed:
>> >> >           type name changed from '__anonymous_enum__2' to 'SpiceImageCompression'
>> >> >           type size hasn't changed
>> >> >-
>> >> >           7 enumerator deletions:
>> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_INVALID' value '0'
>> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_OFF' value '1'
>> >> >@@ -567,7 +467,6 @@
>> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_QUIC' value '4'
>> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_GLZ' value '5'
>> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_LZ' value '6'
>> >> >-
>> >> >           9 enumerator insertions:
>> >> >             'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0'
>> >> >             'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1'
>> >> >diff --git a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt
>> >> >index 75ba0a50..11cd5682 100644
>> >> >--- a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt
>> >> >+++ b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt
>> >> >@@ -22,7 +22,6 @@ Leaf changes summary: 11 artifacts changed (7 filtered out)
>> >> >   'enum __anonymous_enum__2 at spice.h:471:1' changed:
>> >> >     type name changed from '__anonymous_enum__2' to 'SpiceImageCompression'
>> >> >     type size hasn't changed
>> >> >-
>> >> >     7 enumerator deletions:
>> >> >       '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_INVALID' value '0'
>> >> >       '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_OFF' value '1'
>> >> >@@ -31,7 +30,6 @@ Leaf changes summary: 11 artifacts changed (7 filtered out)
>> >> >       '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_QUIC' value '4'
>> >> >       '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_GLZ' value '5'
>> >> >       '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_LZ' value '6'
>> >> >-
>> >> >     9 enumerator insertions:
>> >> >       'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0'
>> >> >       'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1'
>> >> >@@ -48,7 +46,6 @@ Leaf changes summary: 11 artifacts changed (7 filtered out)
>> >> >       function int spice_server_set_image_compression(SpiceServer*, spice_image_compression_t)
>> >> >   'typedef spice_image_compression_t at spice.h:479:1' changed:
>> >> >     typedef name changed from spice_image_compression_t to SpiceImageCompression at enums.h:197:1
>> >> >-
>> >> >     2 impacted interfaces:
>> >> >       function spice_image_compression_t spice_server_get_image_compression(SpiceServer*)
>> >> >       function int spice_server_set_image_compression(SpiceServer*, spice_image_compression_t)
>> >> >diff --git a/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt b/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt
>> >> >index f8e60b50..d0381ce5 100644
>> >> >--- a/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt
>> >> >+++ b/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt
>> >> >@@ -60,7 +60,6 @@
>> >> >         type size hasn't changed
>> >> >         1 enumerator insertion:
>> >> >           'tbb::internal::exception_id::eid_bad_tagged_msg_cast' value '20'
>> >> >-
>> >> >         1 enumerator change:
>> >> >           'tbb::internal::exception_id::eid_max' from value '20' to '21' at tbb_exception.h:79:1
>> >> >
>> >> >@@ -129,7 +128,6 @@
>> >> >
>> >> >
>> >> >
>> >> >-
>> >> >                1 member function deletion:
>> >> >                  'method virtual tbb::task* tbb::internal::generic_scheduler::receive_or_steal_task(tbb::internal::reference_count&, bool)' at scheduler.h:391:1, virtual at voffset 7/7
>> >> >
>> >> >@@ -138,11 +136,8 @@
>> >> >
>> >> >                3 data member deletions:
>> >> >                  'unsigned int tbb::internal::generic_scheduler::hint_for_push', at offset 896 (in bits) at scheduler.h:171:1
>> >> >-
>> >> >                  'volatile intptr_t* tbb::internal::generic_scheduler::my_ref_top_priority', at offset 2560 (in bits) at scheduler.h:433:1
>> >> >-
>> >> >                  'volatile uintptr_t* tbb::internal::generic_scheduler::my_ref_reload_epoch', at offset 2752 (in bits) at scheduler.h:443:1
>> >> >-
>> >> >                18 data member changes:
>> >> >                 'uintptr_t tbb::internal::generic_scheduler::my_stealing_threshold' offset changed from 704 to 832 (in bits) (by +128 bits)
>> >> >                 type of 'tbb::internal::market* tbb::internal::generic_scheduler::my_market' changed:
>> >> >diff --git a/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt b/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt
>> >> >index 10816705..89c8efa3 100644
>> >> >--- a/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt
>> >> >+++ b/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt
>> >> >@@ -31,7 +31,6 @@
>> >> >         type size hasn't changed
>> >> >         1 enumerator insertion:
>> >> >           'tbb::internal::exception_id::eid_bad_tagged_msg_cast' value '20'
>> >> >-
>> >> >         1 enumerator change:
>> >> >           'tbb::internal::exception_id::eid_max' from value '20' to '21' at tbb_exception.h:79:1
>> >> >
>> >> >diff --git a/tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt b/tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt
>> >> >index 8f5d0b6b..c39851d3 100644
>> >> >--- a/tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt
>> >> >+++ b/tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt
>> >> >@@ -7,14 +7,11 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>> >> >     return type changed:
>> >> >       type name changed from 'int' to 'float'
>> >> >       type size hasn't changed
>> >> >-
>> >> >     parameter 1 of type 'int' changed:
>> >> >       type name changed from 'int' to 'float'
>> >> >       type size hasn't changed
>> >> >-
>> >> >     parameter 2 of type 'int' changed:
>> >> >       type name changed from 'int' to 'float'
>> >> >       type size hasn't changed
>> >> >
>> >> >
>> >> >-
>> >> >diff --git a/tests/data/test-diff-suppr/test35-leaf-report-0.txt b/tests/data/test-diff-suppr/test35-leaf-report-0.txt
>> >> >index 411cc1b4..244455ae 100644
>> >> >--- a/tests/data/test-diff-suppr/test35-leaf-report-0.txt
>> >> >+++ b/tests/data/test-diff-suppr/test35-leaf-report-0.txt
>> >> >@@ -7,6 +7,5 @@ Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
>> >> >   type size changed from 32 to 64 (in bits)
>> >> >   1 data member insertion:
>> >> >     'char leaf::m1', at offset 32 (in bits) at test35-leaf-v1.cc:8:1
>> >> >-
>> >> >   one impacted interface:
>> >> >     function void fn(C&)
>> >> >diff --git a/tests/data/test-diff-suppr/test36-leaf-report-0.txt b/tests/data/test-diff-suppr/test36-leaf-report-0.txt
>> >> >index b12a8a61..f286cc7b 100644
>> >> >--- a/tests/data/test-diff-suppr/test36-leaf-report-0.txt
>> >> >+++ b/tests/data/test-diff-suppr/test36-leaf-report-0.txt
>> >> >@@ -7,7 +7,6 @@ Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
>> >> >   type size changed from 32 to 64 (in bits)
>> >> >   1 data member insertion:
>> >> >     'char leaf1::m1', at offset 32 (in bits) at test36-leaf-v1.cc:7:1
>> >> >-
>> >> >   3 impacted interfaces:
>> >> >     function void interface1(struct_type*)
>> >> >     function void interface2(struct_type&)
>> >> >@@ -20,7 +19,6 @@ Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
>> >> >    type 'struct leaf1' of 'leaf2::member0' changed as reported earlier
>> >> >    and size changed from 32 to 64 (in bits) (by +32 bits)
>> >> >    'char leaf2::member1' offset changed from 32 to 64 (in bits) (by +32 bits)
>> >> >-
>> >> >   3 impacted interfaces:
>> >> >     function void interface1(struct_type*)
>> >> >     function void interface2(struct_type&)
>> >> >diff --git a/tests/data/test-diff-suppr/test41-enumerator-changes-report-0.txt b/tests/data/test-diff-suppr/test41-enumerator-changes-report-0.txt
>> >> >index 4b1681bc..d772bd1d 100644
>> >> >--- a/tests/data/test-diff-suppr/test41-enumerator-changes-report-0.txt
>> >> >+++ b/tests/data/test-diff-suppr/test41-enumerator-changes-report-0.txt
>> >> >@@ -8,7 +8,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>> >> >       type size hasn't changed
>> >> >       1 enumerator insertion:
>> >> >         'EnumType1::ee3_inserted' value '3'
>> >> >-
>> >> >       1 enumerator change:
>> >> >         'EnumType1::eenum_count' from value '3' to '4' at test41-enumerator-changes-v1.cc:10:1
>> >> >
>> >> >@@ -18,7 +17,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
>> >> >       type size hasn't changed
>> >> >       1 enumerator insertion:
>> >> >         'EnumType0::e3_inserted' value '3'
>> >> >-
>> >> >       1 enumerator change:
>> >> >         'EnumType0::enum_count' from value '3' to '4' at test41-enumerator-changes-v1.cc:1:1
>> >> >
>> >> >--
>> >> >2.25.1.481.gfbce0eb801-goog
>> >> >
>> >> >
Giuliano Procida March 16, 2020, 2:32 p.m. UTC | #6
Hi.

On Mon, 16 Mar 2020 at 13:45, Matthias Maennich <maennich@google.com> wrote:
>
> On Mon, Mar 16, 2020 at 01:04:31PM +0000, Giuliano Procida wrote:
> >Hi.
> >
> >On Mon, 16 Mar 2020 at 12:29, Matthias Maennich <maennich@google.com> wrote:
> >>
> >> On Mon, Mar 16, 2020 at 10:51:22AM +0000, Giuliano Procida wrote:
> >> >Hi Matthias.
> >> >
> >> >On Sat, 14 Mar 2020 at 20:09, Matthias Maennich <maennich@google.com> wrote:
> >> >>
> >> >> On Thu, Mar 12, 2020 at 06:30:34AM +0000, Android Kernel Team wrote:
> >> >> >There is distributed responsibility for horizontal and vertical
> >> >> >whitespace in the reporting code with indent and new line control
> >> >> >information being manipulated by and passed in and out of functions.
> >> >> >Occasionally, this information is ignored or incorrect and the code
> >> >> >tends to err on the side of more rather than fewer new lines.
> >> >> >
> >> >> >The outcome is that abidiff output sometimes contains extra blank
> >> >> >lines which can be confusing.
> >> >> >
> >> >> >This patch eliminates some of the more obvious cases:
> >> >> >
> >> >> >   - after data member deletions
> >> >> >   - in enumerator change lists
> >> >> >   - after "type size hasn't changed"
> >> >> >   - before listing impacted interfaces
> >> >> >
> >> >> >The patch cleans up the reporting of data members. The code will
> >> >> >either emit indentation, a short description and a new line or do
> >> >> >nothing at all.
> >> >> >
> >> >> >The patch also removes some stray location reporting code for array
> >> >> >diffs which would have produced some oddly placed output. I could not
> >> >> >get this code to trigger as loc = decl->get_location() was never
> >> >> >present on the array decls in question.
> >> >> >
> >> >> >       * src/abg-default-reporter.cc (report): In the enum_diff
> >> >> >       override, simplify new line logic; emit just one
> >> >> >       blank line after each enum. In the array_diff override, remove
> >> >> >       stray location reporting which doesn't appear to ever trigger;
> >> >> >       fix new line logic. In the class_or_union_diff override,
> >> >> >       simplify new line logic for deleted members; pass indentation
> >> >> >       to represent_data_member.
> >> >> >       * src/abg-leaf-reporter.cc (report): In the array_diff
> >> >> >       override, remove stray location reporting which doesn't appear
> >> >> >       to ever trigger; fix new line handling. In the
> >> >> >       class_or_union_diff override, simplify new line logic for
> >> >> >       deleted members; pass indentation to represent_data_member.
> >> >> >       * src/abg-reporter-priv.cc (represent_data_member): Handle
> >> >> >       indentation; fix new line logic.
> >> >> >       (report_size_and_alignment_changes): Fix new line logic
> >> >> >       for "type size hasn't changed" message; simplify new line
> >> >> >       logic.
> >> >> >       (report_name_size_and_alignment_changes): Fix new line logic.
> >> >> >       (maybe_report_interfaces_impacted_by_diff) Remove new line
> >> >> >       prefix code and new_line_prefix argument.
> >> >> >       * src/abg-reporter-priv.h (represent_data_member): Add indent
> >> >> >       argument.
> >> >> >       (maybe_report_interfaces_impacted_by_diff) Remove
> >> >> >       new_line_prefix argument.
> >> >> >       * tests/data/test-*/*report*.txt: Remove some blank lines.
> >> >> >
> >> >> >Signed-off-by: Giuliano Procida <gprocida@google.com>
> >> >> >---
> >> >> > src/abg-default-reporter.cc                   |  43 +++-----
> >> >> > src/abg-leaf-reporter.cc                      |  27 ++---
> >> >> > src/abg-reporter-priv.cc                      |  34 +++---
> >> >> > src/abg-reporter-priv.h                       |   9 +-
> >> >> > .../test5-fn-changed-report-0.txt             |   1 -
> >> >> > .../test5-fn-changed-report-1.txt             |   1 -
> >> >> > .../test6-var-changed-report-0.txt            |   1 -
> >> >> > .../test6-var-changed-report-1.txt            |   1 -
> >> >> > .../test7-fn-changed-report-0.txt             |   1 -
> >> >> > .../test-abidiff-exit/test-leaf3-report.txt   |   1 -
> >> >> > .../test-loc-with-locs-report.txt             |   1 -
> >> >> > .../test-loc-without-locs-report.txt          |   1 -
> >> >> > .../test-abidiff/test-PR18791-report0.txt     |   2 -
> >> >> > tests/data/test-abidiff/test-enum0-report.txt |   1 -
> >> >> > tests/data/test-abidiff/test-enum1-report.txt |   1 -
> >> >> > .../data/test-abidiff/test-struct1-report.txt |   1 -
> >> >> > .../PR25058-liblttng-ctl-report-1.txt         |   5 -
> >> >> > tests/data/test-diff-dwarf/test13-report.txt  |   1 -
> >> >> > .../test-diff-dwarf/test38-union-report-0.txt |   1 -
> >> >> > .../data/test-diff-dwarf/test40-report-0.txt  |   2 -
> >> >> > .../test42-PR21296-clanggcc-report0.txt       |   1 -
> >> >> > .../test43-PR22913-report-0.txt               |   1 -
> >> >> > tests/data/test-diff-filter/test10-report.txt |   1 -
> >> >> > tests/data/test-diff-filter/test18-report.txt |   1 -
> >> >> > ...st23-redundant-fn-parm-change-report-0.txt |   2 -
> >> >> > .../test30-pr18904-rvalueref-report0.txt      |   8 --
> >> >> > .../test30-pr18904-rvalueref-report1.txt      |   8 --
> >> >> > .../test30-pr18904-rvalueref-report2.txt      |   8 --
> >> >> > .../test35-pr18754-no-added-syms-report-0.txt |   8 --
> >> >> > .../data/test-diff-filter/test36-report-0.txt |   3 -
> >> >> > .../test42-leaf-report-output-0.txt           |   1 -
> >> >> > tests/data/test-diff-filter/test7-report.txt  |   1 -
> >> >> > ...-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt |   2 -
> >> >> > .../nss-3.23.0-1.0.fc23.x86_64-report-0.txt   |   4 -
> >> >> > ...l7.x86_64-0.12.8-1.el7.x86_64-report-0.txt |   2 -
> >> >> > ...l7.x86_64-0.12.8-1.el7.x86_64-report-1.txt |   2 -
> >> >> > ...l7.x86_64-0.12.8-1.el7.x86_64-report-2.txt | 101 ------------------
> >> >> > ...l7.x86_64-0.12.8-1.el7.x86_64-report-3.txt |   3 -
> >> >> > ...bb-4.3-3.20141204.fc23.x86_64-report-0.txt |   5 -
> >> >> > ...bb-4.3-3.20141204.fc23.x86_64-report-1.txt |   1 -
> >> >> > .../test10-changed-parm-c-report-0.txt        |   3 -
> >> >> > .../test-diff-suppr/test35-leaf-report-0.txt  |   1 -
> >> >> > .../test-diff-suppr/test36-leaf-report-0.txt  |   2 -
> >> >> > .../test41-enumerator-changes-report-0.txt    |   2 -
> >> >> > 44 files changed, 42 insertions(+), 264 deletions(-)
> >> >> >
> >> >> >diff --git a/src/abg-default-reporter.cc b/src/abg-default-reporter.cc
> >> >> >index 3bfdfbc4..a0b9eeea 100644
> >> >> >--- a/src/abg-default-reporter.cc
> >> >> >+++ b/src/abg-default-reporter.cc
> >> >> >@@ -130,16 +130,14 @@ default_reporter::report(const enum_diff& d, ostream& out,
> >> >> >          i != sorted_deleted_enumerators.end();
> >> >> >          ++i)
> >> >> >       {
> >> >> >-        if (i != sorted_deleted_enumerators.begin())
> >> >> >-          out << "\n";
> >> >> >         out << indent
> >> >> >             << "  '"
> >> >> >             << i->get_qualified_name()
> >> >> >             << "' value '"
> >> >> >             << i->get_value()
> >> >> >             << "'";
> >> >> >+        out << "\n";
> >> >> >       }
> >> >> >-      out << "\n\n";
> >> >> >     }
> >> >> >   if (numins)
> >> >> >     {
> >> >> >@@ -151,16 +149,14 @@ default_reporter::report(const enum_diff& d, ostream& out,
> >> >> >          i != sorted_inserted_enumerators.end();
> >> >> >          ++i)
> >> >> >       {
> >> >> >-        if (i != sorted_inserted_enumerators.begin())
> >> >> >-          out << "\n";
> >> >> >         out << indent
> >> >> >             << "  '"
> >> >> >             << i->get_qualified_name()
> >> >> >             << "' value '"
> >> >> >             << i->get_value()
> >> >> >             << "'";
> >> >> >+        out << "\n";
> >> >> >       }
> >> >> >-      out << "\n\n";
> >> >> >     }
> >> >> >   if (numchanges)
> >> >> >     {
> >> >> >@@ -173,8 +169,6 @@ default_reporter::report(const enum_diff& d, ostream& out,
> >> >> >          i != sorted_changed_enumerators.end();
> >> >> >          ++i)
> >> >> >       {
> >> >> >-        if (i != sorted_changed_enumerators.begin())
> >> >> >-          out << "\n";
> >> >> >         out << indent
> >> >> >             << "  '"
> >> >> >             << i->first.get_qualified_name()
> >> >> >@@ -182,13 +176,14 @@ default_reporter::report(const enum_diff& d, ostream& out,
> >> >> >             << i->first.get_value() << "' to '"
> >> >> >             << i->second.get_value() << "'";
> >> >> >         report_loc_info(second, *d.context(), out);
> >> >> >+        out << "\n";
> >> >> >       }
> >> >> >-      out << "\n\n";
> >> >> >     }
> >> >> >
> >> >> >+  out << "\n";
> >> >> >+
> >> >> >   if (d.context()->show_leaf_changes_only())
> >> >> >-    maybe_report_interfaces_impacted_by_diff(&d, out, indent,
> >> >> >-                                           /*new_line_prefix=*/false);
> >> >> >+    maybe_report_interfaces_impacted_by_diff(&d, out, indent);
> >> >> >
> >> >> >   d.reported_once(true);
> >> >> > }
> >> >> >@@ -392,7 +387,7 @@ default_reporter::report(const pointer_diff& d, ostream& out,
> >> >> >       : string("void");
> >> >> >
> >> >> >       out << indent
> >> >> >-        << "in pointed to type '" <<  repr << "'";
> >> >> >+        << "in pointed to type '" << repr << "'";
> >> >> >       report_loc_info(dif->second_subject(), *d.context(), out);
> >> >> >       out << ":\n";
> >> >> >       dif->report(out, indent + "  ");
> >> >> >@@ -673,12 +668,12 @@ default_reporter::report(const array_diff& d, ostream& out,
> >> >> >       dif->report(out, indent + "  ");
> >> >> >     }
> >> >> >
> >> >> >-  report_name_size_and_alignment_changes(d.first_array(),
> >> >> >-                                       d.second_array(),
> >> >> >-                                       d.context(),
> >> >> >-                                       out, indent,
> >> >> >-                                       /*new line=*/false);
> >> >> >-  report_loc_info(d.second_array(), *d.context(), out);
> >> >> >+  if (report_name_size_and_alignment_changes(d.first_array(),
> >> >> >+                                           d.second_array(),
> >> >> >+                                           d.context(),
> >> >> >+                                           out, indent,
> >> >> >+                                           /*new line=*/false))
> >> >>
> >> >> Though it is not required here, I would prefer braces for readability.
> >> >
> >> >Agreed, I think it's sensible here. In other places, with the coding
> >> >style in use, we'd end up with:
> >> >
> >> >if (emitted)
> >> >  {
> >> >    out << "\n";
> >> >  }
> >>
> >> Let's take this one at this location.
> >
> >I've been able to eliminate it.
> >
> >> >
> >> >which is pretty verbose. The following would be fine by me:
> >> >
> >> >if (emitted) out << "\n";
> >> >
> >> >Lastly, short but ugly:
> >> >
> >> >  emitted && (out << "\n");
> >> >
> >> >> >+    out << "\n";
> >> >> > }
> >> >> >
> >> >> > /// Generates a report for an intance of @ref base_diff.
> >> >> >@@ -1014,7 +1009,6 @@ default_reporter::report(const class_or_union_diff& d,
> >> >> >         sort_data_members
> >> >> >           (d.class_or_union_diff::get_priv()->deleted_data_members_,
> >> >> >            sorted_dms);
> >> >> >-        bool emitted = false;
> >> >> >         for (vector<decl_base_sptr>::const_iterator i = sorted_dms.begin();
> >> >> >              i != sorted_dms.end();
> >> >> >              ++i)
> >> >> >@@ -1024,14 +1018,8 @@ default_reporter::report(const class_or_union_diff& d,
> >> >> >             ABG_ASSERT(data_mem);
> >> >> >             if (get_member_is_static(data_mem))
> >> >> >               continue;
> >> >> >-            if (emitted)
> >> >> >-              out << "\n";
> >> >> >-            out << indent << "  ";
> >> >> >-            represent_data_member(data_mem, ctxt, out);
> >> >> >-            emitted = true;
> >> >> >+            represent_data_member(data_mem, ctxt, out, indent + "  ");
> >> >> >           }
> >> >> >-        if (emitted)
> >> >> >-          out << "\n";
> >> >> >       }
> >> >> >
> >> >> >       //report insertions
> >> >> >@@ -1052,8 +1040,7 @@ default_reporter::report(const class_or_union_diff& d,
> >> >> >             var_decl_sptr data_mem =
> >> >> >               dynamic_pointer_cast<var_decl>(*i);
> >> >> >             ABG_ASSERT(data_mem);
> >> >> >-            out << indent << "  ";
> >> >> >-            represent_data_member(data_mem, ctxt, out);
> >> >> >+            represent_data_member(data_mem, ctxt, out, indent + "  ");
> >> >> >           }
> >> >> >       }
> >> >> >
> >> >> >diff --git a/src/abg-leaf-reporter.cc b/src/abg-leaf-reporter.cc
> >> >> >index bbd51dcb..f706bd21 100644
> >> >> >--- a/src/abg-leaf-reporter.cc
> >> >> >+++ b/src/abg-leaf-reporter.cc
> >> >> >@@ -78,7 +78,7 @@ report_diffs(const reporter_base& r,
> >> >> >
> >> >> >         string n = (*i)->first_subject()->get_pretty_representation();
> >> >> >
> >> >> >-        out << indent << "'" << n ;
> >> >> >+        out << indent << "'" << n;
> >> >> >
> >> >> >         report_loc_info((*i)->first_subject(),
> >> >> >                         *(*i)->context(), out);
> >> >> >@@ -425,11 +425,12 @@ leaf_reporter::report(const array_diff& d,
> >> >> >                                                   d.second_array(),
> >> >> >                                                   "array type");
> >> >> >
> >> >> >-  report_name_size_and_alignment_changes(d.first_array(),
> >> >> >-                                       d.second_array(),
> >> >> >-                                       d.context(),
> >> >> >-                                       out, indent,
> >> >> >-                                       /*new line=*/false);
> >> >> >+  if (report_name_size_and_alignment_changes(d.first_array(),
> >> >> >+                                           d.second_array(),
> >> >> >+                                           d.context(),
> >> >> >+                                           out, indent,
> >> >> >+                                           /*new line=*/false))
> >> >>
> >> >> As above.
> >> >
> >> >Agreed.
> >> >
> >> >> >+    out << "\n";
> >> >> >
> >> >> >   diff_sptr dif = d.element_type_diff();
> >> >> >   if (diff_to_be_reported(dif.get()))
> >> >> >@@ -441,8 +442,6 @@ leaf_reporter::report(const array_diff& d,
> >> >> >       dif->report(out, indent + "  ");
> >> >> >     }
> >> >> >
> >> >> >-  report_loc_info(d.second_array(), *d.context(), out);
> >> >> >-
> >> >> >   maybe_report_interfaces_impacted_by_diff(&d, out, indent);
> >> >> > }
> >> >> >
> >> >> >@@ -592,7 +591,6 @@ leaf_reporter::report(const class_or_union_diff& d,
> >> >> >         sort_data_members
> >> >> >           (d.class_or_union_diff::get_priv()->deleted_data_members_,
> >> >> >            sorted_dms);
> >> >> >-        bool emitted = false;
> >> >> >         for (vector<decl_base_sptr>::const_iterator i = sorted_dms.begin();
> >> >> >              i != sorted_dms.end();
> >> >> >              ++i)
> >> >> >@@ -602,14 +600,8 @@ leaf_reporter::report(const class_or_union_diff& d,
> >> >> >             ABG_ASSERT(data_mem);
> >> >> >             if (get_member_is_static(data_mem))
> >> >> >               continue;
> >> >> >-            if (emitted)
> >> >> >-              out << "\n";
> >> >> >-            out << indent << "  ";
> >> >> >-            represent_data_member(data_mem, ctxt, out);
> >> >> >-            emitted = true;
> >> >> >+            represent_data_member(data_mem, ctxt, out, indent + "  ");
> >> >> >           }
> >> >> >-        if (emitted)
> >> >> >-          out << "\n";
> >> >> >       }
> >> >> >
> >> >> >       //report insertions
> >> >> >@@ -630,8 +622,7 @@ leaf_reporter::report(const class_or_union_diff& d,
> >> >> >             var_decl_sptr data_mem =
> >> >> >               dynamic_pointer_cast<var_decl>(*i);
> >> >> >             ABG_ASSERT(data_mem);
> >> >> >-            out << indent << "  ";
> >> >> >-            represent_data_member(data_mem, ctxt, out);
> >> >> >+            represent_data_member(data_mem, ctxt, out, indent + "  ");
> >> >> >           }
> >> >> >       }
> >> >> >
> >> >> >diff --git a/src/abg-reporter-priv.cc b/src/abg-reporter-priv.cc
> >> >> >index fbac85f8..948a32fc 100644
> >> >> >--- a/src/abg-reporter-priv.cc
> >> >> >+++ b/src/abg-reporter-priv.cc
> >> >> >@@ -242,16 +242,19 @@ represent(const diff_context& ctxt,
> >> >> > /// @param ctxt the current diff context.
> >> >> > ///
> >> >> > /// @param out the output stream to send the representation to
> >> >> >+///
> >> >> >+/// @param indent the indentation string to use for the change report.
> >> >> > void
> >> >> > represent_data_member(var_decl_sptr d,
> >> >> >                     const diff_context_sptr& ctxt,
> >> >> >-                    ostream& out)
> >> >> >+                    ostream& out,
> >> >> >+                    const string& indent)
> >> >>
> >> >> I would prefer out parameters after all input parameters. Since this is
> >> >> a private implementation detail, we should be good to change that
> >> >> interface.
> >> >
> >> >I looked at the existing functions and copied an existing order for
> >> >consistency. out and indent belong together morally as well (writer
> >> >monad). If we switch to an indenting ostream, this issue goes away.
> >> >
> >> >> > {
> >> >> >   if (!is_data_member(d)
> >> >> >       || (!get_member_is_static(d) && !get_data_member_is_laid_out(d)))
> >> >> >     return;
> >> >> >
> >> >> >-  out << "'" << d->get_pretty_representation() << "'";
> >> >> >+  out << indent << "'" << d->get_pretty_representation() << "'";
> >> >> >   if (!get_member_is_static(d))
> >> >> >     {
> >> >> >       // Do not emit offset information for data member of a union
> >> >> >@@ -262,8 +265,8 @@ represent_data_member(var_decl_sptr d,
> >> >> >                           get_data_member_offset(d),
> >> >> >                           *ctxt, out);
> >> >> >       report_loc_info(d, *ctxt, out);
> >> >> >-      out << "\n";
> >> >> >     }
> >> >> >+  out << "\n";
> >> >> > }
> >> >> >
> >> >> > /// If a given @ref var_diff node carries a data member change in
> >> >> >@@ -806,7 +809,10 @@ report_size_and_alignment_changes(type_or_decl_base_sptr  first,
> >> >> >       } // end if (fs != ss || fdc != sdc)
> >> >> >       else
> >> >> >       if (ctxt->show_relative_offset_changes())
> >> >> >-        out << indent << "type size hasn't changed\n";
> >> >> >+        {
> >> >> >+          out << indent << "type size hasn't changed";
> >> >> >+          n = true;
> >> >> >+        }
> >> >> >     }
> >> >> >   if ((ctxt->get_allowed_category() & SIZE_OR_OFFSET_CHANGE_CATEGORY)
> >> >> >       && (fa != sa))
> >> >> >@@ -819,9 +825,7 @@ report_size_and_alignment_changes(type_or_decl_base_sptr   first,
> >> >> >       n = true;
> >> >> >     }
> >> >> >
> >> >> >-  if (n)
> >> >> >-    return true;
> >> >> >-  return false;
> >> >> >+  return n;
> >> >>
> >> >> We should give 'n' a better name. Not necessarily part of this change.
> >> >
> >> >Acknowledged. If we are going to review newline handling we should do
> >> >it everywhere and consistently. Ideally we should get to the point
> >> >where we don't have to pass information about newlines around (this
> >> >will likely be possible with an indenting ostream but may be doable
> >> >even without that).
> >> >
> >> >> > }
> >> >> >
> >> >> > /// @param tod the type or declaration to emit loc info about
> >> >> >@@ -910,8 +914,8 @@ report_name_size_and_alignment_changes(decl_base_sptr              first,
> >> >> >       }
> >> >> >     }
> >> >> >
> >> >> >-  nl |= report_size_and_alignment_changes(first, second, ctxt,
> >> >> >-                                        out, indent, nl);
> >> >> >+  nl = report_size_and_alignment_changes(first, second, ctxt,
> >> >> >+                                         out, indent, nl);
> >> >> >   return nl;
> >> >> > }
> >> >> >
> >> >> >@@ -1366,14 +1370,10 @@ maybe_report_unreachable_type_changes(const corpus_diff& d,
> >> >> > /// @param out the output stream to report to.
> >> >> > ///
> >> >> > /// @param indent the white space string to use for indentation.
> >> >> >-///
> >> >> >-/// @param new_line_prefix if set to true, it means there is going to
> >> >> >-/// be a new line emitted before the report.
> >> >> > void
> >> >> > maybe_report_interfaces_impacted_by_diff(const diff   *d,
> >> >> >                                        ostream        &out,
> >> >> >-                                       const string   &indent,
> >> >> >-                                       bool           new_line_prefix)
> >> >> >+                                       const string   &indent)
> >> >> > {
> >> >> >   const diff_context_sptr &ctxt = d->context();
> >> >> >   const corpus_diff_sptr &corp_diff = ctxt->get_corpus_diff();
> >> >> >@@ -1395,9 +1395,6 @@ maybe_report_interfaces_impacted_by_diff(const diff      *d,
> >> >> >   vector<type_or_decl_base_sptr> sorted_impacted_interfaces;
> >> >> >   sort_artifacts_set(*impacted_artifacts, sorted_impacted_interfaces);
> >> >> >
> >> >> >-  if (new_line_prefix)
> >> >> >-    out << '\n';
> >> >> >-
> >> >>
> >> >> I think we need to keep this newline. It separates the cause (the leaf
> >> >> node change) from the impacted interfaces (the top level nodes).
> >> >
> >> >I disagree.
> >> >
> >> >I think the "impacted interfaces" block should be indented w.r.t leaf
> >> >node change's introductory text or separated from the whole node
> >> >change section by an extra new line, but not both. I'd prefer the
> >> >former as this should be a parent-child relationship in the text
> >> >output tree rather than a sibling one.
> >> >
> >> >Phrased another way, the text would be equally meaningful like this
> >> >(adapting tests/data/test-diff-filter/test42-leaf-report-output-0.txt;
> >> >though abitool.py's short report would need a tweak; it needs a tweak
> >>
> >> Just for the context: abitool.py we use in Android to monitor the kernel
> >> ABI with libabigail :-) See
> >> https://android.googlesource.com/kernel/build/+/refs/heads/master/abi/
> >>
> >> >anyway for the case of 1 impacted interface):
> >> >
> >> >'struct leaf at test42-leaf-report-v0.cc:4:1' changed:
> >> >  one impacted interface:
> >> >    function void fn(C&)
> >> > type size changed from 32 to 64 (in bits)
> >> >  1 data member insertion:
> >> >    'char leaf::m1', at offset 32 (in bits) at test42-leaf-report-v1.cc:7:1
> >> >
> >>
> >> The only concern I have and that I would like to see addressed is that
> >> the list of impacted interfaces can be considerably long (thousands for
> >> a central struct). That can get difficult to work with if this is
> >> 'embedded' there.
> >> In order to better address abi differences like that, I would prefer the
> >> current format:
> >>
> >> # what changed
> >> 'struct leaf at test42-leaf-report-v0.cc:4:1' changed:
> >>  type size changed from 32 to 64 (in bits)
> >>   1 data member insertion:
> >>     'char leaf::m1', at offset 32 (in bits) at test42-leaf-report-v1.cc:7:1
> >>
> >> # impact
> >>   one impacted interface:
> >>     function void fn(C&)
> >
> >Just to clear, I wasn't advocating moving impacted interfaces up in
> >any way. I was just pointing out that it is really a child of
> >"changed" and I suppose it would be safer to prune based on
> >indentation if you are going to post-process the output.
> >
> ># untested Perl
> >$text =~ s/^( *)([^ ]* impacted interfaces?):\n(\g1 .*\n)+:/$1$2\n/g;
> >
> >Anyway, the format is (previous to my patch) looks like:
> >
> >foo changed:
> >  detailsA
> >
> >  M impacted interface(s):
> >   detailsB
> >
> >bar changed:
> >  detailsC
> >
> >  N impacted interface(s):
> >    detailsD
> >
> >We want to post-process to remove detailsB and detailsD. This is
> >equally easy so long as we just consume non-empty lines following
> >"impacted interfaces". My patch to remove the blank line between
> >detailsA/C and "impacted interfaces" doesn't change this.
>
> I definitely agree it belongs to the 'changed' block (hence the
> indentation). Yet I have the feeling the newline belongs there since the
> structural change and the impact are separable things. But I am not
> crazy picky on this and making it consistent with all the other removed
> newlines is also an agreeable way as thinking about it (as long as we
> still can truncate it properly). I like consistency :-)

[My laptop/Chrome/Gmail almost cannot take any more inline replies.]

Bah, humbug!

"impacted interface(s)" sometimes appears at deeper indentation. I've
seen this with a typedef change. This may be a consequence of that not
being treated as a leaf change...

Anyway, as there is no blank line after the impacted interfaces have
been reported in these cases, abitool.py eats too much of the report
(both before and after this patch).

We can add a blank line or enhance the tools that consume abidiff
output. There are at least 2 objections to adding a flag: we still do
all the work, possibly twice, more code complexity and tests needed.

Giuliano.

> Cheers,
> Matthias
>
> >
> >> There we can also truncate the list of impacted interfaces.
> >>
> >> Cheers,
> >> Matthias
> >>
> >> >Happy to discuss further.
> >> >
> >> >> With the above addressed, feel free to add
> >> >> Reviewed-by: Matthias Maennich <maennich@google.com>
> >> >>
> >> >> Cheers,
> >> >> Matthias
> >> >
> >> >Regards,
> >> >Giuliano.
> >> >
> >> >> >   size_t num_impacted_interfaces = impacted_artifacts->size();
> >> >> >   if (num_impacted_interfaces == 1)
> >> >> >     out << indent << "one impacted interface:\n";
> >> >> >@@ -1424,9 +1421,6 @@ maybe_report_interfaces_impacted_by_diff(const diff      *d,
> >> >> > /// @param out the output stream to report to.
> >> >> > ///
> >> >> > /// @param indent the white space string to use for indentation.
> >> >> >-///
> >> >> >-/// @param new_line_prefix if set to true, it means there is going to
> >> >> >-/// be a new line emitted before the report.
> >> >> > void
> >> >> > maybe_report_interfaces_impacted_by_diff(const diff_sptr      &d,
> >> >> >                                        ostream                &out,
> >> >> >diff --git a/src/abg-reporter-priv.h b/src/abg-reporter-priv.h
> >> >> >index 7471c74f..04803f43 100644
> >> >> >--- a/src/abg-reporter-priv.h
> >> >> >+++ b/src/abg-reporter-priv.h
> >> >> >@@ -151,7 +151,8 @@ represent(const diff_context& ctxt,
> >> >> > void
> >> >> > represent_data_member(var_decl_sptr d,
> >> >> >                     const diff_context_sptr& ctxt,
> >> >> >-                    ostream& out);
> >> >> >+                    ostream& out,
> >> >> >+                    const string& indent);
> >> >> >
> >> >> > void
> >> >> > maybe_show_relative_offset_change(const var_diff_sptr &diff,
> >> >> >@@ -244,14 +245,12 @@ maybe_report_unreachable_type_changes(const corpus_diff& d,
> >> >> > void
> >> >> > maybe_report_interfaces_impacted_by_diff(const diff           *d,
> >> >> >                                        ostream                &out,
> >> >> >-                                       const string           &indent,
> >> >> >-                                       bool new_line_prefix = true);
> >> >> >+                                       const string           &indent);
> >> >> >
> >> >> > void
> >> >> > maybe_report_interfaces_impacted_by_diff(const diff_sptr      &d,
> >> >> >                                        ostream                &out,
> >> >> >-                                       const string           &indent,
> >> >> >-                                       bool new_line_prefix = false);
> >> >> >+                                       const string           &indent);
> >> >> >
> >> >> > } // end namespace comparison
> >> >> > } // end namespace abigail
> >> >> >diff --git a/tests/data/test-abicompat/test5-fn-changed-report-0.txt b/tests/data/test-abicompat/test5-fn-changed-report-0.txt
> >> >> >index 96d48ccf..04676908 100644
> >> >> >--- a/tests/data/test-abicompat/test5-fn-changed-report-0.txt
> >> >> >+++ b/tests/data/test-abicompat/test5-fn-changed-report-0.txt
> >> >> >@@ -15,4 +15,3 @@ have sub-types that are different from what application 'test5-fn-changed-app' e
> >> >> >         1 data member deletion:
> >> >> >           'unsigned char S1::m1', at offset 32 (in bits)
> >> >> >
> >> >> >-
> >> >> >diff --git a/tests/data/test-abicompat/test5-fn-changed-report-1.txt b/tests/data/test-abicompat/test5-fn-changed-report-1.txt
> >> >> >index 3c8c4a8f..b39f650d 100644
> >> >> >--- a/tests/data/test-abicompat/test5-fn-changed-report-1.txt
> >> >> >+++ b/tests/data/test-abicompat/test5-fn-changed-report-1.txt
> >> >> >@@ -15,4 +15,3 @@ have sub-types that are different from what application 'test5-fn-changed-app' e
> >> >> >         1 data member deletion:
> >> >> >           'unsigned char S1::m1', at offset 32 (in bits) at test5-fn-changed-libapp-v0.h:11:1
> >> >> >
> >> >> >-
> >> >> >diff --git a/tests/data/test-abicompat/test6-var-changed-report-0.txt b/tests/data/test-abicompat/test6-var-changed-report-0.txt
> >> >> >index 5d2bd89c..f5077879 100644
> >> >> >--- a/tests/data/test-abicompat/test6-var-changed-report-0.txt
> >> >> >+++ b/tests/data/test-abicompat/test6-var-changed-report-0.txt
> >> >> >@@ -13,4 +13,3 @@ have sub-types that are different from what application 'test6-var-changed-app'
> >> >> >       1 data member deletion:
> >> >> >         'unsigned char S1::m1', at offset 32 (in bits)
> >> >> >
> >> >> >-
> >> >> >diff --git a/tests/data/test-abicompat/test6-var-changed-report-1.txt b/tests/data/test-abicompat/test6-var-changed-report-1.txt
> >> >> >index 697929f0..5b78c83c 100644
> >> >> >--- a/tests/data/test-abicompat/test6-var-changed-report-1.txt
> >> >> >+++ b/tests/data/test-abicompat/test6-var-changed-report-1.txt
> >> >> >@@ -13,4 +13,3 @@ have sub-types that are different from what application 'test6-var-changed-app'
> >> >> >       1 data member deletion:
> >> >> >         'unsigned char S1::m1', at offset 32 (in bits) at test6-var-changed-libapp-v0.h:11:1
> >> >> >
> >> >> >-
> >> >> >diff --git a/tests/data/test-abicompat/test7-fn-changed-report-0.txt b/tests/data/test-abicompat/test7-fn-changed-report-0.txt
> >> >> >index 19db76e3..6a34710d 100644
> >> >> >--- a/tests/data/test-abicompat/test7-fn-changed-report-0.txt
> >> >> >+++ b/tests/data/test-abicompat/test7-fn-changed-report-0.txt
> >> >> >@@ -9,7 +9,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >> >> >       type name changed from 'float' to 'int'
> >> >> >       type size hasn't changed
> >> >> >
> >> >> >-
> >> >> >   [C] 'function void print(const Student)' has some indirect sub-type changes:
> >> >> >     parameter 1 of type 'const Student' has sub-type changes:
> >> >> >       in unqualified underlying type 'struct Student':
> >> >> >diff --git a/tests/data/test-abidiff-exit/test-leaf3-report.txt b/tests/data/test-abidiff-exit/test-leaf3-report.txt
> >> >> >index 138c4b5a..7602e761 100644
> >> >> >--- a/tests/data/test-abidiff-exit/test-leaf3-report.txt
> >> >> >+++ b/tests/data/test-abidiff-exit/test-leaf3-report.txt
> >> >> >@@ -10,7 +10,6 @@ Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
> >> >> >       type name changed from 'sto1' to 'stn1'
> >> >> >       type size hasn't changed
> >> >> >
> >> >> >-
> >> >> >   [C] 'function void fn2(sto2)' at test-leaf3-v1.c:13:1 has some sub-type changes:
> >> >> >     parameter 1 of type 'struct sto2' changed:
> >> >> >       type name changed from 'sto2' to 'stn2'
> >> >> >diff --git a/tests/data/test-abidiff-exit/test-loc-with-locs-report.txt b/tests/data/test-abidiff-exit/test-loc-with-locs-report.txt
> >> >> >index 53672744..bc37ff53 100644
> >> >> >--- a/tests/data/test-abidiff-exit/test-loc-with-locs-report.txt
> >> >> >+++ b/tests/data/test-abidiff-exit/test-loc-with-locs-report.txt
> >> >> >@@ -9,4 +9,3 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >> >> >       type size hasn't changed
> >> >> >
> >> >> >
> >> >> >-
> >> >> >diff --git a/tests/data/test-abidiff-exit/test-loc-without-locs-report.txt b/tests/data/test-abidiff-exit/test-loc-without-locs-report.txt
> >> >> >index 6893e3fc..56c41d79 100644
> >> >> >--- a/tests/data/test-abidiff-exit/test-loc-without-locs-report.txt
> >> >> >+++ b/tests/data/test-abidiff-exit/test-loc-without-locs-report.txt
> >> >> >@@ -9,4 +9,3 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >> >> >       type size hasn't changed
> >> >> >
> >> >> >
> >> >> >-
> >> >> >diff --git a/tests/data/test-abidiff/test-PR18791-report0.txt b/tests/data/test-abidiff/test-PR18791-report0.txt
> >> >> >index 5758077d..7e16fe32 100644
> >> >> >--- a/tests/data/test-abidiff/test-PR18791-report0.txt
> >> >> >+++ b/tests/data/test-abidiff/test-PR18791-report0.txt
> >> >> >@@ -48,9 +48,7 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >> >> >                                          struct std::__detail::_List_node_base
> >> >> >                                        2 data member deletions:
> >> >> >                                          'std::__detail::_List_node_base* std::__detail::_List_node_base::_M_next', at offset 0 (in bits)
> >> >> >-
> >> >> >                                          'std::__detail::_List_node_base* std::__detail::_List_node_base::_M_prev', at offset 64 (in bits)
> >> >> >-
> >> >> >                                        1 data member insertion:
> >> >> >                                          'unsigned long int std::_List_node<long unsigned int>::_M_data', at offset 128 (in bits)
> >> >> >                                      and name of 'std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl::_M_node' changed to 'std::__cxx11::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl::_M_node'
> >> >> >diff --git a/tests/data/test-abidiff/test-enum0-report.txt b/tests/data/test-abidiff/test-enum0-report.txt
> >> >> >index c7c5a682..1cd7eaaf 100644
> >> >> >--- a/tests/data/test-abidiff/test-enum0-report.txt
> >> >> >+++ b/tests/data/test-abidiff/test-enum0-report.txt
> >> >> >@@ -3,7 +3,6 @@
> >> >> >     type size hasn't changed
> >> >> >     1 enumerator deletion:
> >> >> >       'E::e2' value '1'
> >> >> >-
> >> >> >     1 enumerator insertion:
> >> >> >       'E::e1' value '1'
> >> >> >
> >> >> >diff --git a/tests/data/test-abidiff/test-enum1-report.txt b/tests/data/test-abidiff/test-enum1-report.txt
> >> >> >index f1198ef9..7e8acf80 100644
> >> >> >--- a/tests/data/test-abidiff/test-enum1-report.txt
> >> >> >+++ b/tests/data/test-abidiff/test-enum1-report.txt
> >> >> >@@ -3,7 +3,6 @@
> >> >> >     type size hasn't changed
> >> >> >     1 enumerator insertion:
> >> >> >       'E::e1' value '1'
> >> >> >-
> >> >> >     1 enumerator change:
> >> >> >       'E::e2' from value '1' to '2'
> >> >> >
> >> >> >diff --git a/tests/data/test-abidiff/test-struct1-report.txt b/tests/data/test-abidiff/test-struct1-report.txt
> >> >> >index 39b71e55..e334bf1a 100644
> >> >> >--- a/tests/data/test-abidiff/test-struct1-report.txt
> >> >> >+++ b/tests/data/test-abidiff/test-struct1-report.txt
> >> >> >@@ -6,7 +6,6 @@
> >> >> >
> >> >> >     1 data member deletion:
> >> >> >       'char s0::m1', at offset 96 (in bits)
> >> >> >-
> >> >> >     1 data member insertion:
> >> >> >       'double s0::m01', at offset 128 (in bits)
> >> >> >     2 data member changes:
> >> >> >diff --git a/tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt b/tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt
> >> >> >index 29f823ec..aab271ff 100644
> >> >> >--- a/tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt
> >> >> >+++ b/tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt
> >> >> >@@ -100,7 +100,6 @@ Variables changes summary: 0 Removed, 0 Changed, 3 Added variables
> >> >> >          type of 'union {lttng_event_perf_counter_ctx perf_counter; struct {char* provider_name; char* ctx_name;} app_ctx; char padding[288];} lttng_event_context::u' changed:
> >> >> >            type name changed from '__anonymous_union__4' to '__anonymous_union__5'
> >> >> >            type size hasn't changed
> >> >> >-
> >> >> >            3 data member changes:
> >> >> >             name of '__anonymous_union__4::app_ctx' changed to '__anonymous_union__5::app_ctx'
> >> >> >             name of '__anonymous_union__4::padding' changed to '__anonymous_union__5::padding'
> >> >> >@@ -171,7 +170,6 @@ Variables changes summary: 0 Removed, 0 Changed, 3 Added variables
> >> >> >           type size changed from 35008 to 35072 (in bits)
> >> >> >           1 data member deletion:
> >> >> >             'char lttng_session::padding[12]', at offset 34912 (in bits)
> >> >> >-
> >> >> >           1 data member insertion:
> >> >> >             'union {char padding[12]; void* ptr;} lttng_session::extended', at offset 34944 (in bits)
> >> >> >
> >> >> >@@ -208,7 +206,6 @@ Variables changes summary: 0 Removed, 0 Changed, 3 Added variables
> >> >> >           1 data member deletion:
> >> >> >             'bool lttng_notification::owns_elements', at offset 128 (in bits)
> >> >> >
> >> >> >-
> >> >> >   [C] 'function lttng_notification_channel_status lttng_notification_channel_subscribe(lttng_notification_channel*, const lttng_condition*)' has some indirect sub-type changes:
> >> >> >     return type changed:
> >> >> >       enum type 'enum lttng_notification_channel_status' changed, as reported earlier
> >> >> >@@ -289,7 +286,6 @@ Variables changes summary: 0 Removed, 0 Changed, 3 Added variables
> >> >> >                            'op_type::AST_OP_BIN_AND' value '10'
> >> >> >                            'op_type::AST_OP_BIN_OR' value '11'
> >> >> >                            'op_type::AST_OP_BIN_XOR' value '12'
> >> >> >-
> >> >> >                          5 enumerator insertions:
> >> >> >                            'op_type::AST_OP_BIT_RSHIFT' value '6'
> >> >> >                            'op_type::AST_OP_BIT_LSHIFT' value '7'
> >> >> >@@ -319,7 +315,6 @@ Variables changes summary: 0 Removed, 0 Changed, 3 Added variables
> >> >> >                          type size hasn't changed
> >> >> >                          1 enumerator deletion:
> >> >> >                            'unary_op_type::AST_UNARY_BIN_NOT' value '4'
> >> >> >-
> >> >> >                          1 enumerator insertion:
> >> >> >                            'unary_op_type::AST_UNARY_BIT_NOT' value '4'
> >> >> >
> >> >> >diff --git a/tests/data/test-diff-dwarf/test13-report.txt b/tests/data/test-diff-dwarf/test13-report.txt
> >> >> >index cf29a4fd..833879c7 100644
> >> >> >--- a/tests/data/test-diff-dwarf/test13-report.txt
> >> >> >+++ b/tests/data/test-diff-dwarf/test13-report.txt
> >> >> >@@ -12,7 +12,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >> >> >            type name changed from 'int' to 'unsigned int'
> >> >> >            type size hasn't changed
> >> >> >
> >> >> >-
> >> >> >          type of 'unsigned int S::m2' changed:
> >> >> >            type name changed from 'unsigned int' to 'long long int'
> >> >> >            type size changed from 32 to 64 (in bits)
> >> >> >diff --git a/tests/data/test-diff-dwarf/test38-union-report-0.txt b/tests/data/test-diff-dwarf/test38-union-report-0.txt
> >> >> >index f7a75df7..fd9708e6 100644
> >> >> >--- a/tests/data/test-diff-dwarf/test38-union-report-0.txt
> >> >> >+++ b/tests/data/test-diff-dwarf/test38-union-report-0.txt
> >> >> >@@ -9,7 +9,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >> >> >         type size hasn't changed
> >> >> >         1 data member deletion:
> >> >> >           'int some_union_type::m0'
> >> >> >-
> >> >> >         type changed from:
> >> >> >           union some_union_type{int m0; char m1; S m2;}
> >> >> >         to:
> >> >> >diff --git a/tests/data/test-diff-dwarf/test40-report-0.txt b/tests/data/test-diff-dwarf/test40-report-0.txt
> >> >> >index d0b8c52c..f0f9e1a1 100644
> >> >> >--- a/tests/data/test-diff-dwarf/test40-report-0.txt
> >> >> >+++ b/tests/data/test-diff-dwarf/test40-report-0.txt
> >> >> >@@ -9,7 +9,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >> >> >         type size changed from 96 to 64 (in bits)
> >> >> >         1 data member deletion:
> >> >> >           'int S2::to_remove', at offset 0 (in bits)
> >> >> >-
> >> >> >         2 data member changes:
> >> >> >          'int S2::m0' offset changed from 32 to 0 (in bits) (by -32 bits)
> >> >> >          'char S2::m1' offset changed from 64 to 32 (in bits) (by -32 bits)
> >> >> >@@ -24,7 +23,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >> >> >            type size hasn't changed
> >> >> >
> >> >> >
> >> >> >-
> >> >> >   [C] 'function int foo(S1*)' has some indirect sub-type changes:
> >> >> >     parameter 1 of type 'S1*' has sub-type changes:
> >> >> >       in pointed to type 'struct S1':
> >> >> >diff --git a/tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt b/tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt
> >> >> >index f0a25a2e..44918baa 100644
> >> >> >--- a/tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt
> >> >> >+++ b/tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt
> >> >> >@@ -19,7 +19,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >> >> >     return type changed:
> >> >> >       type name changed from 'std::tuple<STR&&>' to 'std::tuple<STR &&>'
> >> >> >       type size hasn't changed
> >> >> >-
> >> >> >       1 base class deletion:
> >> >> >         struct std::_Tuple_impl<0ul, STR&&>
> >> >> >       1 base class insertion:
> >> >> >diff --git a/tests/data/test-diff-dwarf/test43-PR22913-report-0.txt b/tests/data/test-diff-dwarf/test43-PR22913-report-0.txt
> >> >> >index 1c0c773d..60681336 100644
> >> >> >--- a/tests/data/test-diff-dwarf/test43-PR22913-report-0.txt
> >> >> >+++ b/tests/data/test-diff-dwarf/test43-PR22913-report-0.txt
> >> >> >@@ -12,4 +12,3 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >> >> >             'char m2', at offset 8 (in bits)
> >> >> >
> >> >> >
> >> >> >-
> >> >> >diff --git a/tests/data/test-diff-filter/test10-report.txt b/tests/data/test-diff-filter/test10-report.txt
> >> >> >index bdc31fd0..5a505fc3 100644
> >> >> >--- a/tests/data/test-diff-filter/test10-report.txt
> >> >> >+++ b/tests/data/test-diff-filter/test10-report.txt
> >> >> >@@ -16,4 +16,3 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >> >> >           'unsigned int S::m', at offset 0 (in bits)
> >> >> >
> >> >> >
> >> >> >-
> >> >> >diff --git a/tests/data/test-diff-filter/test18-report.txt b/tests/data/test-diff-filter/test18-report.txt
> >> >> >index 0d30ef39..6ade5bdf 100644
> >> >> >--- a/tests/data/test-diff-filter/test18-report.txt
> >> >> >+++ b/tests/data/test-diff-filter/test18-report.txt
> >> >> >@@ -14,4 +14,3 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >> >> >
> >> >> >
> >> >> >
> >> >> >-
> >> >> >diff --git a/tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt b/tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt
> >> >> >index f847d32e..99c14329 100644
> >> >> >--- a/tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt
> >> >> >+++ b/tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt
> >> >> >@@ -7,10 +7,8 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >> >> >     parameter 1 of type 'int' changed:
> >> >> >       type name changed from 'int' to 'float'
> >> >> >       type size hasn't changed
> >> >> >-
> >> >> >     parameter 2 of type 'int' changed:
> >> >> >       type name changed from 'int' to 'float'
> >> >> >       type size hasn't changed
> >> >> >
> >> >> >
> >> >> >-
> >> >> >diff --git a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt
> >> >> >index b78215b0..5def3a08 100644
> >> >> >--- a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt
> >> >> >+++ b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt
> >> >> >@@ -1200,7 +1200,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >> >> >           '__anonymous_enum__1::c_report_state_stream' value '142'
> >> >> >           '__anonymous_enum__1::c_report_stream' value '143'
> >> >> >           '__anonymous_enum__1::c_unload_library' value '144'
> >> >> >-
> >> >> >         92 enumerator changes:
> >> >> >           '__anonymous_enum__::c_process_get_func_handles' from value '32' to '33'
> >> >> >           '__anonymous_enum__::c_process_wait_shutdown' from value '33' to '34'
> >> >> >@@ -1304,7 +1303,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >> >> >          type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} VarDesc::flags' changed:
> >> >> >            type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags'
> >> >> >            type size hasn't changed
> >> >> >-
> >> >> >            1 data member changes (1 filtered):
> >> >> >             anonymous data member at offset 0 (in bits) changed from:
> >> >> >               struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}
> >> >> >@@ -1319,7 +1317,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >> >> >         entity changed from 'struct InitTableEntry' to compatible type 'typedef InitTableEntry'
> >> >> >           type name changed from 'InitTableEntry' to '__anonymous_struct__2'
> >> >> >           type size hasn't changed
> >> >> >-
> >> >> >           1 data member change:
> >> >> >            type of 'void ()* InitTableEntry::func' changed:
> >> >> >              in pointed to type 'function type void ()':
> >> >> >@@ -1348,7 +1345,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >> >> >                type size changed from 2752 to 5504 (in bits)
> >> >> >                1 data member deletion:
> >> >> >                  'mutex_t Engine::m_ptr_lock', at offset 1344 (in bits)
> >> >> >-
> >> >> >                7 data member insertions:
> >> >> >                  'PtrDataTable Engine::m_targetptr_set', at offset 1664 (in bits)
> >> >> >                  'StreamMap Engine::m_stream_map', at offset 3072 (in bits)
> >> >> >@@ -1370,20 +1366,16 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >> >> >                        underlying type 'class std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' changed:
> >> >> >                          type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' to 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >'
> >> >> >                          type size hasn't changed
> >> >> >-
> >> >> >                          1 data member change:
> >> >> >                           type of 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' changed:
> >> >> >                             entity changed from 'struct std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to compatible type 'typedef std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type'
> >> >> >                               type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >'
> >> >> >                               type size hasn't changed
> >> >> >-
> >> >> >                               1 base class deletion:
> >> >> >                                 class std::allocator<std::_Rb_tree_node<PtrData> >
> >> >> >                               2 data member deletions:
> >> >> >                                 'std::_Rb_tree_node_base std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_header', at offset 64 (in bits)
> >> >> >-
> >> >> >                                 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::size_type std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_node_count', at offset 320 (in bits)
> >> >> >-
> >> >> >                               1 data member change:
> >> >> >                                type of 'std::less<PtrData> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_key_compare' changed:
> >> >> >                                  type name changed from 'std::less<PtrData>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>'
> >> >> >diff --git a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt
> >> >> >index ccaf8126..3bc8f6d7 100644
> >> >> >--- a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt
> >> >> >+++ b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt
> >> >> >@@ -1200,7 +1200,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >> >> >           '__anonymous_enum__1::c_report_state_stream' value '142'
> >> >> >           '__anonymous_enum__1::c_report_stream' value '143'
> >> >> >           '__anonymous_enum__1::c_unload_library' value '144'
> >> >> >-
> >> >> >         92 enumerator changes:
> >> >> >           '__anonymous_enum__::c_process_get_func_handles' from value '32' to '33' at liboffload_error_codes.h:38:1
> >> >> >           '__anonymous_enum__::c_process_wait_shutdown' from value '33' to '34' at liboffload_error_codes.h:38:1
> >> >> >@@ -1304,7 +1303,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >> >> >          type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} VarDesc::flags' changed:
> >> >> >            type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags'
> >> >> >            type size hasn't changed
> >> >> >-
> >> >> >            1 data member changes (1 filtered):
> >> >> >             anonymous data member at offset 0 (in bits) changed from:
> >> >> >               struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}
> >> >> >@@ -1319,7 +1317,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >> >> >         entity changed from 'struct InitTableEntry' to compatible type 'typedef InitTableEntry' at offload_table.h:296:1
> >> >> >           type name changed from 'InitTableEntry' to '__anonymous_struct__2'
> >> >> >           type size hasn't changed
> >> >> >-
> >> >> >           1 data member change:
> >> >> >            type of 'void ()* InitTableEntry::func' changed:
> >> >> >              in pointed to type 'function type void ()':
> >> >> >@@ -1348,7 +1345,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >> >> >                type size changed from 2752 to 5504 (in bits)
> >> >> >                1 data member deletion:
> >> >> >                  'mutex_t Engine::m_ptr_lock', at offset 1344 (in bits) at offload_engine.h:474:1
> >> >> >-
> >> >> >                7 data member insertions:
> >> >> >                  'PtrDataTable Engine::m_targetptr_set', at offset 1664 (in bits) at offload_engine.h:630:1
> >> >> >                  'StreamMap Engine::m_stream_map', at offset 3072 (in bits) at offload_engine.h:637:1
> >> >> >@@ -1370,20 +1366,16 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >> >> >                        underlying type 'class std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' at stl_tree.h:357:1 changed:
> >> >> >                          type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' to 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >'
> >> >> >                          type size hasn't changed
> >> >> >-
> >> >> >                          1 data member change:
> >> >> >                           type of 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' changed:
> >> >> >                             entity changed from 'struct std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to compatible type 'typedef std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type' at stl_set.h:115:1
> >> >> >                               type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >'
> >> >> >                               type size hasn't changed
> >> >> >-
> >> >> >                               1 base class deletion:
> >> >> >                                 class std::allocator<std::_Rb_tree_node<PtrData> > at allocator.h:95:1
> >> >> >                               2 data member deletions:
> >> >> >                                 'std::_Rb_tree_node_base std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_header', at offset 64 (in bits) at stl_tree.h:593:1
> >> >> >-
> >> >> >                                 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::size_type std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_node_count', at offset 320 (in bits) at stl_tree.h:594:1
> >> >> >-
> >> >> >                               1 data member change:
> >> >> >                                type of 'std::less<PtrData> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_key_compare' changed:
> >> >> >                                  type name changed from 'std::less<PtrData>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>'
> >> >> >diff --git a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt
> >> >> >index 44e78935..d91de66b 100644
> >> >> >--- a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt
> >> >> >+++ b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt
> >> >> >@@ -1200,7 +1200,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >> >> >           '__anonymous_enum__1::c_report_state_stream' value '142'
> >> >> >           '__anonymous_enum__1::c_report_stream' value '143'
> >> >> >           '__anonymous_enum__1::c_unload_library' value '144'
> >> >> >-
> >> >> >         92 enumerator changes:
> >> >> >           '__anonymous_enum__::c_process_get_func_handles' from value '32' to '33' at liboffload_error_codes.h:38:1
> >> >> >           '__anonymous_enum__::c_process_wait_shutdown' from value '33' to '34' at liboffload_error_codes.h:38:1
> >> >> >@@ -1304,7 +1303,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >> >> >          type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} VarDesc::flags' changed:
> >> >> >            type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags'
> >> >> >            type size hasn't changed
> >> >> >-
> >> >> >            1 data member changes (1 filtered):
> >> >> >             anonymous data member at offset 0 (in bytes) changed from:
> >> >> >               struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}
> >> >> >@@ -1319,7 +1317,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >> >> >         entity changed from 'struct InitTableEntry' to compatible type 'typedef InitTableEntry' at offload_table.h:296:1
> >> >> >           type name changed from 'InitTableEntry' to '__anonymous_struct__2'
> >> >> >           type size hasn't changed
> >> >> >-
> >> >> >           1 data member change:
> >> >> >            type of 'void ()* InitTableEntry::func' changed:
> >> >> >              in pointed to type 'function type void ()':
> >> >> >@@ -1348,7 +1345,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >> >> >                type size changed from 0x158 to 0x2b0 (in bytes)
> >> >> >                1 data member deletion:
> >> >> >                  'mutex_t Engine::m_ptr_lock', at offset 0xa8 (in bytes) at offload_engine.h:474:1
> >> >> >-
> >> >> >                7 data member insertions:
> >> >> >                  'PtrDataTable Engine::m_targetptr_set', at offset 0xd0 (in bytes) at offload_engine.h:630:1
> >> >> >                  'StreamMap Engine::m_stream_map', at offset 0x180 (in bytes) at offload_engine.h:637:1
> >> >> >@@ -1370,20 +1366,16 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >> >> >                        underlying type 'class std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' at stl_tree.h:357:1 changed:
> >> >> >                          type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' to 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >'
> >> >> >                          type size hasn't changed
> >> >> >-
> >> >> >                          1 data member change:
> >> >> >                           type of 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' changed:
> >> >> >                             entity changed from 'struct std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to compatible type 'typedef std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type' at stl_set.h:115:1
> >> >> >                               type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >'
> >> >> >                               type size hasn't changed
> >> >> >-
> >> >> >                               1 base class deletion:
> >> >> >                                 class std::allocator<std::_Rb_tree_node<PtrData> > at allocator.h:95:1
> >> >> >                               2 data member deletions:
> >> >> >                                 'std::_Rb_tree_node_base std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_header', at offset 0x8 (in bytes) at stl_tree.h:593:1
> >> >> >-
> >> >> >                                 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::size_type std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_node_count', at offset 0x28 (in bytes) at stl_tree.h:594:1
> >> >> >-
> >> >> >                               1 data member change:
> >> >> >                                type of 'std::less<PtrData> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_key_compare' changed:
> >> >> >                                  type name changed from 'std::less<PtrData>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>'
> >> >> >diff --git a/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt b/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt
> >> >> >index c9cb9246..306a9863 100644
> >> >> >--- a/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt
> >> >> >+++ b/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt
> >> >> >@@ -116,7 +116,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >> >> >           '__anonymous_enum__1::c_report_state_stream' value '142'
> >> >> >           '__anonymous_enum__1::c_report_stream' value '143'
> >> >> >           '__anonymous_enum__1::c_unload_library' value '144'
> >> >> >-
> >> >> >         92 enumerator changes:
> >> >> >           '__anonymous_enum__::c_process_get_func_handles' from value '32' to '33'
> >> >> >           '__anonymous_enum__::c_process_wait_shutdown' from value '33' to '34'
> >> >> >@@ -220,7 +219,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >> >> >          type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} VarDesc::flags' changed:
> >> >> >            type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags'
> >> >> >            type size hasn't changed
> >> >> >-
> >> >> >            1 data member changes (1 filtered):
> >> >> >             anonymous data member at offset 0 (in bits) changed from:
> >> >> >               struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}
> >> >> >@@ -235,7 +233,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >> >> >         entity changed from 'struct InitTableEntry' to compatible type 'typedef InitTableEntry'
> >> >> >           type name changed from 'InitTableEntry' to '__anonymous_struct__2'
> >> >> >           type size hasn't changed
> >> >> >-
> >> >> >           1 data member change:
> >> >> >            type of 'void ()* InitTableEntry::func' changed:
> >> >> >              in pointed to type 'function type void ()':
> >> >> >@@ -264,7 +261,6 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >> >> >                type size changed from 2752 to 5504 (in bits)
> >> >> >                1 data member deletion:
> >> >> >                  'mutex_t Engine::m_ptr_lock', at offset 1344 (in bits)
> >> >> >-
> >> >> >                7 data member insertions:
> >> >> >                  'PtrDataTable Engine::m_targetptr_set', at offset 1664 (in bits)
> >> >> >                  'StreamMap Engine::m_stream_map', at offset 3072 (in bits)
> >> >> >@@ -286,20 +282,16 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
> >> >> >                        underlying type 'class std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' changed:
> >> >> >                          type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' to 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >'
> >> >> >                          type size hasn't changed
> >> >> >-
> >> >> >                          1 data member change:
> >> >> >                           type of 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' changed:
> >> >> >                             entity changed from 'struct std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to compatible type 'typedef std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type'
> >> >> >                               type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >'
> >> >> >                               type size hasn't changed
> >> >> >-
> >> >> >                               1 base class deletion:
> >> >> >                                 class std::allocator<std::_Rb_tree_node<PtrData> >
> >> >> >                               2 data member deletions:
> >> >> >                                 'std::_Rb_tree_node_base std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_header', at offset 64 (in bits)
> >> >> >-
> >> >> >                                 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::size_type std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_node_count', at offset 320 (in bits)
> >> >> >-
> >> >> >                               1 data member change:
> >> >> >                                type of 'std::less<PtrData> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_key_compare' changed:
> >> >> >                                  type name changed from 'std::less<PtrData>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>'
> >> >> >diff --git a/tests/data/test-diff-filter/test36-report-0.txt b/tests/data/test-diff-filter/test36-report-0.txt
> >> >> >index 08692c1e..22e614d8 100644
> >> >> >--- a/tests/data/test-diff-filter/test36-report-0.txt
> >> >> >+++ b/tests/data/test-diff-filter/test36-report-0.txt
> >> >> >@@ -13,7 +13,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >> >> >            type size hasn't changed
> >> >> >
> >> >> >
> >> >> >-
> >> >> >   [C] 'function int foo_2(S*)' at test36-2-v1.c:13:1 has some indirect sub-type changes:
> >> >> >     parameter 1 of type 'S*' has sub-type changes:
> >> >> >       in pointed to type 'struct S' at test36-2-v1.c:6:1:
> >> >> >@@ -23,11 +22,9 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >> >> >            type name changed from 'int' to 'unsigned int'
> >> >> >            type size hasn't changed
> >> >> >
> >> >> >-
> >> >> >          type of 'int S::m1' changed:
> >> >> >            type name changed from 'int' to 'unsigned int'
> >> >> >            type size hasn't changed
> >> >> >
> >> >> >
> >> >> >
> >> >> >-
> >> >> >diff --git a/tests/data/test-diff-filter/test42-leaf-report-output-0.txt b/tests/data/test-diff-filter/test42-leaf-report-output-0.txt
> >> >> >index 94a0551d..d40a1374 100644
> >> >> >--- a/tests/data/test-diff-filter/test42-leaf-report-output-0.txt
> >> >> >+++ b/tests/data/test-diff-filter/test42-leaf-report-output-0.txt
> >> >> >@@ -7,6 +7,5 @@ Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
> >> >> >   type size changed from 32 to 64 (in bits)
> >> >> >   1 data member insertion:
> >> >> >     'char leaf::m1', at offset 32 (in bits) at test42-leaf-report-v1.cc:7:1
> >> >> >-
> >> >> >   one impacted interface:
> >> >> >     function void fn(C&)
> >> >> >diff --git a/tests/data/test-diff-filter/test7-report.txt b/tests/data/test-diff-filter/test7-report.txt
> >> >> >index 7e3a4d47..26933033 100644
> >> >> >--- a/tests/data/test-diff-filter/test7-report.txt
> >> >> >+++ b/tests/data/test-diff-filter/test7-report.txt
> >> >> >@@ -7,7 +7,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >> >> >     return type changed:
> >> >> >       type name changed from 'return_type' to 'other_return_type'
> >> >> >       type size hasn't changed
> >> >> >-
> >> >> >       no data member change (1 filtered);
> >> >> >
> >> >> >
> >> >> >diff --git a/tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt b/tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt
> >> >> >index 05d6fcad..873a84cd 100644
> >> >> >--- a/tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt
> >> >> >+++ b/tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt
> >> >> >@@ -54,9 +54,7 @@
> >> >> >                                                   struct std::__detail::_List_node_base
> >> >> >                                                 2 data member deletions:
> >> >> >                                                   'std::__detail::_List_node_base* std::__detail::_List_node_base::_M_next', at offset 0 (in bits)
> >> >> >-
> >> >> >                                                   'std::__detail::_List_node_base* std::__detail::_List_node_base::_M_prev', at offset 64 (in bits)
> >> >> >-
> >> >> >                                                 1 data member insertion:
> >> >> >                                                   'unsigned long int std::_List_node<long unsigned int>::_M_data', at offset 128 (in bits)
> >> >> >                                               and name of 'std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl::_M_node' changed to 'std::__cxx11::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl::_M_node'
> >> >> >diff --git a/tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt b/tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt
> >> >> >index c227fa5c..a0cc67c2 100644
> >> >> >--- a/tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt
> >> >> >+++ b/tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt
> >> >> >@@ -10,7 +10,6 @@
> >> >> >           type size hasn't changed
> >> >> >           1 enumerator insertion:
> >> >> >             '__anonymous_enum__1::SEC_OID_TLS_ECDHE_PSK' value '347'
> >> >> >-
> >> >> >           1 enumerator change:
> >> >> >             '__anonymous_enum__1::SEC_OID_TOTAL' from value '347' to '348' at secoidt.h:34:1
> >> >> >
> >> >> >@@ -34,7 +33,6 @@
> >> >> >           type size hasn't changed
> >> >> >           1 enumerator insertion:
> >> >> >             '__anonymous_enum__1::ssl_kea_ecdh_psk' value '5'
> >> >> >-
> >> >> >           1 enumerator change:
> >> >> >             '__anonymous_enum__::ssl_kea_size' from value '5' to '6' at sslt.h:40:1
> >> >> >
> >> >> >@@ -52,7 +50,6 @@
> >> >> >                  type size hasn't changed
> >> >> >                  1 enumerator deletion:
> >> >> >                    '__anonymous_enum__::ssl_auth_rsa' value '1'
> >> >> >-
> >> >> >                  7 enumerator insertions:
> >> >> >                    '__anonymous_enum__::ssl_auth_rsa_decrypt' value '1'
> >> >> >                    '__anonymous_enum__::ssl_auth_ecdh_rsa' value '5'
> >> >> >@@ -114,7 +111,6 @@
> >> >> >                                              type size hasn't changed
> >> >> >                                              1 enumerator insertion:
> >> >> >                                                '__anonymous_enum__1::SEC_OID_TLS_ECDHE_PSK' value '347'
> >> >> >-
> >> >> >                                              1 enumerator change:
> >> >> >                                                '__anonymous_enum__1::SEC_OID_TOTAL' from value '347' to '348' at secoidt.h:34:1
> >> >> >
> >> >> >diff --git a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt
> >> >> >index bf081f52..70b41ddd 100644
> >> >> >--- a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt
> >> >> >+++ b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt
> >> >> >@@ -25,7 +25,6 @@
> >> >> >         underlying type 'enum __anonymous_enum__2' at spice.h:471:1 changed:
> >> >> >           type name changed from '__anonymous_enum__2' to 'SpiceImageCompression'
> >> >> >           type size hasn't changed
> >> >> >-
> >> >> >           7 enumerator deletions:
> >> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_INVALID' value '0'
> >> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_OFF' value '1'
> >> >> >@@ -34,7 +33,6 @@
> >> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_QUIC' value '4'
> >> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_GLZ' value '5'
> >> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_LZ' value '6'
> >> >> >-
> >> >> >           9 enumerator insertions:
> >> >> >             'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0'
> >> >> >             'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1'
> >> >> >diff --git a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt
> >> >> >index 7b86b964..0b909f90 100644
> >> >> >--- a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt
> >> >> >+++ b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt
> >> >> >@@ -25,7 +25,6 @@
> >> >> >         underlying type 'enum __anonymous_enum__2' at spice.h:471:1 changed:
> >> >> >           type name changed from '__anonymous_enum__2' to 'SpiceImageCompression'
> >> >> >           type size hasn't changed
> >> >> >-
> >> >> >           7 enumerator deletions:
> >> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_INVALID' value '0'
> >> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_OFF' value '1'
> >> >> >@@ -34,7 +33,6 @@
> >> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_QUIC' value '4'
> >> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_GLZ' value '5'
> >> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_LZ' value '6'
> >> >> >-
> >> >> >           9 enumerator insertions:
> >> >> >             'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0'
> >> >> >             'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1'
> >> >> >diff --git a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt
> >> >> >index 3d20caf1..c247ef95 100644
> >> >> >--- a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt
> >> >> >+++ b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt
> >> >> >@@ -239,15 +239,10 @@
> >> >> >                                                  type size changed from 1280 to 256 (in bits)
> >> >> >                                                  5 data member deletions:
> >> >> >                                                    'RedsSASL RedsStream::sasl', at offset 256 (in bits) at reds.h:78:1
> >> >> >-
> >> >> >                                                    'SpiceChannelEventInfo* RedsStream::info', at offset 1024 (in bits) at reds.h:85:1
> >> >> >-
> >> >> >                                                    'typedef ssize_t (RedsStream*, void*, typedef size_t)* RedsStream::read', at offset 1088 (in bits) at reds.h:88:1
> >> >> >-
> >> >> >                                                    'typedef ssize_t (RedsStream*, void*, typedef size_t)* RedsStream::write', at offset 1152 (in bits) at reds.h:89:1
> >> >> >-
> >> >> >                                                    'typedef ssize_t (RedsStream*, const iovec*, int)* RedsStream::writev', at offset 1216 (in bits) at reds.h:90:1
> >> >> >-
> >> >> >                                                  1 data member change:
> >> >> >                                                   type of 'SSL* RedsStream::ssl' changed:
> >> >> >                                                     in pointed to type 'typedef SSL' at reds_stream.h:32:1:
> >> >> >@@ -257,193 +252,99 @@
> >> >> >                                                         type size changed from 5504 to 0 (in bits)
> >> >> >                                                         94 data member deletions:
> >> >> >                                                           'int ssl_st::version', at offset 0 (in bits) at ssl.h:1070:1
> >> >> >-
> >> >> >                                                           'int ssl_st::type', at offset 32 (in bits) at ssl.h:1071:1
> >> >> >-
> >> >> >                                                           'const SSL_METHOD* ssl_st::method', at offset 64 (in bits) at ssl.h:1073:1
> >> >> >-
> >> >> >                                                           'BIO* ssl_st::rbio', at offset 128 (in bits) at ssl.h:1080:1
> >> >> >-
> >> >> >                                                           'BIO* ssl_st::wbio', at offset 192 (in bits) at ssl.h:1081:1
> >> >> >-
> >> >> >                                                           'BIO* ssl_st::bbio', at offset 256 (in bits) at ssl.h:1082:1
> >> >> >-
> >> >> >                                                           'int ssl_st::rwstate', at offset 320 (in bits) at ssl.h:1093:1
> >> >> >-
> >> >> >                                                           'int ssl_st::in_handshake', at offset 352 (in bits) at ssl.h:1096:1
> >> >> >-
> >> >> >                                                           'int (SSL*)* ssl_st::handshake_func', at offset 384 (in bits) at ssl.h:1097:1
> >> >> >-
> >> >> >                                                           'int ssl_st::server', at offset 448 (in bits) at ssl.h:1107:1
> >> >> >-
> >> >> >                                                           'int ssl_st::new_session', at offset 480 (in bits) at ssl.h:1109:1
> >> >> >-
> >> >> >                                                           'int ssl_st::quiet_shutdown', at offset 512 (in bits) at ssl.h:1113:1
> >> >> >-
> >> >> >                                                           'int ssl_st::shutdown', at offset 544 (in bits) at ssl.h:1114:1
> >> >> >-
> >> >> >                                                           'int ssl_st::state', at offset 576 (in bits) at ssl.h:1116:1
> >> >> >-
> >> >> >                                                           'int ssl_st::rstate', at offset 608 (in bits) at ssl.h:1117:1
> >> >> >-
> >> >> >                                                           'BUF_MEM* ssl_st::init_buf', at offset 640 (in bits) at ssl.h:1119:1
> >> >> >-
> >> >> >                                                           'void* ssl_st::init_msg', at offset 704 (in bits) at ssl.h:1120:1
> >> >> >-
> >> >> >                                                           'int ssl_st::init_num', at offset 768 (in bits) at ssl.h:1121:1
> >> >> >-
> >> >> >                                                           'int ssl_st::init_off', at offset 800 (in bits) at ssl.h:1122:1
> >> >> >-
> >> >> >                                                           'unsigned char* ssl_st::packet', at offset 832 (in bits) at ssl.h:1125:1
> >> >> >-
> >> >> >                                                           'unsigned int ssl_st::packet_length', at offset 896 (in bits) at ssl.h:1126:1
> >> >> >-
> >> >> >                                                           'ssl2_state_st* ssl_st::s2', at offset 960 (in bits) at ssl.h:1128:1
> >> >> >-
> >> >> >                                                           'ssl3_state_st* ssl_st::s3', at offset 1024 (in bits) at ssl.h:1129:1
> >> >> >-
> >> >> >                                                           'dtls1_state_st* ssl_st::d1', at offset 1088 (in bits) at ssl.h:1130:1
> >> >> >-
> >> >> >                                                           'int ssl_st::read_ahead', at offset 1152 (in bits) at ssl.h:1132:1
> >> >> >-
> >> >> >                                                           'void (int, int, int, void*, typedef size_t, SSL*, void*)* ssl_st::msg_callback', at offset 1216 (in bits) at ssl.h:1136:1
> >> >> >-
> >> >> >                                                           'void* ssl_st::msg_callback_arg', at offset 1280 (in bits) at ssl.h:1137:1
> >> >> >-
> >> >> >                                                           'int ssl_st::hit', at offset 1344 (in bits) at ssl.h:1139:1
> >> >> >-
> >> >> >                                                           'X509_VERIFY_PARAM* ssl_st::param', at offset 1408 (in bits) at ssl.h:1141:1
> >> >> >-
> >> >> >                                                           'stack_st_SSL_CIPHER* ssl_st::cipher_list', at offset 1472 (in bits) at ssl.h:1149:1
> >> >> >-
> >> >> >                                                           'stack_st_SSL_CIPHER* ssl_st::cipher_list_by_id', at offset 1536 (in bits) at ssl.h:1150:1
> >> >> >-
> >> >> >                                                           'int ssl_st::mac_flags', at offset 1600 (in bits) at ssl.h:1154:1
> >> >> >-
> >> >> >                                                           'EVP_CIPHER_CTX* ssl_st::enc_read_ctx', at offset 1664 (in bits) at ssl.h:1155:1
> >> >> >-
> >> >> >                                                           'EVP_MD_CTX* ssl_st::read_hash', at offset 1728 (in bits) at ssl.h:1156:1
> >> >> >-
> >> >> >                                                           'COMP_CTX* ssl_st::expand', at offset 1792 (in bits) at ssl.h:1158:1
> >> >> >-
> >> >> >                                                           'EVP_CIPHER_CTX* ssl_st::enc_write_ctx', at offset 1856 (in bits) at ssl.h:1163:1
> >> >> >-
> >> >> >                                                           'EVP_MD_CTX* ssl_st::write_hash', at offset 1920 (in bits) at ssl.h:1164:1
> >> >> >-
> >> >> >                                                           'COMP_CTX* ssl_st::compress', at offset 1984 (in bits) at ssl.h:1166:1
> >> >> >-
> >> >> >                                                           'cert_st* ssl_st::cert', at offset 2048 (in bits) at ssl.h:1175:1
> >> >> >-
> >> >> >                                                           'unsigned int ssl_st::sid_ctx_length', at offset 2112 (in bits) at ssl.h:1179:1
> >> >> >-
> >> >> >                                                           'unsigned char ssl_st::sid_ctx[32]', at offset 2144 (in bits) at ssl.h:1180:1
> >> >> >-
> >> >> >                                                           'SSL_SESSION* ssl_st::session', at offset 2432 (in bits) at ssl.h:1183:1
> >> >> >-
> >> >> >                                                           'GEN_SESSION_CB ssl_st::generate_session_id', at offset 2496 (in bits) at ssl.h:1186:1
> >> >> >-
> >> >> >                                                           'int ssl_st::verify_mode', at offset 2560 (in bits) at ssl.h:1189:1
> >> >> >-
> >> >> >                                                           'int (int, X509_STORE_CTX*)* ssl_st::verify_callback', at offset 2624 (in bits) at ssl.h:1191:1
> >> >> >-
> >> >> >                                                           'void (const SSL*, int, int)* ssl_st::info_callback', at offset 2688 (in bits) at ssl.h:1193:1
> >> >> >-
> >> >> >                                                           'int ssl_st::error', at offset 2752 (in bits) at ssl.h:1195:1
> >> >> >-
> >> >> >                                                           'int ssl_st::error_code', at offset 2784 (in bits) at ssl.h:1196:1
> >> >> >-
> >> >> >                                                           'KSSL_CTX* ssl_st::kssl_ctx', at offset 2816 (in bits) at ssl.h:1199:1
> >> >> >-
> >> >> >                                                           'unsigned int (SSL*, const char*, char*, unsigned int, unsigned char*, unsigned int)* ssl_st::psk_client_callback', at offset 2880 (in bits) at ssl.h:1203:1
> >> >> >-
> >> >> >                                                           'unsigned int (SSL*, const char*, unsigned char*, unsigned int)* ssl_st::psk_server_callback', at offset 2944 (in bits) at ssl.h:1206:1
> >> >> >-
> >> >> >                                                           'SSL_CTX* ssl_st::ctx', at offset 3008 (in bits) at ssl.h:1210:1
> >> >> >-
> >> >> >                                                           'int ssl_st::debug', at offset 3072 (in bits) at ssl.h:1213:1
> >> >> >-
> >> >> >                                                           'long int ssl_st::verify_result', at offset 3136 (in bits) at ssl.h:1216:1
> >> >> >-
> >> >> >                                                           'CRYPTO_EX_DATA ssl_st::ex_data', at offset 3200 (in bits) at ssl.h:1217:1
> >> >> >-
> >> >> >                                                           'stack_st_X509_NAME* ssl_st::client_CA', at offset 3328 (in bits) at ssl.h:1220:1
> >> >> >-
> >> >> >                                                           'int ssl_st::references', at offset 3392 (in bits) at ssl.h:1222:1
> >> >> >-
> >> >> >                                                           'unsigned long int ssl_st::options', at offset 3456 (in bits) at ssl.h:1223:1
> >> >> >-
> >> >> >                                                           'unsigned long int ssl_st::mode', at offset 3520 (in bits) at ssl.h:1224:1
> >> >> >-
> >> >> >                                                           'long int ssl_st::max_cert_list', at offset 3584 (in bits) at ssl.h:1225:1
> >> >> >-
> >> >> >                                                           'int ssl_st::first_packet', at offset 3648 (in bits) at ssl.h:1226:1
> >> >> >-
> >> >> >                                                           'int ssl_st::client_version', at offset 3680 (in bits) at ssl.h:1227:1
> >> >> >-
> >> >> >                                                           'unsigned int ssl_st::max_send_fragment', at offset 3712 (in bits) at ssl.h:1229:1
> >> >> >-
> >> >> >                                                           'void (SSL*, int, int, unsigned char*, int, void*)* ssl_st::tlsext_debug_cb', at offset 3776 (in bits) at ssl.h:1232:1
> >> >> >-
> >> >> >                                                           'void* ssl_st::tlsext_debug_arg', at offset 3840 (in bits) at ssl.h:1235:1
> >> >> >-
> >> >> >                                                           'char* ssl_st::tlsext_hostname', at offset 3904 (in bits) at ssl.h:1236:1
> >> >> >-
> >> >> >                                                           'int ssl_st::servername_done', at offset 3968 (in bits) at ssl.h:1237:1
> >> >> >-
> >> >> >                                                           'int ssl_st::tlsext_status_type', at offset 4000 (in bits) at ssl.h:1244:1
> >> >> >-
> >> >> >                                                           'int ssl_st::tlsext_status_expected', at offset 4032 (in bits) at ssl.h:1246:1
> >> >> >-
> >> >> >                                                           'stack_st_OCSP_RESPID* ssl_st::tlsext_ocsp_ids', at offset 4096 (in bits) at ssl.h:1248:1
> >> >> >-
> >> >> >                                                           'X509_EXTENSIONS* ssl_st::tlsext_ocsp_exts', at offset 4160 (in bits) at ssl.h:1249:1
> >> >> >-
> >> >> >                                                           'unsigned char* ssl_st::tlsext_ocsp_resp', at offset 4224 (in bits) at ssl.h:1251:1
> >> >> >-
> >> >> >                                                           'int ssl_st::tlsext_ocsp_resplen', at offset 4288 (in bits) at ssl.h:1252:1
> >> >> >-
> >> >> >                                                           'int ssl_st::tlsext_ticket_expected', at offset 4320 (in bits) at ssl.h:1255:1
> >> >> >-
> >> >> >                                                           'size_t ssl_st::tlsext_ecpointformatlist_length', at offset 4352 (in bits) at ssl.h:1257:1
> >> >> >-
> >> >> >                                                           'unsigned char* ssl_st::tlsext_ecpointformatlist', at offset 4416 (in bits) at ssl.h:1258:1
> >> >> >-
> >> >> >                                                           'size_t ssl_st::tlsext_ellipticcurvelist_length', at offset 4480 (in bits) at ssl.h:1259:1
> >> >> >-
> >> >> >                                                           'unsigned char* ssl_st::tlsext_ellipticcurvelist', at offset 4544 (in bits) at ssl.h:1260:1
> >> >> >-
> >> >> >                                                           'void* ssl_st::tlsext_opaque_prf_input', at offset 4608 (in bits) at ssl.h:1264:1
> >> >> >-
> >> >> >                                                           'size_t ssl_st::tlsext_opaque_prf_input_len', at offset 4672 (in bits) at ssl.h:1265:1
> >> >> >-
> >> >> >                                                           'TLS_SESSION_TICKET_EXT* ssl_st::tlsext_session_ticket', at offset 4736 (in bits) at ssl.h:1268:1
> >> >> >-
> >> >> >                                                           'tls_session_ticket_ext_cb_fn ssl_st::tls_session_ticket_ext_cb', at offset 4800 (in bits) at ssl.h:1271:1
> >> >> >-
> >> >> >                                                           'void* ssl_st::tls_session_ticket_ext_cb_arg', at offset 4864 (in bits) at ssl.h:1272:1
> >> >> >-
> >> >> >                                                           'tls_session_secret_cb_fn ssl_st::tls_session_secret_cb', at offset 4928 (in bits) at ssl.h:1275:1
> >> >> >-
> >> >> >                                                           'void* ssl_st::tls_session_secret_cb_arg', at offset 4992 (in bits) at ssl.h:1276:1
> >> >> >-
> >> >> >                                                           'SSL_CTX* ssl_st::initial_ctx', at offset 5056 (in bits) at ssl.h:1278:1
> >> >> >-
> >> >> >                                                           'unsigned char* ssl_st::next_proto_negotiated', at offset 5120 (in bits) at ssl.h:1288:1
> >> >> >-
> >> >> >                                                           'unsigned char ssl_st::next_proto_negotiated_len', at offset 5184 (in bits) at ssl.h:1289:1
> >> >> >-
> >> >> >                                                           'stack_st_SRTP_PROTECTION_PROFILE* ssl_st::srtp_profiles', at offset 5248 (in bits) at ssl.h:1294:1
> >> >> >-
> >> >> >                                                           'SRTP_PROTECTION_PROFILE* ssl_st::srtp_profile', at offset 5312 (in bits) at ssl.h:1295:1
> >> >> >-
> >> >> >                                                           'unsigned int ssl_st::tlsext_heartbeat', at offset 5376 (in bits) at ssl.h:1297:1
> >> >> >-
> >> >> >                                                           'unsigned int ssl_st::tlsext_hb_pending', at offset 5408 (in bits) at ssl.h:1302:1
> >> >> >-
> >> >> >                                                           'unsigned int ssl_st::tlsext_hb_seq', at offset 5440 (in bits) at ssl.h:1303:1
> >> >> >-
> >> >> >                                                           'int ssl_st::renegotiate', at offset 5472 (in bits) at ssl.h:1308:1
> >> >> >-
> >> >> >                                                   and name of 'RedsStream::ssl' changed to 'RedsStream::priv' at reds_stream.h:42:1
> >> >> >
> >> >> >
> >> >> >@@ -558,7 +459,6 @@
> >> >> >         underlying type 'enum __anonymous_enum__2' at spice.h:471:1 changed:
> >> >> >           type name changed from '__anonymous_enum__2' to 'SpiceImageCompression'
> >> >> >           type size hasn't changed
> >> >> >-
> >> >> >           7 enumerator deletions:
> >> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_INVALID' value '0'
> >> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_OFF' value '1'
> >> >> >@@ -567,7 +467,6 @@
> >> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_QUIC' value '4'
> >> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_GLZ' value '5'
> >> >> >             '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_LZ' value '6'
> >> >> >-
> >> >> >           9 enumerator insertions:
> >> >> >             'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0'
> >> >> >             'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1'
> >> >> >diff --git a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt
> >> >> >index 75ba0a50..11cd5682 100644
> >> >> >--- a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt
> >> >> >+++ b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt
> >> >> >@@ -22,7 +22,6 @@ Leaf changes summary: 11 artifacts changed (7 filtered out)
> >> >> >   'enum __anonymous_enum__2 at spice.h:471:1' changed:
> >> >> >     type name changed from '__anonymous_enum__2' to 'SpiceImageCompression'
> >> >> >     type size hasn't changed
> >> >> >-
> >> >> >     7 enumerator deletions:
> >> >> >       '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_INVALID' value '0'
> >> >> >       '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_OFF' value '1'
> >> >> >@@ -31,7 +30,6 @@ Leaf changes summary: 11 artifacts changed (7 filtered out)
> >> >> >       '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_QUIC' value '4'
> >> >> >       '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_GLZ' value '5'
> >> >> >       '__anonymous_enum__2::SPICE_IMAGE_COMPRESS_LZ' value '6'
> >> >> >-
> >> >> >     9 enumerator insertions:
> >> >> >       'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0'
> >> >> >       'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1'
> >> >> >@@ -48,7 +46,6 @@ Leaf changes summary: 11 artifacts changed (7 filtered out)
> >> >> >       function int spice_server_set_image_compression(SpiceServer*, spice_image_compression_t)
> >> >> >   'typedef spice_image_compression_t at spice.h:479:1' changed:
> >> >> >     typedef name changed from spice_image_compression_t to SpiceImageCompression at enums.h:197:1
> >> >> >-
> >> >> >     2 impacted interfaces:
> >> >> >       function spice_image_compression_t spice_server_get_image_compression(SpiceServer*)
> >> >> >       function int spice_server_set_image_compression(SpiceServer*, spice_image_compression_t)
> >> >> >diff --git a/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt b/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt
> >> >> >index f8e60b50..d0381ce5 100644
> >> >> >--- a/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt
> >> >> >+++ b/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt
> >> >> >@@ -60,7 +60,6 @@
> >> >> >         type size hasn't changed
> >> >> >         1 enumerator insertion:
> >> >> >           'tbb::internal::exception_id::eid_bad_tagged_msg_cast' value '20'
> >> >> >-
> >> >> >         1 enumerator change:
> >> >> >           'tbb::internal::exception_id::eid_max' from value '20' to '21' at tbb_exception.h:79:1
> >> >> >
> >> >> >@@ -129,7 +128,6 @@
> >> >> >
> >> >> >
> >> >> >
> >> >> >-
> >> >> >                1 member function deletion:
> >> >> >                  'method virtual tbb::task* tbb::internal::generic_scheduler::receive_or_steal_task(tbb::internal::reference_count&, bool)' at scheduler.h:391:1, virtual at voffset 7/7
> >> >> >
> >> >> >@@ -138,11 +136,8 @@
> >> >> >
> >> >> >                3 data member deletions:
> >> >> >                  'unsigned int tbb::internal::generic_scheduler::hint_for_push', at offset 896 (in bits) at scheduler.h:171:1
> >> >> >-
> >> >> >                  'volatile intptr_t* tbb::internal::generic_scheduler::my_ref_top_priority', at offset 2560 (in bits) at scheduler.h:433:1
> >> >> >-
> >> >> >                  'volatile uintptr_t* tbb::internal::generic_scheduler::my_ref_reload_epoch', at offset 2752 (in bits) at scheduler.h:443:1
> >> >> >-
> >> >> >                18 data member changes:
> >> >> >                 'uintptr_t tbb::internal::generic_scheduler::my_stealing_threshold' offset changed from 704 to 832 (in bits) (by +128 bits)
> >> >> >                 type of 'tbb::internal::market* tbb::internal::generic_scheduler::my_market' changed:
> >> >> >diff --git a/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt b/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt
> >> >> >index 10816705..89c8efa3 100644
> >> >> >--- a/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt
> >> >> >+++ b/tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt
> >> >> >@@ -31,7 +31,6 @@
> >> >> >         type size hasn't changed
> >> >> >         1 enumerator insertion:
> >> >> >           'tbb::internal::exception_id::eid_bad_tagged_msg_cast' value '20'
> >> >> >-
> >> >> >         1 enumerator change:
> >> >> >           'tbb::internal::exception_id::eid_max' from value '20' to '21' at tbb_exception.h:79:1
> >> >> >
> >> >> >diff --git a/tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt b/tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt
> >> >> >index 8f5d0b6b..c39851d3 100644
> >> >> >--- a/tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt
> >> >> >+++ b/tests/data/test-diff-suppr/test10-changed-parm-c-report-0.txt
> >> >> >@@ -7,14 +7,11 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >> >> >     return type changed:
> >> >> >       type name changed from 'int' to 'float'
> >> >> >       type size hasn't changed
> >> >> >-
> >> >> >     parameter 1 of type 'int' changed:
> >> >> >       type name changed from 'int' to 'float'
> >> >> >       type size hasn't changed
> >> >> >-
> >> >> >     parameter 2 of type 'int' changed:
> >> >> >       type name changed from 'int' to 'float'
> >> >> >       type size hasn't changed
> >> >> >
> >> >> >
> >> >> >-
> >> >> >diff --git a/tests/data/test-diff-suppr/test35-leaf-report-0.txt b/tests/data/test-diff-suppr/test35-leaf-report-0.txt
> >> >> >index 411cc1b4..244455ae 100644
> >> >> >--- a/tests/data/test-diff-suppr/test35-leaf-report-0.txt
> >> >> >+++ b/tests/data/test-diff-suppr/test35-leaf-report-0.txt
> >> >> >@@ -7,6 +7,5 @@ Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
> >> >> >   type size changed from 32 to 64 (in bits)
> >> >> >   1 data member insertion:
> >> >> >     'char leaf::m1', at offset 32 (in bits) at test35-leaf-v1.cc:8:1
> >> >> >-
> >> >> >   one impacted interface:
> >> >> >     function void fn(C&)
> >> >> >diff --git a/tests/data/test-diff-suppr/test36-leaf-report-0.txt b/tests/data/test-diff-suppr/test36-leaf-report-0.txt
> >> >> >index b12a8a61..f286cc7b 100644
> >> >> >--- a/tests/data/test-diff-suppr/test36-leaf-report-0.txt
> >> >> >+++ b/tests/data/test-diff-suppr/test36-leaf-report-0.txt
> >> >> >@@ -7,7 +7,6 @@ Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
> >> >> >   type size changed from 32 to 64 (in bits)
> >> >> >   1 data member insertion:
> >> >> >     'char leaf1::m1', at offset 32 (in bits) at test36-leaf-v1.cc:7:1
> >> >> >-
> >> >> >   3 impacted interfaces:
> >> >> >     function void interface1(struct_type*)
> >> >> >     function void interface2(struct_type&)
> >> >> >@@ -20,7 +19,6 @@ Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
> >> >> >    type 'struct leaf1' of 'leaf2::member0' changed as reported earlier
> >> >> >    and size changed from 32 to 64 (in bits) (by +32 bits)
> >> >> >    'char leaf2::member1' offset changed from 32 to 64 (in bits) (by +32 bits)
> >> >> >-
> >> >> >   3 impacted interfaces:
> >> >> >     function void interface1(struct_type*)
> >> >> >     function void interface2(struct_type&)
> >> >> >diff --git a/tests/data/test-diff-suppr/test41-enumerator-changes-report-0.txt b/tests/data/test-diff-suppr/test41-enumerator-changes-report-0.txt
> >> >> >index 4b1681bc..d772bd1d 100644
> >> >> >--- a/tests/data/test-diff-suppr/test41-enumerator-changes-report-0.txt
> >> >> >+++ b/tests/data/test-diff-suppr/test41-enumerator-changes-report-0.txt
> >> >> >@@ -8,7 +8,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >> >> >       type size hasn't changed
> >> >> >       1 enumerator insertion:
> >> >> >         'EnumType1::ee3_inserted' value '3'
> >> >> >-
> >> >> >       1 enumerator change:
> >> >> >         'EnumType1::eenum_count' from value '3' to '4' at test41-enumerator-changes-v1.cc:10:1
> >> >> >
> >> >> >@@ -18,7 +17,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
> >> >> >       type size hasn't changed
> >> >> >       1 enumerator insertion:
> >> >> >         'EnumType0::e3_inserted' value '3'
> >> >> >-
> >> >> >       1 enumerator change:
> >> >> >         'EnumType0::enum_count' from value '3' to '4' at test41-enumerator-changes-v1.cc:1:1
> >> >> >
> >> >> >--
> >> >> >2.25.1.481.gfbce0eb801-goog
> >> >> >
> >> >> >
diff mbox series

Patch

diff --git a/src/abg-default-reporter.cc b/src/abg-default-reporter.cc
index 3bfdfbc4..a0b9eeea 100644
--- a/src/abg-default-reporter.cc
+++ b/src/abg-default-reporter.cc
@@ -130,16 +130,14 @@  default_reporter::report(const enum_diff& d, ostream& out,
 	   i != sorted_deleted_enumerators.end();
 	   ++i)
 	{
-	  if (i != sorted_deleted_enumerators.begin())
-	    out << "\n";
 	  out << indent
 	      << "  '"
 	      << i->get_qualified_name()
 	      << "' value '"
 	      << i->get_value()
 	      << "'";
+	  out << "\n";
 	}
-      out << "\n\n";
     }
   if (numins)
     {
@@ -151,16 +149,14 @@  default_reporter::report(const enum_diff& d, ostream& out,
 	   i != sorted_inserted_enumerators.end();
 	   ++i)
 	{
-	  if (i != sorted_inserted_enumerators.begin())
-	    out << "\n";
 	  out << indent
 	      << "  '"
 	      << i->get_qualified_name()
 	      << "' value '"
 	      << i->get_value()
 	      << "'";
+	  out << "\n";
 	}
-      out << "\n\n";
     }
   if (numchanges)
     {
@@ -173,8 +169,6 @@  default_reporter::report(const enum_diff& d, ostream& out,
 	   i != sorted_changed_enumerators.end();
 	   ++i)
 	{
-	  if (i != sorted_changed_enumerators.begin())
-	    out << "\n";
 	  out << indent
 	      << "  '"
 	      << i->first.get_qualified_name()
@@ -182,13 +176,14 @@  default_reporter::report(const enum_diff& d, ostream& out,
 	      << i->first.get_value() << "' to '"
 	      << i->second.get_value() << "'";
 	  report_loc_info(second, *d.context(), out);
+	  out << "\n";
 	}
-      out << "\n\n";
     }
 
+  out << "\n";
+
   if (d.context()->show_leaf_changes_only())
-    maybe_report_interfaces_impacted_by_diff(&d, out, indent,
-					     /*new_line_prefix=*/false);
+    maybe_report_interfaces_impacted_by_diff(&d, out, indent);
 
   d.reported_once(true);
 }
@@ -392,7 +387,7 @@  default_reporter::report(const pointer_diff& d, ostream& out,
 	: string("void");
 
       out << indent
-	  << "in pointed to type '" <<  repr << "'";
+	  << "in pointed to type '" << repr << "'";
       report_loc_info(dif->second_subject(), *d.context(), out);
       out << ":\n";
       dif->report(out, indent + "  ");
@@ -673,12 +668,12 @@  default_reporter::report(const array_diff& d, ostream& out,
       dif->report(out, indent + "  ");
     }
 
-  report_name_size_and_alignment_changes(d.first_array(),
-					 d.second_array(),
-					 d.context(),
-					 out, indent,
-					 /*new line=*/false);
-  report_loc_info(d.second_array(), *d.context(), out);
+  if (report_name_size_and_alignment_changes(d.first_array(),
+					     d.second_array(),
+					     d.context(),
+					     out, indent,
+					     /*new line=*/false))
+    out << "\n";
 }
 
 /// Generates a report for an intance of @ref base_diff.
@@ -1014,7 +1009,6 @@  default_reporter::report(const class_or_union_diff& d,
 	  sort_data_members
 	    (d.class_or_union_diff::get_priv()->deleted_data_members_,
 	     sorted_dms);
-	  bool emitted = false;
 	  for (vector<decl_base_sptr>::const_iterator i = sorted_dms.begin();
 	       i != sorted_dms.end();
 	       ++i)
@@ -1024,14 +1018,8 @@  default_reporter::report(const class_or_union_diff& d,
 	      ABG_ASSERT(data_mem);
 	      if (get_member_is_static(data_mem))
 		continue;
-	      if (emitted)
-		out << "\n";
-	      out << indent << "  ";
-	      represent_data_member(data_mem, ctxt, out);
-	      emitted = true;
+	      represent_data_member(data_mem, ctxt, out, indent + "  ");
 	    }
-	  if (emitted)
-	    out << "\n";
 	}
 
       //report insertions
@@ -1052,8 +1040,7 @@  default_reporter::report(const class_or_union_diff& d,
 	      var_decl_sptr data_mem =
 		dynamic_pointer_cast<var_decl>(*i);
 	      ABG_ASSERT(data_mem);
-	      out << indent << "  ";
-	      represent_data_member(data_mem, ctxt, out);
+	      represent_data_member(data_mem, ctxt, out, indent + "  ");
 	    }
 	}
 
diff --git a/src/abg-leaf-reporter.cc b/src/abg-leaf-reporter.cc
index bbd51dcb..f706bd21 100644
--- a/src/abg-leaf-reporter.cc
+++ b/src/abg-leaf-reporter.cc
@@ -78,7 +78,7 @@  report_diffs(const reporter_base& r,
 
 	  string n = (*i)->first_subject()->get_pretty_representation();
 
-	  out << indent << "'" << n ;
+	  out << indent << "'" << n;
 
 	  report_loc_info((*i)->first_subject(),
 			  *(*i)->context(), out);
@@ -425,11 +425,12 @@  leaf_reporter::report(const array_diff& d,
 						    d.second_array(),
 						    "array type");
 
-  report_name_size_and_alignment_changes(d.first_array(),
-					 d.second_array(),
-					 d.context(),
-					 out, indent,
-					 /*new line=*/false);
+  if (report_name_size_and_alignment_changes(d.first_array(),
+					     d.second_array(),
+					     d.context(),
+					     out, indent,
+					     /*new line=*/false))
+    out << "\n";
 
   diff_sptr dif = d.element_type_diff();
   if (diff_to_be_reported(dif.get()))
@@ -441,8 +442,6 @@  leaf_reporter::report(const array_diff& d,
       dif->report(out, indent + "  ");
     }
 
-  report_loc_info(d.second_array(), *d.context(), out);
-
   maybe_report_interfaces_impacted_by_diff(&d, out, indent);
 }
 
@@ -592,7 +591,6 @@  leaf_reporter::report(const class_or_union_diff& d,
 	  sort_data_members
 	    (d.class_or_union_diff::get_priv()->deleted_data_members_,
 	     sorted_dms);
-	  bool emitted = false;
 	  for (vector<decl_base_sptr>::const_iterator i = sorted_dms.begin();
 	       i != sorted_dms.end();
 	       ++i)
@@ -602,14 +600,8 @@  leaf_reporter::report(const class_or_union_diff& d,
 	      ABG_ASSERT(data_mem);
 	      if (get_member_is_static(data_mem))
 		continue;
-	      if (emitted)
-		out << "\n";
-	      out << indent << "  ";
-	      represent_data_member(data_mem, ctxt, out);
-	      emitted = true;
+	      represent_data_member(data_mem, ctxt, out, indent + "  ");
 	    }
-	  if (emitted)
-	    out << "\n";
 	}
 
       //report insertions
@@ -630,8 +622,7 @@  leaf_reporter::report(const class_or_union_diff& d,
 	      var_decl_sptr data_mem =
 		dynamic_pointer_cast<var_decl>(*i);
 	      ABG_ASSERT(data_mem);
-	      out << indent << "  ";
-	      represent_data_member(data_mem, ctxt, out);
+	      represent_data_member(data_mem, ctxt, out, indent + "  ");
 	    }
 	}
 
diff --git a/src/abg-reporter-priv.cc b/src/abg-reporter-priv.cc
index fbac85f8..948a32fc 100644
--- a/src/abg-reporter-priv.cc
+++ b/src/abg-reporter-priv.cc
@@ -242,16 +242,19 @@  represent(const diff_context& ctxt,
 /// @param ctxt the current diff context.
 ///
 /// @param out the output stream to send the representation to
+///
+/// @param indent the indentation string to use for the change report.
 void
 represent_data_member(var_decl_sptr d,
 		      const diff_context_sptr& ctxt,
-		      ostream& out)
+		      ostream& out,
+		      const string& indent)
 {
   if (!is_data_member(d)
       || (!get_member_is_static(d) && !get_data_member_is_laid_out(d)))
     return;
 
-  out << "'" << d->get_pretty_representation() << "'";
+  out << indent << "'" << d->get_pretty_representation() << "'";
   if (!get_member_is_static(d))
     {
       // Do not emit offset information for data member of a union
@@ -262,8 +265,8 @@  represent_data_member(var_decl_sptr d,
 			    get_data_member_offset(d),
 			    *ctxt, out);
       report_loc_info(d, *ctxt, out);
-      out << "\n";
     }
+  out << "\n";
 }
 
 /// If a given @ref var_diff node carries a data member change in
@@ -806,7 +809,10 @@  report_size_and_alignment_changes(type_or_decl_base_sptr	first,
 	} // end if (fs != ss || fdc != sdc)
       else
 	if (ctxt->show_relative_offset_changes())
-	  out << indent << "type size hasn't changed\n";
+	  {
+	    out << indent << "type size hasn't changed";
+	    n = true;
+	  }
     }
   if ((ctxt->get_allowed_category() & SIZE_OR_OFFSET_CHANGE_CATEGORY)
       && (fa != sa))
@@ -819,9 +825,7 @@  report_size_and_alignment_changes(type_or_decl_base_sptr	first,
       n = true;
     }
 
-  if (n)
-    return true;
-  return false;
+  return n;
 }
 
 /// @param tod the type or declaration to emit loc info about
@@ -910,8 +914,8 @@  report_name_size_and_alignment_changes(decl_base_sptr		first,
 	}
     }
 
-  nl |= report_size_and_alignment_changes(first, second, ctxt,
-					  out, indent, nl);
+  nl = report_size_and_alignment_changes(first, second, ctxt,
+                                         out, indent, nl);
   return nl;
 }
 
@@ -1366,14 +1370,10 @@  maybe_report_unreachable_type_changes(const corpus_diff& d,
 /// @param out the output stream to report to.
 ///
 /// @param indent the white space string to use for indentation.
-///
-/// @param new_line_prefix if set to true, it means there is going to
-/// be a new line emitted before the report.
 void
 maybe_report_interfaces_impacted_by_diff(const diff	*d,
 					 ostream	&out,
-					 const string	&indent,
-					 bool		new_line_prefix)
+					 const string	&indent)
 {
   const diff_context_sptr &ctxt = d->context();
   const corpus_diff_sptr &corp_diff = ctxt->get_corpus_diff();
@@ -1395,9 +1395,6 @@  maybe_report_interfaces_impacted_by_diff(const diff	*d,
   vector<type_or_decl_base_sptr> sorted_impacted_interfaces;
   sort_artifacts_set(*impacted_artifacts, sorted_impacted_interfaces);
 
-  if (new_line_prefix)
-    out << '\n';
-
   size_t num_impacted_interfaces = impacted_artifacts->size();
   if (num_impacted_interfaces == 1)
     out << indent << "one impacted interface:\n";
@@ -1424,9 +1421,6 @@  maybe_report_interfaces_impacted_by_diff(const diff	*d,
 /// @param out the output stream to report to.
 ///
 /// @param indent the white space string to use for indentation.
-///
-/// @param new_line_prefix if set to true, it means there is going to
-/// be a new line emitted before the report.
 void
 maybe_report_interfaces_impacted_by_diff(const diff_sptr	&d,
 					 ostream		&out,
diff --git a/src/abg-reporter-priv.h b/src/abg-reporter-priv.h
index 7471c74f..04803f43 100644
--- a/src/abg-reporter-priv.h
+++ b/src/abg-reporter-priv.h
@@ -151,7 +151,8 @@  represent(const diff_context& ctxt,
 void
 represent_data_member(var_decl_sptr d,
 		      const diff_context_sptr& ctxt,
-		      ostream& out);
+		      ostream& out,
+		      const string& indent);
 
 void
 maybe_show_relative_offset_change(const var_diff_sptr &diff,
@@ -244,14 +245,12 @@  maybe_report_unreachable_type_changes(const corpus_diff& d,
 void
 maybe_report_interfaces_impacted_by_diff(const diff		*d,
 					 ostream		&out,
-					 const string		&indent,
-					 bool new_line_prefix = true);
+					 const string		&indent);
 
 void
 maybe_report_interfaces_impacted_by_diff(const diff_sptr	&d,
 					 ostream		&out,
-					 const string		&indent,
-					 bool new_line_prefix = false);
+					 const string		&indent);
 
 } // end namespace comparison
 } // end namespace abigail
diff --git a/tests/data/test-abicompat/test5-fn-changed-report-0.txt b/tests/data/test-abicompat/test5-fn-changed-report-0.txt
index 96d48ccf..04676908 100644
--- a/tests/data/test-abicompat/test5-fn-changed-report-0.txt
+++ b/tests/data/test-abicompat/test5-fn-changed-report-0.txt
@@ -15,4 +15,3 @@  have sub-types that are different from what application 'test5-fn-changed-app' e
         1 data member deletion:
           'unsigned char S1::m1', at offset 32 (in bits)
 
-
diff --git a/tests/data/test-abicompat/test5-fn-changed-report-1.txt b/tests/data/test-abicompat/test5-fn-changed-report-1.txt
index 3c8c4a8f..b39f650d 100644
--- a/tests/data/test-abicompat/test5-fn-changed-report-1.txt
+++ b/tests/data/test-abicompat/test5-fn-changed-report-1.txt
@@ -15,4 +15,3 @@  have sub-types that are different from what application 'test5-fn-changed-app' e
         1 data member deletion:
           'unsigned char S1::m1', at offset 32 (in bits) at test5-fn-changed-libapp-v0.h:11:1
 
-
diff --git a/tests/data/test-abicompat/test6-var-changed-report-0.txt b/tests/data/test-abicompat/test6-var-changed-report-0.txt
index 5d2bd89c..f5077879 100644
--- a/tests/data/test-abicompat/test6-var-changed-report-0.txt
+++ b/tests/data/test-abicompat/test6-var-changed-report-0.txt
@@ -13,4 +13,3 @@  have sub-types that are different from what application 'test6-var-changed-app'
       1 data member deletion:
         'unsigned char S1::m1', at offset 32 (in bits)
 
-
diff --git a/tests/data/test-abicompat/test6-var-changed-report-1.txt b/tests/data/test-abicompat/test6-var-changed-report-1.txt
index 697929f0..5b78c83c 100644
--- a/tests/data/test-abicompat/test6-var-changed-report-1.txt
+++ b/tests/data/test-abicompat/test6-var-changed-report-1.txt
@@ -13,4 +13,3 @@  have sub-types that are different from what application 'test6-var-changed-app'
       1 data member deletion:
         'unsigned char S1::m1', at offset 32 (in bits) at test6-var-changed-libapp-v0.h:11:1
 
-
diff --git a/tests/data/test-abicompat/test7-fn-changed-report-0.txt b/tests/data/test-abicompat/test7-fn-changed-report-0.txt
index 19db76e3..6a34710d 100644
--- a/tests/data/test-abicompat/test7-fn-changed-report-0.txt
+++ b/tests/data/test-abicompat/test7-fn-changed-report-0.txt
@@ -9,7 +9,6 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
       type name changed from 'float' to 'int'
       type size hasn't changed
 
-
   [C] 'function void print(const Student)' has some indirect sub-type changes:
     parameter 1 of type 'const Student' has sub-type changes:
       in unqualified underlying type 'struct Student':
diff --git a/tests/data/test-abidiff-exit/test-leaf3-report.txt b/tests/data/test-abidiff-exit/test-leaf3-report.txt
index 138c4b5a..7602e761 100644
--- a/tests/data/test-abidiff-exit/test-leaf3-report.txt
+++ b/tests/data/test-abidiff-exit/test-leaf3-report.txt
@@ -10,7 +10,6 @@  Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
       type name changed from 'sto1' to 'stn1'
       type size hasn't changed
 
-
   [C] 'function void fn2(sto2)' at test-leaf3-v1.c:13:1 has some sub-type changes:
     parameter 1 of type 'struct sto2' changed:
       type name changed from 'sto2' to 'stn2'
diff --git a/tests/data/test-abidiff-exit/test-loc-with-locs-report.txt b/tests/data/test-abidiff-exit/test-loc-with-locs-report.txt
index 53672744..bc37ff53 100644
--- a/tests/data/test-abidiff-exit/test-loc-with-locs-report.txt
+++ b/tests/data/test-abidiff-exit/test-loc-with-locs-report.txt
@@ -9,4 +9,3 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
       type size hasn't changed
 
 
-
diff --git a/tests/data/test-abidiff-exit/test-loc-without-locs-report.txt b/tests/data/test-abidiff-exit/test-loc-without-locs-report.txt
index 6893e3fc..56c41d79 100644
--- a/tests/data/test-abidiff-exit/test-loc-without-locs-report.txt
+++ b/tests/data/test-abidiff-exit/test-loc-without-locs-report.txt
@@ -9,4 +9,3 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
       type size hasn't changed
 
 
-
diff --git a/tests/data/test-abidiff/test-PR18791-report0.txt b/tests/data/test-abidiff/test-PR18791-report0.txt
index 5758077d..7e16fe32 100644
--- a/tests/data/test-abidiff/test-PR18791-report0.txt
+++ b/tests/data/test-abidiff/test-PR18791-report0.txt
@@ -48,9 +48,7 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
                                          struct std::__detail::_List_node_base
                                        2 data member deletions:
                                          'std::__detail::_List_node_base* std::__detail::_List_node_base::_M_next', at offset 0 (in bits)
-
                                          'std::__detail::_List_node_base* std::__detail::_List_node_base::_M_prev', at offset 64 (in bits)
-
                                        1 data member insertion:
                                          'unsigned long int std::_List_node<long unsigned int>::_M_data', at offset 128 (in bits)
                                      and name of 'std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl::_M_node' changed to 'std::__cxx11::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl::_M_node'
diff --git a/tests/data/test-abidiff/test-enum0-report.txt b/tests/data/test-abidiff/test-enum0-report.txt
index c7c5a682..1cd7eaaf 100644
--- a/tests/data/test-abidiff/test-enum0-report.txt
+++ b/tests/data/test-abidiff/test-enum0-report.txt
@@ -3,7 +3,6 @@ 
     type size hasn't changed
     1 enumerator deletion:
       'E::e2' value '1'
-
     1 enumerator insertion:
       'E::e1' value '1'
 
diff --git a/tests/data/test-abidiff/test-enum1-report.txt b/tests/data/test-abidiff/test-enum1-report.txt
index f1198ef9..7e8acf80 100644
--- a/tests/data/test-abidiff/test-enum1-report.txt
+++ b/tests/data/test-abidiff/test-enum1-report.txt
@@ -3,7 +3,6 @@ 
     type size hasn't changed
     1 enumerator insertion:
       'E::e1' value '1'
-
     1 enumerator change:
       'E::e2' from value '1' to '2'
 
diff --git a/tests/data/test-abidiff/test-struct1-report.txt b/tests/data/test-abidiff/test-struct1-report.txt
index 39b71e55..e334bf1a 100644
--- a/tests/data/test-abidiff/test-struct1-report.txt
+++ b/tests/data/test-abidiff/test-struct1-report.txt
@@ -6,7 +6,6 @@ 
 
     1 data member deletion:
       'char s0::m1', at offset 96 (in bits)
-
     1 data member insertion:
       'double s0::m01', at offset 128 (in bits)
     2 data member changes:
diff --git a/tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt b/tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt
index 29f823ec..aab271ff 100644
--- a/tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt
+++ b/tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt
@@ -100,7 +100,6 @@  Variables changes summary: 0 Removed, 0 Changed, 3 Added variables
          type of 'union {lttng_event_perf_counter_ctx perf_counter; struct {char* provider_name; char* ctx_name;} app_ctx; char padding[288];} lttng_event_context::u' changed:
            type name changed from '__anonymous_union__4' to '__anonymous_union__5'
            type size hasn't changed
-
            3 data member changes:
             name of '__anonymous_union__4::app_ctx' changed to '__anonymous_union__5::app_ctx'
             name of '__anonymous_union__4::padding' changed to '__anonymous_union__5::padding'
@@ -171,7 +170,6 @@  Variables changes summary: 0 Removed, 0 Changed, 3 Added variables
           type size changed from 35008 to 35072 (in bits)
           1 data member deletion:
             'char lttng_session::padding[12]', at offset 34912 (in bits)
-
           1 data member insertion:
             'union {char padding[12]; void* ptr;} lttng_session::extended', at offset 34944 (in bits)
 
@@ -208,7 +206,6 @@  Variables changes summary: 0 Removed, 0 Changed, 3 Added variables
           1 data member deletion:
             'bool lttng_notification::owns_elements', at offset 128 (in bits)
 
-
   [C] 'function lttng_notification_channel_status lttng_notification_channel_subscribe(lttng_notification_channel*, const lttng_condition*)' has some indirect sub-type changes:
     return type changed:
       enum type 'enum lttng_notification_channel_status' changed, as reported earlier
@@ -289,7 +286,6 @@  Variables changes summary: 0 Removed, 0 Changed, 3 Added variables
                            'op_type::AST_OP_BIN_AND' value '10'
                            'op_type::AST_OP_BIN_OR' value '11'
                            'op_type::AST_OP_BIN_XOR' value '12'
-
                          5 enumerator insertions:
                            'op_type::AST_OP_BIT_RSHIFT' value '6'
                            'op_type::AST_OP_BIT_LSHIFT' value '7'
@@ -319,7 +315,6 @@  Variables changes summary: 0 Removed, 0 Changed, 3 Added variables
                          type size hasn't changed
                          1 enumerator deletion:
                            'unary_op_type::AST_UNARY_BIN_NOT' value '4'
-
                          1 enumerator insertion:
                            'unary_op_type::AST_UNARY_BIT_NOT' value '4'
 
diff --git a/tests/data/test-diff-dwarf/test13-report.txt b/tests/data/test-diff-dwarf/test13-report.txt
index cf29a4fd..833879c7 100644
--- a/tests/data/test-diff-dwarf/test13-report.txt
+++ b/tests/data/test-diff-dwarf/test13-report.txt
@@ -12,7 +12,6 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
            type name changed from 'int' to 'unsigned int'
            type size hasn't changed
 
-
          type of 'unsigned int S::m2' changed:
            type name changed from 'unsigned int' to 'long long int'
            type size changed from 32 to 64 (in bits)
diff --git a/tests/data/test-diff-dwarf/test38-union-report-0.txt b/tests/data/test-diff-dwarf/test38-union-report-0.txt
index f7a75df7..fd9708e6 100644
--- a/tests/data/test-diff-dwarf/test38-union-report-0.txt
+++ b/tests/data/test-diff-dwarf/test38-union-report-0.txt
@@ -9,7 +9,6 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
         type size hasn't changed
         1 data member deletion:
           'int some_union_type::m0'
-
         type changed from:
           union some_union_type{int m0; char m1; S m2;}
         to:
diff --git a/tests/data/test-diff-dwarf/test40-report-0.txt b/tests/data/test-diff-dwarf/test40-report-0.txt
index d0b8c52c..f0f9e1a1 100644
--- a/tests/data/test-diff-dwarf/test40-report-0.txt
+++ b/tests/data/test-diff-dwarf/test40-report-0.txt
@@ -9,7 +9,6 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
         type size changed from 96 to 64 (in bits)
         1 data member deletion:
           'int S2::to_remove', at offset 0 (in bits)
-
         2 data member changes:
          'int S2::m0' offset changed from 32 to 0 (in bits) (by -32 bits)
          'char S2::m1' offset changed from 64 to 32 (in bits) (by -32 bits)
@@ -24,7 +23,6 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
            type size hasn't changed
 
 
-
   [C] 'function int foo(S1*)' has some indirect sub-type changes:
     parameter 1 of type 'S1*' has sub-type changes:
       in pointed to type 'struct S1':
diff --git a/tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt b/tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt
index f0a25a2e..44918baa 100644
--- a/tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt
+++ b/tests/data/test-diff-dwarf/test42-PR21296-clanggcc-report0.txt
@@ -19,7 +19,6 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
     return type changed:
       type name changed from 'std::tuple<STR&&>' to 'std::tuple<STR &&>'
       type size hasn't changed
-
       1 base class deletion:
         struct std::_Tuple_impl<0ul, STR&&>
       1 base class insertion:
diff --git a/tests/data/test-diff-dwarf/test43-PR22913-report-0.txt b/tests/data/test-diff-dwarf/test43-PR22913-report-0.txt
index 1c0c773d..60681336 100644
--- a/tests/data/test-diff-dwarf/test43-PR22913-report-0.txt
+++ b/tests/data/test-diff-dwarf/test43-PR22913-report-0.txt
@@ -12,4 +12,3 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
             'char m2', at offset 8 (in bits)
 
 
-
diff --git a/tests/data/test-diff-filter/test10-report.txt b/tests/data/test-diff-filter/test10-report.txt
index bdc31fd0..5a505fc3 100644
--- a/tests/data/test-diff-filter/test10-report.txt
+++ b/tests/data/test-diff-filter/test10-report.txt
@@ -16,4 +16,3 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
           'unsigned int S::m', at offset 0 (in bits)
 
 
-
diff --git a/tests/data/test-diff-filter/test18-report.txt b/tests/data/test-diff-filter/test18-report.txt
index 0d30ef39..6ade5bdf 100644
--- a/tests/data/test-diff-filter/test18-report.txt
+++ b/tests/data/test-diff-filter/test18-report.txt
@@ -14,4 +14,3 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
 
 
 
-
diff --git a/tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt b/tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt
index f847d32e..99c14329 100644
--- a/tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt
+++ b/tests/data/test-diff-filter/test23-redundant-fn-parm-change-report-0.txt
@@ -7,10 +7,8 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
     parameter 1 of type 'int' changed:
       type name changed from 'int' to 'float'
       type size hasn't changed
-
     parameter 2 of type 'int' changed:
       type name changed from 'int' to 'float'
       type size hasn't changed
 
 
-
diff --git a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt
index b78215b0..5def3a08 100644
--- a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt
+++ b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt
@@ -1200,7 +1200,6 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
           '__anonymous_enum__1::c_report_state_stream' value '142'
           '__anonymous_enum__1::c_report_stream' value '143'
           '__anonymous_enum__1::c_unload_library' value '144'
-
         92 enumerator changes:
           '__anonymous_enum__::c_process_get_func_handles' from value '32' to '33'
           '__anonymous_enum__::c_process_wait_shutdown' from value '33' to '34'
@@ -1304,7 +1303,6 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
          type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} VarDesc::flags' changed:
            type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags'
            type size hasn't changed
-
            1 data member changes (1 filtered):
             anonymous data member at offset 0 (in bits) changed from:
               struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}
@@ -1319,7 +1317,6 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
         entity changed from 'struct InitTableEntry' to compatible type 'typedef InitTableEntry'
           type name changed from 'InitTableEntry' to '__anonymous_struct__2'
           type size hasn't changed
-
           1 data member change:
            type of 'void ()* InitTableEntry::func' changed:
              in pointed to type 'function type void ()':
@@ -1348,7 +1345,6 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
                type size changed from 2752 to 5504 (in bits)
                1 data member deletion:
                  'mutex_t Engine::m_ptr_lock', at offset 1344 (in bits)
-
                7 data member insertions:
                  'PtrDataTable Engine::m_targetptr_set', at offset 1664 (in bits)
                  'StreamMap Engine::m_stream_map', at offset 3072 (in bits)
@@ -1370,20 +1366,16 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
                        underlying type 'class std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' changed:
                          type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' to 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >'
                          type size hasn't changed
-
                          1 data member change:
                           type of 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' changed:
                             entity changed from 'struct std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to compatible type 'typedef std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type'
                               type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >'
                               type size hasn't changed
-
                               1 base class deletion:
                                 class std::allocator<std::_Rb_tree_node<PtrData> >
                               2 data member deletions:
                                 'std::_Rb_tree_node_base std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_header', at offset 64 (in bits)
-
                                 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::size_type std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_node_count', at offset 320 (in bits)
-
                               1 data member change:
                                type of 'std::less<PtrData> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_key_compare' changed:
                                  type name changed from 'std::less<PtrData>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>'
diff --git a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt
index ccaf8126..3bc8f6d7 100644
--- a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt
+++ b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt
@@ -1200,7 +1200,6 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
           '__anonymous_enum__1::c_report_state_stream' value '142'
           '__anonymous_enum__1::c_report_stream' value '143'
           '__anonymous_enum__1::c_unload_library' value '144'
-
         92 enumerator changes:
           '__anonymous_enum__::c_process_get_func_handles' from value '32' to '33' at liboffload_error_codes.h:38:1
           '__anonymous_enum__::c_process_wait_shutdown' from value '33' to '34' at liboffload_error_codes.h:38:1
@@ -1304,7 +1303,6 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
          type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} VarDesc::flags' changed:
            type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags'
            type size hasn't changed
-
            1 data member changes (1 filtered):
             anonymous data member at offset 0 (in bits) changed from:
               struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}
@@ -1319,7 +1317,6 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
         entity changed from 'struct InitTableEntry' to compatible type 'typedef InitTableEntry' at offload_table.h:296:1
           type name changed from 'InitTableEntry' to '__anonymous_struct__2'
           type size hasn't changed
-
           1 data member change:
            type of 'void ()* InitTableEntry::func' changed:
              in pointed to type 'function type void ()':
@@ -1348,7 +1345,6 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
                type size changed from 2752 to 5504 (in bits)
                1 data member deletion:
                  'mutex_t Engine::m_ptr_lock', at offset 1344 (in bits) at offload_engine.h:474:1
-
                7 data member insertions:
                  'PtrDataTable Engine::m_targetptr_set', at offset 1664 (in bits) at offload_engine.h:630:1
                  'StreamMap Engine::m_stream_map', at offset 3072 (in bits) at offload_engine.h:637:1
@@ -1370,20 +1366,16 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
                        underlying type 'class std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' at stl_tree.h:357:1 changed:
                          type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' to 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >'
                          type size hasn't changed
-
                          1 data member change:
                           type of 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' changed:
                             entity changed from 'struct std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to compatible type 'typedef std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type' at stl_set.h:115:1
                               type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >'
                               type size hasn't changed
-
                               1 base class deletion:
                                 class std::allocator<std::_Rb_tree_node<PtrData> > at allocator.h:95:1
                               2 data member deletions:
                                 'std::_Rb_tree_node_base std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_header', at offset 64 (in bits) at stl_tree.h:593:1
-
                                 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::size_type std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_node_count', at offset 320 (in bits) at stl_tree.h:594:1
-
                               1 data member change:
                                type of 'std::less<PtrData> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_key_compare' changed:
                                  type name changed from 'std::less<PtrData>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>'
diff --git a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt
index 44e78935..d91de66b 100644
--- a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt
+++ b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt
@@ -1200,7 +1200,6 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
           '__anonymous_enum__1::c_report_state_stream' value '142'
           '__anonymous_enum__1::c_report_stream' value '143'
           '__anonymous_enum__1::c_unload_library' value '144'
-
         92 enumerator changes:
           '__anonymous_enum__::c_process_get_func_handles' from value '32' to '33' at liboffload_error_codes.h:38:1
           '__anonymous_enum__::c_process_wait_shutdown' from value '33' to '34' at liboffload_error_codes.h:38:1
@@ -1304,7 +1303,6 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
          type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} VarDesc::flags' changed:
            type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags'
            type size hasn't changed
-
            1 data member changes (1 filtered):
             anonymous data member at offset 0 (in bytes) changed from:
               struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}
@@ -1319,7 +1317,6 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
         entity changed from 'struct InitTableEntry' to compatible type 'typedef InitTableEntry' at offload_table.h:296:1
           type name changed from 'InitTableEntry' to '__anonymous_struct__2'
           type size hasn't changed
-
           1 data member change:
            type of 'void ()* InitTableEntry::func' changed:
              in pointed to type 'function type void ()':
@@ -1348,7 +1345,6 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
                type size changed from 0x158 to 0x2b0 (in bytes)
                1 data member deletion:
                  'mutex_t Engine::m_ptr_lock', at offset 0xa8 (in bytes) at offload_engine.h:474:1
-
                7 data member insertions:
                  'PtrDataTable Engine::m_targetptr_set', at offset 0xd0 (in bytes) at offload_engine.h:630:1
                  'StreamMap Engine::m_stream_map', at offset 0x180 (in bytes) at offload_engine.h:637:1
@@ -1370,20 +1366,16 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
                        underlying type 'class std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' at stl_tree.h:357:1 changed:
                          type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' to 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >'
                          type size hasn't changed
-
                          1 data member change:
                           type of 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' changed:
                             entity changed from 'struct std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to compatible type 'typedef std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type' at stl_set.h:115:1
                               type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >'
                               type size hasn't changed
-
                               1 base class deletion:
                                 class std::allocator<std::_Rb_tree_node<PtrData> > at allocator.h:95:1
                               2 data member deletions:
                                 'std::_Rb_tree_node_base std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_header', at offset 0x8 (in bytes) at stl_tree.h:593:1
-
                                 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::size_type std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_node_count', at offset 0x28 (in bytes) at stl_tree.h:594:1
-
                               1 data member change:
                                type of 'std::less<PtrData> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_key_compare' changed:
                                  type name changed from 'std::less<PtrData>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>'
diff --git a/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt b/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt
index c9cb9246..306a9863 100644
--- a/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt
+++ b/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt
@@ -116,7 +116,6 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
           '__anonymous_enum__1::c_report_state_stream' value '142'
           '__anonymous_enum__1::c_report_stream' value '143'
           '__anonymous_enum__1::c_unload_library' value '144'
-
         92 enumerator changes:
           '__anonymous_enum__::c_process_get_func_handles' from value '32' to '33'
           '__anonymous_enum__::c_process_wait_shutdown' from value '33' to '34'
@@ -220,7 +219,6 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
          type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} VarDesc::flags' changed:
            type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags'
            type size hasn't changed
-
            1 data member changes (1 filtered):
             anonymous data member at offset 0 (in bits) changed from:
               struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}
@@ -235,7 +233,6 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
         entity changed from 'struct InitTableEntry' to compatible type 'typedef InitTableEntry'
           type name changed from 'InitTableEntry' to '__anonymous_struct__2'
           type size hasn't changed
-
           1 data member change:
            type of 'void ()* InitTableEntry::func' changed:
              in pointed to type 'function type void ()':
@@ -264,7 +261,6 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
                type size changed from 2752 to 5504 (in bits)
                1 data member deletion:
                  'mutex_t Engine::m_ptr_lock', at offset 1344 (in bits)
-
                7 data member insertions:
                  'PtrDataTable Engine::m_targetptr_set', at offset 1664 (in bits)
                  'StreamMap Engine::m_stream_map', at offset 3072 (in bits)
@@ -286,20 +282,16 @@  Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen
                        underlying type 'class std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' changed:
                          type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >' to 'std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >'
                          type size hasn't changed
-
                          1 data member change:
                           type of 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_M_impl' changed:
                             entity changed from 'struct std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to compatible type 'typedef std::set<PtrData, std::less<PtrData>, std::allocator<PtrData> >::_Rep_type'
                               type name changed from 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >'
                               type size hasn't changed
-
                               1 base class deletion:
                                 class std::allocator<std::_Rb_tree_node<PtrData> >
                               2 data member deletions:
                                 'std::_Rb_tree_node_base std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_header', at offset 64 (in bits)
-
                                 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::size_type std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_node_count', at offset 320 (in bits)
-
                               1 data member change:
                                type of 'std::less<PtrData> std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>::_M_key_compare' changed:
                                  type name changed from 'std::less<PtrData>' to 'std::_Rb_tree<PtrData, PtrData, std::_Identity<PtrData>, std::less<PtrData>, std::allocator<PtrData> >::_Rb_tree_impl<std::less<PtrData>, true>'
diff --git a/tests/data/test-diff-filter/test36-report-0.txt b/tests/data/test-diff-filter/test36-report-0.txt
index 08692c1e..22e614d8 100644
--- a/tests/data/test-diff-filter/test36-report-0.txt
+++ b/tests/data/test-diff-filter/test36-report-0.txt
@@ -13,7 +13,6 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
            type size hasn't changed
 
 
-
   [C] 'function int foo_2(S*)' at test36-2-v1.c:13:1 has some indirect sub-type changes:
     parameter 1 of type 'S*' has sub-type changes:
       in pointed to type 'struct S' at test36-2-v1.c:6:1:
@@ -23,11 +22,9 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
            type name changed from 'int' to 'unsigned int'
            type size hasn't changed
 
-
          type of 'int S::m1' changed:
            type name changed from 'int' to 'unsigned int'
            type size hasn't changed
 
 
 
-
diff --git a/tests/data/test-diff-filter/test42-leaf-report-output-0.txt b/tests/data/test-diff-filter/test42-leaf-report-output-0.txt
index 94a0551d..d40a1374 100644
--- a/tests/data/test-diff-filter/test42-leaf-report-output-0.txt
+++ b/tests/data/test-diff-filter/test42-leaf-report-output-0.txt
@@ -7,6 +7,5 @@  Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
   type size changed from 32 to 64 (in bits)
   1 data member insertion:
     'char leaf::m1', at offset 32 (in bits) at test42-leaf-report-v1.cc:7:1
-
   one impacted interface:
     function void fn(C&)
diff --git a/tests/data/test-diff-filter/test7-report.txt b/tests/data/test-diff-filter/test7-report.txt
index 7e3a4d47..26933033 100644
--- a/tests/data/test-diff-filter/test7-report.txt
+++ b/tests/data/test-diff-filter/test7-report.txt
@@ -7,7 +7,6 @@  Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
     return type changed:
       type name changed from 'return_type' to 'other_return_type'
       type size hasn't changed
-
       no data member change (1 filtered);
 
 
diff --git a/tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt b/tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt
index 05d6fcad..873a84cd 100644
--- a/tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt
+++ b/tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt
@@ -54,9 +54,7 @@ 
                                                   struct std::__detail::_List_node_base
                                                 2 data member deletions:
                                                   'std::__detail::_List_node_base* std::__detail::_List_node_base::_M_next', at offset 0 (in bits)
-
                                                   'std::__detail::_List_node_base* std::__detail::_List_node_base::_M_prev', at offset 64 (in bits)
-
                                                 1 data member insertion:
                                                   'unsigned long int std::_List_node<long unsigned int>::_M_data', at offset 128 (in bits)
                                               and name of 'std::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl::_M_node' changed to 'std::__cxx11::_List_base<sigc::internal::trackable_callback, std::allocator<sigc::internal::trackable_callback> >::_List_impl::_M_node'
diff --git a/tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt b/tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt
index c227fa5c..a0cc67c2 100644
--- a/tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt
+++ b/tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt
@@ -10,7 +10,6 @@ 
           type size hasn't changed
           1 enumerator insertion:
             '__anonymous_enum__1::SEC_OID_TLS_ECDHE_PSK' value '347'
-
           1 enumerator change:
             '__anonymous_enum__1::SEC_OID_TOTAL' from value '347' to '348' at secoidt.h:34:1
 
@@ -34,7 +33,6 @@ 
           type size hasn't changed
           1 enumerator insertion:
             '__anonymous_enum__1::ssl_kea_ecdh_psk' value '5'
-
           1 enumerator change:
             '__anonymous_enum__::ssl_kea_size' from value '5' to '6' at s