From patchwork Wed Feb 3 18:45:09 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dodji Seketeli X-Patchwork-Id: 41933 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 2ED11386F033; Wed, 3 Feb 2021 18:45:32 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 2ED11386F033 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1612377932; bh=7UA+QmRTyADQQSIj9Psu7M9j11l1bWAEknGhn/MkhYI=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Help: List-Subscribe:From:Reply-To:From; b=F1P7RhwOUtqTz7j3HlCKSZOl/hkLwoNs2PUlTz9ZJ+KlY788aMfzRa/yIQq9zJusa YMll0xovdWNpB4DmATtNk6mHAv0+LyvL4kvXwBoI/WdWeGuHwzp6hY8VAiXCozVBi1 BvM6/P/1vQpYioG1xIGvUn1BPHD7BOtUMOMdFgHs= 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 [216.205.24.124]) by sourceware.org (Postfix) with ESMTP id 57067385803D for ; Wed, 3 Feb 2021 18:45:29 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 57067385803D Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-41-WncQ56M_Pom28AAZCH2uoA-1; Wed, 03 Feb 2021 13:45:26 -0500 X-MC-Unique: WncQ56M_Pom28AAZCH2uoA-1 Received: by mail-wm1-f71.google.com with SMTP id z67so258353wme.3 for ; Wed, 03 Feb 2021 10:45:25 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:organization:date:message-id :user-agent:mime-version; bh=7UA+QmRTyADQQSIj9Psu7M9j11l1bWAEknGhn/MkhYI=; b=mPKU1e9ceFE1j+PqAMLvlcI1W38VdLqxih01Su+ws4SEnvUDT2AQ3aIjjOIygo/xBl ukbBSNtwl6kQ4qe3rbtTDzb/FObEfSD8S2KkmRDZ6FOteL/cjpkOUEEQZg7d0QJ5CAu/ IyfdjmpCaysFS9n64LdfOcrt8U3KZCNINw/DdnQlHEqAwiplvKqv3nF+CXI7pZeZJ6/h QMI00eTw05wtkcnayinZN5boFrec4t6nurcOZSe6N8ouGB06t1CdDGZ8c+1jnG5rY2cm bO6LlXhHzCikuq8N5PfBvuQhpciZMBSiWlENXs0KuBrduTwvvtPSPldLq0tqE9APhcD8 +LLQ== X-Gm-Message-State: AOAM530ohMTWRQobyhfTXmzknW5NdQ6sWIxX6k5yR0lMb2Z46JFR0MqP lccAHd1DcvMDfCzzvqsqjytuzdeIarFgkFX3/CESz6sAl7iGrdui5eDr1wHM5c6u0XFnJRFhL88 jXFpYvuMHLto+VW/jVuLVCFVzPqB2nA/cG7jIzrYtDcs1MkktvmKoPmKI7kSGHP6zdkbL X-Received: by 2002:a5d:4b46:: with SMTP id w6mr5144821wrs.346.1612377924391; Wed, 03 Feb 2021 10:45:24 -0800 (PST) X-Google-Smtp-Source: ABdhPJxlpzVFgM2KOyBPx68z8L/D+MxUonloRDp9X3mU9o0E+JgiAKZIBTSq/1fzsMdugl8YlUEiKA== X-Received: by 2002:a5d:4b46:: with SMTP id w6mr5144798wrs.346.1612377923993; Wed, 03 Feb 2021 10:45:23 -0800 (PST) Received: from localhost (91-166-131-65.subs.proxad.net. [91.166.131.65]) by smtp.gmail.com with ESMTPSA id q4sm5067065wrg.22.2021.02.03.10.45.22 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Feb 2021 10:45:22 -0800 (PST) Received: by localhost (Postfix, from userid 1000) id D5C0F581CE6; Wed, 3 Feb 2021 19:45:09 +0100 (CET) To: libabigail@sourceware.org Subject: [PATCH] Bug 27331 - Data member offset change not considered local Organization: Red Hat / France X-Operating-System: Fedora 34 X-URL: http://www.redhat.com Date: Wed, 03 Feb 2021 19:45:09 +0100 Message-ID: <87lfc5f0sq.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=-11.5 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_LOW, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) 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 Errors-To: libabigail-bounces@sourceware.org Sender: "Libabigail" Hello, The comparison code fails to consider that a data member which offset changed (and which type didn't change) constitutes a local change of the enclosing class type. Fixed thus. * src/abg-ir.cc (equals): In the overload of class_or_union, when a data member changes without having its type change, then consider the data change as being local. * 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-diff-filter/test-PR27331-report-0.txt: New reference output. * tests/data/test-diff-filter/test-PR27331-v{0,1}.c: New test source files. * tests/data/test-diff-filter/test-PR27331-v{0,1}.o: New test binary inputs. * tests/data/Makefile.am: Add these new test material to source distribution. * tests/test-diff-filter.cc (in_out_specs): Add the tests above to the harness. Signed-off-by: Dodji Seketeli Applied to master. --- src/abg-ir.cc | 3 ++- tests/data/Makefile.am | 5 +++++ .../test-diff-filter/test-PR27331-report-0.txt | 9 +++++++++ tests/data/test-diff-filter/test-PR27331-v0.c | 4 ++++ tests/data/test-diff-filter/test-PR27331-v0.o | Bin 0 -> 2744 bytes tests/data/test-diff-filter/test-PR27331-v1.c | 4 ++++ tests/data/test-diff-filter/test-PR27331-v1.o | Bin 0 -> 2744 bytes ...9.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt | 4 ++-- tests/test-diff-filter.cc | 7 +++++++ 9 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 tests/data/test-diff-filter/test-PR27331-report-0.txt create mode 100644 tests/data/test-diff-filter/test-PR27331-v0.c create mode 100644 tests/data/test-diff-filter/test-PR27331-v0.o create mode 100644 tests/data/test-diff-filter/test-PR27331-v1.c create mode 100644 tests/data/test-diff-filter/test-PR27331-v1.o diff --git a/src/abg-ir.cc b/src/abg-ir.cc index 02f3cc24..dec85fe0 100644 --- a/src/abg-ir.cc +++ b/src/abg-ir.cc @@ -19732,7 +19732,8 @@ equals(const class_or_union& l, const class_or_union& r, change_kind* k) { // Report any representation change as being local. if (!types_have_similar_structure((*d0)->get_type(), - (*d1)->get_type())) + (*d1)->get_type()) + || (*d0)->get_type() == (*d1)->get_type()) *k |= LOCAL_TYPE_CHANGE_KIND; else *k |= SUBTYPE_CHANGE_KIND; diff --git a/tests/data/Makefile.am b/tests/data/Makefile.am index 40ad0e44..68ad902b 100644 --- a/tests/data/Makefile.am +++ b/tests/data/Makefile.am @@ -919,6 +919,11 @@ test-diff-filter/test-PR26684-dwarf5.o \ test-diff-filter/test-PR26684-dwarf4.o \ test-diff-filter/test-PR26684.c \ test-diff-filter/test-PR26684-report-0.txt \ +test-diff-filter/test-PR27331-v0.c \ +test-diff-filter/test-PR27331-v0.o \ +test-diff-filter/test-PR27331-v1.c \ +test-diff-filter/test-PR27331-v1.o \ +test-diff-filter/test-PR27331-report-0.txt \ \ test-diff-suppr/test0-type-suppr-v0.cc \ test-diff-suppr/test0-type-suppr-v1.cc \ diff --git a/tests/data/test-diff-filter/test-PR27331-report-0.txt b/tests/data/test-diff-filter/test-PR27331-report-0.txt new file mode 100644 index 00000000..8e02a0ae --- /dev/null +++ b/tests/data/test-diff-filter/test-PR27331-report-0.txt @@ -0,0 +1,9 @@ +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 S at test-PR27331-v0.c:1:1' changed: + type size hasn't changed + there are data member changes: + 'int S::var' offset changed from 0 to 1 (in bits) (by +1 bits) diff --git a/tests/data/test-diff-filter/test-PR27331-v0.c b/tests/data/test-diff-filter/test-PR27331-v0.c new file mode 100644 index 00000000..361089b0 --- /dev/null +++ b/tests/data/test-diff-filter/test-PR27331-v0.c @@ -0,0 +1,4 @@ +struct S { + int var : 1; +}; +int fun(struct S s) { return s.var; } diff --git a/tests/data/test-diff-filter/test-PR27331-v0.o b/tests/data/test-diff-filter/test-PR27331-v0.o new file mode 100644 index 0000000000000000000000000000000000000000..d86229db831cfbc709385b50e7726eee83605d3d GIT binary patch literal 2744 zcmbtW&1)M+6n~@DT1wYaY^!c#T*wv@5<_e00u zpJo^XMGUUO(M+KLFU=#l9*K1*!5nO_KmOzK!&fJNzV_d!cIWv6w8%zQ z`6$?QBqxS<5_0A<$TF7SK*%`o0$`aO$ys(9hpg!j1el%u0kEt|xFQvT{Wuk(Zq7kP z=Gz_sn`LKl?CcZ$)qsq`VL8{0E6p8CNW?>0O#@OG* z0x{Yt{4o$b6wc;W?b7mc)j6oRt;ofkhZAuMoX(r4g?aY3Oa>jxVQ+Xp-1AzzT5b>9 zcl~nL7v-Mc^qPLx^Lyovf5^i!MGebsPk52&wEa%U>G(atgOrSGH@EFZ^^#q!x)rx# z*DAG2wN_iU&u{Uzz3vIAa4Ji-)86mzHNB8K{7~3#%Xa!=f52C}e82;rre4t6T|Hd6 z=v@53cDev-jmBmBJf>Ls5AmbL!`m?f_Qe*k!x^?Xoy&iNyY(L8^dpKk`{Uxw*O^9P z>J}QraOy~#orS;tNmClB9e|fc9@;3p>Fcx6+_fIsyDlQC zXw(HLQwtGMoaA}mj?k!~#_UyXWS@A_U}l2-$^_h&IMtG@2i)*MUwBRAB8d5}k_7e# zxYU8*Hp39yfcHGN&71q(9e>anqArrXW;5UiV`?w(23- zhJw4;UQQ^y);$@B@9uO0ug_)S|C24EKb?izPZh2%h0%SH^P`&-1MedvOz)h}rM=E{ z|8rsS6%KfOwN{cXhbm}=c g6TSBkf(jLdgnzomNMAq2P4nNB^*iAf(#>DSY@~AR&O^_-w0Y&0Ej#*g3kumnX zSRh6_g+B&@hr-$1s$E)Mt~v)*w-vdV^Kc?gfzx^Oj4;prnaQAIIqVJZgnM3#SIg~T z`%Ayv^+mboH@&9c_55DB;~(;{Oi{yf+Y??SI&HtxaXNla@E|4Q+Kp|yQN3hWt8T@u z*tJTnQmxgN?F(DHZLfPmDxAua?X>s%drdFo4nGvO+p?X$*dOrKE+6o~r>PgTc2^Hq zE;<+Ax1BD)TBC8FAY<8Hl;IQ@vC&HlJJ^IfJ< z$bE(eF`PQmW@q7_f76skY6sw@kw>ii7^q1jL-v5KGa#o!(cFNk3HXT#I9}NlGN6!x zQvJmV__6-P-UjS$+NGFA7y0<*q~08@=nXVau1-ZJoK~?Nhl5$k72c5Zc@39Sz^;pk zDjIbG%G5$c6eoG!w<0uZs4;t08`&qGG?j5{s+ZSFFxd>vut0aN_ z0WNhQxXmyGH{d zgQ4IqwwDtMuXS4n;=4PY!0U5a_-nF7^ry2>`>Dd!r7*fLa(;A^V&E(?!t~C$DeZNp z`=3VxI`3EYucEIWlX9y3_h^zJ-IgAF`oh%{HYBdcpFMaeak^Iosk=!Z3!+v0=`jia ziv}bSv(c#AZlXrV$aqbHm62yG=(g7oPOJZKS-u)2b$3zJ3NbovM5~SPi zpe`-HEt^v96XmCOL(jj57{yd|q8QO*ndnyqNUriL{x#xh{z5i$`9J)>mHwI;JQ#Zn zjdAgM*8|GZkqq5tpCB7_wl>-609D_2LJ#7 literal 0 HcmV?d00001 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 3e50dc70..249651fd 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: 10 artifacts changed (10 filtered out) - Changed leaf types summary: 1 (10 filtered out) leaf types changed +Leaf changes summary: 10 artifacts changed (13 filtered out) + Changed leaf types summary: 1 (13 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/test-diff-filter.cc b/tests/test-diff-filter.cc index 50e2f226..9bc27503 100644 --- a/tests/test-diff-filter.cc +++ b/tests/test-diff-filter.cc @@ -780,6 +780,13 @@ InOutSpec in_out_specs[] = "data/test-diff-filter/test-PR26684-report-0.txt", "output/test-diff-filter/test-PR26684-report-0.txt", }, + { + "data/test-diff-filter/test-PR27331-v0.o", + "data/test-diff-filter/test-PR27331-v1.o", + "--no-default-suppression --leaf-changes-only", + "data/test-diff-filter/test-PR27331-report-0.txt", + "output/test-diff-filter/test-PR27331-report-0.txt", + }, // This should be the last entry {NULL, NULL, NULL, NULL, NULL} };