libabigail/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7....

715 lines
64 KiB
Plaintext
Raw Normal View History

Fix suppression category propagation in diff node graph Under certain circumstances, a diff node (which we shall name N) that belongs to the SUPPRESSED_CATEGORY category sees its belonging to that category been propagated to its parent diff node, effectively suppressing that parent diff node as well. This is how some function diff nodes ends up being suppressed just because some of their children diff nodes were suppressed. This suppression category propagation is performed by a pass that walks the diff nodes graph. To avoid infinite cycles, the pass avoids visiting a diff node that is equivalent to a node that has already been visited. As a result, diff nodes equivalent to N (the class of equivalence of N) are not traversed by the propagation pass. So their parent diff nodes are not suppressed. This leads to some functions not being suppressed as they should. This phenomenon can be observed by comparing the two packages that are provided in the regression test accompanying this patch using abipkgdiff with the --redundant option. Here is how the patch addresses the issue. When the suppression category propagation pass considers a parent diff node (named P) of a node N' (with N' being equivalent to N), it now looks at the category of the *class of equivalence of N'* to determine if that category should be propagated to P. Previously, that pass would just look at the at the category of N' (not the category of the class of equivalence of N') for the propagation. But as N' has not been visited (because N has already been visited and nodes equivalent to N are thus not visited) the belonging of N' to the SUPPRESSED_CATEGORY hasn't been updated. So N' isn't marked as being in SUPPRESSED_CATEGORY. So the SUPPRESSED_CATEGORY wouldn't be propagated to P as it should. So, with this patch abipkgdiff invoked with the --redundant option now correctly yields: $ abipkgdiff --redundant --d1 spice-debuginfo-0.12.4-19.el7.x86_64.rpm --d2 spice-debuginfo-0.12.8-1.el7.x86_64.rpm --devel1 spice-server-devel-0.12.4-19.el7.x86_64.rpm --devel2 spice-server-devel-0.12.8-1.el7.x86_64.rpm spice-server-0.12.4-19.el7.x86_64.rpm spice-server-0.12.8-1.el7.x86_64.rpm ================ changes of 'libspice-server.so.1.8.0'=============== Functions changes summary: 1 Removed, 2 Changed (62 filtered out), 8 Added functions Variables changes summary: 0 Removed, 0 Changed, 0 Added variable [...] 2 functions with some indirect sub-type change: [C]'function spice_image_compression_t spice_server_get_image_compression(SpiceServer*)' at reds.c:3618:1 has some indirect sub-type changes: return type changed: underlying type 'enum __anonymous_enum__' changed: type size hasn't changed 7 enumerator deletions: '__anonymous_enum__::SPICE_IMAGE_COMPRESS_INVALID' value '0' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_OFF' value '1' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_GLZ' value '2' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_LZ' value '3' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_QUIC' value '4' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_GLZ' value '5' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_LZ' value '6' 9 enumerator insertions: 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_GLZ' value '2' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_LZ' value '3' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_QUIC' value '4' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_GLZ' value '5' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ' value '6' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ4' value '7' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_ENUM_END' value '8' [C]'function int spice_server_set_image_compression(SpiceServer*, spice_image_compression_t)' at reds.c:3602:1 has some indirect sub-type changes: parameter 2 of type 'typedef spice_image_compression_t' changed: underlying type 'enum __anonymous_enum__' changed: type size hasn't changed 7 enumerator deletions: '__anonymous_enum__::SPICE_IMAGE_COMPRESS_INVALID' value '0' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_OFF' value '1' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_GLZ' value '2' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_LZ' value '3' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_QUIC' value '4' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_GLZ' value '5' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_LZ' value '6' 9 enumerator insertions: 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_GLZ' value '2' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_LZ' value '3' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_QUIC' value '4' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_GLZ' value '5' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ' value '6' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ4' value '7' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_ENUM_END' value '8' ================ end of changes of 'libspice-server.so.1.8.0'=============== $ * include/abg-comparison.h (diff::get_class_of_equiv_category): Declare new member function. * src/abg-comparison.cc: Update copyright year. (diff::get_class_of_equiv_category): Define new member function. (suppression_categorization_visitor::visit_end): When considering children nodes category for propagation, consider the category of the class of equivalence of children nodes. * spice-debuginfo-0.12.4-19.el7.x86_64.rpm: New input test package. * spice-debuginfo-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-0.12.4-19.el7.x86_64.rpm: Likewise. * spice-server-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-devel-0.12.4-19.el7.x86_64.rpm: Likewise. * spice-server-devel-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: New reference test output. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Likewise. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise. * tests/data/Makefile.am: Add the new test material above to source distribution. * tests/test-diff-pkg.cc (in_out_specs): Add the new test inputs to the list of packages to test. Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2017-01-20 09:28:29 +00:00
================ changes of 'libspice-server.so.1.8.0'===============
Fix interaction of --redundant and --leaf-changes-only options. The --redundant (meaning show-redundant-changes) option is supposed to be implied by --leaf-changes-only and this is currently implemented by making diff_context's --leaf-changes-only setter also duplicate the behaviour of its --redundant setter. In both abidiff and abipkgdiff, the diff_context setters are called unconditionally, but the relative order of the calls for these two options is different in each case, resulting in two different issues. In abidiff, the --redundant setter is called second, undoing the intended side-effect of any --leaf-changes-only flag. So --redundant is not actually turned on in --leaf-changes-only mode unless requested explicitly. In abipkgdiff, the leaf-changes-only setter is called second, undoing (in non-leaf mode) the effect of any --redundant flag. So --redundant has no effect in default reporting mode. The fix is move to move the "--leaf-changes-only implies --redundant" logic from the setter to the set_diff_context_from_opts functions. This patch also documents the implied behaviour in the usage strings. * src/abg-comparison.cc (diff_context::show_leaf_changes_only): Remove "--leaf-changes-only implies --redundant" logic. * tools/abidiff.cc (display_usage): Mention that --leaf-changes-only implies --redundant. (set_diff_context_from_opts): Make --leaf-changes-only imply --redundant; document this behaviour in a comment. * tools/abipkgdiff.cc: Ditto. * tests/data/Makefile.am: Add new test case files. * tests/data/test-abidiff-exit/test-leaf3-report.txt: Add new test case, to show --leaf-changes-only implies --redundant. * tests/data/test-abidiff-exit/test-leaf3-v0.c: Ditto. * tests/data/test-abidiff-exit/test-leaf3-v0.o: Ditto. * tests/data/test-abidiff-exit/test-leaf3-v1.c: Ditto. * tests/data/test-abidiff-exit/test-leaf3-v1.o: Ditto. * tests/test-abidiff-exit.cc: Run new test case. * tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt: Update abipkgdiff report with --redundant output. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Ditto. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Ditto. Signed-off-by: Giuliano Procida <gprocida@google.com>
2020-03-12 06:30:32 +00:00
Functions changes summary: 1 Removed, 79 Changed, 8 Added functions
Fix suppression category propagation in diff node graph Under certain circumstances, a diff node (which we shall name N) that belongs to the SUPPRESSED_CATEGORY category sees its belonging to that category been propagated to its parent diff node, effectively suppressing that parent diff node as well. This is how some function diff nodes ends up being suppressed just because some of their children diff nodes were suppressed. This suppression category propagation is performed by a pass that walks the diff nodes graph. To avoid infinite cycles, the pass avoids visiting a diff node that is equivalent to a node that has already been visited. As a result, diff nodes equivalent to N (the class of equivalence of N) are not traversed by the propagation pass. So their parent diff nodes are not suppressed. This leads to some functions not being suppressed as they should. This phenomenon can be observed by comparing the two packages that are provided in the regression test accompanying this patch using abipkgdiff with the --redundant option. Here is how the patch addresses the issue. When the suppression category propagation pass considers a parent diff node (named P) of a node N' (with N' being equivalent to N), it now looks at the category of the *class of equivalence of N'* to determine if that category should be propagated to P. Previously, that pass would just look at the at the category of N' (not the category of the class of equivalence of N') for the propagation. But as N' has not been visited (because N has already been visited and nodes equivalent to N are thus not visited) the belonging of N' to the SUPPRESSED_CATEGORY hasn't been updated. So N' isn't marked as being in SUPPRESSED_CATEGORY. So the SUPPRESSED_CATEGORY wouldn't be propagated to P as it should. So, with this patch abipkgdiff invoked with the --redundant option now correctly yields: $ abipkgdiff --redundant --d1 spice-debuginfo-0.12.4-19.el7.x86_64.rpm --d2 spice-debuginfo-0.12.8-1.el7.x86_64.rpm --devel1 spice-server-devel-0.12.4-19.el7.x86_64.rpm --devel2 spice-server-devel-0.12.8-1.el7.x86_64.rpm spice-server-0.12.4-19.el7.x86_64.rpm spice-server-0.12.8-1.el7.x86_64.rpm ================ changes of 'libspice-server.so.1.8.0'=============== Functions changes summary: 1 Removed, 2 Changed (62 filtered out), 8 Added functions Variables changes summary: 0 Removed, 0 Changed, 0 Added variable [...] 2 functions with some indirect sub-type change: [C]'function spice_image_compression_t spice_server_get_image_compression(SpiceServer*)' at reds.c:3618:1 has some indirect sub-type changes: return type changed: underlying type 'enum __anonymous_enum__' changed: type size hasn't changed 7 enumerator deletions: '__anonymous_enum__::SPICE_IMAGE_COMPRESS_INVALID' value '0' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_OFF' value '1' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_GLZ' value '2' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_LZ' value '3' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_QUIC' value '4' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_GLZ' value '5' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_LZ' value '6' 9 enumerator insertions: 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_GLZ' value '2' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_LZ' value '3' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_QUIC' value '4' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_GLZ' value '5' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ' value '6' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ4' value '7' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_ENUM_END' value '8' [C]'function int spice_server_set_image_compression(SpiceServer*, spice_image_compression_t)' at reds.c:3602:1 has some indirect sub-type changes: parameter 2 of type 'typedef spice_image_compression_t' changed: underlying type 'enum __anonymous_enum__' changed: type size hasn't changed 7 enumerator deletions: '__anonymous_enum__::SPICE_IMAGE_COMPRESS_INVALID' value '0' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_OFF' value '1' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_GLZ' value '2' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_LZ' value '3' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_QUIC' value '4' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_GLZ' value '5' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_LZ' value '6' 9 enumerator insertions: 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_GLZ' value '2' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_LZ' value '3' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_QUIC' value '4' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_GLZ' value '5' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ' value '6' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ4' value '7' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_ENUM_END' value '8' ================ end of changes of 'libspice-server.so.1.8.0'=============== $ * include/abg-comparison.h (diff::get_class_of_equiv_category): Declare new member function. * src/abg-comparison.cc: Update copyright year. (diff::get_class_of_equiv_category): Define new member function. (suppression_categorization_visitor::visit_end): When considering children nodes category for propagation, consider the category of the class of equivalence of children nodes. * spice-debuginfo-0.12.4-19.el7.x86_64.rpm: New input test package. * spice-debuginfo-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-0.12.4-19.el7.x86_64.rpm: Likewise. * spice-server-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-devel-0.12.4-19.el7.x86_64.rpm: Likewise. * spice-server-devel-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: New reference test output. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Likewise. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise. * tests/data/Makefile.am: Add the new test material above to source distribution. * tests/test-diff-pkg.cc (in_out_specs): Add the new test inputs to the list of packages to test. Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2017-01-20 09:28:29 +00:00
Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
1 Removed function:
[D] 'function int spice_server_migrate_client_state(SpiceServer*)' {spice_server_migrate_client_state@@SPICE_SERVER_0.6.0}
Fix suppression category propagation in diff node graph Under certain circumstances, a diff node (which we shall name N) that belongs to the SUPPRESSED_CATEGORY category sees its belonging to that category been propagated to its parent diff node, effectively suppressing that parent diff node as well. This is how some function diff nodes ends up being suppressed just because some of their children diff nodes were suppressed. This suppression category propagation is performed by a pass that walks the diff nodes graph. To avoid infinite cycles, the pass avoids visiting a diff node that is equivalent to a node that has already been visited. As a result, diff nodes equivalent to N (the class of equivalence of N) are not traversed by the propagation pass. So their parent diff nodes are not suppressed. This leads to some functions not being suppressed as they should. This phenomenon can be observed by comparing the two packages that are provided in the regression test accompanying this patch using abipkgdiff with the --redundant option. Here is how the patch addresses the issue. When the suppression category propagation pass considers a parent diff node (named P) of a node N' (with N' being equivalent to N), it now looks at the category of the *class of equivalence of N'* to determine if that category should be propagated to P. Previously, that pass would just look at the at the category of N' (not the category of the class of equivalence of N') for the propagation. But as N' has not been visited (because N has already been visited and nodes equivalent to N are thus not visited) the belonging of N' to the SUPPRESSED_CATEGORY hasn't been updated. So N' isn't marked as being in SUPPRESSED_CATEGORY. So the SUPPRESSED_CATEGORY wouldn't be propagated to P as it should. So, with this patch abipkgdiff invoked with the --redundant option now correctly yields: $ abipkgdiff --redundant --d1 spice-debuginfo-0.12.4-19.el7.x86_64.rpm --d2 spice-debuginfo-0.12.8-1.el7.x86_64.rpm --devel1 spice-server-devel-0.12.4-19.el7.x86_64.rpm --devel2 spice-server-devel-0.12.8-1.el7.x86_64.rpm spice-server-0.12.4-19.el7.x86_64.rpm spice-server-0.12.8-1.el7.x86_64.rpm ================ changes of 'libspice-server.so.1.8.0'=============== Functions changes summary: 1 Removed, 2 Changed (62 filtered out), 8 Added functions Variables changes summary: 0 Removed, 0 Changed, 0 Added variable [...] 2 functions with some indirect sub-type change: [C]'function spice_image_compression_t spice_server_get_image_compression(SpiceServer*)' at reds.c:3618:1 has some indirect sub-type changes: return type changed: underlying type 'enum __anonymous_enum__' changed: type size hasn't changed 7 enumerator deletions: '__anonymous_enum__::SPICE_IMAGE_COMPRESS_INVALID' value '0' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_OFF' value '1' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_GLZ' value '2' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_LZ' value '3' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_QUIC' value '4' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_GLZ' value '5' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_LZ' value '6' 9 enumerator insertions: 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_GLZ' value '2' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_LZ' value '3' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_QUIC' value '4' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_GLZ' value '5' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ' value '6' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ4' value '7' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_ENUM_END' value '8' [C]'function int spice_server_set_image_compression(SpiceServer*, spice_image_compression_t)' at reds.c:3602:1 has some indirect sub-type changes: parameter 2 of type 'typedef spice_image_compression_t' changed: underlying type 'enum __anonymous_enum__' changed: type size hasn't changed 7 enumerator deletions: '__anonymous_enum__::SPICE_IMAGE_COMPRESS_INVALID' value '0' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_OFF' value '1' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_GLZ' value '2' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_LZ' value '3' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_QUIC' value '4' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_GLZ' value '5' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_LZ' value '6' 9 enumerator insertions: 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_GLZ' value '2' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_LZ' value '3' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_QUIC' value '4' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_GLZ' value '5' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ' value '6' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ4' value '7' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_ENUM_END' value '8' ================ end of changes of 'libspice-server.so.1.8.0'=============== $ * include/abg-comparison.h (diff::get_class_of_equiv_category): Declare new member function. * src/abg-comparison.cc: Update copyright year. (diff::get_class_of_equiv_category): Define new member function. (suppression_categorization_visitor::visit_end): When considering children nodes category for propagation, consider the category of the class of equivalence of children nodes. * spice-debuginfo-0.12.4-19.el7.x86_64.rpm: New input test package. * spice-debuginfo-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-0.12.4-19.el7.x86_64.rpm: Likewise. * spice-server-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-devel-0.12.4-19.el7.x86_64.rpm: Likewise. * spice-server-devel-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: New reference test output. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Likewise. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise. * tests/data/Makefile.am: Add the new test material above to source distribution. * tests/test-diff-pkg.cc (in_out_specs): Add the new test inputs to the list of packages to test. Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2017-01-20 09:28:29 +00:00
8 Added functions:
[A] 'function void spice_replay_free(SpiceReplay*)' {spice_replay_free@@SPICE_SERVER_0.12.6}
[A] 'function void spice_replay_free_cmd(SpiceReplay*, QXLCommandExt*)' {spice_replay_free_cmd@@SPICE_SERVER_0.12.6}
[A] 'function SpiceReplay* spice_replay_new(FILE*, int)' {spice_replay_new@@SPICE_SERVER_0.12.6}
[A] 'function QXLCommandExt* spice_replay_next_cmd(SpiceReplay*, QXLWorker*)' {spice_replay_next_cmd@@SPICE_SERVER_0.12.6}
[A] 'function uint32_t spice_server_get_best_playback_rate(SpicePlaybackInstance*)' {spice_server_get_best_playback_rate@@SPICE_SERVER_0.12.5}
[A] 'function uint32_t spice_server_get_best_record_rate(SpiceRecordInstance*)' {spice_server_get_best_record_rate@@SPICE_SERVER_0.12.5}
[A] 'function void spice_server_set_playback_rate(SpicePlaybackInstance*, uint32_t)' {spice_server_set_playback_rate@@SPICE_SERVER_0.12.5}
[A] 'function void spice_server_set_record_rate(SpiceRecordInstance*, uint32_t)' {spice_server_set_record_rate@@SPICE_SERVER_0.12.5}
Fix suppression category propagation in diff node graph Under certain circumstances, a diff node (which we shall name N) that belongs to the SUPPRESSED_CATEGORY category sees its belonging to that category been propagated to its parent diff node, effectively suppressing that parent diff node as well. This is how some function diff nodes ends up being suppressed just because some of their children diff nodes were suppressed. This suppression category propagation is performed by a pass that walks the diff nodes graph. To avoid infinite cycles, the pass avoids visiting a diff node that is equivalent to a node that has already been visited. As a result, diff nodes equivalent to N (the class of equivalence of N) are not traversed by the propagation pass. So their parent diff nodes are not suppressed. This leads to some functions not being suppressed as they should. This phenomenon can be observed by comparing the two packages that are provided in the regression test accompanying this patch using abipkgdiff with the --redundant option. Here is how the patch addresses the issue. When the suppression category propagation pass considers a parent diff node (named P) of a node N' (with N' being equivalent to N), it now looks at the category of the *class of equivalence of N'* to determine if that category should be propagated to P. Previously, that pass would just look at the at the category of N' (not the category of the class of equivalence of N') for the propagation. But as N' has not been visited (because N has already been visited and nodes equivalent to N are thus not visited) the belonging of N' to the SUPPRESSED_CATEGORY hasn't been updated. So N' isn't marked as being in SUPPRESSED_CATEGORY. So the SUPPRESSED_CATEGORY wouldn't be propagated to P as it should. So, with this patch abipkgdiff invoked with the --redundant option now correctly yields: $ abipkgdiff --redundant --d1 spice-debuginfo-0.12.4-19.el7.x86_64.rpm --d2 spice-debuginfo-0.12.8-1.el7.x86_64.rpm --devel1 spice-server-devel-0.12.4-19.el7.x86_64.rpm --devel2 spice-server-devel-0.12.8-1.el7.x86_64.rpm spice-server-0.12.4-19.el7.x86_64.rpm spice-server-0.12.8-1.el7.x86_64.rpm ================ changes of 'libspice-server.so.1.8.0'=============== Functions changes summary: 1 Removed, 2 Changed (62 filtered out), 8 Added functions Variables changes summary: 0 Removed, 0 Changed, 0 Added variable [...] 2 functions with some indirect sub-type change: [C]'function spice_image_compression_t spice_server_get_image_compression(SpiceServer*)' at reds.c:3618:1 has some indirect sub-type changes: return type changed: underlying type 'enum __anonymous_enum__' changed: type size hasn't changed 7 enumerator deletions: '__anonymous_enum__::SPICE_IMAGE_COMPRESS_INVALID' value '0' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_OFF' value '1' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_GLZ' value '2' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_LZ' value '3' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_QUIC' value '4' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_GLZ' value '5' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_LZ' value '6' 9 enumerator insertions: 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_GLZ' value '2' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_LZ' value '3' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_QUIC' value '4' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_GLZ' value '5' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ' value '6' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ4' value '7' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_ENUM_END' value '8' [C]'function int spice_server_set_image_compression(SpiceServer*, spice_image_compression_t)' at reds.c:3602:1 has some indirect sub-type changes: parameter 2 of type 'typedef spice_image_compression_t' changed: underlying type 'enum __anonymous_enum__' changed: type size hasn't changed 7 enumerator deletions: '__anonymous_enum__::SPICE_IMAGE_COMPRESS_INVALID' value '0' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_OFF' value '1' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_GLZ' value '2' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_LZ' value '3' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_QUIC' value '4' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_GLZ' value '5' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_LZ' value '6' 9 enumerator insertions: 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_GLZ' value '2' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_LZ' value '3' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_QUIC' value '4' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_GLZ' value '5' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ' value '6' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ4' value '7' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_ENUM_END' value '8' ================ end of changes of 'libspice-server.so.1.8.0'=============== $ * include/abg-comparison.h (diff::get_class_of_equiv_category): Declare new member function. * src/abg-comparison.cc: Update copyright year. (diff::get_class_of_equiv_category): Define new member function. (suppression_categorization_visitor::visit_end): When considering children nodes category for propagation, consider the category of the class of equivalence of children nodes. * spice-debuginfo-0.12.4-19.el7.x86_64.rpm: New input test package. * spice-debuginfo-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-0.12.4-19.el7.x86_64.rpm: Likewise. * spice-server-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-devel-0.12.4-19.el7.x86_64.rpm: Likewise. * spice-server-devel-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: New reference test output. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Likewise. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise. * tests/data/Makefile.am: Add the new test material above to source distribution. * tests/test-diff-pkg.cc (in_out_specs): Add the new test inputs to the list of packages to test. Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2017-01-20 09:28:29 +00:00
Fix interaction of --redundant and --leaf-changes-only options. The --redundant (meaning show-redundant-changes) option is supposed to be implied by --leaf-changes-only and this is currently implemented by making diff_context's --leaf-changes-only setter also duplicate the behaviour of its --redundant setter. In both abidiff and abipkgdiff, the diff_context setters are called unconditionally, but the relative order of the calls for these two options is different in each case, resulting in two different issues. In abidiff, the --redundant setter is called second, undoing the intended side-effect of any --leaf-changes-only flag. So --redundant is not actually turned on in --leaf-changes-only mode unless requested explicitly. In abipkgdiff, the leaf-changes-only setter is called second, undoing (in non-leaf mode) the effect of any --redundant flag. So --redundant has no effect in default reporting mode. The fix is move to move the "--leaf-changes-only implies --redundant" logic from the setter to the set_diff_context_from_opts functions. This patch also documents the implied behaviour in the usage strings. * src/abg-comparison.cc (diff_context::show_leaf_changes_only): Remove "--leaf-changes-only implies --redundant" logic. * tools/abidiff.cc (display_usage): Mention that --leaf-changes-only implies --redundant. (set_diff_context_from_opts): Make --leaf-changes-only imply --redundant; document this behaviour in a comment. * tools/abipkgdiff.cc: Ditto. * tests/data/Makefile.am: Add new test case files. * tests/data/test-abidiff-exit/test-leaf3-report.txt: Add new test case, to show --leaf-changes-only implies --redundant. * tests/data/test-abidiff-exit/test-leaf3-v0.c: Ditto. * tests/data/test-abidiff-exit/test-leaf3-v0.o: Ditto. * tests/data/test-abidiff-exit/test-leaf3-v1.c: Ditto. * tests/data/test-abidiff-exit/test-leaf3-v1.o: Ditto. * tests/test-abidiff-exit.cc: Run new test case. * tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt: Update abipkgdiff report with --redundant output. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Ditto. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Ditto. Signed-off-by: Giuliano Procida <gprocida@google.com>
2020-03-12 06:30:32 +00:00
79 functions with some indirect sub-type change:
Fix suppression category propagation in diff node graph Under certain circumstances, a diff node (which we shall name N) that belongs to the SUPPRESSED_CATEGORY category sees its belonging to that category been propagated to its parent diff node, effectively suppressing that parent diff node as well. This is how some function diff nodes ends up being suppressed just because some of their children diff nodes were suppressed. This suppression category propagation is performed by a pass that walks the diff nodes graph. To avoid infinite cycles, the pass avoids visiting a diff node that is equivalent to a node that has already been visited. As a result, diff nodes equivalent to N (the class of equivalence of N) are not traversed by the propagation pass. So their parent diff nodes are not suppressed. This leads to some functions not being suppressed as they should. This phenomenon can be observed by comparing the two packages that are provided in the regression test accompanying this patch using abipkgdiff with the --redundant option. Here is how the patch addresses the issue. When the suppression category propagation pass considers a parent diff node (named P) of a node N' (with N' being equivalent to N), it now looks at the category of the *class of equivalence of N'* to determine if that category should be propagated to P. Previously, that pass would just look at the at the category of N' (not the category of the class of equivalence of N') for the propagation. But as N' has not been visited (because N has already been visited and nodes equivalent to N are thus not visited) the belonging of N' to the SUPPRESSED_CATEGORY hasn't been updated. So N' isn't marked as being in SUPPRESSED_CATEGORY. So the SUPPRESSED_CATEGORY wouldn't be propagated to P as it should. So, with this patch abipkgdiff invoked with the --redundant option now correctly yields: $ abipkgdiff --redundant --d1 spice-debuginfo-0.12.4-19.el7.x86_64.rpm --d2 spice-debuginfo-0.12.8-1.el7.x86_64.rpm --devel1 spice-server-devel-0.12.4-19.el7.x86_64.rpm --devel2 spice-server-devel-0.12.8-1.el7.x86_64.rpm spice-server-0.12.4-19.el7.x86_64.rpm spice-server-0.12.8-1.el7.x86_64.rpm ================ changes of 'libspice-server.so.1.8.0'=============== Functions changes summary: 1 Removed, 2 Changed (62 filtered out), 8 Added functions Variables changes summary: 0 Removed, 0 Changed, 0 Added variable [...] 2 functions with some indirect sub-type change: [C]'function spice_image_compression_t spice_server_get_image_compression(SpiceServer*)' at reds.c:3618:1 has some indirect sub-type changes: return type changed: underlying type 'enum __anonymous_enum__' changed: type size hasn't changed 7 enumerator deletions: '__anonymous_enum__::SPICE_IMAGE_COMPRESS_INVALID' value '0' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_OFF' value '1' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_GLZ' value '2' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_LZ' value '3' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_QUIC' value '4' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_GLZ' value '5' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_LZ' value '6' 9 enumerator insertions: 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_GLZ' value '2' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_LZ' value '3' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_QUIC' value '4' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_GLZ' value '5' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ' value '6' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ4' value '7' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_ENUM_END' value '8' [C]'function int spice_server_set_image_compression(SpiceServer*, spice_image_compression_t)' at reds.c:3602:1 has some indirect sub-type changes: parameter 2 of type 'typedef spice_image_compression_t' changed: underlying type 'enum __anonymous_enum__' changed: type size hasn't changed 7 enumerator deletions: '__anonymous_enum__::SPICE_IMAGE_COMPRESS_INVALID' value '0' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_OFF' value '1' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_GLZ' value '2' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_LZ' value '3' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_QUIC' value '4' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_GLZ' value '5' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_LZ' value '6' 9 enumerator insertions: 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_GLZ' value '2' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_LZ' value '3' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_QUIC' value '4' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_GLZ' value '5' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ' value '6' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ4' value '7' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_ENUM_END' value '8' ================ end of changes of 'libspice-server.so.1.8.0'=============== $ * include/abg-comparison.h (diff::get_class_of_equiv_category): Declare new member function. * src/abg-comparison.cc: Update copyright year. (diff::get_class_of_equiv_category): Define new member function. (suppression_categorization_visitor::visit_end): When considering children nodes category for propagation, consider the category of the class of equivalence of children nodes. * spice-debuginfo-0.12.4-19.el7.x86_64.rpm: New input test package. * spice-debuginfo-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-0.12.4-19.el7.x86_64.rpm: Likewise. * spice-server-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-devel-0.12.4-19.el7.x86_64.rpm: Likewise. * spice-server-devel-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: New reference test output. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Likewise. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise. * tests/data/Makefile.am: Add the new test material above to source distribution. * tests/test-diff-pkg.cc (in_out_specs): Add the new test inputs to the list of packages to test. Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2017-01-20 09:28:29 +00:00
[C] 'function void spice_qxl_add_memslot(QXLInstance*, QXLDevMemSlot*)' at red_dispatcher.c:879:1 has some indirect sub-type changes:
Fix suppression category propagation in diff node graph Under certain circumstances, a diff node (which we shall name N) that belongs to the SUPPRESSED_CATEGORY category sees its belonging to that category been propagated to its parent diff node, effectively suppressing that parent diff node as well. This is how some function diff nodes ends up being suppressed just because some of their children diff nodes were suppressed. This suppression category propagation is performed by a pass that walks the diff nodes graph. To avoid infinite cycles, the pass avoids visiting a diff node that is equivalent to a node that has already been visited. As a result, diff nodes equivalent to N (the class of equivalence of N) are not traversed by the propagation pass. So their parent diff nodes are not suppressed. This leads to some functions not being suppressed as they should. This phenomenon can be observed by comparing the two packages that are provided in the regression test accompanying this patch using abipkgdiff with the --redundant option. Here is how the patch addresses the issue. When the suppression category propagation pass considers a parent diff node (named P) of a node N' (with N' being equivalent to N), it now looks at the category of the *class of equivalence of N'* to determine if that category should be propagated to P. Previously, that pass would just look at the at the category of N' (not the category of the class of equivalence of N') for the propagation. But as N' has not been visited (because N has already been visited and nodes equivalent to N are thus not visited) the belonging of N' to the SUPPRESSED_CATEGORY hasn't been updated. So N' isn't marked as being in SUPPRESSED_CATEGORY. So the SUPPRESSED_CATEGORY wouldn't be propagated to P as it should. So, with this patch abipkgdiff invoked with the --redundant option now correctly yields: $ abipkgdiff --redundant --d1 spice-debuginfo-0.12.4-19.el7.x86_64.rpm --d2 spice-debuginfo-0.12.8-1.el7.x86_64.rpm --devel1 spice-server-devel-0.12.4-19.el7.x86_64.rpm --devel2 spice-server-devel-0.12.8-1.el7.x86_64.rpm spice-server-0.12.4-19.el7.x86_64.rpm spice-server-0.12.8-1.el7.x86_64.rpm ================ changes of 'libspice-server.so.1.8.0'=============== Functions changes summary: 1 Removed, 2 Changed (62 filtered out), 8 Added functions Variables changes summary: 0 Removed, 0 Changed, 0 Added variable [...] 2 functions with some indirect sub-type change: [C]'function spice_image_compression_t spice_server_get_image_compression(SpiceServer*)' at reds.c:3618:1 has some indirect sub-type changes: return type changed: underlying type 'enum __anonymous_enum__' changed: type size hasn't changed 7 enumerator deletions: '__anonymous_enum__::SPICE_IMAGE_COMPRESS_INVALID' value '0' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_OFF' value '1' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_GLZ' value '2' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_LZ' value '3' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_QUIC' value '4' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_GLZ' value '5' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_LZ' value '6' 9 enumerator insertions: 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_GLZ' value '2' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_LZ' value '3' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_QUIC' value '4' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_GLZ' value '5' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ' value '6' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ4' value '7' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_ENUM_END' value '8' [C]'function int spice_server_set_image_compression(SpiceServer*, spice_image_compression_t)' at reds.c:3602:1 has some indirect sub-type changes: parameter 2 of type 'typedef spice_image_compression_t' changed: underlying type 'enum __anonymous_enum__' changed: type size hasn't changed 7 enumerator deletions: '__anonymous_enum__::SPICE_IMAGE_COMPRESS_INVALID' value '0' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_OFF' value '1' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_GLZ' value '2' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_LZ' value '3' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_QUIC' value '4' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_GLZ' value '5' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_LZ' value '6' 9 enumerator insertions: 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_GLZ' value '2' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_LZ' value '3' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_QUIC' value '4' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_GLZ' value '5' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ' value '6' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ4' value '7' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_ENUM_END' value '8' ================ end of changes of 'libspice-server.so.1.8.0'=============== $ * include/abg-comparison.h (diff::get_class_of_equiv_category): Declare new member function. * src/abg-comparison.cc: Update copyright year. (diff::get_class_of_equiv_category): Define new member function. (suppression_categorization_visitor::visit_end): When considering children nodes category for propagation, consider the category of the class of equivalence of children nodes. * spice-debuginfo-0.12.4-19.el7.x86_64.rpm: New input test package. * spice-debuginfo-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-0.12.4-19.el7.x86_64.rpm: Likewise. * spice-server-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-devel-0.12.4-19.el7.x86_64.rpm: Likewise. * spice-server-devel-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: New reference test output. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Likewise. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise. * tests/data/Makefile.am: Add the new test material above to source distribution. * tests/test-diff-pkg.cc (in_out_specs): Add the new test inputs to the list of packages to test. Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2017-01-20 09:28:29 +00:00
parameter 1 of type 'QXLInstance*' has sub-type changes:
in pointed to type 'typedef QXLInstance' at spice-qxl.h:34:1:
Update tests for the "better leaf mode redundancy management" patchset This commit is the last of the set whose commit titles are: Do not show decl-only-to-def changes in the leaf reporter Overhaul of the report diff stats summary Do not mark "distinct" diff nodes as being redundant Fix meaning of "harmless name change" to avoid overfiltering Better handle category propagation of pointer changes Improve function changes reporting in leaf and default mode Don't filter out typedef changes with redundant underlying type changes Only show leaf type changes in the leaf type changes section Fix leaf report of class data member changes Always show redundant changes in leaf mode Avoid reporting an enum change if it has already been reported When we say an a change was reported earlier give its source location [abipkgdiff]: in leaf mode we always show redundant changes Update tests for the "better leaf mode redundancy management" patchset This commit updates the tests reference output files for that patchset. * tests/data/test-abidiff-exit/test1-voffset-change-report1.txt: Adjust. * tests/data/test-abidiff/test-PR18791-report0.txt: Likewise. * tests/data/test-abidiff/test-enum0-report.txt: Likewise. * tests/data/test-abidiff/test-enum1-report.txt: Likewise. * tests/data/test-diff-filter/test1-report.txt: Likewise. * tests/data/test-diff-filter/test14-0-report.txt: Likewise. * tests/data/test-diff-filter/test15-0-report.txt: Likewise. * tests/data/test-diff-filter/test17-0-report.txt: Likewise. * tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-0.txt: Likewise. * tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-0.txt: Likewise. * tests/data/test-diff-filter/test3-report.txt: Likewise. * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise. * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise. * tests/data/test-diff-filter/test32-ppc64le-struct-change-report0.txt: Likewise. * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise. * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt: Likewise. * tests/data/test-diff-filter/test4-report.txt: Likewise. * tests/data/test-diff-filter/test41-report-0.txt: Likewise. * tests/data/test-diff-filter/test42-leaf-report-output-0.txt: Likewise. * tests/data/test-diff-pkg/dirpkg-3-report-1.txt: Likewise. * tests/data/test-diff-pkg/dirpkg-3-report-2.txt: Likewise. * tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt: Likewise. * tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt: Likewise. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: Likewise. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Likewise. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt: Likewise. * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: Likewise. * tests/data/test-diff-suppr/test1-typedef-suppr-report-1.txt: Likewise. * tests/data/test-diff-suppr/test1-typedef-suppr-report-2.txt: Likewise. * tests/data/test-diff-suppr/test13-suppr-through-pointer-report-1.txt: Likewise. * tests/data/test-diff-suppr/test14-suppr-non-redundant-report-0.txt: Likewise. * tests/data/test-diff-suppr/test14-suppr-non-redundant-report-1.txt: Likewise. * tests/data/test-diff-suppr/test15-suppr-added-fn-report-1.txt: Likewise. * tests/data/test-diff-suppr/test15-suppr-added-fn-report-2.txt: Likewise. * tests/data/test-diff-suppr/test15-suppr-added-fn-report-3.txt: Likewise. * tests/data/test-diff-suppr/test15-suppr-added-fn-report-4.txt: Likewise. * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-1.txt: Likewise. * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-2.txt: Likewise. * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-3.txt: Likewise. * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-4.txt: Likewise. * tests/data/test-diff-suppr/test17-suppr-added-var-report-1.txt: Likewise. * tests/data/test-diff-suppr/test17-suppr-added-var-report-2.txt: Likewise. * tests/data/test-diff-suppr/test17-suppr-added-var-report-3.txt: Likewise. * tests/data/test-diff-suppr/test17-suppr-added-var-report-4.txt: Likewise. * tests/data/test-diff-suppr/test18-suppr-removed-var-report-1.txt: Likewise. * tests/data/test-diff-suppr/test18-suppr-removed-var-report-3.txt: Likewise. * tests/data/test-diff-suppr/test18-suppr-removed-var-report-4.txt: Likewise. * tests/data/test-diff-suppr/test2-struct-suppr-report-0.txt: Likewise. * tests/data/test-diff-suppr/test2-struct-suppr-report-1.txt: Likewise. * tests/data/test-diff-suppr/test25-typedef-report-1.txt: Likewise. * tests/data/test-diff-suppr/test27-add-aliased-function-report-1.txt: Likewise. * tests/data/test-diff-suppr/test27-add-aliased-function-report-2.txt: Likewise. * tests/data/test-diff-suppr/test27-add-aliased-function-report-5.txt: Likewise. * tests/data/test-diff-suppr/test28-add-aliased-function-report-3.txt: Likewise. * tests/data/test-diff-suppr/test28-add-aliased-function-report-6.txt: Likewise. * tests/data/test-diff-suppr/test30-report-1.txt: Likewise. * tests/data/test-diff-suppr/test34-report-0.txt: Likewise. * tests/data/test-diff-suppr/test35-leaf-report-0.txt: Likewise. * tests/data/test-diff-suppr/test36-leaf-report-0.txt: Likewise. * tests/data/test-diff-suppr/test5-fn-suppr-report-1.txt: Likewise. * tests/data/test-diff-suppr/test5-fn-suppr-report-2.txt: Likewise. * tests/data/test-diff-suppr/test5-fn-suppr-report-3.txt: Likewise. * tests/data/test-diff-suppr/test5-fn-suppr-report-4.txt: Likewise. * tests/data/test-diff-suppr/test5-fn-suppr-report-5.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-1.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-2.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-3.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-4.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-5.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-6.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-7.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-9.txt: Likewise. * tests/data/test-diff-suppr/test8-redundant-fn-report-0.txt: Likewise. Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2018-04-13 08:45:42 +00:00
underlying type 'struct QXLInstance' at spice.h:259:1 changed:
Fix suppression category propagation in diff node graph Under certain circumstances, a diff node (which we shall name N) that belongs to the SUPPRESSED_CATEGORY category sees its belonging to that category been propagated to its parent diff node, effectively suppressing that parent diff node as well. This is how some function diff nodes ends up being suppressed just because some of their children diff nodes were suppressed. This suppression category propagation is performed by a pass that walks the diff nodes graph. To avoid infinite cycles, the pass avoids visiting a diff node that is equivalent to a node that has already been visited. As a result, diff nodes equivalent to N (the class of equivalence of N) are not traversed by the propagation pass. So their parent diff nodes are not suppressed. This leads to some functions not being suppressed as they should. This phenomenon can be observed by comparing the two packages that are provided in the regression test accompanying this patch using abipkgdiff with the --redundant option. Here is how the patch addresses the issue. When the suppression category propagation pass considers a parent diff node (named P) of a node N' (with N' being equivalent to N), it now looks at the category of the *class of equivalence of N'* to determine if that category should be propagated to P. Previously, that pass would just look at the at the category of N' (not the category of the class of equivalence of N') for the propagation. But as N' has not been visited (because N has already been visited and nodes equivalent to N are thus not visited) the belonging of N' to the SUPPRESSED_CATEGORY hasn't been updated. So N' isn't marked as being in SUPPRESSED_CATEGORY. So the SUPPRESSED_CATEGORY wouldn't be propagated to P as it should. So, with this patch abipkgdiff invoked with the --redundant option now correctly yields: $ abipkgdiff --redundant --d1 spice-debuginfo-0.12.4-19.el7.x86_64.rpm --d2 spice-debuginfo-0.12.8-1.el7.x86_64.rpm --devel1 spice-server-devel-0.12.4-19.el7.x86_64.rpm --devel2 spice-server-devel-0.12.8-1.el7.x86_64.rpm spice-server-0.12.4-19.el7.x86_64.rpm spice-server-0.12.8-1.el7.x86_64.rpm ================ changes of 'libspice-server.so.1.8.0'=============== Functions changes summary: 1 Removed, 2 Changed (62 filtered out), 8 Added functions Variables changes summary: 0 Removed, 0 Changed, 0 Added variable [...] 2 functions with some indirect sub-type change: [C]'function spice_image_compression_t spice_server_get_image_compression(SpiceServer*)' at reds.c:3618:1 has some indirect sub-type changes: return type changed: underlying type 'enum __anonymous_enum__' changed: type size hasn't changed 7 enumerator deletions: '__anonymous_enum__::SPICE_IMAGE_COMPRESS_INVALID' value '0' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_OFF' value '1' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_GLZ' value '2' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_LZ' value '3' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_QUIC' value '4' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_GLZ' value '5' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_LZ' value '6' 9 enumerator insertions: 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_GLZ' value '2' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_LZ' value '3' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_QUIC' value '4' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_GLZ' value '5' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ' value '6' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ4' value '7' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_ENUM_END' value '8' [C]'function int spice_server_set_image_compression(SpiceServer*, spice_image_compression_t)' at reds.c:3602:1 has some indirect sub-type changes: parameter 2 of type 'typedef spice_image_compression_t' changed: underlying type 'enum __anonymous_enum__' changed: type size hasn't changed 7 enumerator deletions: '__anonymous_enum__::SPICE_IMAGE_COMPRESS_INVALID' value '0' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_OFF' value '1' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_GLZ' value '2' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_LZ' value '3' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_QUIC' value '4' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_GLZ' value '5' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_LZ' value '6' 9 enumerator insertions: 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_GLZ' value '2' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_LZ' value '3' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_QUIC' value '4' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_GLZ' value '5' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ' value '6' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ4' value '7' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_ENUM_END' value '8' ================ end of changes of 'libspice-server.so.1.8.0'=============== $ * include/abg-comparison.h (diff::get_class_of_equiv_category): Declare new member function. * src/abg-comparison.cc: Update copyright year. (diff::get_class_of_equiv_category): Define new member function. (suppression_categorization_visitor::visit_end): When considering children nodes category for propagation, consider the category of the class of equivalence of children nodes. * spice-debuginfo-0.12.4-19.el7.x86_64.rpm: New input test package. * spice-debuginfo-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-0.12.4-19.el7.x86_64.rpm: Likewise. * spice-server-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-devel-0.12.4-19.el7.x86_64.rpm: Likewise. * spice-server-devel-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: New reference test output. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Likewise. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise. * tests/data/Makefile.am: Add the new test material above to source distribution. * tests/test-diff-pkg.cc (in_out_specs): Add the new test inputs to the list of packages to test. Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2017-01-20 09:28:29 +00:00
type size hasn't changed
1 data member change:
type of 'QXLState* QXLInstance::st' changed:
in pointed to type 'typedef QXLState' at spice-qxl.h:35:1:
underlying type 'struct QXLState' at reds.h:93:1 changed:
type size hasn't changed
1 data member change:
type of 'RedDispatcher* QXLState::dispatcher' changed:
in pointed to type 'typedef RedDispatcher' at red_worker.h:87:1:
underlying type 'struct RedDispatcher' at red_dispatcher.c:53:1 changed:
type size changed from 3264 to 3328 (in bits)
13 data member changes:
type of 'QXLInstance* RedDispatcher::qxl' changed:
in pointed to type 'typedef QXLInstance' at spice-qxl.h:34:1:
abidiff: More compact references to prior diffs. In both the default and leaf reporting modes, when there is a repeated or circular reference to a type difference of a member variable, some placeholder text is emitted instead. In the leaf reporter: type 'struct S' of 'foo::bar' changed as reported earlier In the default reporter, this spans two lines: type of 'S foo::bar' changed: details were reported earlier This patch changes the latter to the more compact: type of 'S foo::bar' changed, as reported earlier More generally, this patch makes the punctuation of such placeholder text more consistent with a comma separating the phrases in all cases. It doesn't attempt to reconcile the different formatting of member variable declarations between the two modes. * src/abg-reporter-priv.cc (represent): In the var_diff_sptr overload, use consistent punctuation and keep to a single line of output when referring back to an existing type diff report. Remove unnecessary braces around single line conditional blocks. * src/abg-reporter-priv.h: In the macro RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER, use consistent punctuation when referring back to an existing type diff report. * tests/data/test-abidiff/test-PR18791-report0.txt: Adjust formatting of back references to existing type diff reports. * tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt: Ditto. * tests/data/test-diff-filter/test16-report-2.txt: Ditto. * tests/data/test-diff-filter/test17-1-report.txt: Ditto. * tests/data/test-diff-filter/test25-cyclic-type-report-1.txt: Ditto. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Ditto. * tests/data/test-diff-suppr/test36-leaf-report-0.txt: Ditto. Signed-off-by: Giuliano Procida <gprocida@google.com> Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2020-04-07 21:33:13 +00:00
underlying type 'struct QXLInstance' changed, as being reported
type of 'Dispatcher RedDispatcher::dispatcher' changed:
underlying type 'struct Dispatcher' at dispatcher.h:22:1 changed:
type size changed from 960 to 1024 (in bits)
1 data member insertion:
'dispatcher_handle_any_message Dispatcher::any_handler', at offset 960 (in bits) at dispatcher.h:56:1
'pthread_t RedDispatcher::worker_thread' offset changed from 2048 to 2112 (in bits) (by +64 bits)
'uint32_t RedDispatcher::pending' offset changed from 2112 to 2176 (in bits) (by +64 bits)
'int RedDispatcher::primary_active' offset changed from 2144 to 2208 (in bits) (by +64 bits)
'int RedDispatcher::x_res' offset changed from 2176 to 2240 (in bits) (by +64 bits)
'int RedDispatcher::y_res' offset changed from 2208 to 2272 (in bits) (by +64 bits)
'int RedDispatcher::use_hardware_cursor' offset changed from 2240 to 2304 (in bits) (by +64 bits)
type of 'RedDispatcher* RedDispatcher::next' changed:
in pointed to type 'typedef RedDispatcher' at red_worker.h:87:1:
abidiff: More compact references to prior diffs. In both the default and leaf reporting modes, when there is a repeated or circular reference to a type difference of a member variable, some placeholder text is emitted instead. In the leaf reporter: type 'struct S' of 'foo::bar' changed as reported earlier In the default reporter, this spans two lines: type of 'S foo::bar' changed: details were reported earlier This patch changes the latter to the more compact: type of 'S foo::bar' changed, as reported earlier More generally, this patch makes the punctuation of such placeholder text more consistent with a comma separating the phrases in all cases. It doesn't attempt to reconcile the different formatting of member variable declarations between the two modes. * src/abg-reporter-priv.cc (represent): In the var_diff_sptr overload, use consistent punctuation and keep to a single line of output when referring back to an existing type diff report. Remove unnecessary braces around single line conditional blocks. * src/abg-reporter-priv.h: In the macro RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER, use consistent punctuation when referring back to an existing type diff report. * tests/data/test-abidiff/test-PR18791-report0.txt: Adjust formatting of back references to existing type diff reports. * tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt: Ditto. * tests/data/test-diff-filter/test16-report-2.txt: Ditto. * tests/data/test-diff-filter/test17-1-report.txt: Ditto. * tests/data/test-diff-filter/test25-cyclic-type-report-1.txt: Ditto. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Ditto. * tests/data/test-diff-suppr/test36-leaf-report-0.txt: Ditto. Signed-off-by: Giuliano Procida <gprocida@google.com> Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2020-04-07 21:33:13 +00:00
underlying type 'struct RedDispatcher' changed, as being reported
and offset changed from 2304 to 2368 (in bits) (by +64 bits)
'Ring RedDispatcher::async_commands' offset changed from 2368 to 2432 (in bits) (by +64 bits)
'pthread_mutex_t RedDispatcher::async_lock' offset changed from 2496 to 2560 (in bits) (by +64 bits)
'QXLDevSurfaceCreate RedDispatcher::surface_create' offset changed from 2816 to 2880 (in bits) (by +64 bits)
'unsigned int RedDispatcher::max_monitors' offset changed from 3200 to 3264 (in bits) (by +64 bits)
Fix suppression category propagation in diff node graph Under certain circumstances, a diff node (which we shall name N) that belongs to the SUPPRESSED_CATEGORY category sees its belonging to that category been propagated to its parent diff node, effectively suppressing that parent diff node as well. This is how some function diff nodes ends up being suppressed just because some of their children diff nodes were suppressed. This suppression category propagation is performed by a pass that walks the diff nodes graph. To avoid infinite cycles, the pass avoids visiting a diff node that is equivalent to a node that has already been visited. As a result, diff nodes equivalent to N (the class of equivalence of N) are not traversed by the propagation pass. So their parent diff nodes are not suppressed. This leads to some functions not being suppressed as they should. This phenomenon can be observed by comparing the two packages that are provided in the regression test accompanying this patch using abipkgdiff with the --redundant option. Here is how the patch addresses the issue. When the suppression category propagation pass considers a parent diff node (named P) of a node N' (with N' being equivalent to N), it now looks at the category of the *class of equivalence of N'* to determine if that category should be propagated to P. Previously, that pass would just look at the at the category of N' (not the category of the class of equivalence of N') for the propagation. But as N' has not been visited (because N has already been visited and nodes equivalent to N are thus not visited) the belonging of N' to the SUPPRESSED_CATEGORY hasn't been updated. So N' isn't marked as being in SUPPRESSED_CATEGORY. So the SUPPRESSED_CATEGORY wouldn't be propagated to P as it should. So, with this patch abipkgdiff invoked with the --redundant option now correctly yields: $ abipkgdiff --redundant --d1 spice-debuginfo-0.12.4-19.el7.x86_64.rpm --d2 spice-debuginfo-0.12.8-1.el7.x86_64.rpm --devel1 spice-server-devel-0.12.4-19.el7.x86_64.rpm --devel2 spice-server-devel-0.12.8-1.el7.x86_64.rpm spice-server-0.12.4-19.el7.x86_64.rpm spice-server-0.12.8-1.el7.x86_64.rpm ================ changes of 'libspice-server.so.1.8.0'=============== Functions changes summary: 1 Removed, 2 Changed (62 filtered out), 8 Added functions Variables changes summary: 0 Removed, 0 Changed, 0 Added variable [...] 2 functions with some indirect sub-type change: [C]'function spice_image_compression_t spice_server_get_image_compression(SpiceServer*)' at reds.c:3618:1 has some indirect sub-type changes: return type changed: underlying type 'enum __anonymous_enum__' changed: type size hasn't changed 7 enumerator deletions: '__anonymous_enum__::SPICE_IMAGE_COMPRESS_INVALID' value '0' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_OFF' value '1' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_GLZ' value '2' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_LZ' value '3' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_QUIC' value '4' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_GLZ' value '5' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_LZ' value '6' 9 enumerator insertions: 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_GLZ' value '2' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_LZ' value '3' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_QUIC' value '4' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_GLZ' value '5' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ' value '6' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ4' value '7' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_ENUM_END' value '8' [C]'function int spice_server_set_image_compression(SpiceServer*, spice_image_compression_t)' at reds.c:3602:1 has some indirect sub-type changes: parameter 2 of type 'typedef spice_image_compression_t' changed: underlying type 'enum __anonymous_enum__' changed: type size hasn't changed 7 enumerator deletions: '__anonymous_enum__::SPICE_IMAGE_COMPRESS_INVALID' value '0' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_OFF' value '1' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_GLZ' value '2' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_LZ' value '3' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_QUIC' value '4' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_GLZ' value '5' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_LZ' value '6' 9 enumerator insertions: 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_GLZ' value '2' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_LZ' value '3' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_QUIC' value '4' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_GLZ' value '5' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ' value '6' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ4' value '7' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_ENUM_END' value '8' ================ end of changes of 'libspice-server.so.1.8.0'=============== $ * include/abg-comparison.h (diff::get_class_of_equiv_category): Declare new member function. * src/abg-comparison.cc: Update copyright year. (diff::get_class_of_equiv_category): Define new member function. (suppression_categorization_visitor::visit_end): When considering children nodes category for propagation, consider the category of the class of equivalence of children nodes. * spice-debuginfo-0.12.4-19.el7.x86_64.rpm: New input test package. * spice-debuginfo-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-0.12.4-19.el7.x86_64.rpm: Likewise. * spice-server-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-devel-0.12.4-19.el7.x86_64.rpm: Likewise. * spice-server-devel-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: New reference test output. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Likewise. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise. * tests/data/Makefile.am: Add the new test material above to source distribution. * tests/test-diff-pkg.cc (in_out_specs): Add the new test inputs to the list of packages to test. Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2017-01-20 09:28:29 +00:00
Fix interaction of --redundant and --leaf-changes-only options. The --redundant (meaning show-redundant-changes) option is supposed to be implied by --leaf-changes-only and this is currently implemented by making diff_context's --leaf-changes-only setter also duplicate the behaviour of its --redundant setter. In both abidiff and abipkgdiff, the diff_context setters are called unconditionally, but the relative order of the calls for these two options is different in each case, resulting in two different issues. In abidiff, the --redundant setter is called second, undoing the intended side-effect of any --leaf-changes-only flag. So --redundant is not actually turned on in --leaf-changes-only mode unless requested explicitly. In abipkgdiff, the leaf-changes-only setter is called second, undoing (in non-leaf mode) the effect of any --redundant flag. So --redundant has no effect in default reporting mode. The fix is move to move the "--leaf-changes-only implies --redundant" logic from the setter to the set_diff_context_from_opts functions. This patch also documents the implied behaviour in the usage strings. * src/abg-comparison.cc (diff_context::show_leaf_changes_only): Remove "--leaf-changes-only implies --redundant" logic. * tools/abidiff.cc (display_usage): Mention that --leaf-changes-only implies --redundant. (set_diff_context_from_opts): Make --leaf-changes-only imply --redundant; document this behaviour in a comment. * tools/abipkgdiff.cc: Ditto. * tests/data/Makefile.am: Add new test case files. * tests/data/test-abidiff-exit/test-leaf3-report.txt: Add new test case, to show --leaf-changes-only implies --redundant. * tests/data/test-abidiff-exit/test-leaf3-v0.c: Ditto. * tests/data/test-abidiff-exit/test-leaf3-v0.o: Ditto. * tests/data/test-abidiff-exit/test-leaf3-v1.c: Ditto. * tests/data/test-abidiff-exit/test-leaf3-v1.o: Ditto. * tests/test-abidiff-exit.cc: Run new test case. * tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt: Update abipkgdiff report with --redundant output. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Ditto. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Ditto. Signed-off-by: Giuliano Procida <gprocida@google.com>
2020-03-12 06:30:32 +00:00
[C] 'function void spice_qxl_add_memslot_async(QXLInstance*, QXLDevMemSlot*, uint64_t)' at red_dispatcher.c:948:1 has some indirect sub-type changes:
parameter 1 of type 'QXLInstance*' has sub-type changes:
pointed to type 'typedef QXLInstance' changed at spice.h:103:1, as reported earlier
[C] 'function void spice_qxl_create_primary_surface(QXLInstance*, uint32_t, QXLDevSurfaceCreate*)' at red_dispatcher.c:909:1 has some indirect sub-type changes:
parameter 1 of type 'QXLInstance*' has sub-type changes:
pointed to type 'typedef QXLInstance' changed at spice.h:103:1, as reported earlier
[C] 'function void spice_qxl_create_primary_surface_async(QXLInstance*, uint32_t, QXLDevSurfaceCreate*, uint64_t)' at red_dispatcher.c:966:1 has some indirect sub-type changes:
parameter 1 of type 'QXLInstance*' has sub-type changes:
pointed to type 'typedef QXLInstance' changed at spice.h:103:1, as reported earlier
[C] 'function void spice_qxl_del_memslot(QXLInstance*, uint32_t, uint32_t)' at red_dispatcher.c:885:1 has some indirect sub-type changes:
parameter 1 of type 'QXLInstance*' has sub-type changes:
pointed to type 'typedef QXLInstance' changed at spice.h:103:1, as reported earlier
[C] 'function void spice_qxl_destroy_primary_surface(QXLInstance*, uint32_t)' at red_dispatcher.c:903:1 has some indirect sub-type changes:
parameter 1 of type 'QXLInstance*' has sub-type changes:
pointed to type 'typedef QXLInstance' changed at spice.h:103:1, as reported earlier
[C] 'function void spice_qxl_destroy_primary_surface_async(QXLInstance*, uint32_t, uint64_t)' at red_dispatcher.c:960:1 has some indirect sub-type changes:
parameter 1 of type 'QXLInstance*' has sub-type changes:
pointed to type 'typedef QXLInstance' changed at spice.h:103:1, as reported earlier
[C] 'function void spice_qxl_destroy_surface_async(QXLInstance*, uint32_t, uint64_t)' at red_dispatcher.c:973:1 has some indirect sub-type changes:
parameter 1 of type 'QXLInstance*' has sub-type changes:
pointed to type 'typedef QXLInstance' changed at spice.h:103:1, as reported earlier
[C] 'function void spice_qxl_destroy_surface_wait(QXLInstance*, uint32_t)' at red_dispatcher.c:928:1 has some indirect sub-type changes:
parameter 1 of type 'QXLInstance*' has sub-type changes:
pointed to type 'typedef QXLInstance' changed at spice.h:103:1, as reported earlier
[C] 'function void spice_qxl_destroy_surfaces(QXLInstance*)' at red_dispatcher.c:897:1 has some indirect sub-type changes:
parameter 1 of type 'QXLInstance*' has sub-type changes:
pointed to type 'typedef QXLInstance' changed at spice.h:103:1, as reported earlier
[C] 'function void spice_qxl_destroy_surfaces_async(QXLInstance*, uint64_t)' at red_dispatcher.c:954:1 has some indirect sub-type changes:
parameter 1 of type 'QXLInstance*' has sub-type changes:
pointed to type 'typedef QXLInstance' changed at spice.h:103:1, as reported earlier
[C] 'function void spice_qxl_driver_unload(QXLInstance*)' at red_dispatcher.c:998:1 has some indirect sub-type changes:
parameter 1 of type 'QXLInstance*' has sub-type changes:
pointed to type 'typedef QXLInstance' changed at spice.h:103:1, as reported earlier
[C] 'function void spice_qxl_flush_surfaces_async(QXLInstance*, uint64_t)' at red_dispatcher.c:979:1 has some indirect sub-type changes:
parameter 1 of type 'QXLInstance*' has sub-type changes:
pointed to type 'typedef QXLInstance' changed at spice.h:103:1, as reported earlier
[C] 'function void spice_qxl_loadvm_commands(QXLInstance*, QXLCommandExt*, uint32_t)' at red_dispatcher.c:934:1 has some indirect sub-type changes:
parameter 1 of type 'QXLInstance*' has sub-type changes:
pointed to type 'typedef QXLInstance' changed at spice.h:103:1, as reported earlier
[C] 'function void spice_qxl_monitors_config_async(QXLInstance*, QXLPHYSICAL, int, uint64_t)' at red_dispatcher.c:985:1 has some indirect sub-type changes:
parameter 1 of type 'QXLInstance*' has sub-type changes:
pointed to type 'typedef QXLInstance' changed at spice.h:103:1, as reported earlier
[C] 'function void spice_qxl_oom(QXLInstance*)' at red_dispatcher.c:852:1 has some indirect sub-type changes:
parameter 1 of type 'QXLInstance*' has sub-type changes:
pointed to type 'typedef QXLInstance' changed at spice.h:103:1, as reported earlier
[C] 'function void spice_qxl_reset_cursor(QXLInstance*)' at red_dispatcher.c:922:1 has some indirect sub-type changes:
parameter 1 of type 'QXLInstance*' has sub-type changes:
pointed to type 'typedef QXLInstance' changed at spice.h:103:1, as reported earlier
[C] 'function void spice_qxl_reset_image_cache(QXLInstance*)' at red_dispatcher.c:916:1 has some indirect sub-type changes:
parameter 1 of type 'QXLInstance*' has sub-type changes:
pointed to type 'typedef QXLInstance' changed at spice.h:103:1, as reported earlier
[C] 'function void spice_qxl_reset_memslots(QXLInstance*)' at red_dispatcher.c:891:1 has some indirect sub-type changes:
parameter 1 of type 'QXLInstance*' has sub-type changes:
pointed to type 'typedef QXLInstance' changed at spice.h:103:1, as reported earlier
[C] 'function void spice_qxl_set_max_monitors(QXLInstance*, unsigned int)' at red_dispatcher.c:992:1 has some indirect sub-type changes:
parameter 1 of type 'QXLInstance*' has sub-type changes:
pointed to type 'typedef QXLInstance' changed at spice.h:103:1, as reported earlier
[C] 'function void spice_qxl_start(QXLInstance*)' at red_dispatcher.c:858:1 has some indirect sub-type changes:
parameter 1 of type 'QXLInstance*' has sub-type changes:
pointed to type 'typedef QXLInstance' changed at spice.h:103:1, as reported earlier
[C] 'function void spice_qxl_stop(QXLInstance*)' at red_dispatcher.c:864:1 has some indirect sub-type changes:
parameter 1 of type 'QXLInstance*' has sub-type changes:
pointed to type 'typedef QXLInstance' changed at spice.h:103:1, as reported earlier
[C] 'function void spice_qxl_update_area(QXLInstance*, uint32_t, QXLRect*, QXLRect*, uint32_t, uint32_t)' at red_dispatcher.c:870:1 has some indirect sub-type changes:
parameter 1 of type 'QXLInstance*' has sub-type changes:
pointed to type 'typedef QXLInstance' changed at spice.h:103:1, as reported earlier
[C] 'function void spice_qxl_update_area_async(QXLInstance*, uint32_t, QXLRect*, uint32_t, uint64_t)' at red_dispatcher.c:940:1 has some indirect sub-type changes:
parameter 1 of type 'QXLInstance*' has sub-type changes:
pointed to type 'typedef QXLInstance' changed at spice.h:103:1, as reported earlier
[C] 'function void spice_qxl_wakeup(QXLInstance*)' at red_dispatcher.c:846:1 has some indirect sub-type changes:
parameter 1 of type 'QXLInstance*' has sub-type changes:
pointed to type 'typedef QXLInstance' changed at spice.h:103:1, as reported earlier
[C] 'function int spice_server_add_client(SpiceServer*, int, int)' at reds.c:2391:1 has some indirect sub-type changes:
Fix suppression category propagation in diff node graph Under certain circumstances, a diff node (which we shall name N) that belongs to the SUPPRESSED_CATEGORY category sees its belonging to that category been propagated to its parent diff node, effectively suppressing that parent diff node as well. This is how some function diff nodes ends up being suppressed just because some of their children diff nodes were suppressed. This suppression category propagation is performed by a pass that walks the diff nodes graph. To avoid infinite cycles, the pass avoids visiting a diff node that is equivalent to a node that has already been visited. As a result, diff nodes equivalent to N (the class of equivalence of N) are not traversed by the propagation pass. So their parent diff nodes are not suppressed. This leads to some functions not being suppressed as they should. This phenomenon can be observed by comparing the two packages that are provided in the regression test accompanying this patch using abipkgdiff with the --redundant option. Here is how the patch addresses the issue. When the suppression category propagation pass considers a parent diff node (named P) of a node N' (with N' being equivalent to N), it now looks at the category of the *class of equivalence of N'* to determine if that category should be propagated to P. Previously, that pass would just look at the at the category of N' (not the category of the class of equivalence of N') for the propagation. But as N' has not been visited (because N has already been visited and nodes equivalent to N are thus not visited) the belonging of N' to the SUPPRESSED_CATEGORY hasn't been updated. So N' isn't marked as being in SUPPRESSED_CATEGORY. So the SUPPRESSED_CATEGORY wouldn't be propagated to P as it should. So, with this patch abipkgdiff invoked with the --redundant option now correctly yields: $ abipkgdiff --redundant --d1 spice-debuginfo-0.12.4-19.el7.x86_64.rpm --d2 spice-debuginfo-0.12.8-1.el7.x86_64.rpm --devel1 spice-server-devel-0.12.4-19.el7.x86_64.rpm --devel2 spice-server-devel-0.12.8-1.el7.x86_64.rpm spice-server-0.12.4-19.el7.x86_64.rpm spice-server-0.12.8-1.el7.x86_64.rpm ================ changes of 'libspice-server.so.1.8.0'=============== Functions changes summary: 1 Removed, 2 Changed (62 filtered out), 8 Added functions Variables changes summary: 0 Removed, 0 Changed, 0 Added variable [...] 2 functions with some indirect sub-type change: [C]'function spice_image_compression_t spice_server_get_image_compression(SpiceServer*)' at reds.c:3618:1 has some indirect sub-type changes: return type changed: underlying type 'enum __anonymous_enum__' changed: type size hasn't changed 7 enumerator deletions: '__anonymous_enum__::SPICE_IMAGE_COMPRESS_INVALID' value '0' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_OFF' value '1' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_GLZ' value '2' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_LZ' value '3' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_QUIC' value '4' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_GLZ' value '5' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_LZ' value '6' 9 enumerator insertions: 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_GLZ' value '2' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_LZ' value '3' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_QUIC' value '4' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_GLZ' value '5' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ' value '6' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ4' value '7' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_ENUM_END' value '8' [C]'function int spice_server_set_image_compression(SpiceServer*, spice_image_compression_t)' at reds.c:3602:1 has some indirect sub-type changes: parameter 2 of type 'typedef spice_image_compression_t' changed: underlying type 'enum __anonymous_enum__' changed: type size hasn't changed 7 enumerator deletions: '__anonymous_enum__::SPICE_IMAGE_COMPRESS_INVALID' value '0' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_OFF' value '1' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_GLZ' value '2' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_LZ' value '3' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_QUIC' value '4' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_GLZ' value '5' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_LZ' value '6' 9 enumerator insertions: 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_GLZ' value '2' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_LZ' value '3' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_QUIC' value '4' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_GLZ' value '5' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ' value '6' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ4' value '7' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_ENUM_END' value '8' ================ end of changes of 'libspice-server.so.1.8.0'=============== $ * include/abg-comparison.h (diff::get_class_of_equiv_category): Declare new member function. * src/abg-comparison.cc: Update copyright year. (diff::get_class_of_equiv_category): Define new member function. (suppression_categorization_visitor::visit_end): When considering children nodes category for propagation, consider the category of the class of equivalence of children nodes. * spice-debuginfo-0.12.4-19.el7.x86_64.rpm: New input test package. * spice-debuginfo-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-0.12.4-19.el7.x86_64.rpm: Likewise. * spice-server-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-devel-0.12.4-19.el7.x86_64.rpm: Likewise. * spice-server-devel-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: New reference test output. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Likewise. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise. * tests/data/Makefile.am: Add the new test material above to source distribution. * tests/test-diff-pkg.cc (in_out_specs): Add the new test inputs to the list of packages to test. Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2017-01-20 09:28:29 +00:00
parameter 1 of type 'SpiceServer*' has sub-type changes:
in pointed to type 'typedef SpiceServer' at spice-server.h:38:1:
Update tests for the "better leaf mode redundancy management" patchset This commit is the last of the set whose commit titles are: Do not show decl-only-to-def changes in the leaf reporter Overhaul of the report diff stats summary Do not mark "distinct" diff nodes as being redundant Fix meaning of "harmless name change" to avoid overfiltering Better handle category propagation of pointer changes Improve function changes reporting in leaf and default mode Don't filter out typedef changes with redundant underlying type changes Only show leaf type changes in the leaf type changes section Fix leaf report of class data member changes Always show redundant changes in leaf mode Avoid reporting an enum change if it has already been reported When we say an a change was reported earlier give its source location [abipkgdiff]: in leaf mode we always show redundant changes Update tests for the "better leaf mode redundancy management" patchset This commit updates the tests reference output files for that patchset. * tests/data/test-abidiff-exit/test1-voffset-change-report1.txt: Adjust. * tests/data/test-abidiff/test-PR18791-report0.txt: Likewise. * tests/data/test-abidiff/test-enum0-report.txt: Likewise. * tests/data/test-abidiff/test-enum1-report.txt: Likewise. * tests/data/test-diff-filter/test1-report.txt: Likewise. * tests/data/test-diff-filter/test14-0-report.txt: Likewise. * tests/data/test-diff-filter/test15-0-report.txt: Likewise. * tests/data/test-diff-filter/test17-0-report.txt: Likewise. * tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-0.txt: Likewise. * tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-0.txt: Likewise. * tests/data/test-diff-filter/test3-report.txt: Likewise. * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise. * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise. * tests/data/test-diff-filter/test32-ppc64le-struct-change-report0.txt: Likewise. * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise. * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt: Likewise. * tests/data/test-diff-filter/test4-report.txt: Likewise. * tests/data/test-diff-filter/test41-report-0.txt: Likewise. * tests/data/test-diff-filter/test42-leaf-report-output-0.txt: Likewise. * tests/data/test-diff-pkg/dirpkg-3-report-1.txt: Likewise. * tests/data/test-diff-pkg/dirpkg-3-report-2.txt: Likewise. * tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt: Likewise. * tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt: Likewise. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: Likewise. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Likewise. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt: Likewise. * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: Likewise. * tests/data/test-diff-suppr/test1-typedef-suppr-report-1.txt: Likewise. * tests/data/test-diff-suppr/test1-typedef-suppr-report-2.txt: Likewise. * tests/data/test-diff-suppr/test13-suppr-through-pointer-report-1.txt: Likewise. * tests/data/test-diff-suppr/test14-suppr-non-redundant-report-0.txt: Likewise. * tests/data/test-diff-suppr/test14-suppr-non-redundant-report-1.txt: Likewise. * tests/data/test-diff-suppr/test15-suppr-added-fn-report-1.txt: Likewise. * tests/data/test-diff-suppr/test15-suppr-added-fn-report-2.txt: Likewise. * tests/data/test-diff-suppr/test15-suppr-added-fn-report-3.txt: Likewise. * tests/data/test-diff-suppr/test15-suppr-added-fn-report-4.txt: Likewise. * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-1.txt: Likewise. * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-2.txt: Likewise. * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-3.txt: Likewise. * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-4.txt: Likewise. * tests/data/test-diff-suppr/test17-suppr-added-var-report-1.txt: Likewise. * tests/data/test-diff-suppr/test17-suppr-added-var-report-2.txt: Likewise. * tests/data/test-diff-suppr/test17-suppr-added-var-report-3.txt: Likewise. * tests/data/test-diff-suppr/test17-suppr-added-var-report-4.txt: Likewise. * tests/data/test-diff-suppr/test18-suppr-removed-var-report-1.txt: Likewise. * tests/data/test-diff-suppr/test18-suppr-removed-var-report-3.txt: Likewise. * tests/data/test-diff-suppr/test18-suppr-removed-var-report-4.txt: Likewise. * tests/data/test-diff-suppr/test2-struct-suppr-report-0.txt: Likewise. * tests/data/test-diff-suppr/test2-struct-suppr-report-1.txt: Likewise. * tests/data/test-diff-suppr/test25-typedef-report-1.txt: Likewise. * tests/data/test-diff-suppr/test27-add-aliased-function-report-1.txt: Likewise. * tests/data/test-diff-suppr/test27-add-aliased-function-report-2.txt: Likewise. * tests/data/test-diff-suppr/test27-add-aliased-function-report-5.txt: Likewise. * tests/data/test-diff-suppr/test28-add-aliased-function-report-3.txt: Likewise. * tests/data/test-diff-suppr/test28-add-aliased-function-report-6.txt: Likewise. * tests/data/test-diff-suppr/test30-report-1.txt: Likewise. * tests/data/test-diff-suppr/test34-report-0.txt: Likewise. * tests/data/test-diff-suppr/test35-leaf-report-0.txt: Likewise. * tests/data/test-diff-suppr/test36-leaf-report-0.txt: Likewise. * tests/data/test-diff-suppr/test5-fn-suppr-report-1.txt: Likewise. * tests/data/test-diff-suppr/test5-fn-suppr-report-2.txt: Likewise. * tests/data/test-diff-suppr/test5-fn-suppr-report-3.txt: Likewise. * tests/data/test-diff-suppr/test5-fn-suppr-report-4.txt: Likewise. * tests/data/test-diff-suppr/test5-fn-suppr-report-5.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-1.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-2.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-3.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-4.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-5.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-6.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-7.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-9.txt: Likewise. * tests/data/test-diff-suppr/test8-redundant-fn-report-0.txt: Likewise. Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2018-04-13 08:45:42 +00:00
underlying type 'struct RedsState' at reds-private.h:127:1 changed:
Fix suppression category propagation in diff node graph Under certain circumstances, a diff node (which we shall name N) that belongs to the SUPPRESSED_CATEGORY category sees its belonging to that category been propagated to its parent diff node, effectively suppressing that parent diff node as well. This is how some function diff nodes ends up being suppressed just because some of their children diff nodes were suppressed. This suppression category propagation is performed by a pass that walks the diff nodes graph. To avoid infinite cycles, the pass avoids visiting a diff node that is equivalent to a node that has already been visited. As a result, diff nodes equivalent to N (the class of equivalence of N) are not traversed by the propagation pass. So their parent diff nodes are not suppressed. This leads to some functions not being suppressed as they should. This phenomenon can be observed by comparing the two packages that are provided in the regression test accompanying this patch using abipkgdiff with the --redundant option. Here is how the patch addresses the issue. When the suppression category propagation pass considers a parent diff node (named P) of a node N' (with N' being equivalent to N), it now looks at the category of the *class of equivalence of N'* to determine if that category should be propagated to P. Previously, that pass would just look at the at the category of N' (not the category of the class of equivalence of N') for the propagation. But as N' has not been visited (because N has already been visited and nodes equivalent to N are thus not visited) the belonging of N' to the SUPPRESSED_CATEGORY hasn't been updated. So N' isn't marked as being in SUPPRESSED_CATEGORY. So the SUPPRESSED_CATEGORY wouldn't be propagated to P as it should. So, with this patch abipkgdiff invoked with the --redundant option now correctly yields: $ abipkgdiff --redundant --d1 spice-debuginfo-0.12.4-19.el7.x86_64.rpm --d2 spice-debuginfo-0.12.8-1.el7.x86_64.rpm --devel1 spice-server-devel-0.12.4-19.el7.x86_64.rpm --devel2 spice-server-devel-0.12.8-1.el7.x86_64.rpm spice-server-0.12.4-19.el7.x86_64.rpm spice-server-0.12.8-1.el7.x86_64.rpm ================ changes of 'libspice-server.so.1.8.0'=============== Functions changes summary: 1 Removed, 2 Changed (62 filtered out), 8 Added functions Variables changes summary: 0 Removed, 0 Changed, 0 Added variable [...] 2 functions with some indirect sub-type change: [C]'function spice_image_compression_t spice_server_get_image_compression(SpiceServer*)' at reds.c:3618:1 has some indirect sub-type changes: return type changed: underlying type 'enum __anonymous_enum__' changed: type size hasn't changed 7 enumerator deletions: '__anonymous_enum__::SPICE_IMAGE_COMPRESS_INVALID' value '0' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_OFF' value '1' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_GLZ' value '2' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_LZ' value '3' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_QUIC' value '4' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_GLZ' value '5' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_LZ' value '6' 9 enumerator insertions: 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_GLZ' value '2' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_LZ' value '3' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_QUIC' value '4' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_GLZ' value '5' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ' value '6' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ4' value '7' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_ENUM_END' value '8' [C]'function int spice_server_set_image_compression(SpiceServer*, spice_image_compression_t)' at reds.c:3602:1 has some indirect sub-type changes: parameter 2 of type 'typedef spice_image_compression_t' changed: underlying type 'enum __anonymous_enum__' changed: type size hasn't changed 7 enumerator deletions: '__anonymous_enum__::SPICE_IMAGE_COMPRESS_INVALID' value '0' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_OFF' value '1' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_GLZ' value '2' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_LZ' value '3' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_QUIC' value '4' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_GLZ' value '5' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_LZ' value '6' 9 enumerator insertions: 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_GLZ' value '2' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_LZ' value '3' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_QUIC' value '4' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_GLZ' value '5' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ' value '6' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ4' value '7' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_ENUM_END' value '8' ================ end of changes of 'libspice-server.so.1.8.0'=============== $ * include/abg-comparison.h (diff::get_class_of_equiv_category): Declare new member function. * src/abg-comparison.cc: Update copyright year. (diff::get_class_of_equiv_category): Define new member function. (suppression_categorization_visitor::visit_end): When considering children nodes category for propagation, consider the category of the class of equivalence of children nodes. * spice-debuginfo-0.12.4-19.el7.x86_64.rpm: New input test package. * spice-debuginfo-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-0.12.4-19.el7.x86_64.rpm: Likewise. * spice-server-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-devel-0.12.4-19.el7.x86_64.rpm: Likewise. * spice-server-devel-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: New reference test output. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Likewise. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise. * tests/data/Makefile.am: Add the new test material above to source distribution. * tests/test-diff-pkg.cc (in_out_specs): Add the new test inputs to the list of packages to test. Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2017-01-20 09:28:29 +00:00
type size hasn't changed
Better handle several anonymous types of the same kind This is a follow-up patch for the commit: 43d56de Handle several member anonymous types of the same kind It allows support for severan anonymous types even when these are not members of a class/unions. The patch introduces the concept of a scoped name. It's a qualified name for a decl made of the name of the decl appended to the *unqualified* name of its scope. Unlike for qualified names, the scoped name won't have a "__anonymous_*__" string in its name if its directly containing scope is not anonymous; a qualified name might still have that string in its name because the decl has a parent scope (not necessarily its directly containing scope though) that is anonymous. The patch goes on to update the logic for comparison of decls that are anonymous. For a decl which direct scope is *NOT* anonymous, the scoped name is what's used in the comparison. Otherwise, only the name of the decl is used. The patch also updates how we detect changes in data members and member types, in the comparison engine. It now uses the names of the data members, rather than their qualified name. This is in the scope of the current class/union anyway. The improvement is that the fact that the class/union itself is anonymous (even if its anonymous name changes to another anonymous name) won't have any spurious impact on the detection of name change of the members. The patch considers the change of an anonymous decl name which anonymous name changes to another anonymous name as being harmless. The patch updates the logic of category propagation in the comparison engine. Although a public typedef to private underlying type needs to stay public and thus not propagate the PRIVATE_TYPE_CATEGORY from its child diff node to himself, it still needs to suppress the changes to the private underlying diff node that were suppressed (because of the private-ness), unless that typedef has local changes. * include/abg-ir.h (decl_base::get_scoped_name): Declare new member function. (scope_decl::get_num_anonymous_member_{classes, unions, enums}): Declare new virtual member functions. (class_decl::get_num_anonymous_member_{classes, unions, enums}): Adjust to make these virtual. It's not necessary but I feel redundancy is a kind of self-documentation here. * src/abg-comp-filter.cc (has_harmless_name_change): Consider anonymous name changes as harmless. * src/abg-comparison.cc (class_or_union_diff::ensure_lookup_tables_populated): Consider the names of the members rather than their qualified names. (suppression_categorization_visitor::visit_end): Suppress the changes to the private underlying diff node that were suppressed because of the private-ness, unless that typedef has local changes. * src/abg-dwarf-reader.cc (build_enum_type) (add_or_update_class_type, add_or_update_union_type): Handle anonymous types in namespaces as well, not just in class/unions. * src/abg-ir.cc (decl_base::priv::scoped_name_): Define new data member. (decl_base::get_scoped_name): Define new member function. (equals): For the decl_base overload, use scoped name in the comparison, unless the decl belongs to an anonymous type. For the class_or_union_diff, only consider scoped_name during comparison. Avoid name comparison between anonymous types. (scope_decl::get_num_anonymous_member_{classes, unions, enums}): Define new member functions. (types_have_similar_structure): Do not compare names between anonymous types. (qualified_name_setter::do_update): Update scoped names too. * tests/data/test-abidiff/test-PR18791-report0.txt: Adjust. * tests/data/test-annotate/libtest23.so.abi: Likewise. * tests/data/test-annotate/test13-pr18894.so.abi: Likewise. * tests/data/test-annotate/test14-pr18893.so.abi: Likewise. * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. * tests/data/test-diff-dwarf/test43-PR22913-report-0.txt: Likewise. * tests/data/test-diff-dwarf/test46-rust-report-0.txt: Likewise. * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise. * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise. * tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt: Likewise. * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Likewise. * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: Likewise. * tests/data/test-diff-filter/test33-report-0.txt: Likewise. * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise. * tests/data/test-diff-filter/test44-anonymous-data-member-report-0.txt: Likewise. * 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: Likewise. * tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt: Likewise. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: Likewise. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Likewise. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt: Likewise. * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: Likewise. * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. * tests/data/test-read-dwarf/libtest23.so.abi: Likewise. * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise. * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2019-05-09 13:19:05 +00:00
2 data member changes (1 filtered):
type of 'VDIPortState RedsState::agent_state' changed:
underlying type 'struct VDIPortState' at reds-private.h:46:1 changed:
type size hasn't changed
1 data member change:
type of 'SpiceCharDeviceState* VDIPortState::base' changed:
in pointed to type 'typedef SpiceCharDeviceState' at spice-char.h:34:1:
underlying type 'struct SpiceCharDeviceState' at char_device.c:47:1 changed:
type size changed from 1536 to 1600 (in bits)
1 data member insertion:
'uint64_t SpiceCharDeviceState::cur_pool_size', at offset 384 (in bits) at char_device.c:57:1
12 data member changes:
'SpiceCharDeviceWriteBuffer* SpiceCharDeviceState::cur_write_buf' offset changed from 384 to 448 (in bits) (by +64 bits)
'uint8_t* SpiceCharDeviceState::cur_write_buf_pos' offset changed from 448 to 512 (in bits) (by +64 bits)
'SpiceTimer* SpiceCharDeviceState::write_to_dev_timer' offset changed from 512 to 576 (in bits) (by +64 bits)
'uint64_t SpiceCharDeviceState::num_self_tokens' offset changed from 576 to 640 (in bits) (by +64 bits)
'Ring SpiceCharDeviceState::clients' offset changed from 640 to 704 (in bits) (by +64 bits)
'uint32_t SpiceCharDeviceState::num_clients' offset changed from 768 to 832 (in bits) (by +64 bits)
'uint64_t SpiceCharDeviceState::client_tokens_interval' offset changed from 832 to 896 (in bits) (by +64 bits)
type of 'SpiceCharDeviceInstance* SpiceCharDeviceState::sin' changed:
in pointed to type 'typedef SpiceCharDeviceInstance' at spice-char.h:33:1:
underlying type 'struct SpiceCharDeviceInstance' at spice.h:416:1 changed:
type size hasn't changed
1 data member change:
type of 'SpiceCharDeviceState* SpiceCharDeviceInstance::st' changed:
in pointed to type 'typedef SpiceCharDeviceState' at spice-char.h:34:1:
abidiff: More compact references to prior diffs. In both the default and leaf reporting modes, when there is a repeated or circular reference to a type difference of a member variable, some placeholder text is emitted instead. In the leaf reporter: type 'struct S' of 'foo::bar' changed as reported earlier In the default reporter, this spans two lines: type of 'S foo::bar' changed: details were reported earlier This patch changes the latter to the more compact: type of 'S foo::bar' changed, as reported earlier More generally, this patch makes the punctuation of such placeholder text more consistent with a comma separating the phrases in all cases. It doesn't attempt to reconcile the different formatting of member variable declarations between the two modes. * src/abg-reporter-priv.cc (represent): In the var_diff_sptr overload, use consistent punctuation and keep to a single line of output when referring back to an existing type diff report. Remove unnecessary braces around single line conditional blocks. * src/abg-reporter-priv.h: In the macro RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER, use consistent punctuation when referring back to an existing type diff report. * tests/data/test-abidiff/test-PR18791-report0.txt: Adjust formatting of back references to existing type diff reports. * tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt: Ditto. * tests/data/test-diff-filter/test16-report-2.txt: Ditto. * tests/data/test-diff-filter/test17-1-report.txt: Ditto. * tests/data/test-diff-filter/test25-cyclic-type-report-1.txt: Ditto. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Ditto. * tests/data/test-diff-suppr/test36-leaf-report-0.txt: Ditto. Signed-off-by: Giuliano Procida <gprocida@google.com> Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2020-04-07 21:33:13 +00:00
underlying type 'struct SpiceCharDeviceState' changed, as being reported
and offset changed from 896 to 960 (in bits) (by +64 bits)
'int SpiceCharDeviceState::during_read_from_device' offset changed from 960 to 1024 (in bits) (by +64 bits)
'int SpiceCharDeviceState::during_write_to_device' offset changed from 992 to 1056 (in bits) (by +64 bits)
type of 'SpiceCharDeviceCallbacks SpiceCharDeviceState::cbs' changed:
underlying type 'struct SpiceCharDeviceCallbacks' at char_device.h:81:1 changed:
type size hasn't changed
1 data member change:
type of 'SpiceCharDeviceMsgToClient* (SpiceCharDeviceInstance*, void*)* SpiceCharDeviceCallbacks::read_one_msg_from_device' changed:
in pointed to type 'function type SpiceCharDeviceMsgToClient* (SpiceCharDeviceInstance*, void*)':
parameter 1 of type 'SpiceCharDeviceInstance*' has sub-type changes:
pointed to type 'typedef SpiceCharDeviceInstance' changed at spice.h:399:1, as reported earlier
and offset changed from 1024 to 1088 (in bits) (by +64 bits)
'void* SpiceCharDeviceState::opaque' offset changed from 1472 to 1536 (in bits) (by +64 bits)
no data member changes (3 filtered);
type of 'MainChannel* RedsState::main_channel' changed:
in pointed to type 'typedef MainChannel' at main_channel.h:48:1:
underlying type 'struct MainChannel' at main_channel.h:36:1 changed:
type size hasn't changed
1 data member change:
type of 'RedChannel MainChannel::base' changed:
underlying type 'struct RedChannel' at red_channel.h:303:1 changed:
type size hasn't changed
2 data member changes (1 filtered):
type of 'ChannelCbs RedChannel::channel_cbs' changed:
underlying type 'struct {channel_configure_socket_proc config_socket; channel_disconnect_proc on_disconnect; channel_send_pipe_item_proc send_item; channel_hold_pipe_item_proc hold_item; channel_release_pipe_item_proc release_item; channel_alloc_msg_recv_buf_proc alloc_recv_buf; channel_release_msg_recv_buf_proc release_recv_buf; channel_handle_migrate_flush_mark_proc handle_migrate_flush_mark; channel_handle_migrate_data_proc handle_migrate_data; channel_handle_migrate_data_get_serial_proc handle_migrate_data_get_serial;}' at red_channel.h:195:1 changed:
type size hasn't changed
10 data member changes:
type of 'channel_configure_socket_proc config_socket' changed:
underlying type 'int (RedChannelClient*)*' changed:
in pointed to type 'function type int (RedChannelClient*)':
parameter 1 of type 'RedChannelClient*' has sub-type changes:
in pointed to type 'typedef RedChannelClient' at red_channel.h:131:1:
underlying type 'struct RedChannelClient' at red_channel.h:247:1 changed:
type size hasn't changed
2 data member changes (2 filtered):
type of 'RedChannel* RedChannelClient::channel' changed:
in pointed to type 'typedef RedChannel' at red_channel.h:130:1:
abidiff: More compact references to prior diffs. In both the default and leaf reporting modes, when there is a repeated or circular reference to a type difference of a member variable, some placeholder text is emitted instead. In the leaf reporter: type 'struct S' of 'foo::bar' changed as reported earlier In the default reporter, this spans two lines: type of 'S foo::bar' changed: details were reported earlier This patch changes the latter to the more compact: type of 'S foo::bar' changed, as reported earlier More generally, this patch makes the punctuation of such placeholder text more consistent with a comma separating the phrases in all cases. It doesn't attempt to reconcile the different formatting of member variable declarations between the two modes. * src/abg-reporter-priv.cc (represent): In the var_diff_sptr overload, use consistent punctuation and keep to a single line of output when referring back to an existing type diff report. Remove unnecessary braces around single line conditional blocks. * src/abg-reporter-priv.h: In the macro RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER, use consistent punctuation when referring back to an existing type diff report. * tests/data/test-abidiff/test-PR18791-report0.txt: Adjust formatting of back references to existing type diff reports. * tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt: Ditto. * tests/data/test-diff-filter/test16-report-2.txt: Ditto. * tests/data/test-diff-filter/test17-1-report.txt: Ditto. * tests/data/test-diff-filter/test25-cyclic-type-report-1.txt: Ditto. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Ditto. * tests/data/test-diff-suppr/test36-leaf-report-0.txt: Ditto. Signed-off-by: Giuliano Procida <gprocida@google.com> Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2020-04-07 21:33:13 +00:00
underlying type 'struct RedChannel' changed, as being reported
type of 'RedsStream* RedChannelClient::stream' changed:
in pointed to type 'typedef RedsStream' at reds_stream.h:31:1:
underlying type 'struct RedsStream' at reds.h:68:1 changed:
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:
typedef name changed from SSL to RedsStreamPrivate at reds_stream.h:32:1
underlying type 'struct ssl_st' at ssl.h:1065:1 changed:
type name changed from 'ssl_st' to 'RedsStreamPrivate'
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
type of 'channel_disconnect_proc on_disconnect' changed:
underlying type 'void (RedChannelClient*)*' changed:
in pointed to type 'function type void (RedChannelClient*)':
parameter 1 of type 'RedChannelClient*' has sub-type changes:
pointed to type 'typedef RedChannelClient' changed at red_channel.h:136:1, as reported earlier
type of 'channel_send_pipe_item_proc send_item' changed:
underlying type 'void (RedChannelClient*, PipeItem*)*' changed:
in pointed to type 'function type void (RedChannelClient*, PipeItem*)':
parameter 1 of type 'RedChannelClient*' has sub-type changes:
pointed to type 'typedef RedChannelClient' changed at red_channel.h:136:1, as reported earlier
type of 'channel_hold_pipe_item_proc hold_item' changed:
underlying type 'void (RedChannelClient*, PipeItem*)*' changed:
in pointed to type 'function type void (RedChannelClient*, PipeItem*)':
parameter 1 of type 'RedChannelClient*' has sub-type changes:
pointed to type 'typedef RedChannelClient' changed at red_channel.h:136:1, as reported earlier
type of 'channel_release_pipe_item_proc release_item' changed:
underlying type 'void (RedChannelClient*, PipeItem*, int)*' changed:
in pointed to type 'function type void (RedChannelClient*, PipeItem*, int)':
parameter 1 of type 'RedChannelClient*' has sub-type changes:
pointed to type 'typedef RedChannelClient' changed at red_channel.h:136:1, as reported earlier
type of 'channel_alloc_msg_recv_buf_proc alloc_recv_buf' changed:
underlying type 'uint8_t* (RedChannelClient*, typedef uint16_t, typedef uint32_t)*' changed:
in pointed to type 'function type uint8_t* (RedChannelClient*, typedef uint16_t, typedef uint32_t)':
parameter 1 of type 'RedChannelClient*' has sub-type changes:
pointed to type 'typedef RedChannelClient' changed at red_channel.h:136:1, as reported earlier
type of 'channel_release_msg_recv_buf_proc release_recv_buf' changed:
underlying type 'void (RedChannelClient*, typedef uint16_t, typedef uint32_t, uint8_t*)*' changed:
in pointed to type 'function type void (RedChannelClient*, typedef uint16_t, typedef uint32_t, uint8_t*)':
parameter 1 of type 'RedChannelClient*' has sub-type changes:
pointed to type 'typedef RedChannelClient' changed at red_channel.h:136:1, as reported earlier
type of 'channel_handle_migrate_flush_mark_proc handle_migrate_flush_mark' changed:
underlying type 'int (RedChannelClient*)*' changed:
in pointed to type 'function type int (RedChannelClient*)':
parameter 1 of type 'RedChannelClient*' has sub-type changes:
pointed to type 'typedef RedChannelClient' changed at red_channel.h:136:1, as reported earlier
type of 'channel_handle_migrate_data_proc handle_migrate_data' changed:
underlying type 'int (RedChannelClient*, typedef uint32_t, void*)*' changed:
in pointed to type 'function type int (RedChannelClient*, typedef uint32_t, void*)':
parameter 1 of type 'RedChannelClient*' has sub-type changes:
pointed to type 'typedef RedChannelClient' changed at red_channel.h:136:1, as reported earlier
type of 'channel_handle_migrate_data_get_serial_proc handle_migrate_data_get_serial' changed:
underlying type 'typedef uint64_t (RedChannelClient*, typedef uint32_t, void*)*' changed:
in pointed to type 'function type typedef uint64_t (RedChannelClient*, typedef uint32_t, void*)':
parameter 1 of type 'RedChannelClient*' has sub-type changes:
pointed to type 'typedef RedChannelClient' changed at red_channel.h:136:1, as reported earlier
type of 'ClientCbs RedChannel::client_cbs' changed:
underlying type 'struct {channel_client_connect_proc connect; channel_client_disconnect_proc disconnect; channel_client_migrate_proc migrate;}' at red_channel.h:213:1 changed:
type size hasn't changed
3 data member changes:
type of 'channel_client_connect_proc connect' changed:
underlying type 'void (RedChannel*, RedClient*, RedsStream*, int, int, uint32_t*, int, uint32_t*)*' changed:
in pointed to type 'function type void (RedChannel*, RedClient*, RedsStream*, int, int, uint32_t*, int, uint32_t*)':
parameter 1 of type 'RedChannel*' has sub-type changes:
in pointed to type 'typedef RedChannel' at red_channel.h:130:1:
abidiff: More compact references to prior diffs. In both the default and leaf reporting modes, when there is a repeated or circular reference to a type difference of a member variable, some placeholder text is emitted instead. In the leaf reporter: type 'struct S' of 'foo::bar' changed as reported earlier In the default reporter, this spans two lines: type of 'S foo::bar' changed: details were reported earlier This patch changes the latter to the more compact: type of 'S foo::bar' changed, as reported earlier More generally, this patch makes the punctuation of such placeholder text more consistent with a comma separating the phrases in all cases. It doesn't attempt to reconcile the different formatting of member variable declarations between the two modes. * src/abg-reporter-priv.cc (represent): In the var_diff_sptr overload, use consistent punctuation and keep to a single line of output when referring back to an existing type diff report. Remove unnecessary braces around single line conditional blocks. * src/abg-reporter-priv.h: In the macro RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER, use consistent punctuation when referring back to an existing type diff report. * tests/data/test-abidiff/test-PR18791-report0.txt: Adjust formatting of back references to existing type diff reports. * tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt: Ditto. * tests/data/test-diff-filter/test16-report-2.txt: Ditto. * tests/data/test-diff-filter/test17-1-report.txt: Ditto. * tests/data/test-diff-filter/test25-cyclic-type-report-1.txt: Ditto. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Ditto. * tests/data/test-diff-suppr/test36-leaf-report-0.txt: Ditto. Signed-off-by: Giuliano Procida <gprocida@google.com> Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2020-04-07 21:33:13 +00:00
underlying type 'struct RedChannel' changed, as being reported
parameter 3 of type 'RedsStream*' has sub-type changes:
pointed to type 'typedef RedsStream' changed at red_channel.h:134:1, as reported earlier
type of 'channel_client_disconnect_proc disconnect' changed:
underlying type 'void (RedChannelClient*)*' changed:
in pointed to type 'function type void (RedChannelClient*)':
parameter 1 of type 'RedChannelClient*' has sub-type changes:
pointed to type 'typedef RedChannelClient' changed at red_channel.h:136:1, as reported earlier
type of 'channel_client_migrate_proc migrate' changed:
underlying type 'void (RedChannelClient*)*' changed:
in pointed to type 'function type void (RedChannelClient*)':
parameter 1 of type 'RedChannelClient*' has sub-type changes:
pointed to type 'typedef RedChannelClient' changed at red_channel.h:136:1, as reported earlier
Update tests for the "better leaf mode redundancy management" patchset This commit is the last of the set whose commit titles are: Do not show decl-only-to-def changes in the leaf reporter Overhaul of the report diff stats summary Do not mark "distinct" diff nodes as being redundant Fix meaning of "harmless name change" to avoid overfiltering Better handle category propagation of pointer changes Improve function changes reporting in leaf and default mode Don't filter out typedef changes with redundant underlying type changes Only show leaf type changes in the leaf type changes section Fix leaf report of class data member changes Always show redundant changes in leaf mode Avoid reporting an enum change if it has already been reported When we say an a change was reported earlier give its source location [abipkgdiff]: in leaf mode we always show redundant changes Update tests for the "better leaf mode redundancy management" patchset This commit updates the tests reference output files for that patchset. * tests/data/test-abidiff-exit/test1-voffset-change-report1.txt: Adjust. * tests/data/test-abidiff/test-PR18791-report0.txt: Likewise. * tests/data/test-abidiff/test-enum0-report.txt: Likewise. * tests/data/test-abidiff/test-enum1-report.txt: Likewise. * tests/data/test-diff-filter/test1-report.txt: Likewise. * tests/data/test-diff-filter/test14-0-report.txt: Likewise. * tests/data/test-diff-filter/test15-0-report.txt: Likewise. * tests/data/test-diff-filter/test17-0-report.txt: Likewise. * tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-0.txt: Likewise. * tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-0.txt: Likewise. * tests/data/test-diff-filter/test3-report.txt: Likewise. * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise. * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise. * tests/data/test-diff-filter/test32-ppc64le-struct-change-report0.txt: Likewise. * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise. * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt: Likewise. * tests/data/test-diff-filter/test4-report.txt: Likewise. * tests/data/test-diff-filter/test41-report-0.txt: Likewise. * tests/data/test-diff-filter/test42-leaf-report-output-0.txt: Likewise. * tests/data/test-diff-pkg/dirpkg-3-report-1.txt: Likewise. * tests/data/test-diff-pkg/dirpkg-3-report-2.txt: Likewise. * tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt: Likewise. * tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt: Likewise. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: Likewise. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Likewise. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt: Likewise. * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: Likewise. * tests/data/test-diff-suppr/test1-typedef-suppr-report-1.txt: Likewise. * tests/data/test-diff-suppr/test1-typedef-suppr-report-2.txt: Likewise. * tests/data/test-diff-suppr/test13-suppr-through-pointer-report-1.txt: Likewise. * tests/data/test-diff-suppr/test14-suppr-non-redundant-report-0.txt: Likewise. * tests/data/test-diff-suppr/test14-suppr-non-redundant-report-1.txt: Likewise. * tests/data/test-diff-suppr/test15-suppr-added-fn-report-1.txt: Likewise. * tests/data/test-diff-suppr/test15-suppr-added-fn-report-2.txt: Likewise. * tests/data/test-diff-suppr/test15-suppr-added-fn-report-3.txt: Likewise. * tests/data/test-diff-suppr/test15-suppr-added-fn-report-4.txt: Likewise. * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-1.txt: Likewise. * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-2.txt: Likewise. * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-3.txt: Likewise. * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-4.txt: Likewise. * tests/data/test-diff-suppr/test17-suppr-added-var-report-1.txt: Likewise. * tests/data/test-diff-suppr/test17-suppr-added-var-report-2.txt: Likewise. * tests/data/test-diff-suppr/test17-suppr-added-var-report-3.txt: Likewise. * tests/data/test-diff-suppr/test17-suppr-added-var-report-4.txt: Likewise. * tests/data/test-diff-suppr/test18-suppr-removed-var-report-1.txt: Likewise. * tests/data/test-diff-suppr/test18-suppr-removed-var-report-3.txt: Likewise. * tests/data/test-diff-suppr/test18-suppr-removed-var-report-4.txt: Likewise. * tests/data/test-diff-suppr/test2-struct-suppr-report-0.txt: Likewise. * tests/data/test-diff-suppr/test2-struct-suppr-report-1.txt: Likewise. * tests/data/test-diff-suppr/test25-typedef-report-1.txt: Likewise. * tests/data/test-diff-suppr/test27-add-aliased-function-report-1.txt: Likewise. * tests/data/test-diff-suppr/test27-add-aliased-function-report-2.txt: Likewise. * tests/data/test-diff-suppr/test27-add-aliased-function-report-5.txt: Likewise. * tests/data/test-diff-suppr/test28-add-aliased-function-report-3.txt: Likewise. * tests/data/test-diff-suppr/test28-add-aliased-function-report-6.txt: Likewise. * tests/data/test-diff-suppr/test30-report-1.txt: Likewise. * tests/data/test-diff-suppr/test34-report-0.txt: Likewise. * tests/data/test-diff-suppr/test35-leaf-report-0.txt: Likewise. * tests/data/test-diff-suppr/test36-leaf-report-0.txt: Likewise. * tests/data/test-diff-suppr/test5-fn-suppr-report-1.txt: Likewise. * tests/data/test-diff-suppr/test5-fn-suppr-report-2.txt: Likewise. * tests/data/test-diff-suppr/test5-fn-suppr-report-3.txt: Likewise. * tests/data/test-diff-suppr/test5-fn-suppr-report-4.txt: Likewise. * tests/data/test-diff-suppr/test5-fn-suppr-report-5.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-1.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-2.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-3.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-4.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-5.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-6.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-7.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-9.txt: Likewise. * tests/data/test-diff-suppr/test8-redundant-fn-report-0.txt: Likewise. Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2018-04-13 08:45:42 +00:00
no data member change (1 filtered);
Fix interaction of --redundant and --leaf-changes-only options. The --redundant (meaning show-redundant-changes) option is supposed to be implied by --leaf-changes-only and this is currently implemented by making diff_context's --leaf-changes-only setter also duplicate the behaviour of its --redundant setter. In both abidiff and abipkgdiff, the diff_context setters are called unconditionally, but the relative order of the calls for these two options is different in each case, resulting in two different issues. In abidiff, the --redundant setter is called second, undoing the intended side-effect of any --leaf-changes-only flag. So --redundant is not actually turned on in --leaf-changes-only mode unless requested explicitly. In abipkgdiff, the leaf-changes-only setter is called second, undoing (in non-leaf mode) the effect of any --redundant flag. So --redundant has no effect in default reporting mode. The fix is move to move the "--leaf-changes-only implies --redundant" logic from the setter to the set_diff_context_from_opts functions. This patch also documents the implied behaviour in the usage strings. * src/abg-comparison.cc (diff_context::show_leaf_changes_only): Remove "--leaf-changes-only implies --redundant" logic. * tools/abidiff.cc (display_usage): Mention that --leaf-changes-only implies --redundant. (set_diff_context_from_opts): Make --leaf-changes-only imply --redundant; document this behaviour in a comment. * tools/abipkgdiff.cc: Ditto. * tests/data/Makefile.am: Add new test case files. * tests/data/test-abidiff-exit/test-leaf3-report.txt: Add new test case, to show --leaf-changes-only implies --redundant. * tests/data/test-abidiff-exit/test-leaf3-v0.c: Ditto. * tests/data/test-abidiff-exit/test-leaf3-v0.o: Ditto. * tests/data/test-abidiff-exit/test-leaf3-v1.c: Ditto. * tests/data/test-abidiff-exit/test-leaf3-v1.o: Ditto. * tests/test-abidiff-exit.cc: Run new test case. * tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt: Update abipkgdiff report with --redundant output. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Ditto. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Ditto. Signed-off-by: Giuliano Procida <gprocida@google.com>
2020-03-12 06:30:32 +00:00
[C] 'function int spice_server_add_interface(SpiceServer*, SpiceBaseInstance*)' at reds.c:3159:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceServer*' has sub-type changes:
pointed to type 'typedef SpiceServer' changed at spice.h:440:1, as reported earlier
[C] 'function int spice_server_add_renderer(SpiceServer*, const char*)' at reds.c:3704:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceServer*' has sub-type changes:
pointed to type 'typedef SpiceServer' changed at spice.h:440:1, as reported earlier
[C] 'function int spice_server_add_ssl_client(SpiceServer*, int, int)' at reds.c:2408:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceServer*' has sub-type changes:
pointed to type 'typedef SpiceServer' changed at spice.h:440:1, as reported earlier
[C] 'function void spice_server_char_device_wakeup(SpiceCharDeviceInstance*)' at reds.c:3024:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceCharDeviceInstance*' has sub-type changes:
pointed to type 'typedef SpiceCharDeviceInstance' changed at spice.h:399:1, as reported earlier
[C] 'function void spice_server_destroy(SpiceServer*)' at reds.c:3419:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceServer*' has sub-type changes:
pointed to type 'typedef SpiceServer' changed at spice.h:440:1, as reported earlier
[C] 'function spice_image_compression_t spice_server_get_image_compression(SpiceServer*)' at reds.c:3618:1 has some indirect sub-type changes:
Update tests for the "better leaf mode redundancy management" patchset This commit is the last of the set whose commit titles are: Do not show decl-only-to-def changes in the leaf reporter Overhaul of the report diff stats summary Do not mark "distinct" diff nodes as being redundant Fix meaning of "harmless name change" to avoid overfiltering Better handle category propagation of pointer changes Improve function changes reporting in leaf and default mode Don't filter out typedef changes with redundant underlying type changes Only show leaf type changes in the leaf type changes section Fix leaf report of class data member changes Always show redundant changes in leaf mode Avoid reporting an enum change if it has already been reported When we say an a change was reported earlier give its source location [abipkgdiff]: in leaf mode we always show redundant changes Update tests for the "better leaf mode redundancy management" patchset This commit updates the tests reference output files for that patchset. * tests/data/test-abidiff-exit/test1-voffset-change-report1.txt: Adjust. * tests/data/test-abidiff/test-PR18791-report0.txt: Likewise. * tests/data/test-abidiff/test-enum0-report.txt: Likewise. * tests/data/test-abidiff/test-enum1-report.txt: Likewise. * tests/data/test-diff-filter/test1-report.txt: Likewise. * tests/data/test-diff-filter/test14-0-report.txt: Likewise. * tests/data/test-diff-filter/test15-0-report.txt: Likewise. * tests/data/test-diff-filter/test17-0-report.txt: Likewise. * tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-0.txt: Likewise. * tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-0.txt: Likewise. * tests/data/test-diff-filter/test3-report.txt: Likewise. * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise. * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise. * tests/data/test-diff-filter/test32-ppc64le-struct-change-report0.txt: Likewise. * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise. * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt: Likewise. * tests/data/test-diff-filter/test4-report.txt: Likewise. * tests/data/test-diff-filter/test41-report-0.txt: Likewise. * tests/data/test-diff-filter/test42-leaf-report-output-0.txt: Likewise. * tests/data/test-diff-pkg/dirpkg-3-report-1.txt: Likewise. * tests/data/test-diff-pkg/dirpkg-3-report-2.txt: Likewise. * tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt: Likewise. * tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt: Likewise. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: Likewise. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Likewise. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt: Likewise. * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: Likewise. * tests/data/test-diff-suppr/test1-typedef-suppr-report-1.txt: Likewise. * tests/data/test-diff-suppr/test1-typedef-suppr-report-2.txt: Likewise. * tests/data/test-diff-suppr/test13-suppr-through-pointer-report-1.txt: Likewise. * tests/data/test-diff-suppr/test14-suppr-non-redundant-report-0.txt: Likewise. * tests/data/test-diff-suppr/test14-suppr-non-redundant-report-1.txt: Likewise. * tests/data/test-diff-suppr/test15-suppr-added-fn-report-1.txt: Likewise. * tests/data/test-diff-suppr/test15-suppr-added-fn-report-2.txt: Likewise. * tests/data/test-diff-suppr/test15-suppr-added-fn-report-3.txt: Likewise. * tests/data/test-diff-suppr/test15-suppr-added-fn-report-4.txt: Likewise. * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-1.txt: Likewise. * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-2.txt: Likewise. * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-3.txt: Likewise. * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-4.txt: Likewise. * tests/data/test-diff-suppr/test17-suppr-added-var-report-1.txt: Likewise. * tests/data/test-diff-suppr/test17-suppr-added-var-report-2.txt: Likewise. * tests/data/test-diff-suppr/test17-suppr-added-var-report-3.txt: Likewise. * tests/data/test-diff-suppr/test17-suppr-added-var-report-4.txt: Likewise. * tests/data/test-diff-suppr/test18-suppr-removed-var-report-1.txt: Likewise. * tests/data/test-diff-suppr/test18-suppr-removed-var-report-3.txt: Likewise. * tests/data/test-diff-suppr/test18-suppr-removed-var-report-4.txt: Likewise. * tests/data/test-diff-suppr/test2-struct-suppr-report-0.txt: Likewise. * tests/data/test-diff-suppr/test2-struct-suppr-report-1.txt: Likewise. * tests/data/test-diff-suppr/test25-typedef-report-1.txt: Likewise. * tests/data/test-diff-suppr/test27-add-aliased-function-report-1.txt: Likewise. * tests/data/test-diff-suppr/test27-add-aliased-function-report-2.txt: Likewise. * tests/data/test-diff-suppr/test27-add-aliased-function-report-5.txt: Likewise. * tests/data/test-diff-suppr/test28-add-aliased-function-report-3.txt: Likewise. * tests/data/test-diff-suppr/test28-add-aliased-function-report-6.txt: Likewise. * tests/data/test-diff-suppr/test30-report-1.txt: Likewise. * tests/data/test-diff-suppr/test34-report-0.txt: Likewise. * tests/data/test-diff-suppr/test35-leaf-report-0.txt: Likewise. * tests/data/test-diff-suppr/test36-leaf-report-0.txt: Likewise. * tests/data/test-diff-suppr/test5-fn-suppr-report-1.txt: Likewise. * tests/data/test-diff-suppr/test5-fn-suppr-report-2.txt: Likewise. * tests/data/test-diff-suppr/test5-fn-suppr-report-3.txt: Likewise. * tests/data/test-diff-suppr/test5-fn-suppr-report-4.txt: Likewise. * tests/data/test-diff-suppr/test5-fn-suppr-report-5.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-1.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-2.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-3.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-4.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-5.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-6.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-7.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-9.txt: Likewise. * tests/data/test-diff-suppr/test8-redundant-fn-report-0.txt: Likewise. Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2018-04-13 08:45:42 +00:00
return type changed:
typedef name changed from spice_image_compression_t to SpiceImageCompression at enums.h:197:1
Better handle several anonymous types of the same kind This is a follow-up patch for the commit: 43d56de Handle several member anonymous types of the same kind It allows support for severan anonymous types even when these are not members of a class/unions. The patch introduces the concept of a scoped name. It's a qualified name for a decl made of the name of the decl appended to the *unqualified* name of its scope. Unlike for qualified names, the scoped name won't have a "__anonymous_*__" string in its name if its directly containing scope is not anonymous; a qualified name might still have that string in its name because the decl has a parent scope (not necessarily its directly containing scope though) that is anonymous. The patch goes on to update the logic for comparison of decls that are anonymous. For a decl which direct scope is *NOT* anonymous, the scoped name is what's used in the comparison. Otherwise, only the name of the decl is used. The patch also updates how we detect changes in data members and member types, in the comparison engine. It now uses the names of the data members, rather than their qualified name. This is in the scope of the current class/union anyway. The improvement is that the fact that the class/union itself is anonymous (even if its anonymous name changes to another anonymous name) won't have any spurious impact on the detection of name change of the members. The patch considers the change of an anonymous decl name which anonymous name changes to another anonymous name as being harmless. The patch updates the logic of category propagation in the comparison engine. Although a public typedef to private underlying type needs to stay public and thus not propagate the PRIVATE_TYPE_CATEGORY from its child diff node to himself, it still needs to suppress the changes to the private underlying diff node that were suppressed (because of the private-ness), unless that typedef has local changes. * include/abg-ir.h (decl_base::get_scoped_name): Declare new member function. (scope_decl::get_num_anonymous_member_{classes, unions, enums}): Declare new virtual member functions. (class_decl::get_num_anonymous_member_{classes, unions, enums}): Adjust to make these virtual. It's not necessary but I feel redundancy is a kind of self-documentation here. * src/abg-comp-filter.cc (has_harmless_name_change): Consider anonymous name changes as harmless. * src/abg-comparison.cc (class_or_union_diff::ensure_lookup_tables_populated): Consider the names of the members rather than their qualified names. (suppression_categorization_visitor::visit_end): Suppress the changes to the private underlying diff node that were suppressed because of the private-ness, unless that typedef has local changes. * src/abg-dwarf-reader.cc (build_enum_type) (add_or_update_class_type, add_or_update_union_type): Handle anonymous types in namespaces as well, not just in class/unions. * src/abg-ir.cc (decl_base::priv::scoped_name_): Define new data member. (decl_base::get_scoped_name): Define new member function. (equals): For the decl_base overload, use scoped name in the comparison, unless the decl belongs to an anonymous type. For the class_or_union_diff, only consider scoped_name during comparison. Avoid name comparison between anonymous types. (scope_decl::get_num_anonymous_member_{classes, unions, enums}): Define new member functions. (types_have_similar_structure): Do not compare names between anonymous types. (qualified_name_setter::do_update): Update scoped names too. * tests/data/test-abidiff/test-PR18791-report0.txt: Adjust. * tests/data/test-annotate/libtest23.so.abi: Likewise. * tests/data/test-annotate/test13-pr18894.so.abi: Likewise. * tests/data/test-annotate/test14-pr18893.so.abi: Likewise. * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. * tests/data/test-diff-dwarf/test43-PR22913-report-0.txt: Likewise. * tests/data/test-diff-dwarf/test46-rust-report-0.txt: Likewise. * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise. * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise. * tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt: Likewise. * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Likewise. * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: Likewise. * tests/data/test-diff-filter/test33-report-0.txt: Likewise. * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise. * tests/data/test-diff-filter/test44-anonymous-data-member-report-0.txt: Likewise. * 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: Likewise. * tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt: Likewise. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: Likewise. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Likewise. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt: Likewise. * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: Likewise. * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. * tests/data/test-read-dwarf/libtest23.so.abi: Likewise. * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise. * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2019-05-09 13:19:05 +00:00
underlying type 'enum __anonymous_enum__2' at spice.h:471:1 changed:
type name changed from '__anonymous_enum__2' to 'SpiceImageCompression'
Fix suppression category propagation in diff node graph Under certain circumstances, a diff node (which we shall name N) that belongs to the SUPPRESSED_CATEGORY category sees its belonging to that category been propagated to its parent diff node, effectively suppressing that parent diff node as well. This is how some function diff nodes ends up being suppressed just because some of their children diff nodes were suppressed. This suppression category propagation is performed by a pass that walks the diff nodes graph. To avoid infinite cycles, the pass avoids visiting a diff node that is equivalent to a node that has already been visited. As a result, diff nodes equivalent to N (the class of equivalence of N) are not traversed by the propagation pass. So their parent diff nodes are not suppressed. This leads to some functions not being suppressed as they should. This phenomenon can be observed by comparing the two packages that are provided in the regression test accompanying this patch using abipkgdiff with the --redundant option. Here is how the patch addresses the issue. When the suppression category propagation pass considers a parent diff node (named P) of a node N' (with N' being equivalent to N), it now looks at the category of the *class of equivalence of N'* to determine if that category should be propagated to P. Previously, that pass would just look at the at the category of N' (not the category of the class of equivalence of N') for the propagation. But as N' has not been visited (because N has already been visited and nodes equivalent to N are thus not visited) the belonging of N' to the SUPPRESSED_CATEGORY hasn't been updated. So N' isn't marked as being in SUPPRESSED_CATEGORY. So the SUPPRESSED_CATEGORY wouldn't be propagated to P as it should. So, with this patch abipkgdiff invoked with the --redundant option now correctly yields: $ abipkgdiff --redundant --d1 spice-debuginfo-0.12.4-19.el7.x86_64.rpm --d2 spice-debuginfo-0.12.8-1.el7.x86_64.rpm --devel1 spice-server-devel-0.12.4-19.el7.x86_64.rpm --devel2 spice-server-devel-0.12.8-1.el7.x86_64.rpm spice-server-0.12.4-19.el7.x86_64.rpm spice-server-0.12.8-1.el7.x86_64.rpm ================ changes of 'libspice-server.so.1.8.0'=============== Functions changes summary: 1 Removed, 2 Changed (62 filtered out), 8 Added functions Variables changes summary: 0 Removed, 0 Changed, 0 Added variable [...] 2 functions with some indirect sub-type change: [C]'function spice_image_compression_t spice_server_get_image_compression(SpiceServer*)' at reds.c:3618:1 has some indirect sub-type changes: return type changed: underlying type 'enum __anonymous_enum__' changed: type size hasn't changed 7 enumerator deletions: '__anonymous_enum__::SPICE_IMAGE_COMPRESS_INVALID' value '0' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_OFF' value '1' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_GLZ' value '2' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_LZ' value '3' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_QUIC' value '4' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_GLZ' value '5' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_LZ' value '6' 9 enumerator insertions: 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_GLZ' value '2' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_LZ' value '3' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_QUIC' value '4' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_GLZ' value '5' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ' value '6' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ4' value '7' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_ENUM_END' value '8' [C]'function int spice_server_set_image_compression(SpiceServer*, spice_image_compression_t)' at reds.c:3602:1 has some indirect sub-type changes: parameter 2 of type 'typedef spice_image_compression_t' changed: underlying type 'enum __anonymous_enum__' changed: type size hasn't changed 7 enumerator deletions: '__anonymous_enum__::SPICE_IMAGE_COMPRESS_INVALID' value '0' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_OFF' value '1' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_GLZ' value '2' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_LZ' value '3' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_QUIC' value '4' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_GLZ' value '5' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_LZ' value '6' 9 enumerator insertions: 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_GLZ' value '2' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_LZ' value '3' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_QUIC' value '4' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_GLZ' value '5' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ' value '6' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ4' value '7' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_ENUM_END' value '8' ================ end of changes of 'libspice-server.so.1.8.0'=============== $ * include/abg-comparison.h (diff::get_class_of_equiv_category): Declare new member function. * src/abg-comparison.cc: Update copyright year. (diff::get_class_of_equiv_category): Define new member function. (suppression_categorization_visitor::visit_end): When considering children nodes category for propagation, consider the category of the class of equivalence of children nodes. * spice-debuginfo-0.12.4-19.el7.x86_64.rpm: New input test package. * spice-debuginfo-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-0.12.4-19.el7.x86_64.rpm: Likewise. * spice-server-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-devel-0.12.4-19.el7.x86_64.rpm: Likewise. * spice-server-devel-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: New reference test output. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Likewise. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise. * tests/data/Makefile.am: Add the new test material above to source distribution. * tests/test-diff-pkg.cc (in_out_specs): Add the new test inputs to the list of packages to test. Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2017-01-20 09:28:29 +00:00
type size hasn't changed
7 enumerator deletions:
Better handle several anonymous types of the same kind This is a follow-up patch for the commit: 43d56de Handle several member anonymous types of the same kind It allows support for severan anonymous types even when these are not members of a class/unions. The patch introduces the concept of a scoped name. It's a qualified name for a decl made of the name of the decl appended to the *unqualified* name of its scope. Unlike for qualified names, the scoped name won't have a "__anonymous_*__" string in its name if its directly containing scope is not anonymous; a qualified name might still have that string in its name because the decl has a parent scope (not necessarily its directly containing scope though) that is anonymous. The patch goes on to update the logic for comparison of decls that are anonymous. For a decl which direct scope is *NOT* anonymous, the scoped name is what's used in the comparison. Otherwise, only the name of the decl is used. The patch also updates how we detect changes in data members and member types, in the comparison engine. It now uses the names of the data members, rather than their qualified name. This is in the scope of the current class/union anyway. The improvement is that the fact that the class/union itself is anonymous (even if its anonymous name changes to another anonymous name) won't have any spurious impact on the detection of name change of the members. The patch considers the change of an anonymous decl name which anonymous name changes to another anonymous name as being harmless. The patch updates the logic of category propagation in the comparison engine. Although a public typedef to private underlying type needs to stay public and thus not propagate the PRIVATE_TYPE_CATEGORY from its child diff node to himself, it still needs to suppress the changes to the private underlying diff node that were suppressed (because of the private-ness), unless that typedef has local changes. * include/abg-ir.h (decl_base::get_scoped_name): Declare new member function. (scope_decl::get_num_anonymous_member_{classes, unions, enums}): Declare new virtual member functions. (class_decl::get_num_anonymous_member_{classes, unions, enums}): Adjust to make these virtual. It's not necessary but I feel redundancy is a kind of self-documentation here. * src/abg-comp-filter.cc (has_harmless_name_change): Consider anonymous name changes as harmless. * src/abg-comparison.cc (class_or_union_diff::ensure_lookup_tables_populated): Consider the names of the members rather than their qualified names. (suppression_categorization_visitor::visit_end): Suppress the changes to the private underlying diff node that were suppressed because of the private-ness, unless that typedef has local changes. * src/abg-dwarf-reader.cc (build_enum_type) (add_or_update_class_type, add_or_update_union_type): Handle anonymous types in namespaces as well, not just in class/unions. * src/abg-ir.cc (decl_base::priv::scoped_name_): Define new data member. (decl_base::get_scoped_name): Define new member function. (equals): For the decl_base overload, use scoped name in the comparison, unless the decl belongs to an anonymous type. For the class_or_union_diff, only consider scoped_name during comparison. Avoid name comparison between anonymous types. (scope_decl::get_num_anonymous_member_{classes, unions, enums}): Define new member functions. (types_have_similar_structure): Do not compare names between anonymous types. (qualified_name_setter::do_update): Update scoped names too. * tests/data/test-abidiff/test-PR18791-report0.txt: Adjust. * tests/data/test-annotate/libtest23.so.abi: Likewise. * tests/data/test-annotate/test13-pr18894.so.abi: Likewise. * tests/data/test-annotate/test14-pr18893.so.abi: Likewise. * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. * tests/data/test-diff-dwarf/test43-PR22913-report-0.txt: Likewise. * tests/data/test-diff-dwarf/test46-rust-report-0.txt: Likewise. * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise. * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise. * tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt: Likewise. * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-0.txt: Likewise. * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: Likewise. * tests/data/test-diff-filter/test33-report-0.txt: Likewise. * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise. * tests/data/test-diff-filter/test44-anonymous-data-member-report-0.txt: Likewise. * 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: Likewise. * tests/data/test-diff-pkg/nss-3.23.0-1.0.fc23.x86_64-report-0.txt: Likewise. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: Likewise. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Likewise. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt: Likewise. * tests/data/test-read-dwarf/PR22015-libboost_iostreams.so.abi: Likewise. * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. * tests/data/test-read-dwarf/libtest23.so.abi: Likewise. * tests/data/test-read-dwarf/test10-pr18818-gcc.so.abi: Likewise. * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise. * tests/data/test-read-dwarf/test9-pr18818-clang.so.abi: Likewise. Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2019-05-09 13:19:05 +00:00
'__anonymous_enum__2::SPICE_IMAGE_COMPRESS_INVALID' value '0'
'__anonymous_enum__2::SPICE_IMAGE_COMPRESS_OFF' value '1'
'__anonymous_enum__2::SPICE_IMAGE_COMPRESS_AUTO_GLZ' value '2'
'__anonymous_enum__2::SPICE_IMAGE_COMPRESS_AUTO_LZ' value '3'
'__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'
Fix suppression category propagation in diff node graph Under certain circumstances, a diff node (which we shall name N) that belongs to the SUPPRESSED_CATEGORY category sees its belonging to that category been propagated to its parent diff node, effectively suppressing that parent diff node as well. This is how some function diff nodes ends up being suppressed just because some of their children diff nodes were suppressed. This suppression category propagation is performed by a pass that walks the diff nodes graph. To avoid infinite cycles, the pass avoids visiting a diff node that is equivalent to a node that has already been visited. As a result, diff nodes equivalent to N (the class of equivalence of N) are not traversed by the propagation pass. So their parent diff nodes are not suppressed. This leads to some functions not being suppressed as they should. This phenomenon can be observed by comparing the two packages that are provided in the regression test accompanying this patch using abipkgdiff with the --redundant option. Here is how the patch addresses the issue. When the suppression category propagation pass considers a parent diff node (named P) of a node N' (with N' being equivalent to N), it now looks at the category of the *class of equivalence of N'* to determine if that category should be propagated to P. Previously, that pass would just look at the at the category of N' (not the category of the class of equivalence of N') for the propagation. But as N' has not been visited (because N has already been visited and nodes equivalent to N are thus not visited) the belonging of N' to the SUPPRESSED_CATEGORY hasn't been updated. So N' isn't marked as being in SUPPRESSED_CATEGORY. So the SUPPRESSED_CATEGORY wouldn't be propagated to P as it should. So, with this patch abipkgdiff invoked with the --redundant option now correctly yields: $ abipkgdiff --redundant --d1 spice-debuginfo-0.12.4-19.el7.x86_64.rpm --d2 spice-debuginfo-0.12.8-1.el7.x86_64.rpm --devel1 spice-server-devel-0.12.4-19.el7.x86_64.rpm --devel2 spice-server-devel-0.12.8-1.el7.x86_64.rpm spice-server-0.12.4-19.el7.x86_64.rpm spice-server-0.12.8-1.el7.x86_64.rpm ================ changes of 'libspice-server.so.1.8.0'=============== Functions changes summary: 1 Removed, 2 Changed (62 filtered out), 8 Added functions Variables changes summary: 0 Removed, 0 Changed, 0 Added variable [...] 2 functions with some indirect sub-type change: [C]'function spice_image_compression_t spice_server_get_image_compression(SpiceServer*)' at reds.c:3618:1 has some indirect sub-type changes: return type changed: underlying type 'enum __anonymous_enum__' changed: type size hasn't changed 7 enumerator deletions: '__anonymous_enum__::SPICE_IMAGE_COMPRESS_INVALID' value '0' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_OFF' value '1' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_GLZ' value '2' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_LZ' value '3' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_QUIC' value '4' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_GLZ' value '5' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_LZ' value '6' 9 enumerator insertions: 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_GLZ' value '2' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_LZ' value '3' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_QUIC' value '4' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_GLZ' value '5' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ' value '6' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ4' value '7' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_ENUM_END' value '8' [C]'function int spice_server_set_image_compression(SpiceServer*, spice_image_compression_t)' at reds.c:3602:1 has some indirect sub-type changes: parameter 2 of type 'typedef spice_image_compression_t' changed: underlying type 'enum __anonymous_enum__' changed: type size hasn't changed 7 enumerator deletions: '__anonymous_enum__::SPICE_IMAGE_COMPRESS_INVALID' value '0' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_OFF' value '1' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_GLZ' value '2' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_LZ' value '3' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_QUIC' value '4' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_GLZ' value '5' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_LZ' value '6' 9 enumerator insertions: 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_GLZ' value '2' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_LZ' value '3' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_QUIC' value '4' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_GLZ' value '5' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ' value '6' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ4' value '7' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_ENUM_END' value '8' ================ end of changes of 'libspice-server.so.1.8.0'=============== $ * include/abg-comparison.h (diff::get_class_of_equiv_category): Declare new member function. * src/abg-comparison.cc: Update copyright year. (diff::get_class_of_equiv_category): Define new member function. (suppression_categorization_visitor::visit_end): When considering children nodes category for propagation, consider the category of the class of equivalence of children nodes. * spice-debuginfo-0.12.4-19.el7.x86_64.rpm: New input test package. * spice-debuginfo-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-0.12.4-19.el7.x86_64.rpm: Likewise. * spice-server-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-devel-0.12.4-19.el7.x86_64.rpm: Likewise. * spice-server-devel-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: New reference test output. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Likewise. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise. * tests/data/Makefile.am: Add the new test material above to source distribution. * tests/test-diff-pkg.cc (in_out_specs): Add the new test inputs to the list of packages to test. Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2017-01-20 09:28:29 +00:00
9 enumerator insertions:
'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0'
'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1'
'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_GLZ' value '2'
'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_LZ' value '3'
'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_QUIC' value '4'
'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_GLZ' value '5'
'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ' value '6'
'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ4' value '7'
'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_ENUM_END' value '8'
Fix interaction of --redundant and --leaf-changes-only options. The --redundant (meaning show-redundant-changes) option is supposed to be implied by --leaf-changes-only and this is currently implemented by making diff_context's --leaf-changes-only setter also duplicate the behaviour of its --redundant setter. In both abidiff and abipkgdiff, the diff_context setters are called unconditionally, but the relative order of the calls for these two options is different in each case, resulting in two different issues. In abidiff, the --redundant setter is called second, undoing the intended side-effect of any --leaf-changes-only flag. So --redundant is not actually turned on in --leaf-changes-only mode unless requested explicitly. In abipkgdiff, the leaf-changes-only setter is called second, undoing (in non-leaf mode) the effect of any --redundant flag. So --redundant has no effect in default reporting mode. The fix is move to move the "--leaf-changes-only implies --redundant" logic from the setter to the set_diff_context_from_opts functions. This patch also documents the implied behaviour in the usage strings. * src/abg-comparison.cc (diff_context::show_leaf_changes_only): Remove "--leaf-changes-only implies --redundant" logic. * tools/abidiff.cc (display_usage): Mention that --leaf-changes-only implies --redundant. (set_diff_context_from_opts): Make --leaf-changes-only imply --redundant; document this behaviour in a comment. * tools/abipkgdiff.cc: Ditto. * tests/data/Makefile.am: Add new test case files. * tests/data/test-abidiff-exit/test-leaf3-report.txt: Add new test case, to show --leaf-changes-only implies --redundant. * tests/data/test-abidiff-exit/test-leaf3-v0.c: Ditto. * tests/data/test-abidiff-exit/test-leaf3-v0.o: Ditto. * tests/data/test-abidiff-exit/test-leaf3-v1.c: Ditto. * tests/data/test-abidiff-exit/test-leaf3-v1.o: Ditto. * tests/test-abidiff-exit.cc: Run new test case. * tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt: Update abipkgdiff report with --redundant output. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Ditto. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Ditto. Signed-off-by: Giuliano Procida <gprocida@google.com>
2020-03-12 06:30:32 +00:00
parameter 1 of type 'SpiceServer*' has sub-type changes:
pointed to type 'typedef SpiceServer' changed at spice.h:440:1, as reported earlier
[C] 'function int spice_server_get_num_clients(SpiceServer*)' at reds.c:845:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceServer*' has sub-type changes:
pointed to type 'typedef SpiceServer' changed at spice.h:440:1, as reported earlier
[C] 'function int spice_server_get_peer_info(SpiceServer*, sockaddr*, socklen_t*)' at reds.c:3689:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceServer*' has sub-type changes:
pointed to type 'typedef SpiceServer' changed at spice.h:440:1, as reported earlier
[C] 'function int spice_server_get_sock_info(SpiceServer*, sockaddr*, socklen_t*)' at reds.c:3680:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceServer*' has sub-type changes:
pointed to type 'typedef SpiceServer' changed at spice.h:440:1, as reported earlier
[C] 'function int spice_server_init(SpiceServer*, SpiceCoreInterface*)' at reds.c:3407:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceServer*' has sub-type changes:
pointed to type 'typedef SpiceServer' changed at spice.h:440:1, as reported earlier
[C] 'function int spice_server_is_server_mouse(SpiceServer*)' at reds.c:3698:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceServer*' has sub-type changes:
pointed to type 'typedef SpiceServer' changed at spice.h:440:1, as reported earlier
[C] 'function int spice_server_migrate_connect(SpiceServer*, const char*, int, int, const char*)' at reds.c:3791:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceServer*' has sub-type changes:
pointed to type 'typedef SpiceServer' changed at spice.h:440:1, as reported earlier
[C] 'function int spice_server_migrate_end(SpiceServer*, int)' at reds.c:3866:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceServer*' has sub-type changes:
pointed to type 'typedef SpiceServer' changed at spice.h:440:1, as reported earlier
[C] 'function int spice_server_migrate_info(SpiceServer*, const char*, int, int, const char*)' at reds.c:3842:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceServer*' has sub-type changes:
pointed to type 'typedef SpiceServer' changed at spice.h:440:1, as reported earlier
[C] 'function int spice_server_migrate_start(SpiceServer*)' at reds.c:3856:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceServer*' has sub-type changes:
pointed to type 'typedef SpiceServer' changed at spice.h:440:1, as reported earlier
[C] 'function int spice_server_migrate_switch(SpiceServer*)' at reds.c:3899:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceServer*' has sub-type changes:
pointed to type 'typedef SpiceServer' changed at spice.h:440:1, as reported earlier
[C] 'function SpiceServer* spice_server_new()' at reds.c:3398:1 has some indirect sub-type changes:
return type changed:
pointed to type 'typedef SpiceServer' changed at spice.h:440:1, as reported earlier
Fix suppression category propagation in diff node graph Under certain circumstances, a diff node (which we shall name N) that belongs to the SUPPRESSED_CATEGORY category sees its belonging to that category been propagated to its parent diff node, effectively suppressing that parent diff node as well. This is how some function diff nodes ends up being suppressed just because some of their children diff nodes were suppressed. This suppression category propagation is performed by a pass that walks the diff nodes graph. To avoid infinite cycles, the pass avoids visiting a diff node that is equivalent to a node that has already been visited. As a result, diff nodes equivalent to N (the class of equivalence of N) are not traversed by the propagation pass. So their parent diff nodes are not suppressed. This leads to some functions not being suppressed as they should. This phenomenon can be observed by comparing the two packages that are provided in the regression test accompanying this patch using abipkgdiff with the --redundant option. Here is how the patch addresses the issue. When the suppression category propagation pass considers a parent diff node (named P) of a node N' (with N' being equivalent to N), it now looks at the category of the *class of equivalence of N'* to determine if that category should be propagated to P. Previously, that pass would just look at the at the category of N' (not the category of the class of equivalence of N') for the propagation. But as N' has not been visited (because N has already been visited and nodes equivalent to N are thus not visited) the belonging of N' to the SUPPRESSED_CATEGORY hasn't been updated. So N' isn't marked as being in SUPPRESSED_CATEGORY. So the SUPPRESSED_CATEGORY wouldn't be propagated to P as it should. So, with this patch abipkgdiff invoked with the --redundant option now correctly yields: $ abipkgdiff --redundant --d1 spice-debuginfo-0.12.4-19.el7.x86_64.rpm --d2 spice-debuginfo-0.12.8-1.el7.x86_64.rpm --devel1 spice-server-devel-0.12.4-19.el7.x86_64.rpm --devel2 spice-server-devel-0.12.8-1.el7.x86_64.rpm spice-server-0.12.4-19.el7.x86_64.rpm spice-server-0.12.8-1.el7.x86_64.rpm ================ changes of 'libspice-server.so.1.8.0'=============== Functions changes summary: 1 Removed, 2 Changed (62 filtered out), 8 Added functions Variables changes summary: 0 Removed, 0 Changed, 0 Added variable [...] 2 functions with some indirect sub-type change: [C]'function spice_image_compression_t spice_server_get_image_compression(SpiceServer*)' at reds.c:3618:1 has some indirect sub-type changes: return type changed: underlying type 'enum __anonymous_enum__' changed: type size hasn't changed 7 enumerator deletions: '__anonymous_enum__::SPICE_IMAGE_COMPRESS_INVALID' value '0' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_OFF' value '1' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_GLZ' value '2' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_LZ' value '3' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_QUIC' value '4' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_GLZ' value '5' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_LZ' value '6' 9 enumerator insertions: 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_GLZ' value '2' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_LZ' value '3' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_QUIC' value '4' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_GLZ' value '5' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ' value '6' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ4' value '7' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_ENUM_END' value '8' [C]'function int spice_server_set_image_compression(SpiceServer*, spice_image_compression_t)' at reds.c:3602:1 has some indirect sub-type changes: parameter 2 of type 'typedef spice_image_compression_t' changed: underlying type 'enum __anonymous_enum__' changed: type size hasn't changed 7 enumerator deletions: '__anonymous_enum__::SPICE_IMAGE_COMPRESS_INVALID' value '0' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_OFF' value '1' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_GLZ' value '2' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_LZ' value '3' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_QUIC' value '4' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_GLZ' value '5' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_LZ' value '6' 9 enumerator insertions: 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_GLZ' value '2' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_LZ' value '3' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_QUIC' value '4' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_GLZ' value '5' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ' value '6' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ4' value '7' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_ENUM_END' value '8' ================ end of changes of 'libspice-server.so.1.8.0'=============== $ * include/abg-comparison.h (diff::get_class_of_equiv_category): Declare new member function. * src/abg-comparison.cc: Update copyright year. (diff::get_class_of_equiv_category): Define new member function. (suppression_categorization_visitor::visit_end): When considering children nodes category for propagation, consider the category of the class of equivalence of children nodes. * spice-debuginfo-0.12.4-19.el7.x86_64.rpm: New input test package. * spice-debuginfo-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-0.12.4-19.el7.x86_64.rpm: Likewise. * spice-server-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-devel-0.12.4-19.el7.x86_64.rpm: Likewise. * spice-server-devel-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: New reference test output. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Likewise. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise. * tests/data/Makefile.am: Add the new test material above to source distribution. * tests/test-diff-pkg.cc (in_out_specs): Add the new test inputs to the list of packages to test. Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2017-01-20 09:28:29 +00:00
[C] 'function void spice_server_playback_get_buffer(SpicePlaybackInstance*, uint32_t**, uint32_t*)' at snd_worker.c:1081:1 has some indirect sub-type changes:
Update tests for the "better leaf mode redundancy management" patchset This commit is the last of the set whose commit titles are: Do not show decl-only-to-def changes in the leaf reporter Overhaul of the report diff stats summary Do not mark "distinct" diff nodes as being redundant Fix meaning of "harmless name change" to avoid overfiltering Better handle category propagation of pointer changes Improve function changes reporting in leaf and default mode Don't filter out typedef changes with redundant underlying type changes Only show leaf type changes in the leaf type changes section Fix leaf report of class data member changes Always show redundant changes in leaf mode Avoid reporting an enum change if it has already been reported When we say an a change was reported earlier give its source location [abipkgdiff]: in leaf mode we always show redundant changes Update tests for the "better leaf mode redundancy management" patchset This commit updates the tests reference output files for that patchset. * tests/data/test-abidiff-exit/test1-voffset-change-report1.txt: Adjust. * tests/data/test-abidiff/test-PR18791-report0.txt: Likewise. * tests/data/test-abidiff/test-enum0-report.txt: Likewise. * tests/data/test-abidiff/test-enum1-report.txt: Likewise. * tests/data/test-diff-filter/test1-report.txt: Likewise. * tests/data/test-diff-filter/test14-0-report.txt: Likewise. * tests/data/test-diff-filter/test15-0-report.txt: Likewise. * tests/data/test-diff-filter/test17-0-report.txt: Likewise. * tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-0.txt: Likewise. * tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-0.txt: Likewise. * tests/data/test-diff-filter/test3-report.txt: Likewise. * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise. * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise. * tests/data/test-diff-filter/test32-ppc64le-struct-change-report0.txt: Likewise. * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise. * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt: Likewise. * tests/data/test-diff-filter/test4-report.txt: Likewise. * tests/data/test-diff-filter/test41-report-0.txt: Likewise. * tests/data/test-diff-filter/test42-leaf-report-output-0.txt: Likewise. * tests/data/test-diff-pkg/dirpkg-3-report-1.txt: Likewise. * tests/data/test-diff-pkg/dirpkg-3-report-2.txt: Likewise. * tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt: Likewise. * tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt: Likewise. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: Likewise. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Likewise. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt: Likewise. * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: Likewise. * tests/data/test-diff-suppr/test1-typedef-suppr-report-1.txt: Likewise. * tests/data/test-diff-suppr/test1-typedef-suppr-report-2.txt: Likewise. * tests/data/test-diff-suppr/test13-suppr-through-pointer-report-1.txt: Likewise. * tests/data/test-diff-suppr/test14-suppr-non-redundant-report-0.txt: Likewise. * tests/data/test-diff-suppr/test14-suppr-non-redundant-report-1.txt: Likewise. * tests/data/test-diff-suppr/test15-suppr-added-fn-report-1.txt: Likewise. * tests/data/test-diff-suppr/test15-suppr-added-fn-report-2.txt: Likewise. * tests/data/test-diff-suppr/test15-suppr-added-fn-report-3.txt: Likewise. * tests/data/test-diff-suppr/test15-suppr-added-fn-report-4.txt: Likewise. * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-1.txt: Likewise. * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-2.txt: Likewise. * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-3.txt: Likewise. * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-4.txt: Likewise. * tests/data/test-diff-suppr/test17-suppr-added-var-report-1.txt: Likewise. * tests/data/test-diff-suppr/test17-suppr-added-var-report-2.txt: Likewise. * tests/data/test-diff-suppr/test17-suppr-added-var-report-3.txt: Likewise. * tests/data/test-diff-suppr/test17-suppr-added-var-report-4.txt: Likewise. * tests/data/test-diff-suppr/test18-suppr-removed-var-report-1.txt: Likewise. * tests/data/test-diff-suppr/test18-suppr-removed-var-report-3.txt: Likewise. * tests/data/test-diff-suppr/test18-suppr-removed-var-report-4.txt: Likewise. * tests/data/test-diff-suppr/test2-struct-suppr-report-0.txt: Likewise. * tests/data/test-diff-suppr/test2-struct-suppr-report-1.txt: Likewise. * tests/data/test-diff-suppr/test25-typedef-report-1.txt: Likewise. * tests/data/test-diff-suppr/test27-add-aliased-function-report-1.txt: Likewise. * tests/data/test-diff-suppr/test27-add-aliased-function-report-2.txt: Likewise. * tests/data/test-diff-suppr/test27-add-aliased-function-report-5.txt: Likewise. * tests/data/test-diff-suppr/test28-add-aliased-function-report-3.txt: Likewise. * tests/data/test-diff-suppr/test28-add-aliased-function-report-6.txt: Likewise. * tests/data/test-diff-suppr/test30-report-1.txt: Likewise. * tests/data/test-diff-suppr/test34-report-0.txt: Likewise. * tests/data/test-diff-suppr/test35-leaf-report-0.txt: Likewise. * tests/data/test-diff-suppr/test36-leaf-report-0.txt: Likewise. * tests/data/test-diff-suppr/test5-fn-suppr-report-1.txt: Likewise. * tests/data/test-diff-suppr/test5-fn-suppr-report-2.txt: Likewise. * tests/data/test-diff-suppr/test5-fn-suppr-report-3.txt: Likewise. * tests/data/test-diff-suppr/test5-fn-suppr-report-4.txt: Likewise. * tests/data/test-diff-suppr/test5-fn-suppr-report-5.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-1.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-2.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-3.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-4.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-5.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-6.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-7.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-9.txt: Likewise. * tests/data/test-diff-suppr/test8-redundant-fn-report-0.txt: Likewise. Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2018-04-13 08:45:42 +00:00
parameter 1 of type 'SpicePlaybackInstance*' has sub-type changes:
in pointed to type 'typedef SpicePlaybackInstance' at spice-audio.h:33:1:
underlying type 'struct SpicePlaybackInstance' at spice.h:350:1 changed:
type size hasn't changed
1 data member change:
type of 'SpicePlaybackState* SpicePlaybackInstance::st' changed:
in pointed to type 'typedef SpicePlaybackState' at spice-audio.h:34:1:
underlying type 'struct SpicePlaybackState' at snd_worker.c:165:1 changed:
type size changed from 512 to 576 (in bits)
1 data member insertion:
'uint32_t SpicePlaybackState::frequency', at offset 512 (in bits) at snd_worker.c:159:1
2 data member changes:
type of 'SndWorker SpicePlaybackState::worker' changed:
type size hasn't changed
3 data member changes:
type of 'RedChannel* SndWorker::base_channel' changed:
pointed to type 'typedef RedChannel' changed at red_channel.h:135:1, as reported earlier
type of 'SndChannel* SndWorker::connection' changed:
in pointed to type 'typedef SndChannel' at snd_worker.c:74:1:
underlying type 'struct SndChannel' at snd_worker.c:89:1 changed:
type size hasn't changed
6 data member changes:
type of 'RedsStream* SndChannel::stream' changed:
pointed to type 'typedef RedsStream' changed at red_channel.h:134:1, as reported earlier
type of 'SndWorker* SndChannel::worker' changed:
in pointed to type 'typedef SndWorker' at snd_worker.c:80:1:
abidiff: More compact references to prior diffs. In both the default and leaf reporting modes, when there is a repeated or circular reference to a type difference of a member variable, some placeholder text is emitted instead. In the leaf reporter: type 'struct S' of 'foo::bar' changed as reported earlier In the default reporter, this spans two lines: type of 'S foo::bar' changed: details were reported earlier This patch changes the latter to the more compact: type of 'S foo::bar' changed, as reported earlier More generally, this patch makes the punctuation of such placeholder text more consistent with a comma separating the phrases in all cases. It doesn't attempt to reconcile the different formatting of member variable declarations between the two modes. * src/abg-reporter-priv.cc (represent): In the var_diff_sptr overload, use consistent punctuation and keep to a single line of output when referring back to an existing type diff report. Remove unnecessary braces around single line conditional blocks. * src/abg-reporter-priv.h: In the macro RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER, use consistent punctuation when referring back to an existing type diff report. * tests/data/test-abidiff/test-PR18791-report0.txt: Adjust formatting of back references to existing type diff reports. * tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt: Ditto. * tests/data/test-diff-filter/test16-report-2.txt: Ditto. * tests/data/test-diff-filter/test17-1-report.txt: Ditto. * tests/data/test-diff-filter/test25-cyclic-type-report-1.txt: Ditto. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Ditto. * tests/data/test-diff-suppr/test36-leaf-report-0.txt: Ditto. Signed-off-by: Giuliano Procida <gprocida@google.com> Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2020-04-07 21:33:13 +00:00
underlying type 'struct SndWorker' changed, as being reported
type of 'RedChannelClient* SndChannel::channel_client' changed:
pointed to type 'typedef RedChannelClient' changed at red_channel.h:136:1, as reported earlier
type of 'snd_channel_handle_message_proc SndChannel::handle_message' changed:
underlying type 'int (SndChannel*, typedef size_t, typedef uint32_t, void*)*' changed:
in pointed to type 'function type int (SndChannel*, typedef size_t, typedef uint32_t, void*)':
parameter 1 of type 'SndChannel*' has sub-type changes:
in pointed to type 'typedef SndChannel' at snd_worker.c:74:1:
abidiff: More compact references to prior diffs. In both the default and leaf reporting modes, when there is a repeated or circular reference to a type difference of a member variable, some placeholder text is emitted instead. In the leaf reporter: type 'struct S' of 'foo::bar' changed as reported earlier In the default reporter, this spans two lines: type of 'S foo::bar' changed: details were reported earlier This patch changes the latter to the more compact: type of 'S foo::bar' changed, as reported earlier More generally, this patch makes the punctuation of such placeholder text more consistent with a comma separating the phrases in all cases. It doesn't attempt to reconcile the different formatting of member variable declarations between the two modes. * src/abg-reporter-priv.cc (represent): In the var_diff_sptr overload, use consistent punctuation and keep to a single line of output when referring back to an existing type diff report. Remove unnecessary braces around single line conditional blocks. * src/abg-reporter-priv.h: In the macro RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER, use consistent punctuation when referring back to an existing type diff report. * tests/data/test-abidiff/test-PR18791-report0.txt: Adjust formatting of back references to existing type diff reports. * tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt: Ditto. * tests/data/test-diff-filter/test16-report-2.txt: Ditto. * tests/data/test-diff-filter/test17-1-report.txt: Ditto. * tests/data/test-diff-filter/test25-cyclic-type-report-1.txt: Ditto. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Ditto. * tests/data/test-diff-suppr/test36-leaf-report-0.txt: Ditto. Signed-off-by: Giuliano Procida <gprocida@google.com> Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2020-04-07 21:33:13 +00:00
underlying type 'struct SndChannel' changed, as being reported
type of 'snd_channel_on_message_done_proc SndChannel::on_message_done' changed:
underlying type 'void (SndChannel*)*' changed:
in pointed to type 'function type void (SndChannel*)':
parameter 1 of type 'SndChannel*' has sub-type changes:
in pointed to type 'typedef SndChannel' at snd_worker.c:74:1:
abidiff: More compact references to prior diffs. In both the default and leaf reporting modes, when there is a repeated or circular reference to a type difference of a member variable, some placeholder text is emitted instead. In the leaf reporter: type 'struct S' of 'foo::bar' changed as reported earlier In the default reporter, this spans two lines: type of 'S foo::bar' changed: details were reported earlier This patch changes the latter to the more compact: type of 'S foo::bar' changed, as reported earlier More generally, this patch makes the punctuation of such placeholder text more consistent with a comma separating the phrases in all cases. It doesn't attempt to reconcile the different formatting of member variable declarations between the two modes. * src/abg-reporter-priv.cc (represent): In the var_diff_sptr overload, use consistent punctuation and keep to a single line of output when referring back to an existing type diff report. Remove unnecessary braces around single line conditional blocks. * src/abg-reporter-priv.h: In the macro RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER, use consistent punctuation when referring back to an existing type diff report. * tests/data/test-abidiff/test-PR18791-report0.txt: Adjust formatting of back references to existing type diff reports. * tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt: Ditto. * tests/data/test-diff-filter/test16-report-2.txt: Ditto. * tests/data/test-diff-filter/test17-1-report.txt: Ditto. * tests/data/test-diff-filter/test25-cyclic-type-report-1.txt: Ditto. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Ditto. * tests/data/test-diff-suppr/test36-leaf-report-0.txt: Ditto. Signed-off-by: Giuliano Procida <gprocida@google.com> Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2020-04-07 21:33:13 +00:00
underlying type 'struct SndChannel' changed, as being reported
type of 'snd_channel_cleanup_channel_proc SndChannel::cleanup' changed:
underlying type 'void (SndChannel*)*' changed:
in pointed to type 'function type void (SndChannel*)':
parameter 1 of type 'SndChannel*' has sub-type changes:
in pointed to type 'typedef SndChannel' at snd_worker.c:74:1:
abidiff: More compact references to prior diffs. In both the default and leaf reporting modes, when there is a repeated or circular reference to a type difference of a member variable, some placeholder text is emitted instead. In the leaf reporter: type 'struct S' of 'foo::bar' changed as reported earlier In the default reporter, this spans two lines: type of 'S foo::bar' changed: details were reported earlier This patch changes the latter to the more compact: type of 'S foo::bar' changed, as reported earlier More generally, this patch makes the punctuation of such placeholder text more consistent with a comma separating the phrases in all cases. It doesn't attempt to reconcile the different formatting of member variable declarations between the two modes. * src/abg-reporter-priv.cc (represent): In the var_diff_sptr overload, use consistent punctuation and keep to a single line of output when referring back to an existing type diff report. Remove unnecessary braces around single line conditional blocks. * src/abg-reporter-priv.h: In the macro RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER, use consistent punctuation when referring back to an existing type diff report. * tests/data/test-abidiff/test-PR18791-report0.txt: Adjust formatting of back references to existing type diff reports. * tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt: Ditto. * tests/data/test-diff-filter/test16-report-2.txt: Ditto. * tests/data/test-diff-filter/test17-1-report.txt: Ditto. * tests/data/test-diff-filter/test25-cyclic-type-report-1.txt: Ditto. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Ditto. * tests/data/test-diff-suppr/test36-leaf-report-0.txt: Ditto. Signed-off-by: Giuliano Procida <gprocida@google.com> Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2020-04-07 21:33:13 +00:00
underlying type 'struct SndChannel' changed, as being reported
no data member change (1 filtered);
type of 'SndWorker* SndWorker::next' changed:
in pointed to type 'typedef SndWorker' at snd_worker.c:80:1:
abidiff: More compact references to prior diffs. In both the default and leaf reporting modes, when there is a repeated or circular reference to a type difference of a member variable, some placeholder text is emitted instead. In the leaf reporter: type 'struct S' of 'foo::bar' changed as reported earlier In the default reporter, this spans two lines: type of 'S foo::bar' changed: details were reported earlier This patch changes the latter to the more compact: type of 'S foo::bar' changed, as reported earlier More generally, this patch makes the punctuation of such placeholder text more consistent with a comma separating the phrases in all cases. It doesn't attempt to reconcile the different formatting of member variable declarations between the two modes. * src/abg-reporter-priv.cc (represent): In the var_diff_sptr overload, use consistent punctuation and keep to a single line of output when referring back to an existing type diff report. Remove unnecessary braces around single line conditional blocks. * src/abg-reporter-priv.h: In the macro RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER, use consistent punctuation when referring back to an existing type diff report. * tests/data/test-abidiff/test-PR18791-report0.txt: Adjust formatting of back references to existing type diff reports. * tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt: Ditto. * tests/data/test-diff-filter/test16-report-2.txt: Ditto. * tests/data/test-diff-filter/test17-1-report.txt: Ditto. * tests/data/test-diff-filter/test25-cyclic-type-report-1.txt: Ditto. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Ditto. * tests/data/test-diff-suppr/test36-leaf-report-0.txt: Ditto. Signed-off-by: Giuliano Procida <gprocida@google.com> Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2020-04-07 21:33:13 +00:00
underlying type 'struct SndWorker' changed, as being reported
type of 'SpicePlaybackInstance* SpicePlaybackState::sin' changed:
in pointed to type 'typedef SpicePlaybackInstance' at spice-audio.h:33:1:
abidiff: More compact references to prior diffs. In both the default and leaf reporting modes, when there is a repeated or circular reference to a type difference of a member variable, some placeholder text is emitted instead. In the leaf reporter: type 'struct S' of 'foo::bar' changed as reported earlier In the default reporter, this spans two lines: type of 'S foo::bar' changed: details were reported earlier This patch changes the latter to the more compact: type of 'S foo::bar' changed, as reported earlier More generally, this patch makes the punctuation of such placeholder text more consistent with a comma separating the phrases in all cases. It doesn't attempt to reconcile the different formatting of member variable declarations between the two modes. * src/abg-reporter-priv.cc (represent): In the var_diff_sptr overload, use consistent punctuation and keep to a single line of output when referring back to an existing type diff report. Remove unnecessary braces around single line conditional blocks. * src/abg-reporter-priv.h: In the macro RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER, use consistent punctuation when referring back to an existing type diff report. * tests/data/test-abidiff/test-PR18791-report0.txt: Adjust formatting of back references to existing type diff reports. * tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt: Ditto. * tests/data/test-diff-filter/test16-report-2.txt: Ditto. * tests/data/test-diff-filter/test17-1-report.txt: Ditto. * tests/data/test-diff-filter/test25-cyclic-type-report-1.txt: Ditto. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Ditto. * tests/data/test-diff-suppr/test36-leaf-report-0.txt: Ditto. Signed-off-by: Giuliano Procida <gprocida@google.com> Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2020-04-07 21:33:13 +00:00
underlying type 'struct SpicePlaybackInstance' changed, as being reported
Fix interaction of --redundant and --leaf-changes-only options. The --redundant (meaning show-redundant-changes) option is supposed to be implied by --leaf-changes-only and this is currently implemented by making diff_context's --leaf-changes-only setter also duplicate the behaviour of its --redundant setter. In both abidiff and abipkgdiff, the diff_context setters are called unconditionally, but the relative order of the calls for these two options is different in each case, resulting in two different issues. In abidiff, the --redundant setter is called second, undoing the intended side-effect of any --leaf-changes-only flag. So --redundant is not actually turned on in --leaf-changes-only mode unless requested explicitly. In abipkgdiff, the leaf-changes-only setter is called second, undoing (in non-leaf mode) the effect of any --redundant flag. So --redundant has no effect in default reporting mode. The fix is move to move the "--leaf-changes-only implies --redundant" logic from the setter to the set_diff_context_from_opts functions. This patch also documents the implied behaviour in the usage strings. * src/abg-comparison.cc (diff_context::show_leaf_changes_only): Remove "--leaf-changes-only implies --redundant" logic. * tools/abidiff.cc (display_usage): Mention that --leaf-changes-only implies --redundant. (set_diff_context_from_opts): Make --leaf-changes-only imply --redundant; document this behaviour in a comment. * tools/abipkgdiff.cc: Ditto. * tests/data/Makefile.am: Add new test case files. * tests/data/test-abidiff-exit/test-leaf3-report.txt: Add new test case, to show --leaf-changes-only implies --redundant. * tests/data/test-abidiff-exit/test-leaf3-v0.c: Ditto. * tests/data/test-abidiff-exit/test-leaf3-v0.o: Ditto. * tests/data/test-abidiff-exit/test-leaf3-v1.c: Ditto. * tests/data/test-abidiff-exit/test-leaf3-v1.o: Ditto. * tests/test-abidiff-exit.cc: Run new test case. * tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt: Update abipkgdiff report with --redundant output. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Ditto. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Ditto. Signed-off-by: Giuliano Procida <gprocida@google.com>
2020-03-12 06:30:32 +00:00
[C] 'function void spice_server_playback_put_samples(SpicePlaybackInstance*, uint32_t*)' at snd_worker.c:1100:1 has some indirect sub-type changes:
parameter 1 of type 'SpicePlaybackInstance*' has sub-type changes:
pointed to type 'typedef SpicePlaybackInstance' changed at spice.h:335:1, as reported earlier
[C] 'function void spice_server_playback_set_mute(SpicePlaybackInstance*, uint8_t)' at snd_worker.c:1021:1 has some indirect sub-type changes:
parameter 1 of type 'SpicePlaybackInstance*' has sub-type changes:
pointed to type 'typedef SpicePlaybackInstance' changed at spice.h:335:1, as reported earlier
[C] 'function void spice_server_playback_set_volume(SpicePlaybackInstance*, uint8_t, uint16_t*)' at snd_worker.c:1003:1 has some indirect sub-type changes:
parameter 1 of type 'SpicePlaybackInstance*' has sub-type changes:
pointed to type 'typedef SpicePlaybackInstance' changed at spice.h:335:1, as reported earlier
[C] 'function void spice_server_playback_start(SpicePlaybackInstance*)' at snd_worker.c:1035:1 has some indirect sub-type changes:
parameter 1 of type 'SpicePlaybackInstance*' has sub-type changes:
pointed to type 'typedef SpicePlaybackInstance' changed at spice.h:335:1, as reported earlier
[C] 'function void spice_server_playback_stop(SpicePlaybackInstance*)' at snd_worker.c:1054:1 has some indirect sub-type changes:
parameter 1 of type 'SpicePlaybackInstance*' has sub-type changes:
pointed to type 'typedef SpicePlaybackInstance' changed at spice.h:335:1, as reported earlier
[C] 'function void spice_server_port_event(SpiceCharDeviceInstance*, uint8_t)' at spicevmc.c:574:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceCharDeviceInstance*' has sub-type changes:
pointed to type 'typedef SpiceCharDeviceInstance' changed at spice.h:399:1, as reported earlier
[C] 'function uint32_t spice_server_record_get_samples(SpiceRecordInstance*, uint32_t*, uint32_t)' at snd_worker.c:1331:1 has some indirect sub-type changes:
Update tests for the "better leaf mode redundancy management" patchset This commit is the last of the set whose commit titles are: Do not show decl-only-to-def changes in the leaf reporter Overhaul of the report diff stats summary Do not mark "distinct" diff nodes as being redundant Fix meaning of "harmless name change" to avoid overfiltering Better handle category propagation of pointer changes Improve function changes reporting in leaf and default mode Don't filter out typedef changes with redundant underlying type changes Only show leaf type changes in the leaf type changes section Fix leaf report of class data member changes Always show redundant changes in leaf mode Avoid reporting an enum change if it has already been reported When we say an a change was reported earlier give its source location [abipkgdiff]: in leaf mode we always show redundant changes Update tests for the "better leaf mode redundancy management" patchset This commit updates the tests reference output files for that patchset. * tests/data/test-abidiff-exit/test1-voffset-change-report1.txt: Adjust. * tests/data/test-abidiff/test-PR18791-report0.txt: Likewise. * tests/data/test-abidiff/test-enum0-report.txt: Likewise. * tests/data/test-abidiff/test-enum1-report.txt: Likewise. * tests/data/test-diff-filter/test1-report.txt: Likewise. * tests/data/test-diff-filter/test14-0-report.txt: Likewise. * tests/data/test-diff-filter/test15-0-report.txt: Likewise. * tests/data/test-diff-filter/test17-0-report.txt: Likewise. * tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-0.txt: Likewise. * tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-0.txt: Likewise. * tests/data/test-diff-filter/test3-report.txt: Likewise. * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise. * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise. * tests/data/test-diff-filter/test32-ppc64le-struct-change-report0.txt: Likewise. * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise. * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt: Likewise. * tests/data/test-diff-filter/test4-report.txt: Likewise. * tests/data/test-diff-filter/test41-report-0.txt: Likewise. * tests/data/test-diff-filter/test42-leaf-report-output-0.txt: Likewise. * tests/data/test-diff-pkg/dirpkg-3-report-1.txt: Likewise. * tests/data/test-diff-pkg/dirpkg-3-report-2.txt: Likewise. * tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt: Likewise. * tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt: Likewise. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: Likewise. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Likewise. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt: Likewise. * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: Likewise. * tests/data/test-diff-suppr/test1-typedef-suppr-report-1.txt: Likewise. * tests/data/test-diff-suppr/test1-typedef-suppr-report-2.txt: Likewise. * tests/data/test-diff-suppr/test13-suppr-through-pointer-report-1.txt: Likewise. * tests/data/test-diff-suppr/test14-suppr-non-redundant-report-0.txt: Likewise. * tests/data/test-diff-suppr/test14-suppr-non-redundant-report-1.txt: Likewise. * tests/data/test-diff-suppr/test15-suppr-added-fn-report-1.txt: Likewise. * tests/data/test-diff-suppr/test15-suppr-added-fn-report-2.txt: Likewise. * tests/data/test-diff-suppr/test15-suppr-added-fn-report-3.txt: Likewise. * tests/data/test-diff-suppr/test15-suppr-added-fn-report-4.txt: Likewise. * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-1.txt: Likewise. * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-2.txt: Likewise. * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-3.txt: Likewise. * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-4.txt: Likewise. * tests/data/test-diff-suppr/test17-suppr-added-var-report-1.txt: Likewise. * tests/data/test-diff-suppr/test17-suppr-added-var-report-2.txt: Likewise. * tests/data/test-diff-suppr/test17-suppr-added-var-report-3.txt: Likewise. * tests/data/test-diff-suppr/test17-suppr-added-var-report-4.txt: Likewise. * tests/data/test-diff-suppr/test18-suppr-removed-var-report-1.txt: Likewise. * tests/data/test-diff-suppr/test18-suppr-removed-var-report-3.txt: Likewise. * tests/data/test-diff-suppr/test18-suppr-removed-var-report-4.txt: Likewise. * tests/data/test-diff-suppr/test2-struct-suppr-report-0.txt: Likewise. * tests/data/test-diff-suppr/test2-struct-suppr-report-1.txt: Likewise. * tests/data/test-diff-suppr/test25-typedef-report-1.txt: Likewise. * tests/data/test-diff-suppr/test27-add-aliased-function-report-1.txt: Likewise. * tests/data/test-diff-suppr/test27-add-aliased-function-report-2.txt: Likewise. * tests/data/test-diff-suppr/test27-add-aliased-function-report-5.txt: Likewise. * tests/data/test-diff-suppr/test28-add-aliased-function-report-3.txt: Likewise. * tests/data/test-diff-suppr/test28-add-aliased-function-report-6.txt: Likewise. * tests/data/test-diff-suppr/test30-report-1.txt: Likewise. * tests/data/test-diff-suppr/test34-report-0.txt: Likewise. * tests/data/test-diff-suppr/test35-leaf-report-0.txt: Likewise. * tests/data/test-diff-suppr/test36-leaf-report-0.txt: Likewise. * tests/data/test-diff-suppr/test5-fn-suppr-report-1.txt: Likewise. * tests/data/test-diff-suppr/test5-fn-suppr-report-2.txt: Likewise. * tests/data/test-diff-suppr/test5-fn-suppr-report-3.txt: Likewise. * tests/data/test-diff-suppr/test5-fn-suppr-report-4.txt: Likewise. * tests/data/test-diff-suppr/test5-fn-suppr-report-5.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-1.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-2.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-3.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-4.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-5.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-6.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-7.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-9.txt: Likewise. * tests/data/test-diff-suppr/test8-redundant-fn-report-0.txt: Likewise. Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2018-04-13 08:45:42 +00:00
parameter 1 of type 'SpiceRecordInstance*' has sub-type changes:
in pointed to type 'typedef SpiceRecordInstance' at spice-audio.h:67:1:
underlying type 'struct SpiceRecordInstance' at spice.h:380:1 changed:
type size hasn't changed
1 data member change:
type of 'SpiceRecordState* SpiceRecordInstance::st' changed:
in pointed to type 'typedef SpiceRecordState' at spice-audio.h:68:1:
underlying type 'struct SpiceRecordState' at snd_worker.c:171:1 changed:
type size changed from 512 to 576 (in bits)
1 data member insertion:
'uint32_t SpiceRecordState::frequency', at offset 512 (in bits) at snd_worker.c:166:1
2 data member changes:
abidiff: More compact references to prior diffs. In both the default and leaf reporting modes, when there is a repeated or circular reference to a type difference of a member variable, some placeholder text is emitted instead. In the leaf reporter: type 'struct S' of 'foo::bar' changed as reported earlier In the default reporter, this spans two lines: type of 'S foo::bar' changed: details were reported earlier This patch changes the latter to the more compact: type of 'S foo::bar' changed, as reported earlier More generally, this patch makes the punctuation of such placeholder text more consistent with a comma separating the phrases in all cases. It doesn't attempt to reconcile the different formatting of member variable declarations between the two modes. * src/abg-reporter-priv.cc (represent): In the var_diff_sptr overload, use consistent punctuation and keep to a single line of output when referring back to an existing type diff report. Remove unnecessary braces around single line conditional blocks. * src/abg-reporter-priv.h: In the macro RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER, use consistent punctuation when referring back to an existing type diff report. * tests/data/test-abidiff/test-PR18791-report0.txt: Adjust formatting of back references to existing type diff reports. * tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt: Ditto. * tests/data/test-diff-filter/test16-report-2.txt: Ditto. * tests/data/test-diff-filter/test17-1-report.txt: Ditto. * tests/data/test-diff-filter/test25-cyclic-type-report-1.txt: Ditto. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Ditto. * tests/data/test-diff-suppr/test36-leaf-report-0.txt: Ditto. Signed-off-by: Giuliano Procida <gprocida@google.com> Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2020-04-07 21:33:13 +00:00
type of 'SndWorker SpiceRecordState::worker' changed, as reported earlier
type of 'SpiceRecordInstance* SpiceRecordState::sin' changed:
in pointed to type 'typedef SpiceRecordInstance' at spice-audio.h:67:1:
abidiff: More compact references to prior diffs. In both the default and leaf reporting modes, when there is a repeated or circular reference to a type difference of a member variable, some placeholder text is emitted instead. In the leaf reporter: type 'struct S' of 'foo::bar' changed as reported earlier In the default reporter, this spans two lines: type of 'S foo::bar' changed: details were reported earlier This patch changes the latter to the more compact: type of 'S foo::bar' changed, as reported earlier More generally, this patch makes the punctuation of such placeholder text more consistent with a comma separating the phrases in all cases. It doesn't attempt to reconcile the different formatting of member variable declarations between the two modes. * src/abg-reporter-priv.cc (represent): In the var_diff_sptr overload, use consistent punctuation and keep to a single line of output when referring back to an existing type diff report. Remove unnecessary braces around single line conditional blocks. * src/abg-reporter-priv.h: In the macro RETURN_IF_BEING_REPORTED_OR_WAS_REPORTED_EARLIER, use consistent punctuation when referring back to an existing type diff report. * tests/data/test-abidiff/test-PR18791-report0.txt: Adjust formatting of back references to existing type diff reports. * tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt: Ditto. * tests/data/test-diff-filter/test16-report-2.txt: Ditto. * tests/data/test-diff-filter/test17-1-report.txt: Ditto. * tests/data/test-diff-filter/test25-cyclic-type-report-1.txt: Ditto. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Ditto. * tests/data/test-diff-suppr/test36-leaf-report-0.txt: Ditto. Signed-off-by: Giuliano Procida <gprocida@google.com> Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2020-04-07 21:33:13 +00:00
underlying type 'struct SpiceRecordInstance' changed, as being reported
Fix interaction of --redundant and --leaf-changes-only options. The --redundant (meaning show-redundant-changes) option is supposed to be implied by --leaf-changes-only and this is currently implemented by making diff_context's --leaf-changes-only setter also duplicate the behaviour of its --redundant setter. In both abidiff and abipkgdiff, the diff_context setters are called unconditionally, but the relative order of the calls for these two options is different in each case, resulting in two different issues. In abidiff, the --redundant setter is called second, undoing the intended side-effect of any --leaf-changes-only flag. So --redundant is not actually turned on in --leaf-changes-only mode unless requested explicitly. In abipkgdiff, the leaf-changes-only setter is called second, undoing (in non-leaf mode) the effect of any --redundant flag. So --redundant has no effect in default reporting mode. The fix is move to move the "--leaf-changes-only implies --redundant" logic from the setter to the set_diff_context_from_opts functions. This patch also documents the implied behaviour in the usage strings. * src/abg-comparison.cc (diff_context::show_leaf_changes_only): Remove "--leaf-changes-only implies --redundant" logic. * tools/abidiff.cc (display_usage): Mention that --leaf-changes-only implies --redundant. (set_diff_context_from_opts): Make --leaf-changes-only imply --redundant; document this behaviour in a comment. * tools/abipkgdiff.cc: Ditto. * tests/data/Makefile.am: Add new test case files. * tests/data/test-abidiff-exit/test-leaf3-report.txt: Add new test case, to show --leaf-changes-only implies --redundant. * tests/data/test-abidiff-exit/test-leaf3-v0.c: Ditto. * tests/data/test-abidiff-exit/test-leaf3-v0.o: Ditto. * tests/data/test-abidiff-exit/test-leaf3-v1.c: Ditto. * tests/data/test-abidiff-exit/test-leaf3-v1.o: Ditto. * tests/test-abidiff-exit.cc: Run new test case. * tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt: Update abipkgdiff report with --redundant output. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Ditto. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Ditto. Signed-off-by: Giuliano Procida <gprocida@google.com>
2020-03-12 06:30:32 +00:00
[C] 'function void spice_server_record_set_mute(SpiceRecordInstance*, uint8_t)' at snd_worker.c:1279:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceRecordInstance*' has sub-type changes:
pointed to type 'typedef SpiceRecordInstance' changed at spice.h:369:1, as reported earlier
[C] 'function void spice_server_record_set_volume(SpiceRecordInstance*, uint8_t, uint16_t*)' at snd_worker.c:1261:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceRecordInstance*' has sub-type changes:
pointed to type 'typedef SpiceRecordInstance' changed at spice.h:369:1, as reported earlier
Fix suppression category propagation in diff node graph Under certain circumstances, a diff node (which we shall name N) that belongs to the SUPPRESSED_CATEGORY category sees its belonging to that category been propagated to its parent diff node, effectively suppressing that parent diff node as well. This is how some function diff nodes ends up being suppressed just because some of their children diff nodes were suppressed. This suppression category propagation is performed by a pass that walks the diff nodes graph. To avoid infinite cycles, the pass avoids visiting a diff node that is equivalent to a node that has already been visited. As a result, diff nodes equivalent to N (the class of equivalence of N) are not traversed by the propagation pass. So their parent diff nodes are not suppressed. This leads to some functions not being suppressed as they should. This phenomenon can be observed by comparing the two packages that are provided in the regression test accompanying this patch using abipkgdiff with the --redundant option. Here is how the patch addresses the issue. When the suppression category propagation pass considers a parent diff node (named P) of a node N' (with N' being equivalent to N), it now looks at the category of the *class of equivalence of N'* to determine if that category should be propagated to P. Previously, that pass would just look at the at the category of N' (not the category of the class of equivalence of N') for the propagation. But as N' has not been visited (because N has already been visited and nodes equivalent to N are thus not visited) the belonging of N' to the SUPPRESSED_CATEGORY hasn't been updated. So N' isn't marked as being in SUPPRESSED_CATEGORY. So the SUPPRESSED_CATEGORY wouldn't be propagated to P as it should. So, with this patch abipkgdiff invoked with the --redundant option now correctly yields: $ abipkgdiff --redundant --d1 spice-debuginfo-0.12.4-19.el7.x86_64.rpm --d2 spice-debuginfo-0.12.8-1.el7.x86_64.rpm --devel1 spice-server-devel-0.12.4-19.el7.x86_64.rpm --devel2 spice-server-devel-0.12.8-1.el7.x86_64.rpm spice-server-0.12.4-19.el7.x86_64.rpm spice-server-0.12.8-1.el7.x86_64.rpm ================ changes of 'libspice-server.so.1.8.0'=============== Functions changes summary: 1 Removed, 2 Changed (62 filtered out), 8 Added functions Variables changes summary: 0 Removed, 0 Changed, 0 Added variable [...] 2 functions with some indirect sub-type change: [C]'function spice_image_compression_t spice_server_get_image_compression(SpiceServer*)' at reds.c:3618:1 has some indirect sub-type changes: return type changed: underlying type 'enum __anonymous_enum__' changed: type size hasn't changed 7 enumerator deletions: '__anonymous_enum__::SPICE_IMAGE_COMPRESS_INVALID' value '0' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_OFF' value '1' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_GLZ' value '2' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_LZ' value '3' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_QUIC' value '4' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_GLZ' value '5' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_LZ' value '6' 9 enumerator insertions: 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_GLZ' value '2' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_LZ' value '3' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_QUIC' value '4' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_GLZ' value '5' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ' value '6' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ4' value '7' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_ENUM_END' value '8' [C]'function int spice_server_set_image_compression(SpiceServer*, spice_image_compression_t)' at reds.c:3602:1 has some indirect sub-type changes: parameter 2 of type 'typedef spice_image_compression_t' changed: underlying type 'enum __anonymous_enum__' changed: type size hasn't changed 7 enumerator deletions: '__anonymous_enum__::SPICE_IMAGE_COMPRESS_INVALID' value '0' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_OFF' value '1' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_GLZ' value '2' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_LZ' value '3' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_QUIC' value '4' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_GLZ' value '5' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_LZ' value '6' 9 enumerator insertions: 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_GLZ' value '2' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_LZ' value '3' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_QUIC' value '4' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_GLZ' value '5' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ' value '6' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ4' value '7' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_ENUM_END' value '8' ================ end of changes of 'libspice-server.so.1.8.0'=============== $ * include/abg-comparison.h (diff::get_class_of_equiv_category): Declare new member function. * src/abg-comparison.cc: Update copyright year. (diff::get_class_of_equiv_category): Define new member function. (suppression_categorization_visitor::visit_end): When considering children nodes category for propagation, consider the category of the class of equivalence of children nodes. * spice-debuginfo-0.12.4-19.el7.x86_64.rpm: New input test package. * spice-debuginfo-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-0.12.4-19.el7.x86_64.rpm: Likewise. * spice-server-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-devel-0.12.4-19.el7.x86_64.rpm: Likewise. * spice-server-devel-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: New reference test output. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Likewise. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise. * tests/data/Makefile.am: Add the new test material above to source distribution. * tests/test-diff-pkg.cc (in_out_specs): Add the new test inputs to the list of packages to test. Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2017-01-20 09:28:29 +00:00
Fix interaction of --redundant and --leaf-changes-only options. The --redundant (meaning show-redundant-changes) option is supposed to be implied by --leaf-changes-only and this is currently implemented by making diff_context's --leaf-changes-only setter also duplicate the behaviour of its --redundant setter. In both abidiff and abipkgdiff, the diff_context setters are called unconditionally, but the relative order of the calls for these two options is different in each case, resulting in two different issues. In abidiff, the --redundant setter is called second, undoing the intended side-effect of any --leaf-changes-only flag. So --redundant is not actually turned on in --leaf-changes-only mode unless requested explicitly. In abipkgdiff, the leaf-changes-only setter is called second, undoing (in non-leaf mode) the effect of any --redundant flag. So --redundant has no effect in default reporting mode. The fix is move to move the "--leaf-changes-only implies --redundant" logic from the setter to the set_diff_context_from_opts functions. This patch also documents the implied behaviour in the usage strings. * src/abg-comparison.cc (diff_context::show_leaf_changes_only): Remove "--leaf-changes-only implies --redundant" logic. * tools/abidiff.cc (display_usage): Mention that --leaf-changes-only implies --redundant. (set_diff_context_from_opts): Make --leaf-changes-only imply --redundant; document this behaviour in a comment. * tools/abipkgdiff.cc: Ditto. * tests/data/Makefile.am: Add new test case files. * tests/data/test-abidiff-exit/test-leaf3-report.txt: Add new test case, to show --leaf-changes-only implies --redundant. * tests/data/test-abidiff-exit/test-leaf3-v0.c: Ditto. * tests/data/test-abidiff-exit/test-leaf3-v0.o: Ditto. * tests/data/test-abidiff-exit/test-leaf3-v1.c: Ditto. * tests/data/test-abidiff-exit/test-leaf3-v1.o: Ditto. * tests/test-abidiff-exit.cc: Run new test case. * tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt: Update abipkgdiff report with --redundant output. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Ditto. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Ditto. Signed-off-by: Giuliano Procida <gprocida@google.com>
2020-03-12 06:30:32 +00:00
[C] 'function void spice_server_record_start(SpiceRecordInstance*)' at snd_worker.c:1293:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceRecordInstance*' has sub-type changes:
pointed to type 'typedef SpiceRecordInstance' changed at spice.h:369:1, as reported earlier
[C] 'function void spice_server_record_stop(SpiceRecordInstance*)' at snd_worker.c:1313:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceRecordInstance*' has sub-type changes:
pointed to type 'typedef SpiceRecordInstance' changed at spice.h:369:1, as reported earlier
[C] 'function void spice_server_set_addr(SpiceServer*, const char*, int)' at reds.c:3455:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceServer*' has sub-type changes:
pointed to type 'typedef SpiceServer' changed at spice.h:440:1, as reported earlier
[C] 'function int spice_server_set_agent_copypaste(SpiceServer*, int)' at reds.c:3747:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceServer*' has sub-type changes:
pointed to type 'typedef SpiceServer' changed at spice.h:440:1, as reported earlier
[C] 'function int spice_server_set_agent_file_xfer(SpiceServer*, int)' at reds.c:3756:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceServer*' has sub-type changes:
pointed to type 'typedef SpiceServer' changed at spice.h:440:1, as reported earlier
[C] 'function int spice_server_set_agent_mouse(SpiceServer*, int)' at reds.c:3739:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceServer*' has sub-type changes:
pointed to type 'typedef SpiceServer' changed at spice.h:440:1, as reported earlier
[C] 'function int spice_server_set_channel_security(SpiceServer*, const char*, int)' at reds.c:3648:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceServer*' has sub-type changes:
pointed to type 'typedef SpiceServer' changed at spice.h:440:1, as reported earlier
[C] 'function int spice_server_set_compat_version(SpiceServer*, spice_compat_version_t)' at reds.c:3430:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceServer*' has sub-type changes:
pointed to type 'typedef SpiceServer' changed at spice.h:440:1, as reported earlier
[C] 'function int spice_server_set_exit_on_disconnect(SpiceServer*, int)' at reds.c:3479:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceServer*' has sub-type changes:
pointed to type 'typedef SpiceServer' changed at spice.h:440:1, as reported earlier
Fix suppression category propagation in diff node graph Under certain circumstances, a diff node (which we shall name N) that belongs to the SUPPRESSED_CATEGORY category sees its belonging to that category been propagated to its parent diff node, effectively suppressing that parent diff node as well. This is how some function diff nodes ends up being suppressed just because some of their children diff nodes were suppressed. This suppression category propagation is performed by a pass that walks the diff nodes graph. To avoid infinite cycles, the pass avoids visiting a diff node that is equivalent to a node that has already been visited. As a result, diff nodes equivalent to N (the class of equivalence of N) are not traversed by the propagation pass. So their parent diff nodes are not suppressed. This leads to some functions not being suppressed as they should. This phenomenon can be observed by comparing the two packages that are provided in the regression test accompanying this patch using abipkgdiff with the --redundant option. Here is how the patch addresses the issue. When the suppression category propagation pass considers a parent diff node (named P) of a node N' (with N' being equivalent to N), it now looks at the category of the *class of equivalence of N'* to determine if that category should be propagated to P. Previously, that pass would just look at the at the category of N' (not the category of the class of equivalence of N') for the propagation. But as N' has not been visited (because N has already been visited and nodes equivalent to N are thus not visited) the belonging of N' to the SUPPRESSED_CATEGORY hasn't been updated. So N' isn't marked as being in SUPPRESSED_CATEGORY. So the SUPPRESSED_CATEGORY wouldn't be propagated to P as it should. So, with this patch abipkgdiff invoked with the --redundant option now correctly yields: $ abipkgdiff --redundant --d1 spice-debuginfo-0.12.4-19.el7.x86_64.rpm --d2 spice-debuginfo-0.12.8-1.el7.x86_64.rpm --devel1 spice-server-devel-0.12.4-19.el7.x86_64.rpm --devel2 spice-server-devel-0.12.8-1.el7.x86_64.rpm spice-server-0.12.4-19.el7.x86_64.rpm spice-server-0.12.8-1.el7.x86_64.rpm ================ changes of 'libspice-server.so.1.8.0'=============== Functions changes summary: 1 Removed, 2 Changed (62 filtered out), 8 Added functions Variables changes summary: 0 Removed, 0 Changed, 0 Added variable [...] 2 functions with some indirect sub-type change: [C]'function spice_image_compression_t spice_server_get_image_compression(SpiceServer*)' at reds.c:3618:1 has some indirect sub-type changes: return type changed: underlying type 'enum __anonymous_enum__' changed: type size hasn't changed 7 enumerator deletions: '__anonymous_enum__::SPICE_IMAGE_COMPRESS_INVALID' value '0' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_OFF' value '1' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_GLZ' value '2' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_LZ' value '3' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_QUIC' value '4' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_GLZ' value '5' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_LZ' value '6' 9 enumerator insertions: 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_GLZ' value '2' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_LZ' value '3' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_QUIC' value '4' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_GLZ' value '5' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ' value '6' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ4' value '7' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_ENUM_END' value '8' [C]'function int spice_server_set_image_compression(SpiceServer*, spice_image_compression_t)' at reds.c:3602:1 has some indirect sub-type changes: parameter 2 of type 'typedef spice_image_compression_t' changed: underlying type 'enum __anonymous_enum__' changed: type size hasn't changed 7 enumerator deletions: '__anonymous_enum__::SPICE_IMAGE_COMPRESS_INVALID' value '0' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_OFF' value '1' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_GLZ' value '2' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_LZ' value '3' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_QUIC' value '4' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_GLZ' value '5' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_LZ' value '6' 9 enumerator insertions: 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_GLZ' value '2' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_LZ' value '3' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_QUIC' value '4' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_GLZ' value '5' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ' value '6' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ4' value '7' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_ENUM_END' value '8' ================ end of changes of 'libspice-server.so.1.8.0'=============== $ * include/abg-comparison.h (diff::get_class_of_equiv_category): Declare new member function. * src/abg-comparison.cc: Update copyright year. (diff::get_class_of_equiv_category): Define new member function. (suppression_categorization_visitor::visit_end): When considering children nodes category for propagation, consider the category of the class of equivalence of children nodes. * spice-debuginfo-0.12.4-19.el7.x86_64.rpm: New input test package. * spice-debuginfo-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-0.12.4-19.el7.x86_64.rpm: Likewise. * spice-server-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-devel-0.12.4-19.el7.x86_64.rpm: Likewise. * spice-server-devel-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: New reference test output. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Likewise. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise. * tests/data/Makefile.am: Add the new test material above to source distribution. * tests/test-diff-pkg.cc (in_out_specs): Add the new test inputs to the list of packages to test. Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2017-01-20 09:28:29 +00:00
[C] 'function int spice_server_set_image_compression(SpiceServer*, spice_image_compression_t)' at reds.c:3602:1 has some indirect sub-type changes:
Fix interaction of --redundant and --leaf-changes-only options. The --redundant (meaning show-redundant-changes) option is supposed to be implied by --leaf-changes-only and this is currently implemented by making diff_context's --leaf-changes-only setter also duplicate the behaviour of its --redundant setter. In both abidiff and abipkgdiff, the diff_context setters are called unconditionally, but the relative order of the calls for these two options is different in each case, resulting in two different issues. In abidiff, the --redundant setter is called second, undoing the intended side-effect of any --leaf-changes-only flag. So --redundant is not actually turned on in --leaf-changes-only mode unless requested explicitly. In abipkgdiff, the leaf-changes-only setter is called second, undoing (in non-leaf mode) the effect of any --redundant flag. So --redundant has no effect in default reporting mode. The fix is move to move the "--leaf-changes-only implies --redundant" logic from the setter to the set_diff_context_from_opts functions. This patch also documents the implied behaviour in the usage strings. * src/abg-comparison.cc (diff_context::show_leaf_changes_only): Remove "--leaf-changes-only implies --redundant" logic. * tools/abidiff.cc (display_usage): Mention that --leaf-changes-only implies --redundant. (set_diff_context_from_opts): Make --leaf-changes-only imply --redundant; document this behaviour in a comment. * tools/abipkgdiff.cc: Ditto. * tests/data/Makefile.am: Add new test case files. * tests/data/test-abidiff-exit/test-leaf3-report.txt: Add new test case, to show --leaf-changes-only implies --redundant. * tests/data/test-abidiff-exit/test-leaf3-v0.c: Ditto. * tests/data/test-abidiff-exit/test-leaf3-v0.o: Ditto. * tests/data/test-abidiff-exit/test-leaf3-v1.c: Ditto. * tests/data/test-abidiff-exit/test-leaf3-v1.o: Ditto. * tests/test-abidiff-exit.cc: Run new test case. * tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt: Update abipkgdiff report with --redundant output. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Ditto. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Ditto. Signed-off-by: Giuliano Procida <gprocida@google.com>
2020-03-12 06:30:32 +00:00
parameter 1 of type 'SpiceServer*' has sub-type changes:
pointed to type 'typedef SpiceServer' changed at spice.h:440:1, as reported earlier
Update tests for the "better leaf mode redundancy management" patchset This commit is the last of the set whose commit titles are: Do not show decl-only-to-def changes in the leaf reporter Overhaul of the report diff stats summary Do not mark "distinct" diff nodes as being redundant Fix meaning of "harmless name change" to avoid overfiltering Better handle category propagation of pointer changes Improve function changes reporting in leaf and default mode Don't filter out typedef changes with redundant underlying type changes Only show leaf type changes in the leaf type changes section Fix leaf report of class data member changes Always show redundant changes in leaf mode Avoid reporting an enum change if it has already been reported When we say an a change was reported earlier give its source location [abipkgdiff]: in leaf mode we always show redundant changes Update tests for the "better leaf mode redundancy management" patchset This commit updates the tests reference output files for that patchset. * tests/data/test-abidiff-exit/test1-voffset-change-report1.txt: Adjust. * tests/data/test-abidiff/test-PR18791-report0.txt: Likewise. * tests/data/test-abidiff/test-enum0-report.txt: Likewise. * tests/data/test-abidiff/test-enum1-report.txt: Likewise. * tests/data/test-diff-filter/test1-report.txt: Likewise. * tests/data/test-diff-filter/test14-0-report.txt: Likewise. * tests/data/test-diff-filter/test15-0-report.txt: Likewise. * tests/data/test-diff-filter/test17-0-report.txt: Likewise. * tests/data/test-diff-filter/test27-redundant-and-filtered-children-nodes-report-0.txt: Likewise. * tests/data/test-diff-filter/test28-redundant-and-filtered-children-nodes-report-0.txt: Likewise. * tests/data/test-diff-filter/test3-report.txt: Likewise. * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise. * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise. * tests/data/test-diff-filter/test32-ppc64le-struct-change-report0.txt: Likewise. * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise. * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt: Likewise. * tests/data/test-diff-filter/test4-report.txt: Likewise. * tests/data/test-diff-filter/test41-report-0.txt: Likewise. * tests/data/test-diff-filter/test42-leaf-report-output-0.txt: Likewise. * tests/data/test-diff-pkg/dirpkg-3-report-1.txt: Likewise. * tests/data/test-diff-pkg/dirpkg-3-report-2.txt: Likewise. * tests/data/test-diff-pkg/libICE-1.0.6-1.el6.x86_64.rpm--libICE-1.0.9-2.el7.x86_64.rpm-report-0.txt: Likewise. * tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt: Likewise. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: Likewise. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Likewise. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt: Likewise. * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: Likewise. * tests/data/test-diff-suppr/test1-typedef-suppr-report-1.txt: Likewise. * tests/data/test-diff-suppr/test1-typedef-suppr-report-2.txt: Likewise. * tests/data/test-diff-suppr/test13-suppr-through-pointer-report-1.txt: Likewise. * tests/data/test-diff-suppr/test14-suppr-non-redundant-report-0.txt: Likewise. * tests/data/test-diff-suppr/test14-suppr-non-redundant-report-1.txt: Likewise. * tests/data/test-diff-suppr/test15-suppr-added-fn-report-1.txt: Likewise. * tests/data/test-diff-suppr/test15-suppr-added-fn-report-2.txt: Likewise. * tests/data/test-diff-suppr/test15-suppr-added-fn-report-3.txt: Likewise. * tests/data/test-diff-suppr/test15-suppr-added-fn-report-4.txt: Likewise. * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-1.txt: Likewise. * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-2.txt: Likewise. * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-3.txt: Likewise. * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-4.txt: Likewise. * tests/data/test-diff-suppr/test17-suppr-added-var-report-1.txt: Likewise. * tests/data/test-diff-suppr/test17-suppr-added-var-report-2.txt: Likewise. * tests/data/test-diff-suppr/test17-suppr-added-var-report-3.txt: Likewise. * tests/data/test-diff-suppr/test17-suppr-added-var-report-4.txt: Likewise. * tests/data/test-diff-suppr/test18-suppr-removed-var-report-1.txt: Likewise. * tests/data/test-diff-suppr/test18-suppr-removed-var-report-3.txt: Likewise. * tests/data/test-diff-suppr/test18-suppr-removed-var-report-4.txt: Likewise. * tests/data/test-diff-suppr/test2-struct-suppr-report-0.txt: Likewise. * tests/data/test-diff-suppr/test2-struct-suppr-report-1.txt: Likewise. * tests/data/test-diff-suppr/test25-typedef-report-1.txt: Likewise. * tests/data/test-diff-suppr/test27-add-aliased-function-report-1.txt: Likewise. * tests/data/test-diff-suppr/test27-add-aliased-function-report-2.txt: Likewise. * tests/data/test-diff-suppr/test27-add-aliased-function-report-5.txt: Likewise. * tests/data/test-diff-suppr/test28-add-aliased-function-report-3.txt: Likewise. * tests/data/test-diff-suppr/test28-add-aliased-function-report-6.txt: Likewise. * tests/data/test-diff-suppr/test30-report-1.txt: Likewise. * tests/data/test-diff-suppr/test34-report-0.txt: Likewise. * tests/data/test-diff-suppr/test35-leaf-report-0.txt: Likewise. * tests/data/test-diff-suppr/test36-leaf-report-0.txt: Likewise. * tests/data/test-diff-suppr/test5-fn-suppr-report-1.txt: Likewise. * tests/data/test-diff-suppr/test5-fn-suppr-report-2.txt: Likewise. * tests/data/test-diff-suppr/test5-fn-suppr-report-3.txt: Likewise. * tests/data/test-diff-suppr/test5-fn-suppr-report-4.txt: Likewise. * tests/data/test-diff-suppr/test5-fn-suppr-report-5.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-1.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-2.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-3.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-4.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-5.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-6.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-7.txt: Likewise. * tests/data/test-diff-suppr/test7-var-suppr-report-9.txt: Likewise. * tests/data/test-diff-suppr/test8-redundant-fn-report-0.txt: Likewise. Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2018-04-13 08:45:42 +00:00
parameter 2 of type 'typedef spice_image_compression_t' changed:
typedef name changed from spice_image_compression_t to SpiceImageCompression at enums.h:197:1
Fix interaction of --redundant and --leaf-changes-only options. The --redundant (meaning show-redundant-changes) option is supposed to be implied by --leaf-changes-only and this is currently implemented by making diff_context's --leaf-changes-only setter also duplicate the behaviour of its --redundant setter. In both abidiff and abipkgdiff, the diff_context setters are called unconditionally, but the relative order of the calls for these two options is different in each case, resulting in two different issues. In abidiff, the --redundant setter is called second, undoing the intended side-effect of any --leaf-changes-only flag. So --redundant is not actually turned on in --leaf-changes-only mode unless requested explicitly. In abipkgdiff, the leaf-changes-only setter is called second, undoing (in non-leaf mode) the effect of any --redundant flag. So --redundant has no effect in default reporting mode. The fix is move to move the "--leaf-changes-only implies --redundant" logic from the setter to the set_diff_context_from_opts functions. This patch also documents the implied behaviour in the usage strings. * src/abg-comparison.cc (diff_context::show_leaf_changes_only): Remove "--leaf-changes-only implies --redundant" logic. * tools/abidiff.cc (display_usage): Mention that --leaf-changes-only implies --redundant. (set_diff_context_from_opts): Make --leaf-changes-only imply --redundant; document this behaviour in a comment. * tools/abipkgdiff.cc: Ditto. * tests/data/Makefile.am: Add new test case files. * tests/data/test-abidiff-exit/test-leaf3-report.txt: Add new test case, to show --leaf-changes-only implies --redundant. * tests/data/test-abidiff-exit/test-leaf3-v0.c: Ditto. * tests/data/test-abidiff-exit/test-leaf3-v0.o: Ditto. * tests/data/test-abidiff-exit/test-leaf3-v1.c: Ditto. * tests/data/test-abidiff-exit/test-leaf3-v1.o: Ditto. * tests/test-abidiff-exit.cc: Run new test case. * tests/data/test-diff-pkg/libcdio-0.94-1.fc26.x86_64--libcdio-0.94-2.fc26.x86_64-report.1.txt: Update abipkgdiff report with --redundant output. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Ditto. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Ditto. Signed-off-by: Giuliano Procida <gprocida@google.com>
2020-03-12 06:30:32 +00:00
underlying type 'enum __anonymous_enum__2' changed at spice.h:471:1, as reported earlier
[C] 'function int spice_server_set_jpeg_compression(SpiceServer*, spice_wan_compression_t)' at reds.c:3624:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceServer*' has sub-type changes:
pointed to type 'typedef SpiceServer' changed at spice.h:440:1, as reported earlier
[C] 'function int spice_server_set_listen_socket_fd(SpiceServer*, int)' at reds.c:3472:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceServer*' has sub-type changes:
pointed to type 'typedef SpiceServer' changed at spice.h:440:1, as reported earlier
[C] 'function void spice_server_set_name(SpiceServer*, const char*)' at reds.c:3517:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceServer*' has sub-type changes:
pointed to type 'typedef SpiceServer' changed at spice.h:440:1, as reported earlier
[C] 'function int spice_server_set_noauth(SpiceServer*)' at reds.c:3486:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceServer*' has sub-type changes:
pointed to type 'typedef SpiceServer' changed at spice.h:440:1, as reported earlier
[C] 'function int spice_server_set_playback_compression(SpiceServer*, int)' at reds.c:3732:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceServer*' has sub-type changes:
pointed to type 'typedef SpiceServer' changed at spice.h:440:1, as reported earlier
[C] 'function int spice_server_set_port(SpiceServer*, int)' at reds.c:3445:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceServer*' has sub-type changes:
pointed to type 'typedef SpiceServer' changed at spice.h:440:1, as reported earlier
[C] 'function int spice_server_set_sasl(SpiceServer*, int)' at reds.c:3494:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceServer*' has sub-type changes:
pointed to type 'typedef SpiceServer' changed at spice.h:440:1, as reported earlier
[C] 'function int spice_server_set_sasl_appname(SpiceServer*, const char*)' at reds.c:3505:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceServer*' has sub-type changes:
pointed to type 'typedef SpiceServer' changed at spice.h:440:1, as reported earlier
[C] 'function void spice_server_set_seamless_migration(SpiceServer*, int)' at reds.c:3941:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceServer*' has sub-type changes:
pointed to type 'typedef SpiceServer' changed at spice.h:440:1, as reported earlier
[C] 'function int spice_server_set_streaming_video(SpiceServer*, int)' at reds.c:3720:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceServer*' has sub-type changes:
pointed to type 'typedef SpiceServer' changed at spice.h:440:1, as reported earlier
[C] 'function int spice_server_set_ticket(SpiceServer*, const char*, int, int, int)' at reds.c:3529:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceServer*' has sub-type changes:
pointed to type 'typedef SpiceServer' changed at spice.h:440:1, as reported earlier
[C] 'function int spice_server_set_tls(SpiceServer*, int, const char*, const char*, const char*, const char*, const char*, const char*)' at reds.c:3564:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceServer*' has sub-type changes:
pointed to type 'typedef SpiceServer' changed at spice.h:440:1, as reported earlier
[C] 'function void spice_server_set_uuid(SpiceServer*, const uint8_t*)' at reds.c:3523:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceServer*' has sub-type changes:
pointed to type 'typedef SpiceServer' changed at spice.h:440:1, as reported earlier
[C] 'function int spice_server_set_zlib_glz_compression(SpiceServer*, spice_wan_compression_t)' at reds.c:3636:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceServer*' has sub-type changes:
pointed to type 'typedef SpiceServer' changed at spice.h:440:1, as reported earlier
[C] 'function void spice_server_vm_start(SpiceServer*)' at reds.c:3911:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceServer*' has sub-type changes:
pointed to type 'typedef SpiceServer' changed at spice.h:440:1, as reported earlier
[C] 'function void spice_server_vm_stop(SpiceServer*)' at reds.c:3926:1 has some indirect sub-type changes:
parameter 1 of type 'SpiceServer*' has sub-type changes:
pointed to type 'typedef SpiceServer' changed at spice.h:440:1, as reported earlier
Fix suppression category propagation in diff node graph Under certain circumstances, a diff node (which we shall name N) that belongs to the SUPPRESSED_CATEGORY category sees its belonging to that category been propagated to its parent diff node, effectively suppressing that parent diff node as well. This is how some function diff nodes ends up being suppressed just because some of their children diff nodes were suppressed. This suppression category propagation is performed by a pass that walks the diff nodes graph. To avoid infinite cycles, the pass avoids visiting a diff node that is equivalent to a node that has already been visited. As a result, diff nodes equivalent to N (the class of equivalence of N) are not traversed by the propagation pass. So their parent diff nodes are not suppressed. This leads to some functions not being suppressed as they should. This phenomenon can be observed by comparing the two packages that are provided in the regression test accompanying this patch using abipkgdiff with the --redundant option. Here is how the patch addresses the issue. When the suppression category propagation pass considers a parent diff node (named P) of a node N' (with N' being equivalent to N), it now looks at the category of the *class of equivalence of N'* to determine if that category should be propagated to P. Previously, that pass would just look at the at the category of N' (not the category of the class of equivalence of N') for the propagation. But as N' has not been visited (because N has already been visited and nodes equivalent to N are thus not visited) the belonging of N' to the SUPPRESSED_CATEGORY hasn't been updated. So N' isn't marked as being in SUPPRESSED_CATEGORY. So the SUPPRESSED_CATEGORY wouldn't be propagated to P as it should. So, with this patch abipkgdiff invoked with the --redundant option now correctly yields: $ abipkgdiff --redundant --d1 spice-debuginfo-0.12.4-19.el7.x86_64.rpm --d2 spice-debuginfo-0.12.8-1.el7.x86_64.rpm --devel1 spice-server-devel-0.12.4-19.el7.x86_64.rpm --devel2 spice-server-devel-0.12.8-1.el7.x86_64.rpm spice-server-0.12.4-19.el7.x86_64.rpm spice-server-0.12.8-1.el7.x86_64.rpm ================ changes of 'libspice-server.so.1.8.0'=============== Functions changes summary: 1 Removed, 2 Changed (62 filtered out), 8 Added functions Variables changes summary: 0 Removed, 0 Changed, 0 Added variable [...] 2 functions with some indirect sub-type change: [C]'function spice_image_compression_t spice_server_get_image_compression(SpiceServer*)' at reds.c:3618:1 has some indirect sub-type changes: return type changed: underlying type 'enum __anonymous_enum__' changed: type size hasn't changed 7 enumerator deletions: '__anonymous_enum__::SPICE_IMAGE_COMPRESS_INVALID' value '0' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_OFF' value '1' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_GLZ' value '2' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_LZ' value '3' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_QUIC' value '4' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_GLZ' value '5' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_LZ' value '6' 9 enumerator insertions: 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_GLZ' value '2' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_LZ' value '3' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_QUIC' value '4' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_GLZ' value '5' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ' value '6' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ4' value '7' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_ENUM_END' value '8' [C]'function int spice_server_set_image_compression(SpiceServer*, spice_image_compression_t)' at reds.c:3602:1 has some indirect sub-type changes: parameter 2 of type 'typedef spice_image_compression_t' changed: underlying type 'enum __anonymous_enum__' changed: type size hasn't changed 7 enumerator deletions: '__anonymous_enum__::SPICE_IMAGE_COMPRESS_INVALID' value '0' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_OFF' value '1' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_GLZ' value '2' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_AUTO_LZ' value '3' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_QUIC' value '4' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_GLZ' value '5' '__anonymous_enum__::SPICE_IMAGE_COMPRESS_LZ' value '6' 9 enumerator insertions: 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_INVALID' value '0' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_OFF' value '1' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_GLZ' value '2' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_AUTO_LZ' value '3' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_QUIC' value '4' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_GLZ' value '5' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ' value '6' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_LZ4' value '7' 'SpiceImageCompression::SPICE_IMAGE_COMPRESSION_ENUM_END' value '8' ================ end of changes of 'libspice-server.so.1.8.0'=============== $ * include/abg-comparison.h (diff::get_class_of_equiv_category): Declare new member function. * src/abg-comparison.cc: Update copyright year. (diff::get_class_of_equiv_category): Define new member function. (suppression_categorization_visitor::visit_end): When considering children nodes category for propagation, consider the category of the class of equivalence of children nodes. * spice-debuginfo-0.12.4-19.el7.x86_64.rpm: New input test package. * spice-debuginfo-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-0.12.4-19.el7.x86_64.rpm: Likewise. * spice-server-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-devel-0.12.4-19.el7.x86_64.rpm: Likewise. * spice-server-devel-0.12.8-1.el7.x86_64.rpm: Likewise. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-0.txt: New reference test output. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-1.txt: Likewise. * spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise. * tests/data/Makefile.am: Add the new test material above to source distribution. * tests/test-diff-pkg.cc (in_out_specs): Add the new test inputs to the list of packages to test. Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2017-01-20 09:28:29 +00:00
================ end of changes of 'libspice-server.so.1.8.0'===============