From patchwork Tue Jun 7 09:59:24 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dodji Seketeli X-Patchwork-Id: 54886 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 23630382C15F for ; Tue, 7 Jun 2022 09:59:35 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 23630382C15F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1654595975; bh=6OLyPaoHhZcrCzWLjYymgXk5tNrTuKIcGjTcNGAmarg=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Help: List-Subscribe:From:Reply-To:Cc:From; b=jfPg4McsSg2DhKde4fKRANhYuxRqw+aFrd88UMFQ2n7l5jHFPGlKl8wcVTWJXVZH5 QGjGbfU30BF+PpJ7sA67EgTcUETOkROHb1ncL+qd0BUPEB+nmyT+c2/wnsg2PGneS/ tkNrgNWTCYxP+HiHVkqp1F/2juD16+UbulzMKlX0= X-Original-To: libabigail@sourceware.org Delivered-To: libabigail@sourceware.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id 70659382CBBD for ; Tue, 7 Jun 2022 09:59:29 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 70659382CBBD Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-339-pOnhT_KsN0qgZ8GDvIEr0A-1; Tue, 07 Jun 2022 05:59:27 -0400 X-MC-Unique: pOnhT_KsN0qgZ8GDvIEr0A-1 Received: by mail-wr1-f71.google.com with SMTP id u18-20020adfb212000000b0021855847651so128727wra.6 for ; Tue, 07 Jun 2022 02:59:27 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:organization:date:message-id :user-agent:mime-version; bh=6OLyPaoHhZcrCzWLjYymgXk5tNrTuKIcGjTcNGAmarg=; b=lbSPfXWj2hLnr1sT5RxogcvzkTGHOqxEvZNNQ813b79RVJT5LGJ1z8f/ahNtuj/tts 0TBrPJPt+Sm1mUhzZ4zZMypi9/STwZd/MQ5P9XqIesvSE3GPn+aOLr9Vyd1SfSe0/Svd TB2tpifFA/kVOXwGA66mMPBBgcf0nCnmXAGDdavUDx+5+O6qObM/QUaoGQKP1ICfyw0Y O1PmSNiEWdF8SooJ9vCTWYph0kEB9z1unTuG8UBdwM9W2rpJZxQXVitDpxTHGqDP/PLU E+BeuloNhqYk0nZZNlqeKZpyz2cKP8+NTkArCzZFA4amE+PK/UFMP32upgB7MmzfqNUN t5wQ== X-Gm-Message-State: AOAM532j48sMUE5CUwVenvVFombh3Cpu5k/2hrE4rITOU7S0I16mtxKg 3wX2zqkCMPpjwBr7tVt7KSDrOuVOFVRLU5ygxf+hW8zubVQ2Voo7DwgBdlf9GdfBCZcuAMYXYi5 mws39Gv29AdmXE5DM2XRe X-Received: by 2002:a05:600c:4e94:b0:397:63d7:1f6c with SMTP id f20-20020a05600c4e9400b0039763d71f6cmr27860228wmq.150.1654595966267; Tue, 07 Jun 2022 02:59:26 -0700 (PDT) X-Google-Smtp-Source: ABdhPJydc+MRGzGabJ5P3HfDJT501011XdyGQVAwnszHWaFHa4CJjIyRbwxixHFHT1eaiCZ4zDDxJg== X-Received: by 2002:a05:600c:4e94:b0:397:63d7:1f6c with SMTP id f20-20020a05600c4e9400b0039763d71f6cmr27860189wmq.150.1654595965659; Tue, 07 Jun 2022 02:59:25 -0700 (PDT) Received: from localhost ([88.120.130.27]) by smtp.gmail.com with ESMTPSA id l65-20020a1c2544000000b00397393419e3sm22997039wml.28.2022.06.07.02.59.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Jun 2022 02:59:25 -0700 (PDT) Received: by localhost (Postfix, from userid 1000) id 7BDAB5800F8; Tue, 7 Jun 2022 11:59:24 +0200 (CEST) To: gprocida@google.com Subject: [PATCH] Bug 29144 - abidiff doesn't report base class re-ordering Organization: Red Hat / France X-Operating-System: Fedora 36 X-URL: http://www.redhat.com Date: Tue, 07 Jun 2022 11:59:24 +0200 Message-ID: <878rq8ssjn.fsf@redhat.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-Spam-Status: No, score=-12.3 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libabigail@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Mailing list of the Libabigail project List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-Patchwork-Original-From: Dodji Seketeli via Libabigail From: Dodji Seketeli Reply-To: Dodji Seketeli Cc: libabigail@sourceware.org Errors-To: libabigail-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libabigail" Hello Giuliano, Libabigail fails to report when a base class gets re-ordered, even though the comparison engine detects the change. This patch detects the base class re-ordering in class_diff::ensure_lookup_tables_populated by interpreting the edit script resulting of the comparison, populates a new class_diff::priv::moved_bases_ vector with the bases that "changed position" and adds a new class_diff::moved_bases() accessor for the "base classes that changed position". A new function maybe_report_base_class_reordering is defined to actually report a base class re-ordering if class_diff::moved_bases() returns a non-empty vector, meaning that class has some base classes that got re-ordered. That new function is thus called in the overload of {default_reporter, leaf_reporter}::report() for class_diff to emit a description of the change when necessary. Would you this patch work for your testing case? Thanks. * include/abg-comparison.h (class_diff::moved_bases): Declare new method. * src/abg-comparison-priv.h (class_diff::priv::moved_bases_): Define new data member. * src/abg-reporter-priv.h (maybe_report_base_class_reordering): Declare new function. * src/abg-reporter-priv.cc (maybe_report_base_class_reordering): Define new function. * src/abg-comparison.cc (class_diff::ensure_lookup_tables_populated): Detect that a base class moved position and record it into class_diff::priv::moved_bases_ data member. * src/abg-default-reporter.cc (default_reporter::report): Use the new maybe_report_base_class_reordering. * src/abg-leaf-reporter.cc (leaf_reporter::report): Likewise. * tests/data/test-abidiff-exit/test-PR29144-report-2.txt: New testing input file. * tests/data/test-abidiff-exit/test-PR29144-report.txt: Likewise. * tests/data/test-abidiff-exit/test-PR29144-v0.cc: Likewise. * tests/data/test-abidiff-exit/test-PR29144-v0.o: Likewise. * tests/data/test-abidiff-exit/test-PR29144-v1.cc: Likewise. * tests/data/test-abidiff-exit/test-PR29144-v1.o: Likewise. * tests/data/Makefile.am: Add the new files to source distribution. * tests/test-abidiff-exit.cc (in_out_specs): Add the new tests to this harness. Signed-off-by: Dodji Seketeli --- include/abg-comparison.h | 3 ++ src/abg-comparison-priv.h | 1 + src/abg-comparison.cc | 15 ++++++ src/abg-default-reporter.cc | 3 ++ src/abg-leaf-reporter.cc | 2 + src/abg-reporter-priv.cc | 48 ++++++++++++++++++ src/abg-reporter-priv.h | 4 ++ tests/data/Makefile.am | 16 ++++-- .../test-PR29144-report-2.txt | 8 +++ .../test-abidiff-exit/test-PR29144-report.txt | 10 ++++ .../data/test-abidiff-exit/test-PR29144-v0.cc | 17 +++++++ .../data/test-abidiff-exit/test-PR29144-v0.o | Bin 0 -> 2560 bytes .../data/test-abidiff-exit/test-PR29144-v1.cc | 18 +++++++ .../data/test-abidiff-exit/test-PR29144-v1.o | Bin 0 -> 2560 bytes tests/test-abidiff-exit.cc | 22 ++++++++ 15 files changed, 162 insertions(+), 5 deletions(-) create mode 100644 tests/data/test-abidiff-exit/test-PR29144-report-2.txt create mode 100644 tests/data/test-abidiff-exit/test-PR29144-report.txt create mode 100644 tests/data/test-abidiff-exit/test-PR29144-v0.cc create mode 100644 tests/data/test-abidiff-exit/test-PR29144-v0.o create mode 100644 tests/data/test-abidiff-exit/test-PR29144-v1.cc create mode 100644 tests/data/test-abidiff-exit/test-PR29144-v1.o diff --git a/include/abg-comparison.h b/include/abg-comparison.h index 78e4102e..f5169aeb 100644 --- a/include/abg-comparison.h +++ b/include/abg-comparison.h @@ -1716,6 +1716,9 @@ public: const base_diff_sptrs_type& changed_bases(); + const vector& + moved_bases() const; + virtual bool has_changes() const; diff --git a/src/abg-comparison-priv.h b/src/abg-comparison-priv.h index ef271d8b..0953d567 100644 --- a/src/abg-comparison-priv.h +++ b/src/abg-comparison-priv.h @@ -613,6 +613,7 @@ struct class_diff::priv class_decl::base_specs sorted_inserted_bases_; string_base_diff_sptr_map changed_bases_; base_diff_sptrs_type sorted_changed_bases_; + vector moved_bases_; class_decl::base_spec_sptr base_has_changed(class_decl::base_spec_sptr) const; diff --git a/src/abg-comparison.cc b/src/abg-comparison.cc index 2ce3f5d4..1313e8fd 100644 --- a/src/abg-comparison.cc +++ b/src/abg-comparison.cc @@ -5217,6 +5217,11 @@ class_diff::ensure_lookup_tables_populated(void) const if (j->second != b) get_priv()->changed_bases_[name] = compute_diff(j->second, b, context()); + else + // The base class changed place. IOW, the base + // classes got re-arranged. Let's keep track of the + // base classes that moved. + get_priv()->moved_bases_.push_back(b); get_priv()->deleted_bases_.erase(j); } else @@ -5547,6 +5552,16 @@ const base_diff_sptrs_type& class_diff::changed_bases() {return get_priv()->sorted_changed_bases_;} +/// Getter for the vector of bases that "moved". +/// That is, the vector of base types which position changed. If this +/// vector is not empty, it means the bases of the underlying class +/// type got re-ordered. +/// +/// @return the vector of bases that moved. +const vector& +class_diff::moved_bases() const +{return get_priv()->moved_bases_;} + /// @return the edit script of the bases of the two classes. edit_script& class_diff::base_changes() diff --git a/src/abg-default-reporter.cc b/src/abg-default-reporter.cc index a5cebef4..909d1de4 100644 --- a/src/abg-default-reporter.cc +++ b/src/abg-default-reporter.cc @@ -1348,6 +1348,9 @@ default_reporter::report(const class_diff& d, ostream& out, out << "\n"; } } + + // Report base classes re-organisation + maybe_report_base_class_reordering(d, out, indent); } d.class_or_union_diff::report(out, indent); diff --git a/src/abg-leaf-reporter.cc b/src/abg-leaf-reporter.cc index 07391720..79b0286b 100644 --- a/src/abg-leaf-reporter.cc +++ b/src/abg-leaf-reporter.cc @@ -691,6 +691,8 @@ leaf_reporter::report(const class_diff& d, d.class_or_union_diff::report(out, indent); + maybe_report_base_class_reordering(d, out, indent); + maybe_report_interfaces_impacted_by_diff(&d, out, indent); d.reported_once(true); diff --git a/src/abg-reporter-priv.cc b/src/abg-reporter-priv.cc index 7012f5dc..06145a1b 100644 --- a/src/abg-reporter-priv.cc +++ b/src/abg-reporter-priv.cc @@ -1451,5 +1451,53 @@ maybe_report_data_members_replaced_by_anon_dm(const class_or_union_diff &d, } } +/// Report about the base classes of a class having been re-ordered. +/// +/// @param d the class diff to consider. +/// +/// @param out the output stream to report the change to. +/// +/// @param indent the indentation string to use. +void +maybe_report_base_class_reordering(const class_diff &d, + ostream &out, + const string &indent) +{ + if (d.moved_bases().empty()) + return; + + class_decl_sptr first = d.first_class_decl(), + second = d.second_class_decl(); + + ABG_ASSERT(!first->get_base_specifiers().empty()); + ABG_ASSERT(!second->get_base_specifiers().empty()); + + out << indent << "base classes of '" + << first->get_pretty_representation() + << "' are re-ordered from: "; + + vector classes = {first, second}; + unsigned nb_classes_seen = 0; + for (auto &klass : classes) + { + if (nb_classes_seen >= 1) + out << " to: "; + out << "'"; + bool needs_comma = false; + for (auto &b : klass->get_base_specifiers()) + { + if (needs_comma) + out << ", "; + if (b->get_is_virtual()) + out << "virtual "; + out << b->get_base_class()->get_qualified_name(); + needs_comma = true; + } + out << "'"; + nb_classes_seen++; + } + if (nb_classes_seen) + out << "\n"; +} } // Namespace comparison } // end namespace abigail diff --git a/src/abg-reporter-priv.h b/src/abg-reporter-priv.h index a7c4878c..42425ef2 100644 --- a/src/abg-reporter-priv.h +++ b/src/abg-reporter-priv.h @@ -241,6 +241,10 @@ maybe_report_data_members_replaced_by_anon_dm(const class_or_union_diff &d, const string indent); +void +maybe_report_base_class_reordering(const class_diff &d, + ostream &out, + const string &indent); } // end namespace comparison } // end namespace abigail diff --git a/tests/data/Makefile.am b/tests/data/Makefile.am index ee23aff6..a0c086d9 100644 --- a/tests/data/Makefile.am +++ b/tests/data/Makefile.am @@ -98,12 +98,16 @@ test-abidiff/test-PR27985-v0.o.abi \ test-abidiff/test-PR27985-v1.c \ test-abidiff/test-PR27985-v1.o \ test-abidiff/test-PR27985-v1.o.abi \ +test-abidiff/test-PR27616-squished-v0.abi \ +test-abidiff/test-PR27616-squished-v1.abi \ +test-abidiff/test-PR27616-v0.xml \ +test-abidiff/test-PR27616-v1.xml \ +\ test-abidiff-exit/test-PR28316-v0.cc \ test-abidiff-exit/test-PR28316-v1.cc \ test-abidiff-exit/test-PR28316-v0.o \ test-abidiff-exit/test-PR28316-v1.o \ test-abidiff-exit/test-PR28316-report.txt \ -\ test-abidiff-exit/test1-voffset-change-report0.txt \ test-abidiff-exit/test1-voffset-change-report1.txt \ test-abidiff-exit/test1-voffset-change.abignore \ @@ -218,10 +222,12 @@ test-abidiff-exit/test-crc-v1.abi \ test-abidiff-exit/test-missing-alias-report.txt \ test-abidiff-exit/test-missing-alias.abi \ test-abidiff-exit/test-missing-alias.suppr \ -test-abidiff/test-PR27616-squished-v0.abi \ -test-abidiff/test-PR27616-squished-v1.abi \ -test-abidiff/test-PR27616-v0.xml \ -test-abidiff/test-PR27616-v1.xml \ +test-abidiff-exit/test-PR29144-report-2.txt \ +test-abidiff-exit/test-PR29144-report.txt \ +test-abidiff-exit/test-PR29144-v0.cc \ +test-abidiff-exit/test-PR29144-v0.o \ +test-abidiff-exit/test-PR29144-v1.cc \ +test-abidiff-exit/test-PR29144-v1.o \ \ test-diff-dwarf/test0-v0.cc \ test-diff-dwarf/test0-v0.o \ diff --git a/tests/data/test-abidiff-exit/test-PR29144-report-2.txt b/tests/data/test-abidiff-exit/test-PR29144-report-2.txt new file mode 100644 index 00000000..3aff12d4 --- /dev/null +++ b/tests/data/test-abidiff-exit/test-PR29144-report-2.txt @@ -0,0 +1,8 @@ +Leaf changes summary: 1 artifact changed +Changed leaf types summary: 1 leaf type changed +Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 0 Added function +Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable + +'struct D at 1.cc:13:1' changed: + type size hasn't changed + base classes of 'struct D' are re-ordered from: 'A, B, C' to: 'B, A, C' diff --git a/tests/data/test-abidiff-exit/test-PR29144-report.txt b/tests/data/test-abidiff-exit/test-PR29144-report.txt new file mode 100644 index 00000000..88c78fdf --- /dev/null +++ b/tests/data/test-abidiff-exit/test-PR29144-report.txt @@ -0,0 +1,10 @@ +Functions changes summary: 0 Removed, 0 Changed, 0 Added function +Variables changes summary: 0 Removed, 1 Changed, 0 Added variable + +1 Changed variable: + + [C] 'D order' was changed at 2.cc:17:1: + type of variable changed: + type size hasn't changed + base classes of 'struct D' are re-ordered from: 'A, B, C' to: 'B, A, C' + diff --git a/tests/data/test-abidiff-exit/test-PR29144-v0.cc b/tests/data/test-abidiff-exit/test-PR29144-v0.cc new file mode 100644 index 00000000..8805cfd9 --- /dev/null +++ b/tests/data/test-abidiff-exit/test-PR29144-v0.cc @@ -0,0 +1,17 @@ +struct A { + int x; +}; + +struct B { + int y; +}; + +struct C { + int z; +}; + +struct D: A, B, C { + int d; +}; + +D order; diff --git a/tests/data/test-abidiff-exit/test-PR29144-v0.o b/tests/data/test-abidiff-exit/test-PR29144-v0.o new file mode 100644 index 0000000000000000000000000000000000000000..2964a6802a82dbcbcaad22cb5a6be6de85804576 GIT binary patch literal 2560 zcmbVNOK;Oa5T3P@l42T~M&i|qxClgf#A%|?mZFwGfPz4XhY%;IoMf9C^1^XZ3kNE} z0SR$HLL4}A;K+?Dzk?Hhfink~S?>mSYXo8>@63EV-|Toin>@RC?UKP5C}FS&zdeNl zRFV-}m=(yv7`#I}2`oiWf|f~Il(2Jk0Fi`Z!WCpQbH#QDL9UrG4>-pLW&xT4;neqV}s?4-C-I*?)nYx!_xITcJ;)G z;;daPIYp;vm!?al=~L6Q_S7xjurIrT+{hP?+4**`*5M0H-r>GiN7wc1s|)LMGx?da zoo_;6wcF-}Mz`_6D>S{J(DG_-&1 zma5fxdkSCT*gw=SX2!;sr}07#HkEx5b0iuxba7AEZms6?$6K~t-|aN{R!Yn3 za7Do*lu7Wi@ax@no8xbk)9D7>!Kuvm1GoNA`pwRo)APGM?gtyH`2W}ANTpt@{;EtB zWoTNz2a~u@Saf!XQlTYAbpBC{p&9%We=xT)m+sT|)N@j3g%*_ep&G1uEX@hcWn~Z% z8k@49j}oVIDNfxN`Vl5sz(>zX_*Ys`?uBZw>ajO)N5?35R)RJ;5z%AmzbLN$DFRVc zom4;FC%yg#VtP)5;I0JKeIkrRk6lJA?)-{8|FU2K(E0SMrk~$KjB-xn6P4HUpxaRp zZFRoVPbH@FzsZ0{f8oFS1OKKG5(|Ifzm3@_4iW!Q+&#& rb7}9B1iz4jlEEkL`_nhk?;geXB&h$h==D?HIQ~od{XbK(i0J%ZNgcXU literal 0 HcmV?d00001 diff --git a/tests/data/test-abidiff-exit/test-PR29144-v1.cc b/tests/data/test-abidiff-exit/test-PR29144-v1.cc new file mode 100644 index 00000000..eb476828 --- /dev/null +++ b/tests/data/test-abidiff-exit/test-PR29144-v1.cc @@ -0,0 +1,18 @@ +struct A { + int x; +}; + +struct B { + int y; +}; + +struct C { + int z; +}; + +struct D: B, A, C { + int d; +}; + +D order; + diff --git a/tests/data/test-abidiff-exit/test-PR29144-v1.o b/tests/data/test-abidiff-exit/test-PR29144-v1.o new file mode 100644 index 0000000000000000000000000000000000000000..03eb7a91c2c5768af8fab0e3eca907ddd481d8f2 GIT binary patch literal 2560 zcmbVNOK;Oa5T3P@l42T~M&i|qxClgf#A%|?mZFwGfPz4XhY%;IoMf9C^1^XZ3kNE} z0SR$HLL4}A;K+?Dzk?Hhfink~S?>mSYXo8>@63EV-|Toin>@RC?UKP5C}FS&zdeNl zRFV-}m=(yv7`#I}2`oiWf|f~Il(2Jk0Fi`Z!WCpQbH#QDL9UrG4>-pLW&xT4;neqV}s?4-C-I*?)nYx!_xITcJ;)G z;;daPIYp;vm!?al=~L6Q_S7xjurIrT+{hP?+4**`*5M0H-r>GiN7wc1s|)LMGx?da zoo_;6wcF-}Mz`_6D>S{J(DG_-&1 zma5fxdkSCT*gw=SX2!;sr}07#HkEx5b0iuxba7AEZms6?$6K~t-|aN{R!Yn3 za7Do*lu7Wi@ax@no8xbk)9D7>!Kuvm1GoNA`pwRo)APGM?gtyH`2W}ANTpt@{;EtB zWoTNz2a~u@Saf!XQlTYAbpBC{p&9%We=xT)m+sT|)N@j3g%*_ep&G1uEX@hcWn~Z% z8k@49j}oVIDNfxN`Vl5sz(>zX_*Ys`?uBZw>ajO)N5?35R)RJ;5z%AmzbLN$DFRVc zom4;FC%yg#VtP)5;I0JKeIkrRk6lJA?)-{8|FU2K(E0SMrk~$KjB-xn6P4HUpxaRp zZFRoVPbH@FzsZ0{f8oFS1OKKG5(|Ifzm3@_4iW!Q+&#& rb7}9B1iz4jlEEkL`_nhk?;geXB&h$h==D?HIQ~od{XbK(i0J%ZXQaAT literal 0 HcmV?d00001 diff --git a/tests/test-abidiff-exit.cc b/tests/test-abidiff-exit.cc index 15acfed9..4932d949 100644 --- a/tests/test-abidiff-exit.cc +++ b/tests/test-abidiff-exit.cc @@ -427,6 +427,28 @@ InOutSpec in_out_specs[] = "data/test-abidiff-exit/test-PR28316-report.txt", "output/test-abidiff-exit/test-PR28316-report.txt" }, + { + "data/test-abidiff-exit/test-PR29144-v0.o", + "data/test-abidiff-exit/test-PR29144-v1.o", + "", + "", + "", + "--no-default-suppression --harmless", + abigail::tools_utils::ABIDIFF_ABI_CHANGE, + "data/test-abidiff-exit/test-PR29144-report.txt", + "output/test-abidiff-exit/test-PR29144-report.txt" + }, + { + "data/test-abidiff-exit/test-PR29144-v0.o", + "data/test-abidiff-exit/test-PR29144-v1.o", + "", + "", + "", + "--leaf-changes-only --no-default-suppression --harmless", + abigail::tools_utils::ABIDIFF_ABI_CHANGE, + "data/test-abidiff-exit/test-PR29144-report-2.txt", + "output/test-abidiff-exit/test-PR29144-report-2.txt" + }, {0, 0, 0 ,0, 0, 0, abigail::tools_utils::ABIDIFF_OK, 0, 0} };