v2: More code simplification. Tests unchanged.
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
A lot of passing of "new line needed" booleans between functions has
been eliminated in the process.
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 type_decl_diff,
enum_diff, array_diff, class_diff, union_diff and var_diff
overrides, simplify new line logic which no longer needs to be
threaded through report_name_size_and_alignment_changes. In
the distinct_diff override, simplify new line logic which no
longer needs to be threaded through
report_size_and_alignment_changes. In the enum_diff override,
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,
class_diff, union_diff and var_diff overrides, simplify new
line logic which no longer needs to be threaded through
report_name_size_and_alignment_changes. In the distinct_diff
override, simplify new line logic which no longer needs to be
threaded through report_size_and_alignment_changes. 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.
In the corpus_diff override, tabify source indentation.
* 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 and replace local bool n with argument bool nl for
clarity.
(report_size_and_alignment_changes): Remove bool nl argument
and associated code as it had become always false; take
responsibility for emitting terminating new lines and change
return type to void.
(report_name_size_and_alignment_changes): Fix new line logic;
remove bool nl argument and associated code as it had become
always false; take responsibility for emitting terminating new
lines and change return type to void.
(maybe_report_interfaces_impacted_by_diff) In both overrides,
remove new line prefix code and new_line_prefix argument.
* src/abg-reporter-priv.h (represent_data_member): Add indent
argument.
(report_size_and_alignment_changes) Remove bool nl argument;
change return type to void.
(report_name_size_and_alignment_changes) Remove bool nl
argument; change return type to void.
(maybe_report_interfaces_impacted_by_diff) In both overrides,
remove new_line_prefix argument.
* tests/data/test-*/*report*.txt: Remove some blank lines.
Signed-off-by: Giuliano Procida <gprocida@google.com>
string name = f->get_pretty_representation();
- bool n = report_name_size_and_alignment_changes(f, s, d.context(),
- out, indent,
- /*new line=*/false);
+ report_name_size_and_alignment_changes(f, s, d.context(),
+ out, indent);
if (f->get_visibility() != s->get_visibility())
{
- if (n)
- out << "\n";
out << indent
<< "visibility changed from '"
- << f->get_visibility() << "' to '" << s->get_visibility();
- n = true;
+ << f->get_visibility() << "' to '" << s->get_visibility()
+ << "\n";
}
if (f->get_linkage_name() != s->get_linkage_name())
{
- if (n)
- out << "\n";
out << indent
<< "mangled name changed from '"
<< f->get_linkage_name() << "' to "
- << s->get_linkage_name();
- n = true;
+ << s->get_linkage_name()
+ << "\n";
}
-
- if (n)
- out << "\n";
}
/// Report the differences between the two enums.
enum_type_decl_sptr first = d.first_enum(), second = d.second_enum();
- if (report_name_size_and_alignment_changes(first, second, d.context(),
- out, indent,
- /*start_with_num_line=*/false))
- out << "\n";
+ report_name_size_and_alignment_changes(first, second, d.context(),
+ out, indent);
maybe_report_diff_for_member(first, second, d.context(), out, indent);
//underlying type
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)
{
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)
{
i != sorted_changed_enumerators.end();
++i)
{
- if (i != sorted_changed_enumerators.begin())
- out << "\n";
out << indent
<< " '"
<< i->first.get_qualified_name()
<< 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);
}
: 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 + " ");
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);
+ out, indent);
}
/// Generates a report for an intance of @ref base_diff.
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)
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
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 + " ");
}
}
class_decl_sptr first = d.first_class_decl(),
second = d.second_class_decl();
- if (report_name_size_and_alignment_changes(first, second, d.context(),
- out, indent,
- /*start_with_new_line=*/false))
- out << "\n";
+ report_name_size_and_alignment_changes(first, second, d.context(),
+ out, indent);
const diff_context_sptr& ctxt = d.context();
maybe_report_diff_for_member(first, second, ctxt, out, indent);
// Now report the changes about the differents parts of the type.
union_decl_sptr first = d.first_union_decl(), second = d.second_union_decl();
- if (report_name_size_and_alignment_changes(first, second, d.context(),
- out, indent,
- /*start_with_new_line=*/false))
- out << "\n";
+ report_name_size_and_alignment_changes(first, second, d.context(),
+ out, indent);
maybe_report_diff_for_member(first, second,d. context(), out, indent);
if (diff)
diff->report(out, indent + " ");
else
- if (report_size_and_alignment_changes(f, s, d.context(), out, indent,
- /*start_with_new_line=*/false))
- out << "\n";
+ report_size_and_alignment_changes(f, s, d.context(), out, indent);
}
/// Serialize a report of the changes encapsulated in the current
decl_base_sptr first = d.first_var(), second = d.second_var();
string n = first->get_pretty_representation();
- if (report_name_size_and_alignment_changes(first, second,
- d.context(),
- out, indent,
- /*start_with_new_line=*/false))
- out << "\n";
+ report_name_size_and_alignment_changes(first, second,
+ d.context(),
+ out, indent);
maybe_report_diff_for_symbol(d.first_var()->get_symbol(),
d.second_var()->get_symbol(),
string n = (*i)->first_subject()->get_pretty_representation();
- out << indent << "'" << n ;
+ out << indent << "'" << n;
report_loc_info((*i)->first_subject(),
*(*i)->context(), out);
report_name_size_and_alignment_changes(d.first_array(),
d.second_array(),
d.context(),
- out, indent,
- /*new line=*/false);
+ out, indent);
diff_sptr dif = d.element_type_diff();
if (diff_to_be_reported(dif.get()))
dif->report(out, indent + " ");
}
- report_loc_info(d.second_array(), *d.context(), out);
-
maybe_report_interfaces_impacted_by_diff(&d, out, indent);
}
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)
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
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 + " ");
}
}
class_decl_sptr first = d.first_class_decl(),
second = d.second_class_decl();
- if (report_name_size_and_alignment_changes(first, second, d.context(),
- out, indent,
- /*start_with_new_line=*/false))
- out << "\n";
+ report_name_size_and_alignment_changes(first, second, d.context(),
+ out, indent);
const diff_context_sptr& ctxt = d.context();
maybe_report_diff_for_member(first, second, ctxt, out, indent);
// Now report the changes about the differents parts of the type.
union_decl_sptr first = d.first_union_decl(), second = d.second_union_decl();
- if (report_name_size_and_alignment_changes(first, second, d.context(),
- out, indent,
- /*start_with_new_line=*/false))
- out << "\n";
+ report_name_size_and_alignment_changes(first, second, d.context(),
+ out, indent);
maybe_report_diff_for_member(first, second,d. context(), out, indent);
report_loc_info(s, *d.context(), out);
out << "\n";
- if (report_size_and_alignment_changes(f, s, d.context(), out, indent,
- /*start_with_new_line=*/false))
- out << "\n";
-
+ report_size_and_alignment_changes(f, s, d.context(), out, indent);
maybe_report_interfaces_impacted_by_diff(&d, out, indent);
}
decl_base_sptr first = d.first_var(), second = d.second_var();
string n = first->get_pretty_representation();
- if (report_name_size_and_alignment_changes(first, second,
- d.context(),
- out, indent,
- /*start_with_new_line=*/false))
- out << "\n";
+ report_name_size_and_alignment_changes(first, second,
+ d.context(),
+ out, indent);
maybe_report_diff_for_symbol(d.first_var()->get_symbol(),
d.second_var()->get_symbol(),
if (ctxt->show_added_fns())
{
if (s.net_num_func_added() == 1)
- out << indent << "1 Added function:\n\n";
+ out << indent << "1 Added function:\n\n";
else if (s.net_num_func_added() > 1)
- out << indent << s.net_num_func_added()
- << " Added functions:\n\n";
+ out << indent << s.net_num_func_added()
+ << " Added functions:\n\n";
bool emitted = false;
vector<function_decl*> sorted_added_fns;
sort_string_function_ptr_map(d.priv_->added_fns_, sorted_added_fns);
for (vector<function_decl*>::const_iterator i = sorted_added_fns.begin();
- i != sorted_added_fns.end();
- ++i)
- {
- if (d.priv_->added_function_is_suppressed(*i))
- continue;
-
- out
- << indent
- << " ";
- out << "[A] ";
- out << "'"
- << (*i)->get_pretty_representation()
- << "'";
- if (ctxt->show_linkage_names())
- {
- out << " {";
- show_linkage_name_and_aliases
- (out, "", *(*i)->get_symbol(),
- d.second_corpus()->get_fun_symbol_map());
- out << "}";
- }
- out << "\n";
- if (is_member_function(*i) && get_member_function_is_virtual(*i))
- {
- class_decl_sptr c =
- is_class_type(is_method_type((*i)->get_type())->get_class_type());
- out << indent
- << " "
- << "note that this adds a new entry to the vtable of "
- << c->get_pretty_representation()
- << "\n";
- }
- emitted = true;
- }
+ i != sorted_added_fns.end();
+ ++i)
+ {
+ if (d.priv_->added_function_is_suppressed(*i))
+ continue;
+
+ out
+ << indent
+ << " ";
+ out << "[A] ";
+ out << "'"
+ << (*i)->get_pretty_representation()
+ << "'";
+ if (ctxt->show_linkage_names())
+ {
+ out << " {";
+ show_linkage_name_and_aliases
+ (out, "", *(*i)->get_symbol(),
+ d.second_corpus()->get_fun_symbol_map());
+ out << "}";
+ }
+ out << "\n";
+ if (is_member_function(*i) && get_member_function_is_virtual(*i))
+ {
+ class_decl_sptr c =
+ is_class_type(is_method_type((*i)->get_type())->get_class_type());
+ out << indent
+ << " "
+ << "note that this adds a new entry to the vtable of "
+ << c->get_pretty_representation()
+ << "\n";
+ }
+ emitted = true;
+ }
if (emitted)
- out << "\n";
+ out << "\n";
}
if (ctxt->show_changed_fns())
emitted = true;
}
if (emitted)
- out << "\n";
+ out << "\n";
}
if (ctxt->show_added_vars())
continue;
if (!diff_to_be_reported(diff.get()))
- continue;
+ continue;
n1 = diff->first_subject()->get_pretty_representation();
n2 = diff->second_subject()->get_pretty_representation();
out << ":\n";
diff->report(out, indent + " ");
out << "\n";
- emitted = true;
+ emitted = true;
}
if (emitted)
out << "\n";
show_linkage_name_and_aliases(out, "", **i,
d.first_corpus()->get_fun_symbol_map());
out << "\n";
- emitted = true;
+ emitted = true;
}
if (emitted)
out << "\n";
**i,
d.second_corpus()->get_fun_symbol_map());
out << "\n";
- emitted = true;
+ emitted = true;
}
if (emitted)
out << "\n";
d.first_corpus()->get_fun_symbol_map());
out << "\n";
- emitted = true;
+ emitted = true;
}
if (emitted)
out << "\n";
show_linkage_name_and_aliases(out, "", **i,
d.second_corpus()->get_fun_symbol_map());
out << "\n";
- emitted = true;
+ emitted = true;
}
if (emitted)
out << "\n";
/// @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
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
out << indent << "while looking at anonymous data member '"
<< tr1 << "':\n"
<< indent << "the internal name of that anonymous data member"
- "changed from:\n"
+ "changed from:\n"
<< indent << " " << get_type_name(o->get_type()) << "\n"
<< indent << "to:\n"
<< indent << " " << get_type_name(n->get_type()) << "\n"
/// @param out the output stream to report the change to.
///
/// @param indent the string to use for indentation.
-///
-/// @param nl whether to start the first report line with a new line.
-///
-/// @return true iff something was reported.
-bool
+void
report_size_and_alignment_changes(type_or_decl_base_sptr first,
type_or_decl_base_sptr second,
diff_context_sptr ctxt,
ostream& out,
- const string& indent,
- bool nl)
+ const string& indent)
{
type_base_sptr f = dynamic_pointer_cast<type_base>(first),
s = dynamic_pointer_cast<type_base>(second);
if (!s || !f)
- return false;
+ return;
class_or_union_sptr first_class = is_class_or_union_type(first),
second_class = is_class_or_union_type(second);
// declaration-only form of the second. And the user asked that
// this kind of change be filtered out, so do not report any size
// change due to this.
- return false;
+ return;
- bool n = false;
unsigned fs = f->get_size_in_bits(), ss = s->get_size_in_bits(),
fa = f->get_alignment_in_bits(), sa = s->get_alignment_in_bits();
array_type_def_sptr first_array = is_array_type(is_type(first)),
unsigned fdc = first_array ? first_array->get_dimension_count(): 0,
sdc = second_array ? second_array->get_dimension_count(): 0;
- if (nl)
- out << "\n";
-
if (ctxt->get_allowed_category() & SIZE_OR_OFFSET_CHANGE_CATEGORY)
{
if (fs != ss || fdc != sdc)
{
out << indent;
show_numerical_change("type size", fs, ss, *ctxt, out);
- n = true;
+ out << "\n";
}
} // 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";
+ }
}
if ((ctxt->get_allowed_category() & SIZE_OR_OFFSET_CHANGE_CATEGORY)
&& (fa != sa))
{
- if (n)
- out << "\n";
out << indent;
show_numerical_change("type alignment", fa, sa, *ctxt, out,
/*show_bits_or_bytes=*/false);
- n = true;
+ out << "\n";
}
-
- if (n)
- return true;
- return false;
}
/// @param tod the type or declaration to emit loc info about
/// @param out the output stream to report the change to.
///
/// @param indent the string to use for indentation.
-///
-/// @param nl whether to start the first report line with a new line.
-///
-/// @return true iff something was reported.
-bool
+void
report_name_size_and_alignment_changes(decl_base_sptr first,
decl_base_sptr second,
diff_context_sptr ctxt,
- ostream& out,
- const string& indent,
- bool nl)
+ ostream& out,
+ const string& indent)
{
string fn = first->get_qualified_name(),
sn = second->get_qualified_name();
;
else
{
- if (nl)
- out << "\n";
out << indent;
if (is_type(first))
out << "type";
else
out << "declaration";
out << " name changed from '" << fn << "' to '" << sn << "'";
- nl = true;
+ out << "\n";
}
}
- nl |= report_size_and_alignment_changes(first, second, ctxt,
- out, indent, nl);
- return nl;
+ report_size_and_alignment_changes(first, second, ctxt, out, indent);
}
/// Output the header preceding the the report for
/// @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();
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";
/// @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,
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,
const string& indent = "",
bool local_only = false);
-bool
+void
report_size_and_alignment_changes(type_or_decl_base_sptr first,
type_or_decl_base_sptr second,
diff_context_sptr ctxt,
ostream& out,
- const string& indent,
- bool nl);
+ const string& indent);
bool
report_loc_info(const type_or_decl_base_sptr& tod,
const diff_context& ctxt,
ostream &out);
-bool
+void
report_name_size_and_alignment_changes(decl_base_sptr first,
decl_base_sptr second,
diff_context_sptr ctxt,
ostream& out,
- const string& indent,
- bool nl);
+ const string& indent);
/// Represent the kind of difference we want report_mem_header() to
/// report.
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
1 data member deletion:
'unsigned char S1::m1', at offset 32 (in bits)
-
1 data member deletion:
'unsigned char S1::m1', at offset 32 (in bits) at test5-fn-changed-libapp-v0.h:11:1
-
1 data member deletion:
'unsigned char S1::m1', at offset 32 (in bits)
-
1 data member deletion:
'unsigned char S1::m1', at offset 32 (in bits) at test6-var-changed-libapp-v0.h:11:1
-
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':
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'
type size hasn't changed
-
type size hasn't changed
-
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'
type size hasn't changed
1 enumerator deletion:
'E::e2' value '1'
-
1 enumerator insertion:
'E::e1' value '1'
type size hasn't changed
1 enumerator insertion:
'E::e1' value '1'
-
1 enumerator change:
'E::e2' from value '1' to '2'
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:
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'
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)
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
'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'
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'
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)
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:
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)
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':
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:
'char m2', at offset 8 (in bits)
-
'unsigned int S::m', at offset 0 (in bits)
-
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
-
'__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'
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;}
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 ()':
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)
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>'
'__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
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;}
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 ()':
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
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>'
'__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
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;}
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 ()':
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
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>'
'__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'
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;}
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 ()':
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)
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>'
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:
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
-
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&)
return type changed:
type name changed from 'return_type' to 'other_return_type'
type size hasn't changed
-
no data member change (1 filtered);
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'
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
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
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'
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
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'
'__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'
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'
'__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'
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:
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
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'
'__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'
'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'
'__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'
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)
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
-
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
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:
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
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
-
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&)
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&)
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&)
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
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