From 073608f47d9909abf486a3ae7f2f50431b70643d Mon Sep 17 00:00:00 2001 From: Dodji Seketeli Date: Wed, 5 Jun 2019 16:20:13 +0200 Subject: [PATCH] Take anonymous scopes into account when comparing decls This is another attempt at handling anonymous decls comparison. It's not the full blown method that I'd like, but this one seems to be fast enough. In this method, we take the immediate scope (and whether it's anonymous or not) of the anonymous decl into account. * include/abg-interned-str.h (interned_string::clear): Add new member function. * src/abg-ir.cc (equals): In the overload for decl_base, consider the scope of the current (anonymous) decl. If that scope is anonymous then take that into account as well. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt: Adjust. * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. Signed-off-by: Dodji Seketeli --- include/abg-interned-str.h | 5 + src/abg-ir.cc | 37 +- ...l7.x86_64-0.12.8-1.el7.x86_64-report-3.txt | 4 +- .../test-read-dwarf/PR22122-libftdc.so.abi | 7402 ++++++++--------- 4 files changed, 3743 insertions(+), 3705 deletions(-) diff --git a/include/abg-interned-str.h b/include/abg-interned-str.h index 6f40b36f..c102c086 100644 --- a/include/abg-interned-str.h +++ b/include/abg-interned-str.h @@ -92,6 +92,11 @@ public: return *this; } + /// Clear the string. + void + clear() + {raw_ = 0;} + /// Test if the current instance of @ref interned_string is empty. /// /// @return true iff the currentisntance of @ref interned_string is diff --git a/src/abg-ir.cc b/src/abg-ir.cc index c139ee6f..59b31c5a 100644 --- a/src/abg-ir.cc +++ b/src/abg-ir.cc @@ -3377,6 +3377,40 @@ equals(const decl_base& l, const decl_base& r, change_kind* k) // are anonymous or not. interned_string ln = l.get_scoped_name(), rn = r.get_scoped_name(); scope_decl *lscope = l.get_scope(), *rscope = r.get_scope(); + + /// If the current decl is anonymous, let's consider its scope + /// instead. If the scope is anonymous as well, then we won't + /// consider it. + /// + /// TODO: Ideally, we'll compare the fully qualified names of the + /// decls, comparing them component by component. Whenever two + /// components are anonymous, don't compare them. + if (l.get_is_anonymous()) + { + if (lscope && lscope->get_is_anonymous()) + ln.clear(); + else if (lscope) + ln = lscope->get_name(); + } + else + { + if (lscope && lscope->get_is_anonymous()) + ln = l.get_name(); + } + + if (r.get_is_anonymous()) + { + if (rscope && rscope->get_is_anonymous()) + rn.clear(); + else if (rscope) + rn = rscope->get_name(); + } + else + { + if (rscope && rscope->get_is_anonymous()) + rn = r.get_name(); + } + if (// If the two scopes are anonymous then only consider the name // of the decl, not its scope name. This is because the two // scope (internal) names might be different even though they @@ -3389,8 +3423,7 @@ equals(const decl_base& l, const decl_base& r, change_kind* k) rn = r.get_name(); } - if (!l.get_is_anonymous() && !r.get_is_anonymous() - && ln != rn) + if (ln != rn) { result = false; if (k) diff --git a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt index 75ba0a50..725af787 100644 --- a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt +++ b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt @@ -1,6 +1,6 @@ ================ changes of 'libspice-server.so.1.8.0'=============== -Leaf changes summary: 11 artifacts changed (7 filtered out) - Changed leaf types summary: 2 (7 filtered out) leaf types changed +Leaf changes summary: 11 artifacts changed (8 filtered out) + Changed leaf types summary: 2 (8 filtered out) leaf types changed Removed/Changed/Added functions summary: 1 Removed, 0 Changed, 8 Added functions Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable diff --git a/tests/data/test-read-dwarf/PR22122-libftdc.so.abi b/tests/data/test-read-dwarf/PR22122-libftdc.so.abi index 2fde01b1..40e0f1dd 100644 --- a/tests/data/test-read-dwarf/PR22122-libftdc.so.abi +++ b/tests/data/test-read-dwarf/PR22122-libftdc.so.abi @@ -276,66 +276,66 @@ - + - + - - + + - - - + + + - + - - + + - - + + - - + + - + - + - + - - + + @@ -343,918 +343,918 @@ - + - + - - + + - + - + - - + + - + - + - + - + - - - + + + - + - + - + - - + + - - + + - - + + - + - + - - + + - - + + - - + + - - + + - - + + - - - + + + - - - + + + - - + + - - + + - + - - + + - - + + - - + + - - - - + + + + - - - - + + + + - - - + + + - - + + - - + + + - - + - - - + + + - - - + + + - - - + + + - - - - + + + + - - - - + + + + - - - + + + + + - - - - - + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - + + - - - - + + + + - - - - + + + + - - - - - - + + + + + + - - - - + + + + - + - - - + + + - + - - + + - - + + - - + + - - + + - - - - + + + + - - + + - + - + - - - + + + - - - + + + - + - + - + - + - - - + + + - - - + + + - - + + - + - - + + - - - - + + + + - - - + + + - - + + - - + + - + - - + + - + - - - + + + - + - - - - + + + + - + - - - - + + + + - - + + - + - - + + - + - + - - + + - + - + - + - + - - + + - - + + - - + + - - + + - + - + - - + + - - - + + + - + - - + + - - + + - - - - + + + + - - - - + + + + - + - - + + - + - + - - - + + + - - + + - - + + - + - - + + - - - + + + - - + + - - + + - + - + - - + + - - - + + + - - - + + + - - + + - + - + - - + + - + - - + + - - - + + + - - + + - - + + - + - + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - + + + + - + - - - + + + - - + + - - - + + + - - + + - - + + - + - + - + - + - - - + + + - - - - + + + + - + - - + + @@ -1262,1831 +1262,1831 @@ - - - + + + - + - + - + - + - + - - - - + + + + - - - + + + - + - + - + - + - - - + + + - - - - + + + + - - - - + + + + - - - - + + + + - + - - - - + + + + - - - - + + + + - - - - - - - - - - - + + + + + + + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - - - + + + + - - - - + + + + - - - - + + + + - - - + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - - + + + - - + + - - - - + + + + + - - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - + - - + + - + - - + + - + - - - - - + + + + + - - - - + + + + - - - - - - - - + + + + + + + + - - + + - - + + - - - - - + + + + + - - - + + + - - + + - - - + + + - + - - + + - + - - - + + + - - + + - - - - + + + + - - - - + + + + - - - - - + + + + + - - - - + + + + - - - + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - - - - - + + + + + + + + - - - - - + + + + + - - + + - - - - + + + + - - - - + + + + - - - - + + + + - - + + - - - - - + + + + + - - - + + + - - - + + + - - - + + + - + - - - + + + - - - - + + + + - + - - - - + + + + - - - - + + + + - - - - + + + + - - + + - - - - + + + + - - - - + + + + - - - - + + + + - - - - + + + + - + - + - + - + - - - + + + - - - + + + - - - + + + - - - + + + - - - - + + + + - + - - - + + + - - - - + + + + - + - - - - + + + + - - - + + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - - - - - + + + + + + - - - + + + - - + + - - - + + + - + - + - - + + - - + + - - + + - - - + + + - - + + - - - + + + - - - - + + + + - - - - + + + + - - - - + + + + - + - + - - - + + + - + - - + + - - - + + + - - - - + + + + - - - - + + + + - - + + - - - - + + + + - - - + + + - + - - + + - - - + + + - - + + - - - - + + + + - - - - + + + + - - - + + + - - - + + + - - + + - + - - + + - - + + - - + + - - + + - - - - - - - - - + + + + + + + + + - - - + + + - - - - + + + + - - - + + + - - + + - + - - - + + + - - - + + + - - - - - + + + + + - - - - + + + + - - + + - + - - - - + + + + - - + + - - - + + + - - + + - - - - - + + + + + - - + + - + - + - + - + - - - + + + - - + + - - + + - - + + - - - + + + - + - + - + - - + + - - - - - + + + + + - - + + - + - - + + - + - + - - + + - - - + + + + + - - - + - - - + + + - - - - + + + + - - - + + + - + + + - - - + - - - + + + - - - - - + + + + + - - - - + + + + - - + + - - + + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - + - - - + + + - - - + + + - - + + - - + + - + - - - + + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - - - + + + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - - - + + + + - - - - + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - - + + + + - - - + + + - - + + - - + + - - + + - - + + - + - - + + - - + + - - - + + + - - - - + + + + - + - - - - + + + + - - - - + + + + - - - - + + + + - + - - - + + + - - - + + + - - - + + + - - - + + + - - - - - - - + + + + + + + - - + + - - - + + + - - + + - + - - + + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - + - - - + + + - + - + - + - - - + + + @@ -3102,33 +3102,33 @@ - + - - + + - - + + - - - + + + - + @@ -3137,306 +3137,306 @@ - + - + - + - + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - + - - + + - - + + - - + + - - + + - + - + - + - + - - + + - + - - - + + + - - + + - - + + - + - - - + + + - + - - + + - + - - - + + + - + - + - + - + - - + + - + - + - + - + - - + + - + - + - - + + - + - + - + - + - + - + - + - + - - - - + + + + - - - + + + - - + + - + - - - - + + + + - + - - + + - + - - + + @@ -3444,313 +3444,313 @@ - - + + - - + + - - - + + + - + - + - + - - + + - - + + - - + + - - + + - - - + + + - - + + - - + + - - + + - + - - + + - - - - + + + + - + - - + + - + - - + + - + - + - + - + - + - - + + - + - - - + + + - - + + - - + + - - + + - - - + + + - - + + - - + + - - + + - + - - - + + + - - + + - - + + - - - + + + - - + + - + - - + + - - + + - - + + - - + + - - + + - + - - - + + + - + - - - + + + - + - - - + + + - - - + + + - + - - - + + + @@ -3758,228 +3758,228 @@ - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - + - - - - + + + + - - - - + + + + - + - - - - + + + + - - - + + + - + - - + + - - + + - - + + - - + + - - + + - + - + - + - - - + + + - - + + - - - - + + + + - - - - - + + + + + - - + + - + - - + + - - - + + + - - + + - + - - + + - - + + - - + + - - + + - - + + - - + + - - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + @@ -4012,69 +4012,69 @@ - + - - + + - + - + - + - - - - - - - + + + + + + + - + - - + + - - + + - + - - + + - - + + - - - + + + @@ -4083,465 +4083,465 @@ - - - + + + - - - - + + + + - - + + - + - + - - + + - - - + + + - + - + - + - - + + - + - + - + - - + + - + - + - - + + - - + + - + - - - + + + - + - - - - + + + + - + - - + + - + - + - + - + - - + + - - + + - - - + + + - - - + + + - + - + - - + + - - - + + + - + - - - - + + + + - + - - - - + + + + - + - + - - + + - - + + - - + + - - - + + + - - + + - + - - + + - - + + - + - + - + - + - + - - + + - + - + - + - - - - + + + + - - + + - - - - + + + + - - - - + + + + - - - + + + - - + + - + - - + + - - + + - + - + - - + + - - + + - - - + + + - - + + - - + + - + - + - + - + - - - + + + - + - - - + + + - - - + + + - - - - + - + + + + - + - - + + - - - + + + - - - - + + + + - + - + - - + + @@ -4549,129 +4549,129 @@ - - + + - - + + - - + + - + - - - + + + - - + + - - - + + + - - + + - + - - + + - + - - - - + + + + - + - - - + + + - + - - + + - - + + - + - + - + - + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + @@ -4688,18 +4688,18 @@ - + - - + + - - - + + + @@ -4708,606 +4708,606 @@ - - + + - + - - + + - - + + - + - + - + - + - + - + - - - - - + + + + + - - + + - - + + - + - - + + - + - + - + - + - + - + - - + + - - - + + + - - + + - + - + - - + + - - + + - - - + + + - - + + - + - + - - + + - - - - + + + + - + - + - + - + - + - + - + - + - + - + - - + + - + - - - + + + - + - - - - - + + + + + - + - - + + - - + + - + - - - + + + - - + + - - - + + + - - + + - - - + + + - + - - - - + + + + - - + + - + - - + + - + - - + + - + - + - + - + - + - + - + - + - + - - - - + + + + - - - - + + + + - + - - + + - + - + - - + + - - + + - + - - - + + + - - + + - + - - + + - + - - + + - + - - - - + + + + - + - + - - - + + + - - + + - - - + + + - + - + - - + + - - - + + + - - + + - - + + - + - - + + - + - - - + + + - - + + - + - + - + - + - - - + + + - + - + - + - + - + - - + + - - + + - - + + - - - + + + - - - + + + - - - + + + - + - - + + - - + + @@ -5315,191 +5315,191 @@ - + - - + + - - - + + + - + - + - - + + - - + + - + - - + + - + - + - - - - - - + + + + + + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - + + - - + + - - + + - + - + - + - - - - + + + + - - + + - + - - - + + + - - - + + + - - - + + + - - + + @@ -5509,66 +5509,66 @@ - + - - - + + + - - - + + + - - - + + + - + - - + + - + - - + + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + @@ -5585,52 +5585,52 @@ - + - + - - - - - - + + + + + + - + - + - + - - + + - + - - - - - + + + + + @@ -5640,109 +5640,109 @@ - - + + - + - + - - + + - - + + - - + + - - + + - + - - + + - - - - - + + + + + - - + + - + - - + + - + - + - + - + - + @@ -5750,120 +5750,120 @@ - + - - + + - - - + + + - - + + - + - + - + - - + + - - + + - - - - + + + + - + - - - + + + - - - - - + + + + + - - - + + + - - + + - - + + - - - - + + + + - - - - + + + + - + - - + + @@ -5871,424 +5871,424 @@ - + - - - + + + - - + + - - + + - - + + - - - + + + - - - + + + - - + + - + - + - - - - - - + + + + + + - - - + + + - + - - - - - - + + + + + + - + - + - + - + - + - - - - - - + + + + + + - - - - - - + + + + + + - - - - - - + + + + + + - + - + - - - - - - + + + + + + - - - - - - + + + + + + - + - + - - - + + + - - - + + + - + - - + + - - - - - - + + + + + + - + - + - + - - - - - - + + + + + + - - - + + + - + - - - + + + - + - + - + - - + + - + - - + + - - + + - - + + - + - - - - + + + + - + - + - + - + - + - - + + - + - - + + - - + + - - - + + + - - - + + + - - + + - - - + + + - - - + + + - + - - - + + + - - + + - + - + - - + + - + - + - - + + - + - + - - + + @@ -6297,51 +6297,51 @@ - + - + - - + + - - + + - + - - + + - + - - - - + + + + - - + + - + @@ -6353,97 +6353,97 @@ - - - + + + - + - + - - + + - - + + - + - + - + - + - + - + - + - + - - + + - - - + + + - - + + - + @@ -6454,32 +6454,32 @@ - + - + - + - - + + - - + + - - + + @@ -6487,14 +6487,14 @@ - - - - + + + + - + @@ -6502,40 +6502,40 @@ - + - + - + - - - - + + + + - + - - + + - - + + - + - + @@ -6544,682 +6544,682 @@ - + - + - - - - + + + + - - - + + + - - - - - + + + + + - - - - - + + + + + - - - + + + - - + + - + - + - - + + - + - - + + - - - - + + + + - - + + - + - - + + - - + + - + - + - + - + - - - + + + - - + + - - + + - + - + - + - - + + - - + + - - + + - - + + - + - + - + - - - + + + - - + + - - + + - + - - - + + + - + - - - - + + + + - - + + - - + + - - - - + + + + - - + + - + - - - + + + - + - - - + + + - + - + - + - - + + - + - + - - + + - - - - + + + + - - + + - - + + - - - + + + - + - - - - - - + + + + + + - + - - - - + + + + - + - - - - + + + + - - - - + + + + - - - - + + + + - - + + - - - - + + + + - + - + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - + - + - - + + - - - + + + - - - + + + - - + + - + - + - - - + + + - + - + - + - + - - - + + + - + - - - + + + - + - + - - + + - + - - + + - + - + - - - - - - - - + + + + + + + + - - + + - - - + + + - + - - + + - - + + - + - - - - + + + + - - + + - + - - - - - + + + + + - - + + - - + + - - - - + + + + - - - - - + + + + + - - + + - - - + + + - - - - - + + + + + - - - - - + + + + + - - + + - + - - + + - - - + + + - + - + - - - + + + - - + + - - + + - - + + - + - - - - - - + + + + + + - + - - + + - - + + - + - + - - + + @@ -7227,63 +7227,63 @@ - - - + + + - + - - - + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - + - + - - + + @@ -7294,7 +7294,7 @@ - + @@ -7305,14 +7305,14 @@ - + - + - - + + @@ -7320,25 +7320,25 @@ - - - - - - - - - - - + + + + + + + + + + + - - - - - - - + + + + + + + @@ -7348,410 +7348,410 @@ - + - - - + + + - + - + - - + + - - - + + + - + - + - + - + - + - + - - + + - - + + - - + + - - - - - + + + + + - - - + + + - - - - + + + + - - + + - - - - - + + + + + - - + + - - + + - - - - + + + + - + - - - - + + + + - - - - + + + + - - - + + + - - - + + + - + - - - - + + + + - + - - - - + + + + - + - - + + - - - + + + - - - + + + - + - - - + + + - + - - - - + + + + - + - + - + - - - + + + - - + + - + - + - - + + - + - + - + - + - - - - - - + + + + + + - + - - + + - - + + - - + + - - - + + + - + - + - + - - + + - - + + - - + + - - - - - - - - + + + + + + + + - + - + - + - + - - + + - - - - + + + + - - - + + + - - - - + + + + - + - - - + + + - - - + + + - - - + + + - - - - - - - + + + + + + + - - + + - + - - + + - + - - + + - + @@ -7768,70 +7768,70 @@ - + - + - + - + - + - - - - - + + + + + - + - + - + - - + + - - + + - - - - - + + + + + @@ -7839,203 +7839,203 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + - + - - + + - + - + - - + + - + - - - + + + - - - + + + - - - - + + + + - - - - + + + + - - - - + + + + - + - - - + + + - + - - - - - - + + + + + + - - + + - - + + - - + + - - - + + + - + - + - - + + - - + + - + - - + + - + - - + + - + - + - + - - - + + + - - + + - + - + - - + + - - + + - - - + + + @@ -8054,20 +8054,20 @@ - - - - - - - + + + + + + + - - - - - - + + + + + + @@ -8076,853 +8076,853 @@ - + - + - - + + - - + + - - + + - - - + + + - - + + - - + + - - + + - + - - - + + + - - - + + + - - - + + + - - - - - + + + + + - + - - - - - - + + + + + + - - + + - - - + + + - - - + + + - + - - - - - - - - - + + + + + + + + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - + + - - - + + + - - - - - - - - + + + + + + + + - - + + - - + + - - - + + + - - + + - - + + - + - + - - + + - - + + - + - + - + - + - - - + + + - - - + + + - + - + - - - + + + - + - + - - - + + + - + - + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + - - + + - - + + - + - - - + + + - + - + - - + + - - + + - - + + - - + + - - + + - - - + + + - - - - + + + + - - - - + + + + - - - - - + + + + + - - - - - - + + + + + + - - - - + + + + - - - - + + + + - - - + + + - - - + + + - - - - + + + + - - + + - + - - - - + + + + - + - - + + - + - - - + + + - - - + + + - - + + - - - - + + + + - + - - + + - + - - + + - - + + - - + + - - + + - - + + - + - + - + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - + - - - + + + - - - + + + - - - + + + - - - - - - - + + + + + + + - + - - + + - + - - + + - + - - - - + - + + + + - + - - + + -- 2.43.5