From patchwork Mon Feb 8 11:22: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: 41962 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 DCCF8383E82D; Mon, 8 Feb 2021 11:22:17 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org DCCF8383E82D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1612783337; bh=FPVT5KjLOSHEjvts+nAX3KN71wYaaKVvphiDLNdl34M=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Help: List-Subscribe:From:Reply-To:From; b=FcfoBflN9KIIFZrwL1baj6JyJiaiLAPLsQyIo6GzkM8xqgYMx8+9ZU3dDILZvp8e7 koLhfcWXdo2PWpTwE3zTmXmCrIXUETqacN1cbtVjgP4I/47ZHU95ZOdgBGvbqIGP5O Yd/gJvQpv6j9+CgutJ9wtLtX8r/6zwDSHCsfxaUs= 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 [63.128.21.124]) by sourceware.org (Postfix) with ESMTP id 91ADF3858023 for ; Mon, 8 Feb 2021 11:22:14 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 91ADF3858023 Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-528-mlG-5fgbPqq1VJmmEt44gQ-1; Mon, 08 Feb 2021 06:22:12 -0500 X-MC-Unique: mlG-5fgbPqq1VJmmEt44gQ-1 Received: by mail-wr1-f71.google.com with SMTP id h18so12919322wrr.5 for ; Mon, 08 Feb 2021 03:22:12 -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=FPVT5KjLOSHEjvts+nAX3KN71wYaaKVvphiDLNdl34M=; b=cZdJwzdxQTpiFHX/QSLoki1ZpzcgYPb2rU8s1EFjQyv2zs07b/K6FvLD34A7HziPu8 sgNfqBQWpM4gKIruF8BMhNBifam5YHQYoBdp72ar8hLcM+CGjI/PXrYIQDNXJypXNrIr 9hp3QBuYPHVGk9B2iXIxePuNcDV2x8rShlyvrILp++gQhsuNCx4HpudjFlBndptsJfsA Y+iqo8EevKHEH6P9ZBBn3FfLbR+KfX7vWdbUPEZdAJtcXploXemRo3Wd1VFfZyIRpFtz xmo8HC7/55roKOpn6BzRPwUMjamIBwrY8euXy/AmLet6ou+o47VX64P6zDtEjTbLNa/d zFUA== X-Gm-Message-State: AOAM530Vx9PyeSxlKXbOBuhxgdJZR6tH/ba+jKpJT11dPLoiSNxQD0Jm yFX0bZMggIWwhLnDKmTJgL717tXNA+/I05dvHZnrnuhJSxYyIAM8UtryhfL649s/jNphRpk6Mjl eXnIAlONrqZWlHXbNCR32OIir04nULJsCgAT9XGZKwrRMAPhXLyDAqPaJ4M5SIOQogfRn X-Received: by 2002:a5d:6546:: with SMTP id z6mr19730385wrv.125.1612783330911; Mon, 08 Feb 2021 03:22:10 -0800 (PST) X-Google-Smtp-Source: ABdhPJy1edT0eH9iMmbPBK2cLoJfUgBPRYaOckCyVz3wGUoLQ+d4mNn6W4cs+cLVckwbd05IkD81jg== X-Received: by 2002:a5d:6546:: with SMTP id z6mr19730357wrv.125.1612783330527; Mon, 08 Feb 2021 03:22:10 -0800 (PST) Received: from localhost ([88.120.130.27]) by smtp.gmail.com with ESMTPSA id t205sm20673830wmt.28.2021.02.08.03.22.09 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 08 Feb 2021 03:22:09 -0800 (PST) Received: by localhost (Postfix, from userid 1001) id 0F6091A06E1; Mon, 8 Feb 2021 12:22: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: Red Hat Enterprise Linux Server 7.8 X-URL: http://www.redhat.com Date: Mon, 08 Feb 2021 12:22:09 +0100 Message-ID: <86tuqmhkim.fsf@redhat.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-Spam-Status: No, score=-12.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_H4, 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 +++++ tests/data/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 ...0.12.4-19.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 02f3cc2..dec85fe 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 40ad0e4..68ad902 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 0000000..8e02a0a --- /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 0000000..361089b --- /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 3e50dc7..249651f 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 50e2f22..9bc2750 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} };