From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from relay11.mail.gandi.net (relay11.mail.gandi.net [IPv6:2001:4b98:dc4:8::231]) by sourceware.org (Postfix) with ESMTPS id 263173858405 for ; Fri, 22 Jul 2022 23:28:52 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 263173858405 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=seketeli.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=seketeli.org Received: (Authenticated sender: dodji@seketeli.org) by mail.gandi.net (Postfix) with ESMTPSA id 12B40100004; Fri, 22 Jul 2022 23:28:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=seketeli.org; s=gm1; t=1658532530; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=PXJh6qXIFID6rTu+DCtx/gZ0U731AWIJ6qyRRYVOCbU=; b=al930SoDwQE/WjWyO6ZYw4Af22JoU+/7qmvPLySdakyX20Lm2sD+Dcjw4rk9S3q2v6NXcb 98S4R92oNxnEASaSW30tmJteJVVKto0MuCj1ArQbieQK2G4iSFfsnXEhqoyYLayH/kMB2R VrjSjsFqutt3G6mjeUWK6r5HnuAQtUA3OMD9c0nahozMsWEKPowsckxULb4JV/Cm08BzsJ dHRiL7Ytw8v3lzUbuv69EYxdMajIcXz949zxtpmrMmYDDnw/Rjo6hSvXvvzQPQQqVpwKXP iDirWewMLzcy4G3TO3BX1S2D8k6gp4G/YyMY+qPvCFi9rSAcJWnLY9rmxYZ26Q== Received: by localhost (Postfix, from userid 1000) id A74D3581C2F; Sat, 23 Jul 2022 01:28:48 +0200 (CEST) From: Dodji Seketeli To: Dodji Seketeli via Libabigail Cc: Dodji Seketeli Subject: [PATCH 1/3] ir: Disambiguate sorting of array element types Organization: Me, myself and I References: <87sfms91n0.fsf@redhat.com> X-Operating-System: Fedora 37 X-URL: http://www.seketeli.net/~dodji Date: Sat, 23 Jul 2022 01:28:48 +0200 In-Reply-To: <87sfms91n0.fsf@redhat.com> (Dodji Seketeli via Libabigail's message of "Sat, 23 Jul 2022 01:19:15 +0200") Message-ID: <87lesk9173.fsf@seketeli.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Status: No, score=-9.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, JMQ_SPF_NEUTRAL, RCVD_IN_DNSWL_LOW, SPF_HELO_NONE, SPF_PASS, TXREP 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-List-Received-Date: Fri, 22 Jul 2022 23:28:56 -0000 Hello, When using non-internal pretty representation of array types (e.g, for sorting of types in a given scope for the purpose of serialization), some array element types might have the same name, even though they don't have the same qualified name. In those cases, the serialized abixml output is not stable. This patches uses qualified names for array element names for type sorting purposes. However, this patch uncovers a problem that shows up in the tests outputs for test-abidiff-exit and test-diff-filter, where emitting qualified names of qualified types shows that there can be redundant qualifiers in the serialized output. This issue will be fixed separately in a later commit. For now, the output of these tests is temporarily updated to have the tests pass. * src/abg-ir.cc (get_type_representation): In the overload for array_type_def, use qualified names for element types. * tests/data/test-abidiff-exit/qualifier-typedef-array-report-1.txt: Adjust. * tests/data/test-annotate/test15-pr18892.so.abi: Adjust. * tests/data/test-annotate/test17-pr19027.so.abi: Adjust. * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Adjust. * tests/data/test-diff-filter/test-PR26739-2-report-0.txt: Adjust. Signed-off-by: Dodji Seketeli Applied to master. --- src/abg-ir.cc | 2 +- .../qualifier-typedef-array-report-1.txt | 20 ++-- .../data/test-annotate/test15-pr18892.so.abi | 32 +++--- .../data/test-annotate/test17-pr19027.so.abi | 104 +++++++++--------- ...19-pr19023-libtcmalloc_and_profiler.so.abi | 14 +-- .../test-PR26739-2-report-0.txt | 2 +- 6 files changed, 87 insertions(+), 87 deletions(-) diff --git a/src/abg-ir.cc b/src/abg-ir.cc index 07736db9..5c1ac35b 100644 --- a/src/abg-ir.cc +++ b/src/abg-ir.cc @@ -17066,7 +17066,7 @@ get_type_representation(const array_type_def& a, bool internal) + a.get_subrange_representation(); else r = (e_type - ? get_type_name(e_type, /*qualified=*/false, /*internal=*/false) + ? get_type_name(e_type, /*qualified=*/true, /*internal=*/false) : string("void")) + a.get_subrange_representation(); } diff --git a/tests/data/test-abidiff-exit/qualifier-typedef-array-report-1.txt b/tests/data/test-abidiff-exit/qualifier-typedef-array-report-1.txt index e9bf3d46..13949efc 100644 --- a/tests/data/test-abidiff-exit/qualifier-typedef-array-report-1.txt +++ b/tests/data/test-abidiff-exit/qualifier-typedef-array-report-1.txt @@ -50,36 +50,36 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable entity changed from 'typedef C' to compatible type 'const volatile void* const[7]' array element type 'void* const' changed: 'void* const' changed to 'const volatile void* const' - type name changed from 'void* const[7]' to 'volatile void* const[7]' + type name changed from 'void* const[7]' to 'const volatile void* const[7]' type size hasn't changed type of 'C r_c' changed: - entity changed from 'typedef C' to compatible type 'restrict void* const[7]' + entity changed from 'typedef C' to compatible type 'restrict const void* const[7]' array element type 'void* const' changed: 'void* const' changed to 'restrict const void* const' - type name changed from 'void* const[7]' to 'restrict void* const[7]' + type name changed from 'void* const[7]' to 'restrict const void* const[7]' type size hasn't changed type of 'D v_d' changed: entity changed from 'typedef D' to compatible type 'const volatile void* const[7]' array element type 'void* const' changed: 'void* const' changed to 'const volatile void* const' - type name changed from 'void* const[7]' to 'volatile void* const[7]' + type name changed from 'void* const[7]' to 'const volatile void* const[7]' type size hasn't changed type of 'D r_d' changed: - entity changed from 'typedef D' to compatible type 'restrict void* const[7]' + entity changed from 'typedef D' to compatible type 'restrict const void* const[7]' array element type 'void* const' changed: 'void* const' changed to 'restrict const void* const' - type name changed from 'void* const[7]' to 'restrict void* const[7]' + type name changed from 'void* const[7]' to 'restrict const void* const[7]' type size hasn't changed type of 'E r_e' changed: - entity changed from 'typedef E' to compatible type 'restrict const volatile void* const[7]' + entity changed from 'typedef E' to compatible type 'restrict const volatile volatile void* const[7]' array element type 'const volatile void* const' changed: 'const volatile void* const' changed to 'restrict const volatile volatile void* const' - type name changed from 'volatile void* const[7]' to 'restrict const volatile void* const[7]' + type name changed from 'const volatile void* const[7]' to 'restrict const volatile volatile void* const[7]' type size hasn't changed type of 'F r_f' changed: - entity changed from 'typedef F' to compatible type 'restrict const volatile void* const[7]' + entity changed from 'typedef F' to compatible type 'restrict const volatile volatile void* const[7]' array element type 'const volatile void* const' changed: 'const volatile void* const' changed to 'restrict const volatile volatile void* const' - type name changed from 'volatile void* const[7]' to 'restrict const volatile void* const[7]' + type name changed from 'const volatile void* const[7]' to 'restrict const volatile volatile void* const[7]' type size hasn't changed diff --git a/tests/data/test-annotate/test15-pr18892.so.abi b/tests/data/test-annotate/test15-pr18892.so.abi index bbabb567..dbcdb390 100644 --- a/tests/data/test-annotate/test15-pr18892.so.abi +++ b/tests/data/test-annotate/test15-pr18892.so.abi @@ -4588,7 +4588,7 @@ - + @@ -10820,17 +10820,17 @@ - + - + - + @@ -10907,7 +10907,7 @@ - + @@ -27650,42 +27650,42 @@ - + - + - + - + - + - + - + - + @@ -35556,12 +35556,12 @@ - + - + @@ -40807,7 +40807,7 @@ - + diff --git a/tests/data/test-annotate/test17-pr19027.so.abi b/tests/data/test-annotate/test17-pr19027.so.abi index a303267b..a9f7b565 100644 --- a/tests/data/test-annotate/test17-pr19027.so.abi +++ b/tests/data/test-annotate/test17-pr19027.so.abi @@ -528,7 +528,7 @@ - + @@ -3931,12 +3931,12 @@ - + - + @@ -10736,52 +10736,52 @@ - + - + - + - + - + - + - + - + - + - + @@ -12894,162 +12894,162 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -13059,17 +13059,17 @@ - + - + - + @@ -29612,7 +29612,7 @@ - + @@ -30055,12 +30055,12 @@ - + - + @@ -31395,7 +31395,7 @@ - + diff --git a/tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi b/tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi index 44e1db28..8cb8aeba 100644 --- a/tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi +++ b/tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi @@ -2841,7 +2841,7 @@ - + @@ -22310,12 +22310,12 @@ - + - + @@ -25418,22 +25418,22 @@ - + - + - + - + diff --git a/tests/data/test-diff-filter/test-PR26739-2-report-0.txt b/tests/data/test-diff-filter/test-PR26739-2-report-0.txt index a98473b4..999d9614 100644 --- a/tests/data/test-diff-filter/test-PR26739-2-report-0.txt +++ b/tests/data/test-diff-filter/test-PR26739-2-report-0.txt @@ -12,6 +12,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable entity changed from 'const volatile const int[5]' to compatible type 'typedef array_type1' at test-PR26739-2-v1.c:3:1 array element type 'const volatile const int' changed: 'const volatile const int' changed to 'const int' - type name changed from 'volatile const int[5]' to 'const int[5]' + type name changed from 'const volatile const int[5]' to 'const int[5]' type size hasn't changed -- 2.36.1 -- Dodji