From patchwork Wed Sep 9 08:48:09 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dodji Seketeli X-Patchwork-Id: 40384 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 2EAB73846034; Wed, 9 Sep 2020 08:49:09 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 2EAB73846034 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1599641349; bh=L596Rnqako54r8gemYbdrOcEH9zvSHfeekBLadO9Su8=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Help: List-Subscribe:From:Reply-To:Cc:From; b=K195RUGC0XDdOO1o9gVTqyk2w0GiRY+rM7jGrnX14oGtD/mgKAe+8BJyoqLr9mR+6 kqHA3GMEcSRGzuq/56seVlZaPHVHIaZOg4XF9M3MZWmK9jcELf+7XsoNLEEtqqbR2/ sEZJX4B1TJjZbeZ+8sGb+uEmuY1uaDxWDrJ/RkjE= X-Original-To: libabigail@sourceware.org Delivered-To: libabigail@sourceware.org Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.120]) by sourceware.org (Postfix) with ESMTP id F2FC43846034 for ; Wed, 9 Sep 2020 08:48:34 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org F2FC43846034 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-254-m6TEKDSSMKWq6aNwxXavaw-1; Wed, 09 Sep 2020 04:48:30 -0400 X-MC-Unique: m6TEKDSSMKWq6aNwxXavaw-1 Received: by mail-wm1-f71.google.com with SMTP id a7so537703wmc.2 for ; Wed, 09 Sep 2020 01:48:29 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:organization:date:message-id :user-agent:mime-version; bh=L596Rnqako54r8gemYbdrOcEH9zvSHfeekBLadO9Su8=; b=YhsKQvn2Jg303li7t6uzhhqp3N7cjcY5ohztdxx8tA6nhUYIxD3v+Vax4rgID9gJ8m zFa7JsssvkAH2TKilaWgPkajw04uXqLQbuYIAbYJJtktNH70aogRm5JiCItht4YtlaGJ 5K2W7BtF0kUt1WTGV0+y7UcXgaTqTh2DG8tcjqc9ja06aO2+eLThsPZquyj6LndXV4cS M7pK7Lef7Y0f0oZ9S8fLsdBopQKxVGXJyY3DL78qToDvsbgiHV0rrwZBJwMgFV9ZAjit b/VKOziYNfJMiTCAqsWQmsNYY7BUl/Q1kqK3OjQ/y8cuITnLlUvetS92ATp+OQntMvy6 Gbbw== X-Gm-Message-State: AOAM530rPGZUM2i8uVJ/IpTKzNkqde/6kWt7yinE23HFQplihbIF90AQ xu8oRHJOY3blc2psxB6OvmsbYbxU4XCMTiRo1MKmAikKmyWhJGddwQokgfKnwFqObNcBMqz9k35 TxHdVlCr0Hd23GN0DuhV1 X-Received: by 2002:adf:ef48:: with SMTP id c8mr2760610wrp.370.1599641307212; Wed, 09 Sep 2020 01:48:27 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzMxnkkJqLsGvwtDyuKshDd0+jAqJu5qv4tE+NZr9sEwPE9XAg8kb+UgKF1Yvewm32V5MTDBQ== X-Received: by 2002:adf:ef48:: with SMTP id c8mr2760567wrp.370.1599641306599; Wed, 09 Sep 2020 01:48:26 -0700 (PDT) Received: from localhost (91-166-131-130.subs.proxad.net. [91.166.131.130]) by smtp.gmail.com with ESMTPSA id v4sm2698065wml.46.2020.09.09.01.48.11 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 09 Sep 2020 01:48:25 -0700 (PDT) Received: by localhost (Postfix, from userid 1000) id 8F13418008D0; Wed, 9 Sep 2020 10:48:09 +0200 (CEST) To: libabigail@sourceware.org Subject: [PATCH 1/2] Use flat representation to canonicalize anonymous classes and unions Organization: Red Hat / France X-Operating-System: Red Hat Enterprise Linux Workstation 7.8 Beta X-URL: http://www.redhat.com Date: Wed, 09 Sep 2020 10:48:09 +0200 Message-ID: <87bliftjxy.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.002 X-Mimecast-Originator: redhat.com X-Spam-Status: No, score=-7.8 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, RCVD_IN_MSPIKE_H2, SCC_10_SHORT_WORD_LINES, SCC_20_SHORT_WORD_LINES, SCC_5_SHORT_WORD_LINES, 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 Cc: Matthias Maennich Errors-To: libabigail-bounces@sourceware.org Sender: "Libabigail" Hello, This patch is the first of a series of two which intends to improve the situation of type equality involving anonymous types. During the canonicalization of a type T, the algorithm uses the pretty representation of T to limit the number of types to compare T to. That pretty representation is based on the type name. For anonymous types, the type name is not unique; it's constructed just for internal purposes. So using that in the pretty representation might negatively impact the accuracy of the canonicalization; it might make it so that two types might wrongly be considered canonicaly different. To fix that, this change makes the pretty representation of anonymous classes (and unions) use their flat representation. For the record, the flat representation of an anonymous struct with a an integer and a char data members is the string: 'struct {int i; char c;}' * src/abg-ir.cc ({class, union}_decl::get_pretty_representation): Use the flat representation of the class or union. * tests/data/test-annotate/libtest23.so.abi: Adjust. * tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt: Likewise. * tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt: Likewise. * tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt: Likewise. * tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt: Likewise. * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise. * tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt: Likewise. * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise. * tests/data/test-read-dwarf/libtest23.so.abi: Likewise. * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. Signed-off-by: Dodji Seketeli Signed-off-by: Giuliano Procida --- src/abg-ir.cc | 17 +- tests/data/test-annotate/libtest23.so.abi | 158 +-- .../PR25058-liblttng-ctl-report-1.txt | 9 +- .../test30-pr18904-rvalueref-report0.txt | 6 +- .../test30-pr18904-rvalueref-report1.txt | 6 +- .../test30-pr18904-rvalueref-report2.txt | 6 +- .../test35-pr18754-no-added-syms-report-0.txt | 6 +- ...-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt | 2 +- tests/data/test-read-dwarf/PR25007-sdhci.ko.abi | 617 --------- tests/data/test-read-dwarf/libtest23.so.abi | 156 +-- tests/data/test-read-dwarf/test11-pr18828.so.abi | 1458 ++++++++++---------- 11 files changed, 902 insertions(+), 1539 deletions(-) diff --git a/src/abg-ir.cc b/src/abg-ir.cc index 358a7a2..d98d4bd 100644 --- a/src/abg-ir.cc +++ b/src/abg-ir.cc @@ -19960,20 +19960,7 @@ class_decl::get_pretty_representation(bool internal, // if an anonymous class is named by a typedef, then consider that // it has a name, which is the typedef name. if (get_is_anonymous()) - { - if (internal) - { - if (typedef_decl_sptr d = get_naming_typedef()) - { - string qualified_name = - decl_base::priv_->qualified_parent_name_ + "::" + d->get_name(); - return cl + qualified_name; - } - } - else - return get_class_or_union_flat_representation(this, "", - /*one_line=*/true); - } + return get_class_or_union_flat_representation(this, "",/*one_line=*/true); string result = cl; if (qualified_name) @@ -21745,7 +21732,7 @@ union_decl::get_pretty_representation(bool internal, bool qualified_name) const { string repr; - if (get_is_anonymous() && !internal) + if (get_is_anonymous()) repr = get_class_or_union_flat_representation(this, "", /*one_line=*/true); else diff --git a/tests/data/test-annotate/libtest23.so.abi b/tests/data/test-annotate/libtest23.so.abi index 5001d02..2019be1 100644 --- a/tests/data/test-annotate/libtest23.so.abi +++ b/tests/data/test-annotate/libtest23.so.abi @@ -20,45 +20,45 @@ - - - + - + - + - + - + - + - + - + - + - + - + - + - + + + - + @@ -71,7 +71,7 @@ - + @@ -88,7 +88,7 @@ - + @@ -99,43 +99,43 @@ - + - + - + - + - + - + - + - + - + - + @@ -147,11 +147,11 @@ - + - + @@ -175,15 +175,15 @@ - + - + - + @@ -221,9 +221,9 @@ - + - + @@ -334,7 +334,7 @@ - + @@ -350,7 +350,7 @@ - + @@ -372,16 +372,16 @@ - + - + - + @@ -391,7 +391,7 @@ - + @@ -401,7 +401,7 @@ - + @@ -444,7 +444,7 @@ - + @@ -485,7 +485,7 @@ - + @@ -495,7 +495,7 @@ - + @@ -515,7 +515,7 @@ - + @@ -526,7 +526,7 @@ - + @@ -539,7 +539,7 @@ - + @@ -550,7 +550,7 @@ - + @@ -559,7 +559,7 @@ - + @@ -568,7 +568,7 @@ - + @@ -597,7 +597,7 @@ - + @@ -606,7 +606,7 @@ - + @@ -666,7 +666,7 @@ - + @@ -708,7 +708,7 @@ - + @@ -717,7 +717,7 @@ - + @@ -737,9 +737,9 @@ - + - + @@ -748,7 +748,7 @@ - + @@ -768,7 +768,7 @@ - + @@ -779,7 +779,7 @@ - + @@ -820,7 +820,7 @@ - + @@ -828,7 +828,7 @@ - + @@ -884,7 +884,7 @@ - + @@ -893,9 +893,9 @@ - + - + @@ -904,14 +904,14 @@ - + - + - + @@ -929,7 +929,7 @@ - + @@ -1353,7 +1353,7 @@ - + @@ -1499,7 +1499,7 @@ - + @@ -2723,7 +2723,7 @@ - + @@ -2738,7 +2738,7 @@ - + @@ -2757,7 +2757,7 @@ - + @@ -2768,7 +2768,7 @@ - + @@ -2783,7 +2783,7 @@ - + @@ -2800,7 +2800,7 @@ - + @@ -2837,7 +2837,7 @@ - + diff --git a/tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt b/tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt index 71df361..3018522 100644 --- a/tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt +++ b/tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt @@ -121,19 +121,12 @@ Variables changes summary: 0 Removed, 0 Changed, 3 Added variables parameter 2 of type 'lttng_event_context*' has sub-type changes: in pointed to type 'struct lttng_event_context': type size hasn't changed - 2 data member changes: + 1 data member change: type of 'lttng_event_context_type lttng_event_context::ctx' changed: type size hasn't changed 2 enumerator insertions: 'lttng_event_context_type::LTTNG_EVENT_CONTEXT_CALLSTACK_KERNEL' value '20' 'lttng_event_context_type::LTTNG_EVENT_CONTEXT_CALLSTACK_USER' value '21' - type of 'union {lttng_event_perf_counter_ctx perf_counter; struct {char* provider_name; char* ctx_name;} app_ctx; char padding[288];} lttng_event_context::u' changed: - type name changed from '__anonymous_union__4' to '__anonymous_union__5' - type size hasn't changed - type changed from: - union {lttng_event_perf_counter_ctx perf_counter; struct {char* provider_name; char* ctx_name;} app_ctx; char padding[288];} - to: - union {lttng_event_perf_counter_ctx perf_counter; struct {char* provider_name; char* ctx_name;} app_ctx; char padding[288];} [C] 'function lttng_condition_status lttng_condition_buffer_usage_get_channel_name(const lttng_condition*, const char**)' has some indirect sub-type changes: parameter 1 of type 'const lttng_condition*' has sub-type changes: diff --git a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt index d30e8c6..c4b3a76 100644 --- a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt +++ b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report0.txt @@ -1298,7 +1298,7 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen parameter 1 of type 'VarDesc*' has sub-type changes: in pointed to type 'struct VarDesc': type size hasn't changed - 1 data member changes (2 filtered): + 1 data member change: type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} VarDesc::flags' changed: type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags' type size hasn't changed @@ -1312,13 +1312,13 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen parameter 1 of type 'InitTableEntry*' changed: in pointed to type 'struct InitTableEntry': entity changed from 'struct InitTableEntry' to compatible type 'typedef InitTableEntry' - type name changed from 'InitTableEntry' to '__anonymous_struct__2' + type name changed from 'InitTableEntry' to '__anonymous_struct__1' type size hasn't changed 1 data member change: type of 'void ()* InitTableEntry::func' changed: in pointed to type 'function type void ()': parameter 1 of type 'typedef MyoArena' was added - and name of 'InitTableEntry::func' changed to '__anonymous_struct__2::func' + and name of 'InitTableEntry::func' changed to '__anonymous_struct__1::func' [C] 'function int __offload_offload(OFFLOAD, const char*, int, int, VarDesc*, VarDesc2*, int, void**, void*, int, void*)' has some indirect sub-type changes: parameter 1 of type 'typedef OFFLOAD' has sub-type changes: diff --git a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt index 800cc67..03c1542 100644 --- a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt +++ b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report1.txt @@ -1298,7 +1298,7 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen parameter 1 of type 'VarDesc*' has sub-type changes: in pointed to type 'struct VarDesc' at offload_common.h:254:1: type size hasn't changed - 1 data member changes (2 filtered): + 1 data member change: type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} VarDesc::flags' changed: type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags' type size hasn't changed @@ -1312,13 +1312,13 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen parameter 1 of type 'InitTableEntry*' changed: in pointed to type 'struct InitTableEntry' at offload_table.h:296:1: entity changed from 'struct InitTableEntry' to compatible type 'typedef InitTableEntry' at offload_table.h:296:1 - type name changed from 'InitTableEntry' to '__anonymous_struct__2' + type name changed from 'InitTableEntry' to '__anonymous_struct__1' type size hasn't changed 1 data member change: type of 'void ()* InitTableEntry::func' changed: in pointed to type 'function type void ()': parameter 1 of type 'typedef MyoArena' was added - and name of 'InitTableEntry::func' changed to '__anonymous_struct__2::func' at offload_table.h:295:1 + and name of 'InitTableEntry::func' changed to '__anonymous_struct__1::func' at offload_table.h:295:1 [C] 'function int __offload_offload(OFFLOAD, const char*, int, int, VarDesc*, VarDesc2*, int, void**, void*, int, void*)' at compiler_if_host.cpp:456:1 has some indirect sub-type changes: parameter 1 of type 'typedef OFFLOAD' has sub-type changes: diff --git a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt index e7bfbe2..f28bb6b 100644 --- a/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt +++ b/tests/data/test-diff-filter/test30-pr18904-rvalueref-report2.txt @@ -1298,7 +1298,7 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen parameter 1 of type 'VarDesc*' has sub-type changes: in pointed to type 'struct VarDesc' at offload_common.h:254:1: type size hasn't changed - 1 data member changes (2 filtered): + 1 data member change: type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} VarDesc::flags' changed: type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags' type size hasn't changed @@ -1312,13 +1312,13 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen parameter 1 of type 'InitTableEntry*' changed: in pointed to type 'struct InitTableEntry' at offload_table.h:296:1: entity changed from 'struct InitTableEntry' to compatible type 'typedef InitTableEntry' at offload_table.h:296:1 - type name changed from 'InitTableEntry' to '__anonymous_struct__2' + type name changed from 'InitTableEntry' to '__anonymous_struct__1' type size hasn't changed 1 data member change: type of 'void ()* InitTableEntry::func' changed: in pointed to type 'function type void ()': parameter 1 of type 'typedef MyoArena' was added - and name of 'InitTableEntry::func' changed to '__anonymous_struct__2::func' at offload_table.h:295:1 + and name of 'InitTableEntry::func' changed to '__anonymous_struct__1::func' at offload_table.h:295:1 [C] 'function int __offload_offload(OFFLOAD, const char*, int, int, VarDesc*, VarDesc2*, int, void**, void*, int, void*)' at compiler_if_host.cpp:456:1 has some indirect sub-type changes: parameter 1 of type 'typedef OFFLOAD' has sub-type changes: diff --git a/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt b/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt index 0c11fb6..f7280b4 100644 --- a/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt +++ b/tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt @@ -214,7 +214,7 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen parameter 1 of type 'VarDesc*' has sub-type changes: in pointed to type 'struct VarDesc': type size hasn't changed - 1 data member changes (2 filtered): + 1 data member change: type of 'union {struct {uint32_t is_static; uint32_t is_static_dstn; uint32_t has_length; uint32_t is_stack_buf; uint32_t sink_addr; uint32_t alloc_disp; uint32_t is_noncont_src; uint32_t is_noncont_dst;}; uint32_t bits;} VarDesc::flags' changed: type name changed from 'VarDesc::__anonymous_union__2' to 'varDescFlags' type size hasn't changed @@ -228,13 +228,13 @@ Variable symbols changes summary: 0 Removed, 0 Added variable symbol not referen parameter 1 of type 'InitTableEntry*' changed: in pointed to type 'struct InitTableEntry': entity changed from 'struct InitTableEntry' to compatible type 'typedef InitTableEntry' - type name changed from 'InitTableEntry' to '__anonymous_struct__2' + type name changed from 'InitTableEntry' to '__anonymous_struct__1' type size hasn't changed 1 data member change: type of 'void ()* InitTableEntry::func' changed: in pointed to type 'function type void ()': parameter 1 of type 'typedef MyoArena' was added - and name of 'InitTableEntry::func' changed to '__anonymous_struct__2::func' + and name of 'InitTableEntry::func' changed to '__anonymous_struct__1::func' [C] 'function int __offload_offload(OFFLOAD, const char*, int, int, VarDesc*, VarDesc2*, int, void**, void*, int, void*)' has some indirect sub-type changes: parameter 1 of type 'typedef OFFLOAD' has sub-type changes: 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-2.txt b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt index a0bfc76..550ef6f 100644 --- a/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt +++ b/tests/data/test-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-2.txt @@ -92,7 +92,7 @@ in pointed to type 'typedef RedChannelClient' at red_channel.h:131:1: underlying type 'struct RedChannelClient' at red_channel.h:247:1 changed: type size hasn't changed - 3 data member changes (2 filtered): + 3 data member changes: type of 'RedChannel* RedChannelClient::channel' changed: in pointed to type 'typedef RedChannel' at red_channel.h:130:1: underlying type 'struct RedChannel' changed, as being reported diff --git a/tests/data/test-read-dwarf/PR25007-sdhci.ko.abi b/tests/data/test-read-dwarf/PR25007-sdhci.ko.abi index cbe8d20..5349383 100644 --- a/tests/data/test-read-dwarf/PR25007-sdhci.ko.abi +++ b/tests/data/test-read-dwarf/PR25007-sdhci.ko.abi @@ -11476,623 +11476,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/data/test-read-dwarf/libtest23.so.abi b/tests/data/test-read-dwarf/libtest23.so.abi index 3cf2613..9b6412f 100644 --- a/tests/data/test-read-dwarf/libtest23.so.abi +++ b/tests/data/test-read-dwarf/libtest23.so.abi @@ -14,37 +14,37 @@ - - + - + - + - + - + - - - - - - - - - + + + + + + + + + + - + @@ -54,7 +54,7 @@ - + @@ -62,34 +62,34 @@ - + - + - + - + - + - + - + - + - + - + @@ -97,9 +97,9 @@ - + - + @@ -111,11 +111,11 @@ - - + + - + @@ -134,8 +134,8 @@ - - + + @@ -214,7 +214,7 @@ - + @@ -223,7 +223,7 @@ - + @@ -235,24 +235,24 @@ - + - - + + - + - + @@ -276,7 +276,7 @@ - + @@ -299,13 +299,13 @@ - + - + @@ -316,36 +316,36 @@ - + - + - + - + - + - + @@ -361,12 +361,12 @@ - + - + @@ -399,7 +399,7 @@ - + @@ -422,12 +422,12 @@ - + - + @@ -438,13 +438,13 @@ - - + + - + @@ -455,13 +455,13 @@ - + - + @@ -484,12 +484,12 @@ - + - + @@ -520,22 +520,22 @@ - + - - + + - - + + - + @@ -545,7 +545,7 @@ - + @@ -829,7 +829,7 @@ - + @@ -920,7 +920,7 @@ - + @@ -1676,7 +1676,7 @@ - + @@ -1685,7 +1685,7 @@ - + @@ -1696,14 +1696,14 @@ - + - + @@ -1712,7 +1712,7 @@ - + @@ -1722,7 +1722,7 @@ - + @@ -1749,7 +1749,7 @@ - + diff --git a/tests/data/test-read-dwarf/test11-pr18828.so.abi b/tests/data/test-read-dwarf/test11-pr18828.so.abi index bc70b48..32934d8 100644 --- a/tests/data/test-read-dwarf/test11-pr18828.so.abi +++ b/tests/data/test-read-dwarf/test11-pr18828.so.abi @@ -663,44 +663,44 @@ - + - - - - - - - - - + - + - + - + - - - - - + + + + + - - - - - - + + + + + + - - + + + + + + + + + + @@ -718,7 +718,7 @@ - + @@ -732,25 +732,25 @@ - + - + - + - - + + - - - + + + - + @@ -792,10 +792,10 @@ - + - + @@ -804,7 +804,7 @@ - + @@ -816,22 +816,22 @@ - + - + - + - + - + @@ -845,19 +845,19 @@ - + - + - + - + @@ -865,7 +865,7 @@ - + @@ -873,34 +873,34 @@ - + - + - + - + - + - + - + - + - + - + @@ -984,19 +984,19 @@ - + - + - + - + @@ -1012,11 +1012,11 @@ - + - - - + + + @@ -1237,12 +1237,12 @@ - + - - - + + + @@ -1439,8 +1439,8 @@ - - + + @@ -1749,7 +1749,7 @@ - + @@ -2009,7 +2009,7 @@ - + @@ -2018,16 +2018,16 @@ - - + + - - + + - - - + + + @@ -2434,9 +2434,9 @@ - - - + + + @@ -2597,16 +2597,16 @@ - + - - + + - - + + @@ -2657,7 +2657,7 @@ - + @@ -3096,13 +3096,13 @@ - + - + @@ -3225,7 +3225,7 @@ - + @@ -3233,14 +3233,14 @@ - + - + @@ -3368,7 +3368,7 @@ - + @@ -3389,7 +3389,7 @@ - + @@ -3427,7 +3427,7 @@ - + @@ -3440,7 +3440,7 @@ - + @@ -3490,7 +3490,7 @@ - + @@ -3511,7 +3511,7 @@ - + @@ -3549,7 +3549,7 @@ - + @@ -3562,7 +3562,7 @@ - + @@ -3613,7 +3613,7 @@ - + @@ -3634,7 +3634,7 @@ - + @@ -3672,7 +3672,7 @@ - + @@ -3685,7 +3685,7 @@ - + @@ -3750,7 +3750,7 @@ - + @@ -4039,7 +4039,7 @@ - + @@ -4145,7 +4145,7 @@ - + @@ -5013,14 +5013,14 @@ - + - + @@ -5029,7 +5029,7 @@ - + @@ -5040,14 +5040,14 @@ - + - + @@ -5056,7 +5056,7 @@ - + @@ -5066,7 +5066,7 @@ - + @@ -5097,7 +5097,7 @@ - + @@ -5113,10 +5113,10 @@ - + - + @@ -5213,7 +5213,7 @@ - + @@ -5223,7 +5223,7 @@ - + @@ -5333,7 +5333,7 @@ - + @@ -5866,7 +5866,7 @@ - + @@ -5927,7 +5927,7 @@ - + @@ -6055,7 +6055,7 @@ - + @@ -6127,12 +6127,12 @@ - + - + @@ -6143,7 +6143,7 @@ - + @@ -6171,7 +6171,7 @@ - + @@ -6185,7 +6185,7 @@ - + @@ -6226,14 +6226,14 @@ - + - + @@ -7014,7 +7014,7 @@ - + @@ -7033,7 +7033,7 @@ - + @@ -7062,14 +7062,14 @@ - + - + @@ -7124,7 +7124,7 @@ - + @@ -7746,7 +7746,7 @@ - + @@ -7765,7 +7765,7 @@ - + @@ -7794,14 +7794,14 @@ - + - + @@ -7821,7 +7821,7 @@ - + @@ -7921,7 +7921,7 @@ - + @@ -8360,7 +8360,7 @@ - + @@ -8510,7 +8510,7 @@ - + @@ -8545,7 +8545,7 @@ - + @@ -8566,7 +8566,7 @@ - + @@ -8598,14 +8598,14 @@ - + - + @@ -8641,7 +8641,7 @@ - + @@ -8794,7 +8794,7 @@ - + @@ -8807,7 +8807,7 @@ - + @@ -8818,7 +8818,7 @@ - + @@ -8887,10 +8887,10 @@ - + - + @@ -9343,7 +9343,7 @@ - + @@ -9719,7 +9719,7 @@ - + @@ -9962,7 +9962,7 @@ - + @@ -10000,14 +10000,14 @@ - + - + @@ -10108,7 +10108,7 @@ - + @@ -10321,7 +10321,7 @@ - + @@ -10334,7 +10334,7 @@ - + @@ -10406,7 +10406,7 @@ - + @@ -10419,7 +10419,7 @@ - + @@ -10514,7 +10514,7 @@ - + @@ -10527,7 +10527,7 @@ - + @@ -10761,7 +10761,7 @@ - + @@ -11171,7 +11171,7 @@ - + @@ -11301,7 +11301,7 @@ - + @@ -11330,7 +11330,7 @@ - + @@ -11369,14 +11369,14 @@ - + - + @@ -11456,7 +11456,7 @@ - + @@ -11513,7 +11513,7 @@ - + @@ -11535,13 +11535,13 @@ - + - + @@ -11649,7 +11649,7 @@ - + @@ -12182,7 +12182,7 @@ - + @@ -12243,7 +12243,7 @@ - + @@ -12371,7 +12371,7 @@ - + @@ -12496,7 +12496,7 @@ - + @@ -13029,7 +13029,7 @@ - + @@ -13090,7 +13090,7 @@ - + @@ -13218,7 +13218,7 @@ - + @@ -13245,7 +13245,7 @@ - + @@ -13689,7 +13689,7 @@ - + @@ -14065,7 +14065,7 @@ - + @@ -14324,7 +14324,7 @@ - + @@ -14568,7 +14568,7 @@ - + @@ -14581,7 +14581,7 @@ - + @@ -14613,10 +14613,10 @@ - + - + @@ -15007,10 +15007,10 @@ - + - + @@ -15383,7 +15383,7 @@ - + @@ -15860,7 +15860,7 @@ - + @@ -15931,7 +15931,7 @@ - + @@ -16012,7 +16012,7 @@ - + @@ -16040,7 +16040,7 @@ - + @@ -16053,7 +16053,7 @@ - + @@ -16073,7 +16073,7 @@ - + @@ -16131,7 +16131,7 @@ - + @@ -16151,7 +16151,7 @@ - + @@ -16171,7 +16171,7 @@ - + @@ -16315,7 +16315,7 @@ - + @@ -16375,7 +16375,7 @@ - + @@ -16488,7 +16488,7 @@ - + @@ -17021,7 +17021,7 @@ - + @@ -17082,7 +17082,7 @@ - + @@ -17210,7 +17210,7 @@ - + @@ -17319,7 +17319,7 @@ - + @@ -17790,7 +17790,7 @@ - + @@ -17832,7 +17832,7 @@ - + @@ -17858,7 +17858,7 @@ - + @@ -17883,7 +17883,7 @@ - + @@ -17896,7 +17896,7 @@ - + @@ -17942,13 +17942,13 @@ - + - + @@ -18016,7 +18016,7 @@ - + @@ -18107,7 +18107,7 @@ - + @@ -18136,7 +18136,7 @@ - + @@ -18168,7 +18168,7 @@ - + @@ -18181,7 +18181,7 @@ - + @@ -18285,7 +18285,7 @@ - + @@ -18298,7 +18298,7 @@ - + @@ -18414,7 +18414,7 @@ - + @@ -18427,7 +18427,7 @@ - + @@ -18631,7 +18631,7 @@ - + @@ -19164,7 +19164,7 @@ - + @@ -19225,7 +19225,7 @@ - + @@ -19353,7 +19353,7 @@ - + @@ -19437,7 +19437,7 @@ - + @@ -19527,7 +19527,7 @@ - + @@ -19885,7 +19885,7 @@ - + @@ -20431,7 +20431,7 @@ - + @@ -20444,7 +20444,7 @@ - + @@ -20709,13 +20709,13 @@ - + - + @@ -20745,16 +20745,16 @@ - + - + - + @@ -20863,7 +20863,7 @@ - + @@ -20882,7 +20882,7 @@ - + @@ -21283,19 +21283,19 @@ - + - + - + @@ -21337,7 +21337,7 @@ - + @@ -21554,7 +21554,7 @@ - + @@ -21702,7 +21702,7 @@ - + @@ -22033,7 +22033,7 @@ - + @@ -22113,7 +22113,7 @@ - + @@ -22180,7 +22180,7 @@ - + @@ -22301,7 +22301,7 @@ - + @@ -22551,7 +22551,7 @@ - + @@ -22995,7 +22995,7 @@ - + @@ -23371,7 +23371,7 @@ - + @@ -23630,7 +23630,7 @@ - + @@ -23785,7 +23785,7 @@ - + @@ -23799,7 +23799,7 @@ - + @@ -23993,7 +23993,7 @@ - + @@ -24144,7 +24144,7 @@ - + @@ -24171,7 +24171,7 @@ - + @@ -24185,7 +24185,7 @@ - + @@ -24223,7 +24223,7 @@ - + @@ -24267,7 +24267,7 @@ - + @@ -24282,8 +24282,8 @@ - - + + @@ -24336,7 +24336,7 @@ - + @@ -24349,7 +24349,7 @@ - + @@ -24457,7 +24457,7 @@ - + @@ -24470,7 +24470,7 @@ - + @@ -24560,7 +24560,7 @@ - + @@ -24582,7 +24582,7 @@ - + @@ -24648,7 +24648,7 @@ - + @@ -24661,7 +24661,7 @@ - + @@ -24754,7 +24754,7 @@ - + @@ -24767,7 +24767,7 @@ - + @@ -24845,7 +24845,7 @@ - + @@ -24867,7 +24867,7 @@ - + @@ -24985,7 +24985,7 @@ - + @@ -25007,7 +25007,7 @@ - + @@ -25035,7 +25035,7 @@ - + @@ -25078,7 +25078,7 @@ - + @@ -25100,7 +25100,7 @@ - + @@ -25151,7 +25151,7 @@ - + @@ -25173,7 +25173,7 @@ - + @@ -25201,7 +25201,7 @@ - + @@ -25244,7 +25244,7 @@ - + @@ -25266,7 +25266,7 @@ - + @@ -25302,7 +25302,7 @@ - + @@ -25352,7 +25352,7 @@ - + @@ -25374,7 +25374,7 @@ - + @@ -25497,7 +25497,7 @@ - + @@ -25519,7 +25519,7 @@ - + @@ -25547,7 +25547,7 @@ - + @@ -25566,13 +25566,13 @@ - + - + @@ -25673,7 +25673,7 @@ - + @@ -25695,7 +25695,7 @@ - + @@ -25746,7 +25746,7 @@ - + @@ -25768,7 +25768,7 @@ - + @@ -25789,7 +25789,7 @@ - + @@ -25826,7 +25826,7 @@ - + @@ -25848,7 +25848,7 @@ - + @@ -25966,7 +25966,7 @@ - + @@ -25988,7 +25988,7 @@ - + @@ -26106,7 +26106,7 @@ - + @@ -26128,7 +26128,7 @@ - + @@ -26155,13 +26155,13 @@ - + - + @@ -26262,7 +26262,7 @@ - + @@ -26284,7 +26284,7 @@ - + @@ -26402,7 +26402,7 @@ - + @@ -26424,7 +26424,7 @@ - + @@ -26475,7 +26475,7 @@ - + @@ -26497,7 +26497,7 @@ - + @@ -26615,7 +26615,7 @@ - + @@ -26637,7 +26637,7 @@ - + @@ -26688,7 +26688,7 @@ - + @@ -26710,7 +26710,7 @@ - + @@ -26761,7 +26761,7 @@ - + @@ -26783,7 +26783,7 @@ - + @@ -26877,13 +26877,13 @@ - + - + @@ -26931,7 +26931,7 @@ - + @@ -26953,7 +26953,7 @@ - + @@ -27004,7 +27004,7 @@ - + @@ -27026,7 +27026,7 @@ - + @@ -27077,7 +27077,7 @@ - + @@ -27099,7 +27099,7 @@ - + @@ -27203,7 +27203,7 @@ - + @@ -27225,7 +27225,7 @@ - + @@ -27525,10 +27525,10 @@ - + - + @@ -27593,16 +27593,16 @@ - - + + - - + + @@ -27656,19 +27656,19 @@ - + - + - + - + - + @@ -27732,21 +27732,21 @@ - + - + - + @@ -27767,14 +27767,14 @@ - + - + @@ -27887,13 +27887,13 @@ - + - + @@ -27919,7 +27919,7 @@ - + @@ -27956,7 +27956,7 @@ - + @@ -28061,7 +28061,7 @@ - + @@ -28070,12 +28070,12 @@ - - + + - - + + @@ -28169,7 +28169,7 @@ - + @@ -28285,7 +28285,7 @@ - + @@ -28401,7 +28401,7 @@ - + @@ -28430,20 +28430,20 @@ - + - + - + @@ -28521,14 +28521,14 @@ - + - + @@ -28638,7 +28638,7 @@ - + @@ -28716,7 +28716,7 @@ - + @@ -28759,7 +28759,7 @@ - + @@ -28820,7 +28820,7 @@ - + @@ -28875,7 +28875,7 @@ - + @@ -28889,7 +28889,7 @@ - + @@ -28903,7 +28903,7 @@ - + @@ -28917,28 +28917,28 @@ - + - + - + - + @@ -28981,7 +28981,7 @@ - + @@ -28998,12 +28998,12 @@ - + - + @@ -29011,7 +29011,7 @@ - + @@ -29019,21 +29019,21 @@ - + - + - + @@ -29046,7 +29046,7 @@ - + @@ -29059,7 +29059,7 @@ - + @@ -29073,7 +29073,7 @@ - + @@ -29111,7 +29111,7 @@ - + @@ -29123,7 +29123,7 @@ - + @@ -29196,7 +29196,7 @@ - + @@ -29244,7 +29244,7 @@ - + @@ -29334,7 +29334,7 @@ - + @@ -29390,7 +29390,7 @@ - + @@ -29399,7 +29399,7 @@ - + @@ -29418,7 +29418,7 @@ - + @@ -29453,7 +29453,7 @@ - + @@ -29526,7 +29526,7 @@ - + @@ -29569,7 +29569,7 @@ - + @@ -29582,7 +29582,7 @@ - + @@ -29837,7 +29837,7 @@ - + @@ -30060,7 +30060,7 @@ - + @@ -30068,7 +30068,7 @@ - + @@ -30078,7 +30078,7 @@ - + @@ -30091,14 +30091,14 @@ - + - + @@ -30143,7 +30143,7 @@ - + @@ -30159,7 +30159,7 @@ - + @@ -30195,7 +30195,7 @@ - + @@ -30251,7 +30251,7 @@ - + @@ -30310,7 +30310,7 @@ - + @@ -30319,7 +30319,7 @@ - + @@ -30356,7 +30356,7 @@ - + @@ -30501,7 +30501,7 @@ - + @@ -30567,28 +30567,28 @@ - + - + - + - + @@ -30602,28 +30602,28 @@ - + - + - + - + @@ -30651,7 +30651,7 @@ - + @@ -30659,7 +30659,7 @@ - + @@ -30673,7 +30673,7 @@ - + @@ -30686,7 +30686,7 @@ - + @@ -30706,8 +30706,8 @@ - - + + @@ -30727,13 +30727,13 @@ - + - + - + @@ -30752,14 +30752,14 @@ - + - + @@ -30778,14 +30778,14 @@ - + - + @@ -30831,21 +30831,21 @@ - + - + - + @@ -30859,21 +30859,21 @@ - + - + - + @@ -30887,7 +30887,7 @@ - + @@ -30903,47 +30903,47 @@ - + - + - + - + - + - + - + @@ -30957,21 +30957,21 @@ - + - + - + @@ -30981,21 +30981,21 @@ - + - + - + - + @@ -31095,14 +31095,14 @@ - + - + @@ -31191,7 +31191,7 @@ - + @@ -31199,7 +31199,7 @@ - + @@ -31381,10 +31381,10 @@ - + - + @@ -31407,7 +31407,7 @@ - + @@ -31419,19 +31419,19 @@ - + - + - + @@ -31559,7 +31559,7 @@ - + @@ -31568,7 +31568,7 @@ - + @@ -31594,7 +31594,7 @@ - + @@ -31606,14 +31606,14 @@ - - + + - + @@ -31638,7 +31638,7 @@ - + @@ -31656,7 +31656,7 @@ - + @@ -31704,13 +31704,13 @@ - + - + @@ -31722,25 +31722,25 @@ - + - + - + - + @@ -31752,13 +31752,13 @@ - + - + @@ -31776,7 +31776,7 @@ - + @@ -31818,7 +31818,7 @@ - + @@ -31909,7 +31909,7 @@ - + @@ -31921,8 +31921,8 @@ - - + + @@ -31958,13 +31958,13 @@ - + - + @@ -31990,7 +31990,7 @@ - + @@ -32005,7 +32005,7 @@ - + @@ -32019,7 +32019,7 @@ - + @@ -32103,7 +32103,7 @@ - + @@ -32188,7 +32188,7 @@ - + @@ -32302,7 +32302,7 @@ - + @@ -32313,20 +32313,20 @@ - + - + - + @@ -32443,10 +32443,10 @@ - + - + @@ -32463,7 +32463,7 @@ - + @@ -32471,15 +32471,15 @@ - + - - + + @@ -32492,25 +32492,25 @@ - + - + - + - + @@ -32600,12 +32600,12 @@ - + - + @@ -32626,15 +32626,15 @@ - - + + - - + + @@ -32706,7 +32706,7 @@ - + @@ -32733,13 +32733,13 @@ - + - + - + @@ -32758,8 +32758,8 @@ - - + + @@ -32772,27 +32772,27 @@ - + - + - + - - + + @@ -32811,13 +32811,13 @@ - + - + @@ -32886,7 +32886,7 @@ - + @@ -32901,7 +32901,7 @@ - + @@ -32913,7 +32913,7 @@ - + @@ -32935,7 +32935,7 @@ - + @@ -32956,7 +32956,7 @@ - + @@ -33002,7 +33002,7 @@ - + @@ -33040,7 +33040,7 @@ - + @@ -33056,7 +33056,7 @@ - + @@ -33064,7 +33064,7 @@ - + @@ -33080,7 +33080,7 @@ - + @@ -33088,7 +33088,7 @@ - + @@ -33096,7 +33096,7 @@ - + @@ -33104,7 +33104,7 @@ - + @@ -33128,7 +33128,7 @@ - + @@ -33136,7 +33136,7 @@ - + @@ -33225,7 +33225,7 @@ - + @@ -33307,7 +33307,7 @@ - + @@ -33340,9 +33340,9 @@ - - + + @@ -33358,8 +33358,8 @@ + - @@ -33399,7 +33399,7 @@ - + @@ -33407,7 +33407,7 @@ - + @@ -33457,7 +33457,7 @@ - + @@ -33517,7 +33517,7 @@ - + @@ -33543,14 +33543,14 @@ - + - + @@ -33729,10 +33729,10 @@ - + - + @@ -33743,21 +33743,21 @@ - + - + - + @@ -33835,10 +33835,10 @@ - + - + @@ -33846,8 +33846,8 @@ + - @@ -33896,7 +33896,7 @@ - + @@ -33908,7 +33908,7 @@ - + @@ -33916,7 +33916,7 @@ - + @@ -33951,7 +33951,7 @@ - + @@ -33961,7 +33961,7 @@ - + @@ -33969,28 +33969,28 @@ - + - + - + - + @@ -34003,7 +34003,7 @@ - + @@ -34034,7 +34034,7 @@ - + @@ -34042,7 +34042,7 @@ - + @@ -34050,28 +34050,28 @@ - + - + - + - + @@ -34092,7 +34092,7 @@ - + @@ -34100,7 +34100,7 @@ - + @@ -34120,7 +34120,7 @@ - + @@ -34187,21 +34187,21 @@ - + - + - + @@ -34307,21 +34307,21 @@ - + - + - + @@ -34399,21 +34399,21 @@ - + - + - + @@ -34547,7 +34547,7 @@ - + @@ -34681,7 +34681,7 @@ - + @@ -34870,8 +34870,8 @@ - - + + @@ -34879,8 +34879,8 @@ - - + + @@ -34901,7 +34901,7 @@ - + @@ -34940,7 +34940,7 @@ - + @@ -34986,7 +34986,7 @@ - + @@ -34999,13 +34999,13 @@ - + - + @@ -35062,20 +35062,20 @@ - + - + - + @@ -35109,7 +35109,7 @@ - + @@ -35214,7 +35214,7 @@ - + @@ -35227,7 +35227,7 @@ - + @@ -35271,7 +35271,7 @@ - + @@ -35317,7 +35317,7 @@ - + @@ -35326,7 +35326,7 @@ - + @@ -35338,24 +35338,24 @@ - + - - + + - + - + @@ -35379,7 +35379,7 @@ - + @@ -35402,13 +35402,13 @@ - + - + @@ -35419,36 +35419,36 @@ - + - + - + - + - + - + @@ -35464,12 +35464,12 @@ - + - + @@ -35502,7 +35502,7 @@ - + @@ -35525,12 +35525,12 @@ - + - + @@ -35541,13 +35541,13 @@ - - + + - + @@ -35558,13 +35558,13 @@ - + - + @@ -35587,12 +35587,12 @@ - + - + @@ -35623,22 +35623,22 @@ - + - - + + - - + + - + @@ -35647,35 +35647,35 @@ - + - + - + - + - + - - + + - + - - + + @@ -35683,14 +35683,14 @@ - - + + - + @@ -35702,46 +35702,46 @@ - + - + - + - + - + - + - - + + - + - + @@ -35752,38 +35752,38 @@ - + - - + + - + - - + + - - + + - + - + @@ -35791,32 +35791,32 @@ - + - + - + - + - + - + - + @@ -35826,7 +35826,7 @@ - + @@ -35840,25 +35840,25 @@ - - - + + + - + - + - + - + @@ -35870,12 +35870,12 @@ - + - + @@ -35889,9 +35889,9 @@ - + - + @@ -35901,29 +35901,29 @@ - + - + + - - + - - + + - + - + - + @@ -35939,7 +35939,7 @@ - + @@ -35949,7 +35949,7 @@ - + @@ -35960,7 +35960,7 @@ - + @@ -36016,7 +36016,7 @@ - + @@ -36027,7 +36027,7 @@ - + @@ -36038,7 +36038,7 @@ - + @@ -36071,7 +36071,7 @@ - + @@ -36082,7 +36082,7 @@ - + @@ -36093,7 +36093,7 @@ - + @@ -36104,7 +36104,7 @@ - + @@ -36115,7 +36115,7 @@ - + @@ -36126,7 +36126,7 @@ - + @@ -36137,7 +36137,7 @@ - + @@ -36148,7 +36148,7 @@ - + @@ -36159,7 +36159,7 @@ - + @@ -36170,7 +36170,7 @@ - + @@ -36181,7 +36181,7 @@ - + @@ -36192,7 +36192,7 @@ - + @@ -36203,7 +36203,7 @@ - + @@ -36274,12 +36274,12 @@ - - + + - - + + @@ -36298,9 +36298,9 @@ - - - + + + From patchwork Wed Sep 9 08:50:42 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dodji Seketeli X-Patchwork-Id: 40385 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 57753386EC70; Wed, 9 Sep 2020 08:51:01 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 57753386EC70 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1599641461; bh=tqu2LF9l2HO5UPTLDMusMxbxNhbRCz+mNpGQrkkKY6w=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Help: List-Subscribe:From:Reply-To:Cc:From; b=CfP3oSw1oHTkmnxj4YCLzSO5RZKQx4hODZ0SmTutB6u2O4QwPvdvqvJ39YqavkmpR x2DhcVNGovQ6Hxe6fNX1T8+ga/AoSYOMHXcST2VvetVz30hwIezPOJRNBxT6qT+4L6 OMMEsTcTl7kWop/5vKwttaiz//GBI5ozY13ExL/w= X-Original-To: libabigail@sourceware.org Delivered-To: libabigail@sourceware.org Received: from us-smtp-delivery-1.mimecast.com (us-smtp-2.mimecast.com [205.139.110.61]) by sourceware.org (Postfix) with ESMTP id 3BF0C3846034 for ; Wed, 9 Sep 2020 08:50:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 3BF0C3846034 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-326-O5tVic9wPoGnrqBJ6IczcA-1; Wed, 09 Sep 2020 04:50:50 -0400 X-MC-Unique: O5tVic9wPoGnrqBJ6IczcA-1 Received: by mail-wm1-f69.google.com with SMTP id a7so539809wmc.2 for ; Wed, 09 Sep 2020 01:50:50 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:organization:date:message-id :user-agent:mime-version; bh=tqu2LF9l2HO5UPTLDMusMxbxNhbRCz+mNpGQrkkKY6w=; b=ixaW8CyUUJnx1B6Z/9RPRRXyNqcztmmZ4+8f0VXEjcC4KAFR33Z5Fp/FcJm73bwJxz 4c0S4tgFqTvsBD2N9ynY9mJX3jBGWMV7xuEo4rYNbaQZGC2U1xqEeZkdwMJfxFfHB+N1 sckmdVk+AOpFd5wGKWUScptaKC+dBPMFU5TE/Y0EyP2PO0InFwhRrs6uMtkqbMgFfrMf YD+F41B9G3Dds0wW9VWEwd1rOuR+TrV6FiU4+Aoy3vbzCcwEV+pr5q5PCbcxIixAKlrZ Sc2ScTVkUWTjwSc2RnPnJ9qLhbiebm1kcO4aNi3YHuYjRgAe9OrwClF5BKSQvJpTMEek D8GA== X-Gm-Message-State: AOAM5314lhim9kxdrR1i8qOfQWuABuJstq5ywX+DMlWDVc4o0PiGx2Fz 7OJciY1eZdlTOPm6y7oMDvmvii6HPs4PR00qwToHVNQ0RNd/xjlMFZKHJ61LLLQcIRg/PXKwv+i LECw8ENVvkZMcHb4GKT6d X-Received: by 2002:a05:6000:d0:: with SMTP id q16mr2863315wrx.24.1599641448036; Wed, 09 Sep 2020 01:50:48 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwbB1v8V6tNHSsC5vULYuZi9EXGdGqpS8c8e3uLNnOsE5HeInZFRcZ8oL9qwfdmIoKeruThQw== X-Received: by 2002:a05:6000:d0:: with SMTP id q16mr2863276wrx.24.1599641447535; Wed, 09 Sep 2020 01:50:47 -0700 (PDT) Received: from localhost (91-166-131-130.subs.proxad.net. [91.166.131.130]) by smtp.gmail.com with ESMTPSA id t4sm3011971wrr.26.2020.09.09.01.50.43 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 09 Sep 2020 01:50:46 -0700 (PDT) Received: by localhost (Postfix, from userid 1000) id 3BCB218009D8; Wed, 9 Sep 2020 10:50:42 +0200 (CEST) To: libabigail@sourceware.org Subject: [PATCH 2/2] writer: Avoid using dynamic hashing in type maps Organization: Red Hat / France X-Operating-System: Red Hat Enterprise Linux Workstation 7.8 Beta X-URL: http://www.redhat.com Date: Wed, 09 Sep 2020 10:50:42 +0200 Message-ID: <877dt3tjtp.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.002 X-Mimecast-Originator: redhat.com X-Spam-Status: No, score=-9.4 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, 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 Cc: Matthias Maennich Errors-To: libabigail-bounces@sourceware.org Sender: "Libabigail" Hello, This patch the second of a series of two which intends to improve type equality handling, particularly in the abixml writer, for the small number of types that are not canonicalized. When using type maps the hash used for a given type T is usually the pointer value of the canonical type of T. In the rare cases where T doesn't have a canonical type, we were using a 'dynamic hash' computed by recursively walking the components of T and progressively building a hash that way. The dynamic hashing code hasn't been updated in a while and would need some overhaul to support hashing with schemes like MD5 or maybe sha even. It might be useful for various use cases that have been proposed by some users over the years but nobody was motivated enough to implement it. In the mean time, rather than trying to come up with a fully beefed up dynamic hashing code, we'd rather just return a constant number for non canonicalized types. In practise that amounts to forcing the code of the maps to always use structural comparison for those non canonicalized types. Note that the amount of non-canonicalized types should be fairly small. For now, the only non-canonicalized types should be declaration-only types and those are quite fast to compare anyway. This patch thus introduces a new hashing scheme for maps in the writer which just uses a numerical constant as the hash for non-canonicalized types. * include/abg-fwd.h (hash_as_canonical_type_or_constant): Declare ... * src/abg-ir.cc (hash_as_canonical_type_or_constant): ... new function. * src/abg-writer.cc (type_hasher::operator()): Use the new hash_as_canonical_type_or_constant. * tests/data/test-read-dwarf/test16-pr18904.so.abi: Adjust. Signed-off-by: Dodji Seketeli --- include/abg-fwd.h | 3 + src/abg-ir.cc | 39 +++ src/abg-writer.cc | 2 +- tests/data/test-read-dwarf/test16-pr18904.so.abi | 302 +++++++++++------------ 4 files changed, 194 insertions(+), 152 deletions(-) diff --git a/include/abg-fwd.h b/include/abg-fwd.h index 4b09929..a2caf9b 100644 --- a/include/abg-fwd.h +++ b/include/abg-fwd.h @@ -1333,6 +1333,9 @@ hash_type_or_decl(const type_or_decl_base *); size_t hash_type_or_decl(const type_or_decl_base_sptr &); +size_t +hash_as_canonical_type_or_constant(const type_base* t); + bool function_decl_is_less_than(const function_decl&f, const function_decl &s); diff --git a/src/abg-ir.cc b/src/abg-ir.cc index d98d4bd..088eebb 100644 --- a/src/abg-ir.cc +++ b/src/abg-ir.cc @@ -23085,6 +23085,45 @@ size_t hash_type_or_decl(const type_or_decl_base_sptr& tod) {return hash_type_or_decl(tod.get());} +/// Hash a type by either returning the pointer value of its canonical +/// type or by returning a constant if the type doesn't have a +/// canonical type. +/// +/// @param t the type to consider. +/// +/// @return the hash value. +size_t +hash_as_canonical_type_or_constant(const type_base *t) +{ + type_base *canonical_type = 0; + + if (t) + canonical_type = t->get_naked_canonical_type(); + + if (!canonical_type) + { + // If the type doesn't have a canonical type, maybe it's because + // it's a declaration-only type? If that's the case, let's try + // to get the canonical type of the definition of this + // declaration. + decl_base *decl = is_decl(t); + if (decl + && decl->get_is_declaration_only() + && decl->get_naked_definition_of_declaration()) + { + type_base *definition = + is_type(decl->get_naked_definition_of_declaration()); + ABG_ASSERT(definition); + canonical_type = definition->get_naked_canonical_type(); + } + } + + if (canonical_type) + return reinterpret_cast(canonical_type); + + return 0xDEADBABE; +} + /// Test if the pretty representation of a given @ref function_decl is /// lexicographically less then the pretty representation of another /// @ref function_decl. diff --git a/src/abg-writer.cc b/src/abg-writer.cc index 4c751c2..59060e1 100644 --- a/src/abg-writer.cc +++ b/src/abg-writer.cc @@ -136,7 +136,7 @@ struct type_hasher { size_t operator()(const type_base* t) const - {return hash_type(t);} + {return hash_as_canonical_type_or_constant(t);} }; // end struct type_hasher /// A convenience typedef for a map that associates a pointer to type diff --git a/tests/data/test-read-dwarf/test16-pr18904.so.abi b/tests/data/test-read-dwarf/test16-pr18904.so.abi index 0075a6e..377d322 100644 --- a/tests/data/test-read-dwarf/test16-pr18904.so.abi +++ b/tests/data/test-read-dwarf/test16-pr18904.so.abi @@ -35191,7 +35191,7 @@ - + @@ -35201,7 +35201,7 @@ - + @@ -36488,13 +36488,13 @@ - + - + - + @@ -36624,14 +36624,14 @@ - + - + @@ -36641,7 +36641,7 @@ - + @@ -36680,9 +36680,9 @@ - - - + + + @@ -36710,7 +36710,7 @@ - + @@ -36718,13 +36718,13 @@ - + - + @@ -36732,7 +36732,7 @@ - + @@ -36740,23 +36740,23 @@ - + - + - + - + - + - + @@ -36805,53 +36805,53 @@ - + - + - + - + - + - + - + - - + + - - - + + + - - + + - + @@ -36863,92 +36863,92 @@ - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - - - + + + - + - + - + - + - + - + - + - + - + - + - + - + - - + + @@ -36961,19 +36961,19 @@ - + - + - + @@ -36984,7 +36984,7 @@ - + @@ -36998,7 +36998,7 @@ - + @@ -37012,7 +37012,7 @@ - + @@ -37026,7 +37026,7 @@ - + @@ -37040,7 +37040,7 @@ - + @@ -37054,7 +37054,7 @@ - + @@ -37068,7 +37068,7 @@ - + @@ -37082,7 +37082,7 @@ - + @@ -37098,19 +37098,19 @@ - + - + - + - + - + @@ -37135,37 +37135,37 @@ - - + + - - + + - + - + - - + + - + @@ -37195,26 +37195,26 @@ - - + + - + - + - + - + - + - + @@ -37268,13 +37268,13 @@ - + - + - + @@ -37295,13 +37295,13 @@ - + - + @@ -37333,35 +37333,35 @@ - - + + - + - + - + - + @@ -37374,13 +37374,13 @@ - + - + - + @@ -37401,13 +37401,13 @@ - + - + @@ -37439,35 +37439,35 @@ - - + + - + - + - + - + @@ -38096,71 +38096,71 @@ - + - - + + - + - + - - + + - - + + - + - - - - + + + + - - - - - + + + + + - - + + - + - - + + - - + + - - + +