From patchwork Fri Dec 1 15:54:04 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dodji Seketeli X-Patchwork-Id: 81145 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 EE31F385AE43 for ; Fri, 1 Dec 2023 16:30:53 +0000 (GMT) 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.133.124]) by sourceware.org (Postfix) with ESMTPS id 64B103858415 for ; Fri, 1 Dec 2023 15:55:13 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 64B103858415 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 64B103858415 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701446123; cv=none; b=Yd61cci/eWlHtErxJN7CGRZw4Q7N2awEIXfEAxJQkPDy3m4nCM/EXTYSiUF3gWtJmoksalGCUB5Or+9QDHAGw4ktpp3vY6Zb7oyGeTVtqyMeLMcEIWzGJzkl0q2k7fjC/GlUJqJLlzTKpMkLk9+Zzas8AjDKQ1X6FIS8FJJ4K2s= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701446123; c=relaxed/simple; bh=GurEu8dr7h2aJ13vE9Rle0597v/DmxvKFusO8L7T0hk=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=sQ6iCOsGTXlmn0nOW4a7eyhoQAYEiSYGn4UyOWCQzX9RJg6BCuYXA8t3i9KQ5mfBLmOFFSG0z8UvdcN5kp4EJzN98rrCbIhfg6qaW6tfT2L+tHEQFHf6nHbMrzjhOni7/nogz9gAeb8Bwm+ArkRRtsnzQPiPyRV9cwWN14kgu8E= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1701446113; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=GVHQJWUVzspGyEWBAOcUN+FB6f5HbbUo5wRthPH9ynA=; b=F8OzRA7PmihXwF43nNAIZQZuXTXU+55scRTHpLJc7SWCtA16CW1BaiZtio1/skk6tMXoVT EUtSG6ePisg8An3x0om2kXtYu4LfoqIxiTQnlDO1KiLIRZAq2bCCZnIkJQD3FKEQvzkQK8 9eQChz4ZxWiiM/1ECdwEIXxbGoTSESE= Received: from mail-lj1-f198.google.com (mail-lj1-f198.google.com [209.85.208.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-130-qXDKrHwzO8Cq1Ls9ixvadQ-1; Fri, 01 Dec 2023 10:54:47 -0500 X-MC-Unique: qXDKrHwzO8Cq1Ls9ixvadQ-1 Received: by mail-lj1-f198.google.com with SMTP id 38308e7fff4ca-2c9b18161b6so25671371fa.3 for ; Fri, 01 Dec 2023 07:54:46 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701446084; x=1702050884; h=content-transfer-encoding:mime-version:user-agent:message-id :in-reply-to:date:references:organization:subject:to:from :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=5OVnZ6tv7qDurX4UBOSXhZRHN3WNAsZjp1TJ7dWD2bA=; b=Y7DyGHxPP5UQXavEC73px5mwFLDNhn+iW34/APwEZZc0GYr5x2jtGtChVwhzqMoRcb H1ZGV/HY2jlBjLkn/Ng0dJ5vYrOXTnz8Sx0GVk9W+JBqlacA/lxQ/2/+4p9eUXmlQTl6 9a/B1GDapZr5i4HImDLVymrdNZqhVNUG7tCxLJOrHN2Wj/seWseaass6UQQdVacK6Cta IgnAmy9Al+a+HDBI3Nck7HjD8zMVLWveG0pVP5N+ocfGuBUXwBPplP+FKaJJrv8f20ma D+WMFLN+HP5XJ1ZUSLD4JwCLdIyJj0G12gu8P7pCvarzl8KqfT9+yIxEOxwXK+LbzXiR fwMw== X-Gm-Message-State: AOJu0YweCknexDYKVluPJEB6C4h94sfUjjpTeTw4qnAaXUFPvVTYL9Br +OcCY+r5y4/Nhbp4McjGLP6zCeFkYoNjQZrBO9lWPQTFbLqjg66E35cg2UNKGXYp7f3idIaN5wp idw/60R3SO6SarOgpIXv6ZbOgI+l/J/pMIUgdxtaBawiYgAhWBWGU1BuJes5/QqxQXnCVHuHMFb /T X-Received: by 2002:a05:6512:1250:b0:50b:c541:bcd7 with SMTP id fb16-20020a056512125000b0050bc541bcd7mr1344680lfb.60.1701446082699; Fri, 01 Dec 2023 07:54:42 -0800 (PST) X-Google-Smtp-Source: AGHT+IEb03YZ6vtf9rXH2t+xG0ysE5GSjyRHEh2LSdWfH/5VNx1KCRoVd0723sL8FvbzNL/7IFs9sg== X-Received: by 2002:a05:6512:1250:b0:50b:c541:bcd7 with SMTP id fb16-20020a056512125000b0050bc541bcd7mr1344594lfb.60.1701446078731; Fri, 01 Dec 2023 07:54:38 -0800 (PST) Received: from localhost ([37.169.169.39]) by smtp.gmail.com with ESMTPSA id d9-20020a05600c34c900b0040b2c195523sm9645258wmq.31.2023.12.01.07.54.05 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 01 Dec 2023 07:54:36 -0800 (PST) Received: by localhost (Postfix, from userid 1000) id 88B355077C43; Fri, 1 Dec 2023 16:54:04 +0100 (CET) From: Dodji Seketeli To: libabigail@sourceware.org Subject: [PATCH 1/4, applied] Improve type naming Organization: Red Hat / France References: <87v89hncoo.fsf@redhat.com> X-Operating-System: AlmaLinux 9.2 X-URL: http://www.redhat.com Date: Fri, 01 Dec 2023 16:54:04 +0100 In-Reply-To: <87v89hncoo.fsf@redhat.com> (Dodji Seketeli's message of "Fri, 01 Dec 2023 16:51:35 +0100") Message-ID: <87r0k5nckj.fsf@redhat.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-Mailman-Approved-At: Fri, 01 Dec 2023 16:28:48 +0000 X-BeenThere: libabigail@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Mailing list of the Libabigail project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libabigail-bounces+patchwork=sourceware.org@sourceware.org Hello, There are a number of glitches when pretty-printing type names. This is particularly true for derived types like pointer to functions, array of pointer to functions and the likes. For instance, we can see in tests/data/test-abidiff-exit/PR30048-test-2-report-1.txt that a function N that takes no parameter and returns a pointer to an array of 7 int is pretty-printed as: int[7]* N() That obviously doesn't respect the type naming rules of C or C++. With this patch, function N is declared as: int(*N(void))[7] To learn more about the impact of the patch on how types are pretty-printed, you can look at the parts of the patch that are adjustments to the expected output of the regression tests. For instance, here is how the expected output of type pretty-printing in tests/data/test-abidiff-exit/PR30048-test-2 is modified by this patch: diff --git a/tests/data/test-abidiff-exit/PR30048-test-2-report-1.txt b/tests/data/test-abidiff-exit/PR30048-test-2-report-1.txt index 2650b5a0..7bbbc2e2 100644 --- a/tests/data/test-abidiff-exit/PR30048-test-2-report-1.txt +++ b/tests/data/test-abidiff-exit/PR30048-test-2-report-1.txt @@ -3,22 +3,22 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable 7 functions with some indirect sub-type change: - [C] 'function int[7]* N()' at PR30048-test-2-v0.cc:62:1 has some indirect sub-type changes: + [C] 'function int(*N(void))[7]' at PR30048-test-2-v0.cc:62:1 has some indirect sub-type changes: return type changed: - entity changed from 'int[7]*' to 'int' + entity changed from 'int(*)[7]' to 'int' type size changed from 64 to 32 (in bits) - [C] 'function int* O()' at PR30048-test-2-v0.cc:64:1 has some indirect sub-type changes: + [C] 'function int* O(void)' at PR30048-test-2-v0.cc:64:1 has some indirect sub-type changes: return type changed: entity changed from 'int*' to 'int' type size changed from 64 to 32 (in bits) - [C] 'function int ()* P()' at PR30048-test-2-v0.cc:67:1 has some indirect sub-type changes: + [C] 'function int (*P(void))(void)' at PR30048-test-2-v0.cc:67:1 has some indirect sub-type changes: return type changed: - entity changed from 'int ()*' to 'int' + entity changed from 'int (*)(void)' to 'int' type size changed from 64 to 32 (in bits) Note that the change to the CTF test tests/data/test-read-ctf/test9.o.abi is triggered by a change in the sorting of types because types are sorted alphabetically. All in all, this is clearly an overdue improvement to the type name pretty-printing. * include/abg-fwd.h (is_npaf_type, is_pointer_to_function_type) (is_pointer_to_array_type, is_pointer_to_npaf_type): Declare new functions. (is_pointer_type, is_reference_type, is_array_type): Take a boolean parameter to look through qualifiers. * include/abg-ir.h (is_pointer_type): Do not make this function a friend of the type_or_decl_base class anymore. * src/abg-ir.cc (pointer_declaration_name, array_declaration_name) (stream_pretty_representation_of_fn_parms) (add_outer_pointer_to_fn_type_expr) (add_outer_pointer_to_array_type_expr): Define new static functions. (is_npaf_type, is_pointer_to_function_type) (is_pointer_to_array_type, is_pointer_to_npaf_type): Define new functions. (get_type_representation): Remove the overload for array_type_def. (get_function_type_name, get_method_type_name) (function_decl::get_pretty_representation_of_declarator): Use the new stream_pretty_representation_of_fn_parms. This actually factorizes parameters pretty-printing by reusing stream_pretty_representation_of_fn_parms. (is_pointer_type, is_reference_type, is_array_type): Take a boolean parameter to look through qualifiers. (is_void_pointer_type): Use const where it's due. (pointer_type_def::get_qualified_name): Use the new pointer_declaration_name in lieu of the old and removed get_name_of_pointer_to_type. (array_type_def::{get_pretty_representation, get_qualified_name}): Use the new array_declaration_name instead of the old and removed get_type_representation. (var_decl::get_pretty_representation): Use the new array_declaration_name and pointer_declaration_name. (function_decl::get_pretty_representation): Use the new add_outer_pointer_to_array_type_expr, and add_outer_pointer_to_array_type_expr function to support the proper syntax for function returning pointers and arrays. (function_decl::parameter::get_pretty_representation): Fix the pretty-printing of each function parameter. * tests/data/test-abicompat/test0-fn-changed-report-0.txt: Adjust. * tests/data/test-abicompat/test0-fn-changed-report-2.txt: Likewise. * tests/data/test-abicompat/test1-fn-removed-report-0.txt: Likewise. * tests/data/test-abicompat/test3-fn-removed-report-0.txt: Likewise. * tests/data/test-abidiff-exit/PR30048-test-2-report-1.txt: Likewise. * tests/data/test-abidiff-exit/PR30048-test-report-0.txt: Likewise. * tests/data/test-abidiff-exit/PR30329/PR30329-report-1.txt: Likewise. * tests/data/test-abidiff-exit/PR30503/libsdl/libsdl-1.2.60-1.2.64-report.txt: Likewise. * tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/test1-ada-subrange-report-1.txt: Likewise. * tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/test1-ada-subrange-report-2.txt: Likewise. * tests/data/test-abidiff-exit/qualifier-typedef-array-report-1.txt: Likewise. * tests/data/test-abidiff-exit/test-fun-param-report.txt: Likewise. * tests/data/test-abidiff-exit/test-ld-2.28-210.so--ld-2.28-211.so.txt: Likewise. * tests/data/test-abidiff-exit/test-leaf-fun-type-report.txt: Likewise. * tests/data/test-abidiff-exit/test-leaf-more-report.txt: Likewise. * tests/data/test-abidiff-exit/test-leaf-peeling-report.txt: Likewise. * tests/data/test-abidiff-exit/test-leaf-stats-report.txt: Likewise. * tests/data/test-abidiff-exit/test-net-change-report0.txt: Likewise. * tests/data/test-abidiff-exit/test-net-change-report2.txt: Likewise. * tests/data/test-abidiff-exit/test2-filtered-removed-fns-report0.txt: Likewise. * tests/data/test-abidiff/test-PR18791-report0.txt: Likewise. * tests/data/test-abidiff/test-crc-report-0-1.txt: Likewise. * tests/data/test-abidiff/test-crc-report-1-0.txt: Likewise. * tests/data/test-abidiff/test-crc-report-1-2.txt: Likewise. * tests/data/test-annotate/test13-pr18894.so.abi: Likewise. * tests/data/test-annotate/test14-pr18893.so.abi: Likewise. * tests/data/test-annotate/test15-pr18892.so.abi: Likewise. * tests/data/test-annotate/test17-pr19027.so.abi: Likewise. * tests/data/test-annotate/test18-pr19037-libvtkRenderingLIC-6.1.so.abi: Likewise. * tests/data/test-annotate/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. * tests/data/test-annotate/test20-pr19025-libvtkParallelCore-6.1.so.abi: Likewise. * tests/data/test-annotate/test21-pr19092.so.abi: Likewise. * tests/data/test-annotate/test7.so.abi: Likewise. * tests/data/test-diff-dwarf/PR25058-liblttng-ctl-report-1.txt: Likewise. * tests/data/test-diff-dwarf/test-23-diff-arch-report-0.txt: Likewise. * tests/data/test-diff-dwarf/test18-alias-sym-report-0.txt: Likewise. * tests/data/test-diff-dwarf/test19-soname-report-0.txt: Likewise. * tests/data/test-diff-dwarf/test24-added-fn-parms-report-0.txt: Likewise. * tests/data/test-diff-dwarf/test32-fnptr-changes-report-0.txt: Likewise. * tests/data/test-diff-dwarf/test33-fnref-changes-report-0.txt: Likewise. * tests/data/test-diff-dwarf/test41-PR20476-hidden-report-0.txt: Likewise. * tests/data/test-diff-dwarf/test5-report.txt: Likewise. * tests/data/test-diff-filter/test-PR26739-2-report-0.txt: Likewise. * tests/data/test-diff-filter/test26-qualified-redundant-node-report-0.txt: Likewise. * tests/data/test-diff-filter/test26-qualified-redundant-node-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/test31-pr18535-libstdc++-report-0.txt: Likewise. * tests/data/test-diff-filter/test31-pr18535-libstdc++-report-1.txt: Likewise. * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-0.txt: Likewise. * tests/data/test-diff-filter/test35-pr18754-no-added-syms-report-1.txt: Likewise. * tests/data/test-diff-filter/test41-report-0.txt: Likewise. * tests/data/test-diff-filter/test6-report.txt: Likewise. * tests/data/test-diff-filter/test7-report.txt: Likewise. * tests/data/test-diff-pkg/GtkAda-gl-2.24.2-29.fc29.x86_64--2.24.2-30.fc30.x86_64-report-0.txt: Likewise. * tests/data/test-diff-pkg/PR24690/PR24690-report-0.txt: Likewise. * tests/data/test-diff-pkg/libsigc++-2.0-0c2a_2.4.0-1_amd64--libsigc++-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt: Likewise. * tests/data/test-diff-pkg/libxcrypt-4.1.1-6.el8.x86_64--libxcrypt-compat-4.4.18-3.el9.x86_64-report-1.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-diff-pkg/spice-server-0.12.4-19.el7.x86_64-0.12.8-1.el7.x86_64-report-3.txt: Likewise. * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-0.txt: Likewise. * tests/data/test-diff-pkg/tbb-4.1-9.20130314.fc22.x86_64--tbb-4.3-3.20141204.fc23.x86_64-report-1.txt: Likewise. * tests/data/test-diff-pkg-ctf/gmp-6.x.x86_64-report-0.txt: Likewise. * tests/data/test-diff-pkg-ctf/test-rpm-report-0.txt: Likewise. * tests/data/test-diff-suppr/test0-type-suppr-report-0.txt: Likewise. * tests/data/test-diff-suppr/test0-type-suppr-report-3.txt: Likewise. * tests/data/test-diff-suppr/test0-type-suppr-report-5.txt: Likewise. * tests/data/test-diff-suppr/test0-type-suppr-report-7.txt: Likewise. * tests/data/test-diff-suppr/test15-suppr-added-fn-report-0.txt: Likewise. * tests/data/test-diff-suppr/test15-suppr-added-fn-report-2.txt: Likewise. * tests/data/test-diff-suppr/test15-suppr-added-fn-report-5.txt: Likewise. * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-0.txt: Likewise. * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-3.txt: Likewise. * tests/data/test-diff-suppr/test16-suppr-removed-fn-report-5.txt: Likewise. * tests/data/test-diff-suppr/test27-add-aliased-function-report-0.txt: Likewise. * tests/data/test-diff-suppr/test27-add-aliased-function-report-3.txt: Likewise. * tests/data/test-diff-suppr/test27-add-aliased-function-report-4.txt: Likewise. * tests/data/test-diff-suppr/test28-add-aliased-function-report-0.txt: Likewise. * tests/data/test-diff-suppr/test28-add-aliased-function-report-1.txt: Likewise. * tests/data/test-diff-suppr/test28-add-aliased-function-report-2.txt: Likewise. * tests/data/test-diff-suppr/test28-add-aliased-function-report-4.txt: Likewise. * tests/data/test-diff-suppr/test28-add-aliased-function-report-5.txt: Likewise. * tests/data/test-diff-suppr/test30-report-0.txt: Likewise. * tests/data/test-diff-suppr/test32-report-0.txt: Likewise. * tests/data/test-diff-suppr/test32-report-1.txt: Likewise. * tests/data/test-diff-suppr/test44-suppr-sym-name-not-regexp-report-1.txt: Likewise. * tests/data/test-fedabipkgdiff/vte291-0.39.1-1.fc22.x86_64--vte291-0.39.90-1.fc22.x86_64-report-0.txt: Likewise. * tests/data/test-read-ctf/test9.o.abi: Likewise. * tests/data/test-read-dwarf/PR22122-libftdc.so.abi: Likewise. * tests/data/test-read-dwarf/PR25007-sdhci.ko.abi: Likewise. * tests/data/test-read-dwarf/test-libaaudio.so.abi: Likewise. * tests/data/test-read-dwarf/test-libandroid.so.abi: Likewise. * tests/data/test-read-dwarf/test11-pr18828.so.abi: Likewise. * tests/data/test-read-dwarf/test12-pr18844.so.abi: Likewise. * tests/data/test-read-dwarf/test13-pr18894.so.abi: Likewise. * tests/data/test-read-dwarf/test14-pr18893.so.abi: Likewise. * tests/data/test-read-dwarf/test15-pr18892.so.abi: Likewise. * tests/data/test-read-dwarf/test16-pr18904.so.abi: Likewise. * tests/data/test-read-dwarf/test17-pr19027.so.abi: Likewise. * tests/data/test-read-dwarf/test19-pr19023-libtcmalloc_and_profiler.so.abi: Likewise. * tests/data/test-read-dwarf/test21-pr19092.so.abi: Likewise. * tests/data/test-read-dwarf/test22-pr19097-libstdc++.so.6.0.17.so.abi: Likewise. * tests/data/test-read-dwarf/test7.so.abi: Likewise. * tests/data/test-read-dwarf/test7.so.hash.abi: Likewise. Signed-off-by: Dodji Seketeli Applied to master. --- include/abg-fwd.h | 34 +- include/abg-ir.h | 3 - src/abg-ir.cc | 1017 ++- .../test0-fn-changed-report-0.txt | 4 +- .../test0-fn-changed-report-2.txt | 4 +- .../test1-fn-removed-report-0.txt | 2 +- .../test3-fn-removed-report-0.txt | 2 +- .../PR30048-test-2-report-1.txt | 78 +- .../PR30048-test-report-0.txt | 14 +- .../PR30329/PR30329-report-1.txt | 4 +- .../libsdl/libsdl-1.2.60-1.2.64-report.txt | 10 +- .../test1-ada-subrange-report-1.txt | 4 +- .../test1-ada-subrange-report-2.txt | 4 +- .../qualifier-typedef-array-report-1.txt | 8 +- .../test-fun-param-report.txt | 2 +- .../test-ld-2.28-210.so--ld-2.28-211.so.txt | 8 +- .../test-leaf-fun-type-report.txt | 4 +- .../test-leaf-more-report.txt | 6 +- .../test-leaf-peeling-report.txt | 4 +- .../test-leaf-stats-report.txt | 2 +- .../test-net-change-report0.txt | 6 +- .../test-net-change-report2.txt | 6 +- .../test2-filtered-removed-fns-report0.txt | 2 +- .../test-abidiff/test-PR18791-report0.txt | 8 +- .../data/test-abidiff/test-crc-report-0-1.txt | 2 +- .../data/test-abidiff/test-crc-report-1-0.txt | 2 +- .../data/test-abidiff/test-crc-report-1-2.txt | 2 +- .../data/test-annotate/test13-pr18894.so.abi | 306 +- .../data/test-annotate/test14-pr18893.so.abi | 320 +- .../data/test-annotate/test15-pr18892.so.abi | 2868 ++++----- .../data/test-annotate/test17-pr19027.so.abi | 3100 ++++----- ...st18-pr19037-libvtkRenderingLIC-6.1.so.abi | 36 +- ...19-pr19023-libtcmalloc_and_profiler.so.abi | 1616 ++--- ...st20-pr19025-libvtkParallelCore-6.1.so.abi | 74 +- .../data/test-annotate/test21-pr19092.so.abi | 274 +- tests/data/test-annotate/test7.so.abi | 24 +- .../PR25058-liblttng-ctl-report-1.txt | 40 +- .../test-23-diff-arch-report-0.txt | 2 +- .../test18-alias-sym-report-0.txt | 2 +- .../test19-soname-report-0.txt | 2 +- .../test24-added-fn-parms-report-0.txt | 2 +- .../test32-fnptr-changes-report-0.txt | 20 +- .../test33-fnref-changes-report-0.txt | 20 +- .../test41-PR20476-hidden-report-0.txt | 2 +- tests/data/test-diff-dwarf/test5-report.txt | 2 +- .../test-PR26739-2-report-0.txt | 2 +- ...st26-qualified-redundant-node-report-0.txt | 2 +- ...st26-qualified-redundant-node-report-1.txt | 4 +- .../test30-pr18904-rvalueref-report0.txt | 80 +- .../test30-pr18904-rvalueref-report1.txt | 80 +- .../test30-pr18904-rvalueref-report2.txt | 80 +- .../test31-pr18535-libstdc++-report-0.txt | 18 +- .../test31-pr18535-libstdc++-report-1.txt | 18 +- .../test35-pr18754-no-added-syms-report-0.txt | 62 +- .../test35-pr18754-no-added-syms-report-1.txt | 12 +- .../data/test-diff-filter/test41-report-0.txt | 2 +- tests/data/test-diff-filter/test6-report.txt | 2 +- tests/data/test-diff-filter/test7-report.txt | 2 +- .../gmp-6.x.x86_64-report-0.txt | 4 +- .../test-diff-pkg-ctf/test-rpm-report-0.txt | 2 +- ...x86_64--2.24.2-30.fc30.x86_64-report-0.txt | 4 +- .../PR24690/PR24690-report-0.txt | 10 +- ...-2.0-0v5_2.4.1-1ubuntu2_amd64-report-0.txt | 6 +- ...pt-compat-4.4.18-3.el9.x86_64-report-1.txt | 2 +- ...l7.x86_64-0.12.8-1.el7.x86_64-report-2.txt | 124 +- ...l7.x86_64-0.12.8-1.el7.x86_64-report-3.txt | 2 +- ...bb-4.3-3.20141204.fc23.x86_64-report-0.txt | 32 +- ...bb-4.3-3.20141204.fc23.x86_64-report-1.txt | 8 +- .../test0-type-suppr-report-0.txt | 2 +- .../test0-type-suppr-report-3.txt | 2 +- .../test0-type-suppr-report-5.txt | 2 +- .../test0-type-suppr-report-7.txt | 2 +- .../test15-suppr-added-fn-report-0.txt | 2 +- .../test15-suppr-added-fn-report-2.txt | 2 +- .../test15-suppr-added-fn-report-5.txt | 2 +- .../test16-suppr-removed-fn-report-0.txt | 2 +- .../test16-suppr-removed-fn-report-3.txt | 2 +- .../test16-suppr-removed-fn-report-5.txt | 2 +- .../test27-add-aliased-function-report-0.txt | 2 +- .../test27-add-aliased-function-report-3.txt | 2 +- .../test27-add-aliased-function-report-4.txt | 2 +- .../test28-add-aliased-function-report-0.txt | 2 +- .../test28-add-aliased-function-report-1.txt | 2 +- .../test28-add-aliased-function-report-2.txt | 2 +- .../test28-add-aliased-function-report-4.txt | 2 +- .../test28-add-aliased-function-report-5.txt | 2 +- .../data/test-diff-suppr/test30-report-0.txt | 2 +- .../data/test-diff-suppr/test32-report-0.txt | 4 +- .../data/test-diff-suppr/test32-report-1.txt | 2 +- ...t44-suppr-sym-name-not-regexp-report-1.txt | 2 +- ...-vte291-0.39.90-1.fc22.x86_64-report-0.txt | 2 +- tests/data/test-read-ctf/test9.o.abi | 14 +- .../test-read-dwarf/PR22122-libftdc.so.abi | 330 +- .../data/test-read-dwarf/PR25007-sdhci.ko.abi | 1366 ++-- .../test-read-dwarf/test-libaaudio.so.abi | 26 +- .../test-read-dwarf/test-libandroid.so.abi | 1220 ++-- .../test-read-dwarf/test11-pr18828.so.abi | 5560 ++++++++--------- .../test-read-dwarf/test12-pr18844.so.abi | 1842 +++--- .../test-read-dwarf/test13-pr18894.so.abi | 164 +- .../test-read-dwarf/test14-pr18893.so.abi | 20 +- .../test-read-dwarf/test15-pr18892.so.abi | 1606 ++--- .../test-read-dwarf/test16-pr18904.so.abi | 644 +- .../test-read-dwarf/test17-pr19027.so.abi | 2790 ++++----- ...19-pr19023-libtcmalloc_and_profiler.so.abi | 950 +-- .../test-read-dwarf/test21-pr19092.so.abi | 48 +- .../test22-pr19097-libstdc++.so.6.0.17.so.abi | 562 +- tests/data/test-read-dwarf/test7.so.abi | 14 +- tests/data/test-read-dwarf/test7.so.hash.abi | 10 +- 108 files changed, 14188 insertions(+), 13536 deletions(-) diff --git a/include/abg-fwd.h b/include/abg-fwd.h index de5b72b0..3687d346 100644 --- a/include/abg-fwd.h +++ b/include/abg-fwd.h @@ -436,6 +436,9 @@ is_anonymous_type(const type_base*); bool is_anonymous_type(const type_base_sptr&); +bool +is_npaf_type(const type_base_sptr&); + const type_decl* is_type_decl(const type_or_decl_base*); @@ -536,26 +539,35 @@ is_compatible_with_class_type(const type_base_sptr&); class_decl_sptr is_compatible_with_class_type(const decl_base_sptr&); -pointer_type_def* -is_pointer_type(type_or_decl_base*); - const pointer_type_def* -is_pointer_type(const type_or_decl_base*); +is_pointer_type(const type_or_decl_base*, + bool look_through_qualifiers=false); + +pointer_type_def_sptr +is_pointer_type(const type_or_decl_base_sptr&, + bool look_through_qualifiers=false); + +pointer_type_def_sptr +is_pointer_to_function_type(const type_base_sptr&); + +pointer_type_def_sptr +is_pointer_to_array_type(const type_base_sptr&); pointer_type_def_sptr -is_pointer_type(const type_or_decl_base_sptr&); +is_pointer_to_npaf_type(const type_base_sptr&); bool is_typedef_ptr_or_ref_to_decl_only_class_or_union_type(const type_base* t); reference_type_def* -is_reference_type(type_or_decl_base*); +is_reference_type(type_or_decl_base*, bool look_through_qualifiers=false); const reference_type_def* -is_reference_type(const type_or_decl_base*); +is_reference_type(const type_or_decl_base*, bool look_through_qualifiers=false); reference_type_def_sptr -is_reference_type(const type_or_decl_base_sptr&); +is_reference_type(const type_or_decl_base_sptr&, + bool look_through_qualifiers=false); const type_base* is_void_pointer_type(const type_base*); @@ -799,10 +811,12 @@ const class_or_union_sptr data_member_has_anonymous_type(const var_decl_sptr& d); array_type_def* -is_array_type(const type_or_decl_base* decl); +is_array_type(const type_or_decl_base* decl, + bool look_through_qualifiers = false); array_type_def_sptr -is_array_type(const type_or_decl_base_sptr& decl); +is_array_type(const type_or_decl_base_sptr& decl, + bool look_through_qualifiers = false); array_type_def_sptr is_array_of_qualified_element(const type_base_sptr&); diff --git a/include/abg-ir.h b/include/abg-ir.h index 0cb378ad..8ed8d734 100644 --- a/include/abg-ir.h +++ b/include/abg-ir.h @@ -1485,9 +1485,6 @@ public: friend class_decl* is_class_type(const type_or_decl_base*); - friend pointer_type_def* - is_pointer_type(type_or_decl_base*); - friend type_base* is_type(const type_or_decl_base*); diff --git a/src/abg-ir.cc b/src/abg-ir.cc index 78a4dfe0..06cfe558 100644 --- a/src/abg-ir.cc +++ b/src/abg-ir.cc @@ -221,6 +221,49 @@ update_qualified_name(decl_base * d); static void update_qualified_name(decl_base_sptr d); +static interned_string +pointer_declaration_name(const type_base* ptr, + const string& variable_name, + bool qualified, bool internal); + +static interned_string +pointer_declaration_name(const type_base_sptr& ptr, + const string& variable_name, + bool qualified, bool internal); + +static interned_string +array_declaration_name(const array_type_def* array, + const string& variable_name, + bool qualified, bool internal); + +static interned_string +array_declaration_name(const array_type_def_sptr& array, + const string& variable_name, + bool qualified, bool internal); + +static void +stream_pretty_representation_of_fn_parms(const function_type& fn_type, + ostream& o, bool qualified, + bool internal); +static string +add_outer_pointer_to_fn_type_expr(const type_base* pointer_to_fn, + const string& input, bool qualified, + bool internal); + +static string +add_outer_pointer_to_fn_type_expr(const type_base_sptr& pointer_to_fn, + const string& input, bool qualified, + bool internal); + +static string +add_outer_pointer_to_array_type_expr(const type_base* pointer_to_ar, + const string& input, bool qualified, + bool internal); + +static string +add_outer_pointer_to_array_type_expr(const type_base_sptr& pointer_to_ar, + const string& input, bool qualified, + bool internal); void push_composite_type_comparison_operands(const type_base& left, const type_base& right); @@ -9121,24 +9164,10 @@ get_function_type_name(const function_type& fn_type, : fn_type.get_return_type(); const environment& env = fn_type.get_environment(); - o << get_pretty_representation(return_type, internal); - - o << " ("; - type_base_sptr type; - for (function_type::parameters::const_iterator i = - fn_type.get_parameters().begin(); - i != fn_type.get_parameters().end(); - ++i) - { - if (i != fn_type.get_parameters().begin()) - o << ", "; - type = (*i)->get_type(); - if (internal) - type = peel_typedef_type(type); - o << get_pretty_representation(type, internal); - } - o <<")"; - + o << get_pretty_representation(return_type, internal) << " "; + stream_pretty_representation_of_fn_parms(fn_type, o, + /*qualified=*/true, + internal); return env.intern(o.str()); } @@ -9236,28 +9265,10 @@ get_method_type_name(const method_type& fn_type, class_or_union_sptr class_type = fn_type.get_class_type(); ABG_ASSERT(class_type); - o << " (" << class_type->get_qualified_name(internal) << "::*)" - << " ("; - - type_base_sptr type; - for (function_type::parameters::const_iterator i = - fn_type.get_parameters().begin(); - i != fn_type.get_parameters().end(); - ++i) - { - if (i != fn_type.get_parameters().begin()) - o << ", "; - type = (*i)->get_type(); - if (internal) - type = peel_typedef_type(type); - if (*i) - o << type->get_cached_pretty_representation(internal); - else - // There are still some abixml files out there in which "void" - // can be expressed as an empty type. - o << "void"; - } - o <<")"; + o << " (" << class_type->get_qualified_name(internal) << "::*) "; + stream_pretty_representation_of_fn_parms(fn_type, o, + /*qualified=*/true, + internal); return env.intern(o.str()); } @@ -10563,6 +10574,21 @@ bool is_anonymous_type(const type_base_sptr& t) {return is_anonymous_type(t.get());} +/// Test if a type is a neither a pointer, an array nor a function +/// type. +/// +/// @param t the type to consider. +/// +/// @return true if the @p t is NOT a pointer, an array nor a +/// function. +bool +is_npaf_type(const type_base_sptr& t) +{ + if (!(is_pointer_type(t) || is_array_type(t) || is_function_type(t))) + return true; + return false; +} + /// Test whether a type is a type_decl (a builtin type). /// /// @return the type_decl* for @t if it's type_decl, otherwise, return @@ -11055,43 +11081,97 @@ is_union_type(const shared_ptr& t) /// /// @param t the type to test. /// +/// @param look_through_decl_only if this is true, then look through +/// qualified types to see if the underlying type is a +/// pointer_type_def. +/// /// @return the @ref pointer_type_def_sptr if @p t is a /// pointer_type_def, null otherwise. -pointer_type_def* -is_pointer_type(type_or_decl_base* t) +const pointer_type_def* +is_pointer_type(const type_or_decl_base* t, + bool look_through_qualifiers) { if (!t) return 0; - if (t->kind() & type_or_decl_base::POINTER_TYPE) - return reinterpret_cast - (const_cast(t)->runtime_type_instance()); + const type_base* type = is_type(t); + if (look_through_qualifiers) + type = peel_qualified_type(is_type(t)); - return 0; + return dynamic_cast(const_cast(type)); } /// Test whether a type is a pointer_type_def. /// /// @param t the type to test. /// +/// @param look_through_decl_only if this is true, then look through +/// qualified types to see if the underlying type is a +/// pointer_type_def. +/// /// @return the @ref pointer_type_def_sptr if @p t is a /// pointer_type_def, null otherwise. -const pointer_type_def* -is_pointer_type(const type_or_decl_base* t) +pointer_type_def_sptr +is_pointer_type(const type_or_decl_base_sptr &t, + bool look_through_qualifiers) { - return is_pointer_type(const_cast(t)); + type_base_sptr type = is_type(t); + if (look_through_qualifiers) + type = peel_qualified_type(type); + return dynamic_pointer_cast(type); } -/// Test whether a type is a pointer_type_def. +/// Test if a type is a pointer to function type. /// -/// @param t the type to test. +/// @param t the type to consider. /// -/// @return the @ref pointer_type_def_sptr if @p t is a -/// pointer_type_def, null otherwise. +/// @return the @ref pointer_type_def_sptr iff @p t is a pointer to +/// function type. pointer_type_def_sptr -is_pointer_type(const type_or_decl_base_sptr &t) -{return dynamic_pointer_cast(t);} +is_pointer_to_function_type(const type_base_sptr& t) +{ + if (pointer_type_def_sptr p = is_pointer_type(t)) + { + if (is_function_type(p->get_pointed_to_type())) + return p; + } + return pointer_type_def_sptr(); +} + +/// Test if a type is a pointer to array type. +/// +/// @param t the type to consider. +/// +/// @return the pointer_type_def_sptr iff @p t is a pointer to array +/// type. +pointer_type_def_sptr +is_pointer_to_array_type(const type_base_sptr& t) +{ + if (pointer_type_def_sptr p = is_pointer_type(t)) + { + if (is_array_type(p->get_pointed_to_type())) + return p; + } + return pointer_type_def_sptr(); +} +/// Test if we are looking at a pointer to a +/// neither-a-pointer-to-an-array-nor-a-function type. +/// +/// @param t the type to consider. +/// +/// @return the @ref pointer_type_def_sptr type iff @p t is a +/// neither-a-pointer-an-array-nor-a-function type. +pointer_type_def_sptr +is_pointer_to_npaf_type(const type_base_sptr& t) +{ + if (pointer_type_def_sptr p = is_pointer_type(t)) + { + if (is_npaf_type(p->get_pointed_to_type())) + return p; + } + return pointer_type_def_sptr(); +} /// Test if a type is a typedef, pointer or reference to a decl-only /// class/union. @@ -11119,31 +11199,65 @@ is_typedef_ptr_or_ref_to_decl_only_class_or_union_type(const type_base* t) /// /// @param t the type to test. /// +/// @param look_through_decl_only if this is true, then look through +/// qualified types to see if the underlying type is a +/// reference_type_def. +/// /// @return the @ref reference_type_def_sptr if @p t is a /// reference_type_def, null otherwise. reference_type_def* -is_reference_type(type_or_decl_base* t) -{return dynamic_cast(t);} +is_reference_type(type_or_decl_base* t, + bool look_through_qualifiers) +{ + const type_base* type = is_type(t); + if (!type) + return nullptr; + + if (look_through_qualifiers) + type = peel_qualified_type(type); + return dynamic_cast(const_cast(type)); +} /// Test whether a type is a reference_type_def. /// /// @param t the type to test. /// +/// @param look_through_decl_only if this is true, then look through +/// qualified types to see if the underlying type is a +/// reference_type_def. +/// /// @return the @ref reference_type_def_sptr if @p t is a /// reference_type_def, null otherwise. const reference_type_def* -is_reference_type(const type_or_decl_base* t) -{return dynamic_cast(t);} +is_reference_type(const type_or_decl_base* t, + bool look_through_qualifiers) +{ + const type_base* type = is_type(t); + + if (look_through_qualifiers) + type = peel_qualified_type(type); + return dynamic_cast(type); +} /// Test whether a type is a reference_type_def. /// /// @param t the type to test. /// +/// @param look_through_decl_only if this is true, then look through +/// qualified types to see if the underlying type is a +/// reference_type_def. +/// /// @return the @ref reference_type_def_sptr if @p t is a /// reference_type_def, null otherwise. reference_type_def_sptr -is_reference_type(const type_or_decl_base_sptr& t) -{return dynamic_pointer_cast(t);} +is_reference_type(const type_or_decl_base_sptr& t, + bool look_through_qualifiers) +{ + type_base_sptr type = is_type(t); + if (look_through_qualifiers) + type = peel_qualified_type(type); + return dynamic_pointer_cast(type); +} /// Test if a type is equivalent to a pointer to void type. /// @@ -11226,7 +11340,7 @@ is_void_pointer_type(const type_base_sptr& t) if (t->get_environment().get_void_pointer_type().get() == t.get()) return t; - pointer_type_def* ptr = is_pointer_type(t.get()); + const pointer_type_def* ptr = is_pointer_type(t.get()); if (!ptr) return nil; @@ -11528,8 +11642,15 @@ is_function_template_pattern(const shared_ptr decl) /// /// @return true iff @p type is an array_type_def. array_type_def* -is_array_type(const type_or_decl_base* type) -{return dynamic_cast(const_cast(type));} +is_array_type(const type_or_decl_base* type, + bool look_through_qualifiers) +{ + const type_base* t = is_type(type); + + if (look_through_qualifiers) + t = peel_qualified_type(t); + return dynamic_cast(const_cast(t)); +} /// Test if a type is an array_type_def. /// @@ -11537,8 +11658,15 @@ is_array_type(const type_or_decl_base* type) /// /// @return true iff @p type is an array_type_def. array_type_def_sptr -is_array_type(const type_or_decl_base_sptr& type) -{return dynamic_pointer_cast(type);} +is_array_type(const type_or_decl_base_sptr& type, + bool look_through_qualifiers) +{ + type_base_sptr t = is_type(type); + + if (look_through_qualifiers) + t = peel_qualified_type(t); + return dynamic_pointer_cast(t); +} /// Tests if the element of a given array is a qualified type. /// @@ -17419,13 +17547,14 @@ pointer_type_def::get_qualified_name(bool internal) const if (priv_->internal_qualified_name_.empty()) if (pointed_to_type) priv_->internal_qualified_name_ = - get_name_of_pointer_to_type(*pointed_to_type, - /*qualified_name=*/ - is_typedef(pointed_to_type) - ? false - : true, - /*internal=*/true); - return priv_->internal_qualified_name_; + pointer_declaration_name(this, + /*variable_name=*/"", + /*qualified_name=*/ + is_typedef(pointed_to_type) + ? false + : true, + /*internal=*/true); + return priv_->internal_qualified_name_; } else { @@ -17435,12 +17564,13 @@ pointer_type_def::get_qualified_name(bool internal) const // function. if (pointed_to_type) priv_->temp_internal_qualified_name_ = - get_name_of_pointer_to_type(*pointed_to_type, - /*qualified_name=*/ - is_typedef(pointed_to_type) - ? false - : true, - /*internal=*/true); + pointer_declaration_name(this, + /*variable_name=*/"", + /*qualified_name=*/ + is_typedef(pointed_to_type) + ? false + : true, + /*internal=*/true); return priv_->temp_internal_qualified_name_; } } @@ -17450,9 +17580,10 @@ pointer_type_def::get_qualified_name(bool internal) const { if (decl_base::peek_qualified_name().empty()) set_qualified_name - (get_name_of_pointer_to_type(*pointed_to_type, - /*qualified_name=*/true, - /*internal=*/false)); + (pointer_declaration_name(this, + /*variable_name=*/"", + /*qualified_name=*/true, + /*internal=*/false)); return decl_base::peek_qualified_name(); } else @@ -17463,9 +17594,10 @@ pointer_type_def::get_qualified_name(bool internal) const // function. if (pointed_to_type) set_qualified_name - (get_name_of_pointer_to_type(*pointed_to_type, - /*qualified_name=*/true, - /*internal=*/false)); + (pointer_declaration_name(this, + /*variable_name=*/"", + /*qualified_name=*/true, + /*internal=*/false)); return decl_base::peek_qualified_name(); } } @@ -18598,48 +18730,6 @@ array_type_def::get_subrange_representation() const return r; } -/// Get the string representation of an @ref array_type_def. -/// -/// @param a the array type to consider. -/// -/// @param internal set to true if the call is intended for an -/// internal use (for technical use inside the library itself), false -/// otherwise. If you don't know what this is for, then set it to -/// false. -static string -get_type_representation(const array_type_def& a, bool internal) -{ - type_base_sptr e_type = a.get_element_type(); - decl_base_sptr d = get_type_declaration(e_type); - string r; - - if (is_ada_language(a.get_language())) - { - std::ostringstream o; - o << "array (" - << a.get_subrange_representation() - << ") of " - << e_type ? e_type->get_pretty_representation(internal):string("void"); - } - else - { - if (internal) - r = (e_type - ? get_type_name(e_type, - /*qualified=*/true, - /*internal=*/true) - : string("void")) - + a.get_subrange_representation(); - else - r = (e_type - ? get_type_name(e_type, /*qualified=*/true, /*internal=*/false) - : string("void")) - + a.get_subrange_representation(); - } - - return r; -} - /// Get the pretty representation of the current instance of @ref /// array_type_def. /// @@ -18660,8 +18750,11 @@ get_type_representation(const array_type_def& a, bool internal) /// @return the pretty representation of the ABI artifact. string array_type_def::get_pretty_representation(bool internal, - bool /*qualified_name*/) const -{return get_type_representation(*this, internal);} + bool qualified_name) const +{ + return array_declaration_name(this, /*variable_name=*/"", + qualified_name, internal); +} /// Compares two instances of @ref array_type_def. /// @@ -18891,22 +18984,22 @@ array_type_def::get_qualified_name(interned_string& qn, bool internal) const const interned_string& array_type_def::get_qualified_name(bool internal) const { - const environment& env = get_environment(); - - if (internal) { if (get_canonical_type()) { if (priv_->internal_qualified_name_.empty()) priv_->internal_qualified_name_ = - env.intern(get_type_representation(*this, /*internal=*/true)); + array_declaration_name(this, /*variable_name=*/"", + /*qualified=*/false, + /*internal=*/true); return priv_->internal_qualified_name_; } else { priv_->temp_internal_qualified_name_ = - env.intern(get_type_representation(*this, /*internal=*/true)); + array_declaration_name(this, /*variable_name=*/"", + /*qualified*/false, /*internal*/true); return priv_->temp_internal_qualified_name_; } } @@ -18915,15 +19008,18 @@ array_type_def::get_qualified_name(bool internal) const if (get_canonical_type()) { if (decl_base::peek_qualified_name().empty()) - set_qualified_name(env.intern(get_type_representation - (*this, /*internal=*/false))); + set_qualified_name(array_declaration_name(this, + /*variable_name=*/"", + /*qualified=*/false, + /*internal=*/false)); return decl_base::peek_qualified_name(); } else { - set_temporary_qualified_name(env.intern(get_type_representation - (*this, - /*internal=*/false))); + set_temporary_qualified_name + (array_declaration_name(this, /*variable_name=*/"", + /*qualified=*/false, + /*internal=*/false)); return decl_base::peek_temporary_qualified_name(); } } @@ -20433,7 +20529,10 @@ var_decl::get_pretty_representation(bool internal, bool qualified_name) const if (scope->get_is_anonymous()) member_of_anonymous_class = true; - if (array_type_def_sptr t = is_array_type(get_type())) + type_base_sptr type = get_type(); + if (is_array_type(type, /*look_through_qualifiers=*/true) + || is_pointer_type(type, /*look_through_qualifiers=*/true) + || is_reference_type(type, /*look_through_qualifiers=*/true)) { string name; if (member_of_anonymous_class || !qualified_name) @@ -20441,12 +20540,22 @@ var_decl::get_pretty_representation(bool internal, bool qualified_name) const else name = get_qualified_name(internal); - type_base_sptr et = t->get_element_type(); - ABG_ASSERT(et); - decl_base_sptr decl = get_type_declaration(et); - ABG_ASSERT(decl); - result += decl->get_qualified_name(internal) - + " " + name + t->get_subrange_representation(); + if (qualified_type_def_sptr q = is_qualified_type(type)) + { + string quals_repr = + get_string_representation_of_cv_quals(q->get_cv_quals()); + if (!quals_repr.empty()) + name = quals_repr + " " + name; + type = peel_qualified_type(type); + } + + name = string(" ") + name; + if (array_type_def_sptr t = is_array_type(type)) + result += array_declaration_name(t, name, qualified_name, internal); + else if (pointer_type_def_sptr t = is_pointer_type(type)) + result += pointer_declaration_name(t, name, qualified_name, internal); + else if (reference_type_def_sptr t = is_reference_type(type)) + result += pointer_declaration_name(t, name, qualified_name, internal); } else { @@ -21425,32 +21534,48 @@ function_decl::get_pretty_representation(bool internal, const method_decl* mem_fn = dynamic_cast(this); - string result = mem_fn ? "method ": "function "; + string fn_prefix = mem_fn ? "method ": "function "; + string result; if (mem_fn && is_member_function(mem_fn) && get_member_function_is_virtual(mem_fn)) - result += "virtual "; + fn_prefix += "virtual "; - decl_base_sptr type; + decl_base_sptr return_type; if ((mem_fn && is_member_function(mem_fn) && (get_member_function_is_dtor(*mem_fn) || get_member_function_is_ctor(*mem_fn)))) /*cdtors do not have return types. */; else - type = mem_fn + return_type = mem_fn ? get_type_declaration(mem_fn->get_type()->get_return_type()) : get_type_declaration(get_type()->get_return_type()); - if (type) - result += get_type_name(is_type(type).get(), - qualified_name, - internal) + " "; - - result += get_pretty_representation_of_declarator(internal); + result = get_pretty_representation_of_declarator(internal); + if (return_type) + { + if (is_npaf_type(is_type(return_type)) + || !(is_pointer_to_function_type(is_type(return_type)) + || is_pointer_to_array_type(is_type(return_type)))) + result = get_type_name(is_type(return_type).get(), qualified_name, + internal) + " " + result; + else if (pointer_type_def_sptr p = + is_pointer_to_function_type(is_type(return_type))) + result = add_outer_pointer_to_fn_type_expr(p, result, + /*qualified=*/true, + internal); + else if(pointer_type_def_sptr p = + is_pointer_to_array_type(is_type(return_type))) + result = add_outer_pointer_to_array_type_expr(p, result, + qualified_name, + internal); + else + ABG_ASSERT_NOT_REACHED; + } - return result; + return fn_prefix + result; } /// Compute and return the pretty representation for the part of the @@ -21486,35 +21611,12 @@ function_decl::get_pretty_representation_of_declarator (bool internal) const else result += get_qualified_name(); - result += "("; - - parameters::const_iterator i = get_parameters().begin(), - end = get_parameters().end(); - - // Skip the first parameter if this is a method. - if (mem_fn && i != end) - ++i; - parameter_sptr parm; - parameter_sptr first_parm; - if (i != end) - first_parm = *i; - for (; i != end; ++i) - { - parm = *i; - if (parm.get() != first_parm.get()) - result += ", "; - if (parm->get_variadic_marker() - || get_environment().is_variadic_parameter_type(parm->get_type())) - result += "..."; - else - { - type_base_sptr type = parm->get_type(); - if (internal) - type = peel_typedef_type(type); - result += get_type_name(type, /*qualified=*/true, internal); - } - } - result += ")"; + std::ostringstream fn_parms; + stream_pretty_representation_of_fn_parms(*get_type(), + fn_parms, + /*qualified=*/true, + internal); + result += fn_parms.str(); if (mem_fn &&((is_member_function(mem_fn) && get_member_function_is_const(*mem_fn)) @@ -22326,7 +22428,7 @@ function_decl::parameter::get_qualified_name(interned_string& qualified_name, /// function parameter. string function_decl::parameter::get_pretty_representation(bool internal, - bool /*qualified_name*/) const + bool qualified_name) const { const environment& env = get_environment(); @@ -22337,7 +22439,7 @@ function_decl::parameter::get_pretty_representation(bool internal, else if (env.is_variadic_parameter_type(t)) type_repr = "..."; else - type_repr = ir::get_pretty_representation(t, internal); + type_repr = ir::get_type_name(t, qualified_name, internal); string result = type_repr; string parm_name = get_name_id(); @@ -27775,6 +27877,545 @@ find_last_data_member_matching_regexp(const class_or_union& t, return var_decl_sptr(); } +/// Emit the pretty representation of the parameters of a function +/// type. +/// +/// @param fn_type the function type to consider. +/// +/// @param o the output stream to emit the pretty representation to. +/// +/// @param qualified if true, emit fully qualified names. +/// +/// @param internal if true, then the result is to be used for the +/// purpose of type canonicalization. +static void +stream_pretty_representation_of_fn_parms(const function_type& fn_type, + ostream& o, bool qualified, + bool internal) +{ + o << "("; + if (fn_type.get_parameters().empty()) + o << "void"; + else + { + type_base_sptr type; + auto end = fn_type.get_parameters().end(); + auto first_parm = fn_type.get_first_non_implicit_parm(); + function_decl::parameter_sptr parm; + const environment& env = fn_type.get_environment(); + for (auto i = fn_type.get_first_non_implicit_parm(); i != end; ++i) + { + if (i != first_parm) + o << ", "; + parm = *i; + type = parm->get_type(); + if (env.is_variadic_parameter_type(type)) + o << "..."; + else + { + if (internal) + type = peel_typedef_type(type); + o << get_type_name(type, qualified, internal); + } + } + } + o << ")"; +} + +/// When constructing the name of a pointer to function type, add the +/// return type to the left of the existing type identifier, and the +/// parameters declarator to the right. +/// +/// This function considers the name of the type as an expression. +/// +/// The resulting type expr is going to be made of three parts: +/// left_expr inner_expr right_expr. +/// +/// Suppose we want to build the type expression representing: +/// +/// "an array of pointer to function taking a char parameter and +/// returning an int". +/// +/// It's going to look like: +/// +/// int(*a[])(char); +/// +/// Suppose the caller of this function started to emit the inner +/// "a[]" part of the expression already. It thus calls this +/// function with that input "a[]" part. We consider that "a[]" as +/// the "type identifier". +/// +/// So the inner_expr is going to be "(*a[])". +/// +/// The left_expr part is "int". The right_expr part is "(char)". +/// +/// In other words, this function adds the left_expr and right_expr to +/// the inner_expr. left_expr and right_expr are called "outer +/// pointer to function type expression". +/// +/// This is a sub-routine of @ref pointer_declaration_name() and @ref +/// array_declaration_name() +/// +/// @param p the pointer to function type to consider. +/// +/// @param input the type-id to use as the inner expression of the +/// overall pointer-to-function type expression +/// +/// @param qualified if true then use qualified names in the resulting +/// type name. +/// +/// @param internal if true then the resulting type name is going to +/// be used for type canonicalization purposes. +/// +/// @return the name of the pointer to function type. +static string +add_outer_pointer_to_fn_type_expr(const type_base* p, + const string& input, + bool qualified, bool internal) +{ + if (!p) + return ""; + + function_type_sptr pointed_to_fn; + string star_or_ref; + + if (const pointer_type_def* ptr = is_pointer_type(p)) + { + pointed_to_fn = is_function_type(ptr->get_pointed_to_type()); + star_or_ref= "*"; + } + else if (const reference_type_def* ref = is_reference_type(p)) + { + star_or_ref = "&"; + pointed_to_fn = is_function_type(ref->get_pointed_to_type()); + } + + if (!pointed_to_fn) + return ""; + + std::ostringstream left, right, inner; + + inner << "(" << star_or_ref << input << ")"; + + type_base_sptr type; + stream_pretty_representation_of_fn_parms(*pointed_to_fn, right, + qualified, internal); + type_base_sptr return_type = + internal + ? peel_typedef_type(pointed_to_fn->get_return_type()) + : pointed_to_fn->get_return_type(); + + string result; + + if (is_npaf_type(return_type) + || !(is_pointer_to_function_type(return_type) + || is_pointer_to_array_type(return_type))) + { + if (return_type) + left << get_type_name(return_type, qualified, internal); + result = left.str() + " " + inner.str() + right.str(); + } + else if (pointer_type_def_sptr p = is_pointer_to_function_type(return_type)) + { + string inner_string = inner.str() + right.str(); + result = add_outer_pointer_to_fn_type_expr(p, inner_string, + qualified, internal); + } + else if (pointer_type_def_sptr p = is_pointer_to_array_type(return_type)) + { + string inner_string = inner.str() + right.str(); + result = add_outer_pointer_to_array_type_expr(p, inner_string, + qualified, internal); + } + else + ABG_ASSERT_NOT_REACHED; + + return result; +} + +/// When constructing the name of a pointer to function type, add the +/// return type to the left of the existing type identifier, and the +/// parameters declarator to the right. +/// +/// This function considers the name of the type as an expression. +/// +/// The resulting type expr is going to be made of three parts: +/// left_expr inner_expr right_expr. +/// +/// Suppose we want to build the type expression representing: +/// +/// "an array of pointer to function taking a char parameter and +/// returning an int". +/// +/// It's going to look like: +/// +/// int(*a[])(char); +/// +/// Suppose the caller of this function started to emit the inner +/// "a[]" part of the expression already. It thus calls this +/// function with that input "a[]" part. We consider that "a[]" as +/// the "type identifier". +/// +/// So the inner_expr is going to be "(*a[])". +/// +/// The left_expr part is "int". The right_expr part is "(char)". +/// +/// In other words, this function adds the left_expr and right_expr to +/// the inner_expr. left_expr and right_expr are called "outer +/// pointer to function type expression". +/// +/// This is a sub-routine of @ref pointer_declaration_name() and @ref +/// array_declaration_name() +/// +/// @param p the pointer to function type to consider. +/// +/// @param input the type-id to use as the inner expression of the +/// overall pointer-to-function type expression +/// +/// @param qualified if true then use qualified names in the resulting +/// type name. +/// +/// @param internal if true then the resulting type name is going to +/// be used for type canonicalization purposes. +/// +/// @return the name of the pointer to function type. +static string +add_outer_pointer_to_fn_type_expr(const type_base_sptr& p, + const string& input, + bool qualified, bool internal) +{return add_outer_pointer_to_fn_type_expr(p.get(), input, qualified, internal);} + +/// When constructing the name of a pointer to array type, add the +/// array element type type to the left of the existing type +/// identifier, and the array declarator part to the right. +/// +/// This function considers the name of the type as an expression. +/// +/// The resulting type expr is going to be made of three parts: +/// left_expr inner_expr right_expr. +/// +/// Suppose we want to build the type expression representing: +/// +/// "a pointer to an array of int". +/// +/// It's going to look like: +/// +/// int(*foo)[]; +/// +/// Suppose the caller of this function started to emit the inner +/// "foo" part of the expression already. It thus calls this function +/// with that input "foo" part. We consider that "foo" as the "type +/// identifier". +/// +/// So we are passed an input string that is "foo" and it's going to +/// be turned into the inner_expr part, which is going to be "(*foo)". +/// +/// The left_expr part is "int". The right_expr part is "[]". +/// +/// In other words, this function adds the left_expr and right_expr to +/// the inner_expr. left_expr and right_expr are called "outer +/// pointer to array type expression". +/// +/// The model of this function was taken from the article "Reading C +/// type declaration", from Steve Friedl at +/// http://unixwiz.net/techtips/reading-cdecl.html. +/// +/// This is a sub-routine of @ref pointer_declaration_name() and @ref +/// array_declaration_name() +/// +/// @param p the pointer to array type to consider. +/// +/// @param input the type-id to start from as the inner part of the +/// final type name. +/// +/// @param qualified if true then use qualified names in the resulting +/// type name. +/// +/// @param internal if true then the resulting type name is going to +/// be used for type canonicalization purposes. +/// +/// @return the name of the pointer to array type. +static string +add_outer_pointer_to_array_type_expr(const type_base* p, + const string& input, bool qualified, + bool internal) +{ + if (!p) + return ""; + + string star_or_ref; + type_base_sptr pointed_to_type; + + if (const pointer_type_def *ptr = is_pointer_type(p)) + { + pointed_to_type = ptr->get_pointed_to_type(); + star_or_ref = "*"; + } + else if (const reference_type_def *ref = is_reference_type(p)) + { + pointed_to_type = ref->get_pointed_to_type(); + star_or_ref = "&"; + } + + array_type_def_sptr array = is_array_type(pointed_to_type); + if (!array) + return ""; + + std::ostringstream left, right, inner; + inner << "(" << star_or_ref << input << ")"; + right << array->get_subrange_representation(); + string result; + + type_base_sptr array_element_type = array->get_element_type(); + + if (is_npaf_type(array_element_type) + || !(is_pointer_to_function_type(array_element_type) + || is_pointer_to_array_type(array_element_type))) + { + left << get_type_name(array_element_type, qualified, internal); + result = left.str() + inner.str() + right.str(); + } + else if (pointer_type_def_sptr p = + is_pointer_to_function_type(array_element_type)) + { + string r = inner.str() + right.str(); + result = add_outer_pointer_to_fn_type_expr(p, r, qualified, internal); + } + else if (pointer_type_def_sptr p = + is_pointer_to_array_type(array_element_type)) + { + string inner_string = inner.str() + right.str(); + result = add_outer_pointer_to_array_type_expr(p, inner_string, + qualified, internal); + } + else + ABG_ASSERT_NOT_REACHED; + + return result; +} + +/// When constructing the name of a pointer to array type, add the +/// array element type type to the left of the existing type +/// identifier, and the array declarator part to the right. +/// +/// This function considers the name of the type as an expression. +/// +/// The resulting type expr is going to be made of three parts: +/// left_expr inner_expr right_expr. +/// +/// Suppose we want to build the type expression representing: +/// +/// "a pointer to an array of int". +/// +/// It's going to look like: +/// +/// int(*foo)[]; +/// +/// Suppose the caller of this function started to emit the inner +/// "foo" part of the expression already. It thus calls this function +/// with that input "foo" part. We consider that "foo" as the "type +/// identifier". +/// +/// So we are passed an input string that is "foo" and it's going to +/// be turned into the inner_expr part, which is going to be "(*foo)". +/// +/// The left_expr part is "int". The right_expr part is "[]". +/// +/// In other words, this function adds the left_expr and right_expr to +/// the inner_expr. left_expr and right_expr are called "outer +/// pointer to array type expression". +/// +/// The model of this function was taken from the article "Reading C +/// type declaration", from Steve Friedl at +/// http://unixwiz.net/techtips/reading-cdecl.html. +/// +/// This is a sub-routine of @ref pointer_declaration_name() and @ref +/// array_declaration_name() +/// +/// @param p the pointer to array type to consider. +/// +/// @param input the type-id to start from as the inner part of the +/// final type name. +/// +/// @param qualified if true then use qualified names in the resulting +/// type name. +/// +/// @param internal if true then the resulting type name is going to +/// be used for type canonicalization purposes. +/// +/// @return the name of the pointer to array type. +static string +add_outer_pointer_to_array_type_expr(const type_base_sptr& pointer_to_ar, + const string& input, bool qualified, + bool internal) +{return add_outer_pointer_to_array_type_expr(pointer_to_ar.get(), + input, qualified, internal);} + +/// Emit the name of a pointer declaration. +/// +/// @param the pointer to consider. +/// +/// @param idname the name of the variable that has @p as a type or +/// the id of the type. If it's empty then the resulting name is +/// going to be the abstract name of the type. +/// +/// @param qualified if true then the type name is going to be +/// fully qualified. +/// +/// @param internal if true then the type name is going to be used for +/// type canonicalization purposes. +static interned_string +pointer_declaration_name(const type_base* ptr, + const string& idname, + bool qualified, bool internal) +{ + if (!ptr) + return interned_string(); + + type_base_sptr pointed_to_type; + string star_or_ref; + if (const pointer_type_def* p = is_pointer_type(ptr)) + { + pointed_to_type = p->get_pointed_to_type(); + star_or_ref = "*"; + } + else if (const reference_type_def* p = is_reference_type(ptr)) + { + pointed_to_type = p->get_pointed_to_type(); + star_or_ref = "&"; + } + + if (!pointed_to_type) + return interned_string(); + + string result; + if (is_npaf_type(pointed_to_type) + || !(is_function_type(pointed_to_type) + || is_array_type(pointed_to_type))) + { + result = get_type_name(pointed_to_type, + qualified, + internal) + + star_or_ref; + + if (!idname.empty()) + result += idname; + } + else + { + // derived type + if (is_function_type(pointed_to_type)) + result = add_outer_pointer_to_fn_type_expr(ptr, idname, + qualified, internal); + else if (is_array_type(pointed_to_type)) + result = add_outer_pointer_to_array_type_expr(ptr, idname, + qualified, internal); + else + ABG_ASSERT_NOT_REACHED; + } + return ptr->get_environment().intern(result); +} + + +/// Emit the name of a pointer declaration. +/// +/// @param the pointer to consider. +/// +/// @param the name of the variable that has @p as a type. If it's +/// empty then the resulting name is going to be the abstract name of +/// the type. +/// +/// @param qualified if true then the type name is going to be +/// fully qualified. +/// +/// @param internal if true then the type name is going to be used for +/// type canonicalization purposes. +static interned_string +pointer_declaration_name(const type_base_sptr& ptr, + const string& variable_name, + bool qualified, bool internal) +{return pointer_declaration_name(ptr.get(), variable_name, + qualified, internal);} + +/// Emit the name of a array declaration. +/// +/// @param the array to consider. +/// +/// @param the name of the variable that has @p as a type. If it's +/// empty then the resulting name is going to be the abstract name of +/// the type. +/// +/// @param qualified if true then the type name is going to be +/// fully qualified. +/// +/// @param internal if true then the type name is going to be used for +/// type canonicalization purposes. +static interned_string +array_declaration_name(const array_type_def* array, + const string& variable_name, + bool qualified, bool internal) +{ + if (!array) + return interned_string(); + + type_base_sptr e_type = array->get_element_type(); + string e_type_repr = + (e_type + ? get_type_name(e_type, qualified, internal) + : string("void")); + + string result; + if (is_ada_language(array->get_language())) + { + std::ostringstream o; + if (!variable_name.empty()) + o << variable_name << " is "; + o << "array (" + << array->get_subrange_representation() + << ") of " << e_type_repr; + result = o.str(); + } + else + { + if (is_npaf_type(e_type) + || !(is_pointer_to_function_type(e_type) + || is_pointer_to_array_type(e_type))) + { + result = e_type_repr; + if (!variable_name.empty()) + result += variable_name; + result += array->get_subrange_representation(); + } + else if (pointer_type_def_sptr p = is_pointer_type(e_type)) + { + string s = variable_name + array->get_subrange_representation(); + result = pointer_declaration_name(p, s, qualified, internal); + } + else + ABG_ASSERT_NOT_REACHED; + } + return array->get_environment().intern(result); +} + +/// Emit the name of a array declaration. +/// +/// @param the array to consider. +/// +/// @param the name of the variable that has @p as a type. If it's +/// empty then the resulting name is going to be the abstract name of +/// the type. +/// +/// @param qualified if true then the type name is going to be +/// fully qualified. +/// +/// @param internal if true then the type name is going to be used for +/// type canonicalization purposes. +static interned_string +array_declaration_name(const array_type_def_sptr& array, + const string& variable_name, + bool qualified, bool internal) +{return array_declaration_name(array.get(), variable_name, + qualified, internal);} bool ir_traversable_base::traverse(ir_node_visitor&) {return true;} diff --git a/tests/data/test-abicompat/test0-fn-changed-report-0.txt b/tests/data/test-abicompat/test0-fn-changed-report-0.txt index 7e6286dc..f7ef97bb 100644 --- a/tests/data/test-abicompat/test0-fn-changed-report-0.txt +++ b/tests/data/test-abicompat/test0-fn-changed-report-0.txt @@ -4,14 +4,14 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable 2 functions with some indirect sub-type change: - [C] 'function libapp::S0* libapp::create_s0()' has some indirect sub-type changes: + [C] 'function libapp::S0* libapp::create_s0(void)' has some indirect sub-type changes: return type changed: in pointed to type 'struct libapp::S0': type size changed from 32 to 64 (in bits) 1 data member insertion: 'char m1', at offset 32 (in bits) - [C] 'function libapp::S1* libapp::create_s1()' has some indirect sub-type changes: + [C] 'function libapp::S1* libapp::create_s1(void)' has some indirect sub-type changes: return type changed: in pointed to type 'struct libapp::S1': type size changed from 32 to 96 (in bits) diff --git a/tests/data/test-abicompat/test0-fn-changed-report-2.txt b/tests/data/test-abicompat/test0-fn-changed-report-2.txt index e2e85b44..70fba89e 100644 --- a/tests/data/test-abicompat/test0-fn-changed-report-2.txt +++ b/tests/data/test-abicompat/test0-fn-changed-report-2.txt @@ -4,14 +4,14 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable 2 functions with some indirect sub-type change: - [C] 'function libapp::S0* libapp::create_s0()' at test0-fn-changed-libapp-v0.cc:47:1 has some indirect sub-type changes: + [C] 'function libapp::S0* libapp::create_s0(void)' at test0-fn-changed-libapp-v0.cc:47:1 has some indirect sub-type changes: return type changed: in pointed to type 'struct libapp::S0' at test0-fn-changed-libapp-v1.cc:10:1: type size changed from 32 to 64 (in bits) 1 data member insertion: 'char m1', at offset 32 (in bits) at test0-fn-changed-libapp-v1.cc:13:1 - [C] 'function libapp::S1* libapp::create_s1()' at test0-fn-changed-libapp-v0.cc:55:1 has some indirect sub-type changes: + [C] 'function libapp::S1* libapp::create_s1(void)' at test0-fn-changed-libapp-v0.cc:55:1 has some indirect sub-type changes: return type changed: in pointed to type 'struct libapp::S1' at test0-fn-changed-libapp-v1.cc:21:1: type size changed from 32 to 96 (in bits) diff --git a/tests/data/test-abicompat/test1-fn-removed-report-0.txt b/tests/data/test-abicompat/test1-fn-removed-report-0.txt index e957129f..5165960f 100644 --- a/tests/data/test-abicompat/test1-fn-removed-report-0.txt +++ b/tests/data/test-abicompat/test1-fn-removed-report-0.txt @@ -4,5 +4,5 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable 1 Removed function: - [D] 'function void fun2()' {_Z4fun2v} + [D] 'function void fun2(void)' {_Z4fun2v} diff --git a/tests/data/test-abicompat/test3-fn-removed-report-0.txt b/tests/data/test-abicompat/test3-fn-removed-report-0.txt index e8eaf4b3..a58fef7b 100644 --- a/tests/data/test-abicompat/test3-fn-removed-report-0.txt +++ b/tests/data/test-abicompat/test3-fn-removed-report-0.txt @@ -4,5 +4,5 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable 1 Removed function: - [D] 'function void _internal_fun1()' {_Z4fun1v@@VERSION_1.0} + [D] 'function void _internal_fun1(void)' {_Z4fun1v@@VERSION_1.0} diff --git a/tests/data/test-abidiff-exit/PR30048-test-2-report-1.txt b/tests/data/test-abidiff-exit/PR30048-test-2-report-1.txt index 2650b5a0..7bbbc2e2 100644 --- a/tests/data/test-abidiff-exit/PR30048-test-2-report-1.txt +++ b/tests/data/test-abidiff-exit/PR30048-test-2-report-1.txt @@ -3,22 +3,22 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable 7 functions with some indirect sub-type change: - [C] 'function int[7]* N()' at PR30048-test-2-v0.cc:62:1 has some indirect sub-type changes: + [C] 'function int(*N(void))[7]' at PR30048-test-2-v0.cc:62:1 has some indirect sub-type changes: return type changed: - entity changed from 'int[7]*' to 'int' + entity changed from 'int(*)[7]' to 'int' type size changed from 64 to 32 (in bits) - [C] 'function int* O()' at PR30048-test-2-v0.cc:64:1 has some indirect sub-type changes: + [C] 'function int* O(void)' at PR30048-test-2-v0.cc:64:1 has some indirect sub-type changes: return type changed: entity changed from 'int*' to 'int' type size changed from 64 to 32 (in bits) - [C] 'function int ()* P()' at PR30048-test-2-v0.cc:67:1 has some indirect sub-type changes: + [C] 'function int (*P(void))(void)' at PR30048-test-2-v0.cc:67:1 has some indirect sub-type changes: return type changed: - entity changed from 'int ()*' to 'int' + entity changed from 'int (*)(void)' to 'int' type size changed from 64 to 32 (in bits) - [C] 'function amusement* fun()' at PR30048-test-2-v0.cc:57:1 has some indirect sub-type changes: + [C] 'function amusement* fun(void)' at PR30048-test-2-v0.cc:57:1 has some indirect sub-type changes: return type changed: in pointed to type 'struct amusement' at PR30048-test-2-v1.cc:1:1: type size changed from 6528 to 768 (in bits) @@ -30,8 +30,8 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable entity changed from 'int*' to 'int' type size changed from 64 to 32 (in bits) and offset changed from 256 to 32 (in bits) (by -224 bits) - type of 'int ()* C' changed: - entity changed from 'int ()*' to 'int' + type of 'int (* C)(void)' changed: + entity changed from 'int (*)(void)' to 'int' type size changed from 64 to 32 (in bits) and offset changed from 320 to 64 (in bits) (by -256 bits) type of 'int D[7][7]' changed: @@ -42,32 +42,32 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable entity changed from 'int*[7]' to 'int' type size changed from 448 to 32 (in bits) and offset changed from 1984 to 128 (in bits) (by -1856 bits) - type of 'int ()* F[7]' changed: - entity changed from 'int ()*[7]' to 'int' + type of 'int (* F[7])(void)' changed: + entity changed from 'int (*[7])(void)' to 'int' type size changed from 448 to 32 (in bits) and offset changed from 2432 to 160 (in bits) (by -2272 bits) - type of 'int[7]* G' changed: - entity changed from 'int[7]*' to 'int' + type of 'int(* G)[7]' changed: + entity changed from 'int(*)[7]' to 'int' type size changed from 64 to 32 (in bits) and offset changed from 2880 to 192 (in bits) (by -2688 bits) type of 'int** H' changed: entity changed from 'int**' to 'int' type size changed from 64 to 32 (in bits) and offset changed from 2944 to 224 (in bits) (by -2720 bits) - type of 'int ()* I' changed: - entity changed from 'int ()*' to 'int' + type of 'int (* I)(void)' changed: + entity changed from 'int (*)(void)' to 'int' type size changed from 64 to 32 (in bits) and offset changed from 3008 to 256 (in bits) (by -2752 bits) - type of 'int[7]* ()* J' changed: - entity changed from 'int[7]* ()*' to 'int' + type of 'int(*(* J)(void))[7]' changed: + entity changed from 'int(*(*)(void))[7]' to 'int' type size changed from 64 to 32 (in bits) and offset changed from 3072 to 288 (in bits) (by -2784 bits) - type of 'int* ()* K' changed: - entity changed from 'int* ()*' to 'int' + type of 'int* (* K)(void)' changed: + entity changed from 'int* (*)(void)' to 'int' type size changed from 64 to 32 (in bits) and offset changed from 3136 to 320 (in bits) (by -2816 bits) - type of 'int ()* ()* L' changed: - entity changed from 'int ()* ()*' to 'int' + type of 'int (*(* L)(void))(void)' changed: + entity changed from 'int (*(*)(void))(void)' to 'int' type size changed from 64 to 32 (in bits) and offset changed from 3200 to 352 (in bits) (by -2848 bits) type of 'volatile int a[7]' changed: @@ -78,8 +78,8 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable entity changed from 'volatile int* const' to 'int' type size changed from 64 to 32 (in bits) and offset changed from 3520 to 416 (in bits) (by -3104 bits) - type of 'int ()* const c' changed: - entity changed from 'int ()* const' to 'int' + type of 'int (* const c)(void)' changed: + entity changed from 'int (*)(void) const' to 'int' type size changed from 64 to 32 (in bits) and offset changed from 3584 to 448 (in bits) (by -3136 bits) type of 'volatile int d[7][7]' changed: @@ -90,47 +90,47 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable entity changed from 'volatile int* const[7]' to 'int' type size changed from 448 to 32 (in bits) and offset changed from 5248 to 512 (in bits) (by -4736 bits) - type of 'int ()* const f[7]' changed: - entity changed from 'int ()* const[7]' to 'int' + type of 'void* const f[7]' changed: + entity changed from 'int (*)(void) const[7]' to 'int' type size changed from 448 to 32 (in bits) and offset changed from 5696 to 544 (in bits) (by -5152 bits) - type of 'volatile int[7]* const g' changed: - entity changed from 'volatile int[7]* const' to 'int' + type of 'volatile int(* const g)[7]' changed: + entity changed from 'volatile int(*)[7] const' to 'int' type size changed from 64 to 32 (in bits) and offset changed from 6144 to 576 (in bits) (by -5568 bits) type of 'volatile int* const* const h' changed: entity changed from 'volatile int* const* const' to 'int' type size changed from 64 to 32 (in bits) and offset changed from 6208 to 608 (in bits) (by -5600 bits) - type of 'int ()* const i' changed: - entity changed from 'int ()* const' to 'int' + type of 'int (* const i)(void)' changed: + entity changed from 'int (*)(void) const' to 'int' type size changed from 64 to 32 (in bits) and offset changed from 6272 to 640 (in bits) (by -5632 bits) - type of 'volatile int[7]* ()* const j' changed: - entity changed from 'volatile int[7]* ()* const' to 'int' + type of 'volatile int(*(* const j)(void))[7]' changed: + entity changed from 'volatile int(*(*)(void))[7] const' to 'int' type size changed from 64 to 32 (in bits) and offset changed from 6336 to 672 (in bits) (by -5664 bits) - type of 'volatile int* ()* const k' changed: - entity changed from 'volatile int* ()* const' to 'int' + type of 'volatile int* (* const k)(void)' changed: + entity changed from 'volatile int* (*)(void) const' to 'int' type size changed from 64 to 32 (in bits) and offset changed from 6400 to 704 (in bits) (by -5696 bits) - type of 'int ()* ()* const l' changed: - entity changed from 'int ()* ()* const' to 'int' + type of 'int (*(* const l)(void))(void)' changed: + entity changed from 'int (*(*)(void))(void) const' to 'int' type size changed from 64 to 32 (in bits) and offset changed from 6464 to 736 (in bits) (by -5728 bits) - [C] 'function volatile int[7]* n()' at PR30048-test-2-v0.cc:72:1 has some indirect sub-type changes: + [C] 'function volatile int(*n(void))[7]' at PR30048-test-2-v0.cc:72:1 has some indirect sub-type changes: return type changed: - entity changed from 'volatile int[7]*' to 'int' + entity changed from 'volatile int(*)[7]' to 'int' type size changed from 64 to 32 (in bits) - [C] 'function volatile int* o()' at PR30048-test-2-v0.cc:74:1 has some indirect sub-type changes: + [C] 'function volatile int* o(void)' at PR30048-test-2-v0.cc:74:1 has some indirect sub-type changes: return type changed: entity changed from 'volatile int*' to 'int' type size changed from 64 to 32 (in bits) - [C] 'function int ()* p()' at PR30048-test-2-v0.cc:77:1 has some indirect sub-type changes: + [C] 'function int (*p(void))(void)' at PR30048-test-2-v0.cc:77:1 has some indirect sub-type changes: return type changed: - entity changed from 'int ()*' to 'int' + entity changed from 'int (*)(void)' to 'int' type size changed from 64 to 32 (in bits) diff --git a/tests/data/test-abidiff-exit/PR30048-test-report-0.txt b/tests/data/test-abidiff-exit/PR30048-test-report-0.txt index 23a4c10b..26c04c6d 100644 --- a/tests/data/test-abidiff-exit/PR30048-test-report-0.txt +++ b/tests/data/test-abidiff-exit/PR30048-test-report-0.txt @@ -8,12 +8,12 @@ Variables changes summary: 0 Removed, 1 Changed, 0 Added variable type of variable changed: type size changed from 448 to 128 (in bits) 5 data member deletions: - 'int (int)* f01', at offset 0 (in bits) at PR30048-test-v0.c:2:1 - 'int (const int*)* f02', at offset 64 (in bits) at PR30048-test-v0.c:3:1 - 'int (int* const)* f03', at offset 128 (in bits) at PR30048-test-v0.c:4:1 - 'int (int* restrict)* f04', at offset 192 (in bits) at PR30048-test-v0.c:5:1 - 'int (const int* restrict)* f05', at offset 256 (in bits) at PR30048-test-v0.c:6:1 + 'int (* f01)(int)', at offset 0 (in bits) at PR30048-test-v0.c:2:1 + 'int (* f02)(const int*)', at offset 64 (in bits) at PR30048-test-v0.c:3:1 + 'int (* f03)(int* const)', at offset 128 (in bits) at PR30048-test-v0.c:4:1 + 'int (* f04)(int* restrict)', at offset 192 (in bits) at PR30048-test-v0.c:5:1 + 'int (* f05)(const int* restrict)', at offset 256 (in bits) at PR30048-test-v0.c:6:1 2 data member changes: - 'int (int* restrict const)* f06' offset changed from 320 to 0 (in bits) (by -320 bits) - 'int (int* restrict const)* f07' offset changed from 384 to 64 (in bits) (by -320 bits) + 'int (* f06)(int* restrict const)' offset changed from 320 to 0 (in bits) (by -320 bits) + 'int (* f07)(int* restrict const)' offset changed from 384 to 64 (in bits) (by -320 bits) diff --git a/tests/data/test-abidiff-exit/PR30329/PR30329-report-1.txt b/tests/data/test-abidiff-exit/PR30329/PR30329-report-1.txt index e5e40069..f83d9a11 100644 --- a/tests/data/test-abidiff-exit/PR30329/PR30329-report-1.txt +++ b/tests/data/test-abidiff-exit/PR30329/PR30329-report-1.txt @@ -142,7 +142,7 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable 'void* pTrueEnd', at offset 704 (in bits) at sqlite3.c:16849:1 'sqlite3_xauth xAuth' offset changed from 3968 to 4032 (in bits) (by +64 bits) 'void* pAuthArg' offset changed from 4032 to 4096 (in bits) (by +64 bits) - 'int (void*)* xProgress' offset changed from 4096 to 4160 (in bits) (by +64 bits) + 'int (* xProgress)(void*)' offset changed from 4096 to 4160 (in bits) (by +64 bits) 'void* pProgressArg' offset changed from 4160 to 4224 (in bits) (by +64 bits) 'unsigned int nProgressOps' offset changed from 4224 to 4288 (in bits) (by +64 bits) 'int nVTrans' offset changed from 4256 to 4320 (in bits) (by +64 bits) @@ -165,6 +165,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable 'sqlite3* pBlockingConnection' offset changed from 6144 to 6208 (in bits) (by +64 bits) 'sqlite3* pUnlockConnection' offset changed from 6208 to 6272 (in bits) (by +64 bits) 'void* pUnlockArg' offset changed from 6272 to 6336 (in bits) (by +64 bits) - 'void (void**, int)* xUnlockNotify' offset changed from 6336 to 6400 (in bits) (by +64 bits) + 'void (* xUnlockNotify)(void**, int)' offset changed from 6336 to 6400 (in bits) (by +64 bits) 'sqlite3* pNextBlocked' offset changed from 6400 to 6464 (in bits) (by +64 bits) diff --git a/tests/data/test-abidiff-exit/PR30503/libsdl/libsdl-1.2.60-1.2.64-report.txt b/tests/data/test-abidiff-exit/PR30503/libsdl/libsdl-1.2.60-1.2.64-report.txt index 2b451fb7..73a38f9f 100644 --- a/tests/data/test-abidiff-exit/PR30503/libsdl/libsdl-1.2.60-1.2.64-report.txt +++ b/tests/data/test-abidiff-exit/PR30503/libsdl/libsdl-1.2.60-1.2.64-report.txt @@ -9,10 +9,10 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable underlying type 'struct SDL12_AudioCVT' at SDL12_compat.c:880:1 changed: type size hasn't changed 1 data member change: - type of 'void (SDL_AudioCVT*, typedef Uint16)* filters[10]' changed: - array element type 'void (SDL_AudioCVT*, typedef Uint16)*' changed: - entity changed from 'void (SDL_AudioCVT*, typedef Uint16)*' to compatible type 'typedef SDL12_AudioCVTFilter' at SDL12_compat.c:903:1 - in pointed to type 'function type void (SDL_AudioCVT*, typedef SDL_AudioFormat)': + type of 'void (* filters[10])(SDL_AudioCVT*, Uint16)' changed: + array element type 'void (*)(SDL_AudioCVT*, Uint16)' changed: + entity changed from 'void (*)(SDL_AudioCVT*, Uint16)' to compatible type 'typedef SDL12_AudioCVTFilter' at SDL12_compat.c:903:1 + in pointed to type 'function type void (SDL_AudioCVT*, SDL_AudioFormat)': parameter 1 of type 'SDL_AudioCVT*' changed: in pointed to type 'struct SDL_AudioCVT' at SDL12_compat.c:907:1: type name changed from 'SDL_AudioCVT' to 'SDL12_AudioCVT' @@ -21,6 +21,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable 'double len_ratio' offset changed from 288 to 320 (in bits) (by +32 bits) name of 'SDL_AudioCVT::filters' changed to 'SDL12_AudioCVT::filters' at SDL12_compat.c:918:1, offset changed from 352 to 384 (in bits) (by +32 bits) 'int filter_index' offset changed from 992 to 1024 (in bits) (by +32 bits) - type name changed from 'void (SDL_AudioCVT*, typedef Uint16)*[10]' to 'SDL12_AudioCVTFilter[10]' + type name changed from 'void (*[10])(SDL_AudioCVT*, Uint16)' to 'SDL12_AudioCVTFilter[10]' type size hasn't changed diff --git a/tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/test1-ada-subrange-report-1.txt b/tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/test1-ada-subrange-report-1.txt index 1233215e..69f3eb5f 100644 --- a/tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/test1-ada-subrange-report-1.txt +++ b/tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/test1-ada-subrange-report-1.txt @@ -3,13 +3,13 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable 2 functions with some indirect sub-type change: - [C] 'function test1__my_int[6] test1__first_function()' at test1.adb:6:1 has some indirect sub-type changes: + [C] 'function test1__my_int[6] test1__first_function(void)' at test1.adb:6:1 has some indirect sub-type changes: return type changed: type name changed from 'test1__my_int[6]' to 'test1__my_int[7]' array type size changed from 6000 to 7000 array type subrange 1 changed length from 6 to 7 - [C] 'function test1__my_index test1__second_function()' at test1.adb:14:1 has some indirect sub-type changes: + [C] 'function test1__my_index test1__second_function(void)' at test1.adb:14:1 has some indirect sub-type changes: return type changed: upper bound of range 'test1__my_index' change from '5' to '6' diff --git a/tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/test1-ada-subrange-report-2.txt b/tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/test1-ada-subrange-report-2.txt index 30d7488d..7c299ea9 100644 --- a/tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/test1-ada-subrange-report-2.txt +++ b/tests/data/test-abidiff-exit/ada-subrange/test1-ada-subrange/test1-ada-subrange-report-2.txt @@ -5,13 +5,13 @@ Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable 2 functions with some sub-type change: - [C] 'function test1__my_int[6] test1__first_function()' at test1.adb:6:1 has some sub-type changes: + [C] 'function test1__my_int[6] test1__first_function(void)' at test1.adb:6:1 has some sub-type changes: return type changed: type name changed from 'test1__my_int[6]' to 'test1__my_int[7]' array type size changed from 6000 to 7000 array type subrange 1 changed length from 6 to 7 - [C] 'function test1__my_index test1__second_function()' at test1.adb:14:1 has some sub-type changes: + [C] 'function test1__my_index test1__second_function(void)' at test1.adb:14:1 has some sub-type changes: return type changed: upper bound of range 'test1__my_index' change from '5' to '6' 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 83b3e836..ac6ab3be 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 @@ -56,7 +56,7 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable entity changed from 'typedef C' to compatible type 'void* restrict const[7]' array element type 'void* const' changed: 'void* const' changed to 'void* restrict const' - type name changed from 'void* const[7]' to 'void* restrict const[7]' + type name changed from 'void* const[7]' to 'void* const restrict[7]' type size hasn't changed type of 'D v_d' changed: entity changed from 'typedef D' to compatible type 'void* const volatile[7]' @@ -68,18 +68,18 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable entity changed from 'typedef D' to compatible type 'void* restrict const[7]' array element type 'void* const' changed: 'void* const' changed to 'void* restrict const' - type name changed from 'void* const[7]' to 'void* restrict const[7]' + type name changed from 'void* const[7]' to 'void* const restrict[7]' type size hasn't changed type of 'E r_e' changed: entity changed from 'typedef E' to compatible type 'void* restrict const volatile[7]' array element type 'void* const volatile' changed: 'void* const volatile' changed to 'void* restrict const volatile' - type name changed from 'void* const volatile[7]' to 'void* restrict const volatile[7]' + type name changed from 'void* const volatile[7]' to 'void* const volatile restrict const[7]' type size hasn't changed type of 'F r_f' changed: entity changed from 'typedef F' to compatible type 'void* restrict const volatile[7]' array element type 'void* const volatile' changed: 'void* const volatile' changed to 'void* restrict const volatile' - type name changed from 'void* const volatile[7]' to 'void* restrict const volatile[7]' + type name changed from 'void* const volatile[7]' to 'void* const volatile restrict const[7]' type size hasn't changed diff --git a/tests/data/test-abidiff-exit/test-fun-param-report.txt b/tests/data/test-abidiff-exit/test-fun-param-report.txt index 7e357483..e37bf0df 100644 --- a/tests/data/test-abidiff-exit/test-fun-param-report.txt +++ b/tests/data/test-abidiff-exit/test-fun-param-report.txt @@ -8,7 +8,7 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable in pointed to type 'struct ops' at test-fun-param-v1.c:1:1: type size hasn't changed 1 data member change: - type of 'void (void*, unsigned int, unsigned long int)* bind_class' changed: + type of 'void (* bind_class)(void*, unsigned int, unsigned long int)' changed: in pointed to type 'function type void (void*, unsigned int, unsigned long int)': parameter 4 of type 'void*' was added parameter 5 of type 'unsigned long int' was added diff --git a/tests/data/test-abidiff-exit/test-ld-2.28-210.so--ld-2.28-211.so.txt b/tests/data/test-abidiff-exit/test-ld-2.28-210.so--ld-2.28-211.so.txt index 16d4dc97..365a8f88 100644 --- a/tests/data/test-abidiff-exit/test-ld-2.28-210.so--ld-2.28-211.so.txt +++ b/tests/data/test-abidiff-exit/test-ld-2.28-210.so--ld-2.28-211.so.txt @@ -7,10 +7,10 @@ Variables changes summary: 0 Removed, 1 Changed, 0 Added variable type of variable changed: type size hasn't changed 6 data member changes: - 'int (const char**, const char**, bool*, void (void*)*, void*)* _dl_catch_error' offset changed from 5120 to 5376 (in bits) (by +256 bits) - 'void (void*)* _dl_error_free' offset changed from 5184 to 5440 (in bits) (by +256 bits) - 'void* (link_map*)* _dl_tls_get_addr_soft' offset changed from 5248 to 5120 (in bits) (by -128 bits) - 'int ()* _dl_discover_osversion' offset changed from 5312 to 5184 (in bits) (by -128 bits) + 'int (* _dl_catch_error)(const char**, const char**, bool*, void*, void*)' offset changed from 5120 to 5376 (in bits) (by +256 bits) + 'void (* _dl_error_free)(void*)' offset changed from 5184 to 5440 (in bits) (by +256 bits) + 'void* (* _dl_tls_get_addr_soft)(link_map*)' offset changed from 5248 to 5120 (in bits) (by -128 bits) + 'int (* _dl_discover_osversion)(void)' offset changed from 5312 to 5184 (in bits) (by -128 bits) 'audit_ifaces* _dl_audit' offset changed from 5376 to 5248 (in bits) (by -128 bits) 'unsigned int _dl_naudit' offset changed from 5440 to 5312 (in bits) (by -128 bits) diff --git a/tests/data/test-abidiff-exit/test-leaf-fun-type-report.txt b/tests/data/test-abidiff-exit/test-leaf-fun-type-report.txt index 1caf2cba..38be69a9 100644 --- a/tests/data/test-abidiff-exit/test-leaf-fun-type-report.txt +++ b/tests/data/test-abidiff-exit/test-leaf-fun-type-report.txt @@ -6,5 +6,5 @@ Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable 'struct ops' changed: type size hasn't changed there are data member changes: - type 'void (int)*' of 'ops::munge' changed: - pointer type changed from: 'void (int)*' to: 'char (long int, bool)*' + type 'void (*)(int)' of 'ops::munge' changed: + pointer type changed from: 'void (*)(int)' to: 'char (*)(long int, bool)' diff --git a/tests/data/test-abidiff-exit/test-leaf-more-report.txt b/tests/data/test-abidiff-exit/test-leaf-more-report.txt index aea08b81..c0a692c6 100644 --- a/tests/data/test-abidiff-exit/test-leaf-more-report.txt +++ b/tests/data/test-abidiff-exit/test-leaf-more-report.txt @@ -5,15 +5,15 @@ Removed/Changed/Added variables summary: 1 Removed, 1 Changed, 1 Added variable 1 Removed function: - [D] 'function int deleted_fun()' {_Z11deleted_funv} + [D] 'function int deleted_fun(void)' {_Z11deleted_funv} 1 Added function: - [A] 'function long int added_fun()' {_Z9added_funv} + [A] 'function long int added_fun(void)' {_Z9added_funv} 1 function with some sub-type change: - [C] 'function int directly_changed_fun()' has some sub-type changes: + [C] 'function int directly_changed_fun(void)' has some sub-type changes: return type changed: type name changed from 'int' to 'long int' type size changed from 32 to 64 (in bits) diff --git a/tests/data/test-abidiff-exit/test-leaf-peeling-report.txt b/tests/data/test-abidiff-exit/test-leaf-peeling-report.txt index 7c51164b..a8eb1cd8 100644 --- a/tests/data/test-abidiff-exit/test-leaf-peeling-report.txt +++ b/tests/data/test-abidiff-exit/test-leaf-peeling-report.txt @@ -24,8 +24,8 @@ Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable 'struct ops3 at test-leaf-peeling-v0.cc:14:1' changed: type size hasn't changed there are data member changes: - type 'void (int&)*' of 'ops3::spong' changed: - pointer type changed from: 'void (int&)*' to: 'void (int&&)*' + type 'void (*)(int&)' of 'ops3::spong' changed: + pointer type changed from: 'void (*)(int&)' to: 'void (*)(int&&)' 'struct ops4 at test-leaf-peeling-v0.cc:18:1' changed: type size hasn't changed diff --git a/tests/data/test-abidiff-exit/test-leaf-stats-report.txt b/tests/data/test-abidiff-exit/test-leaf-stats-report.txt index 25ee8dc5..e17b461b 100644 --- a/tests/data/test-abidiff-exit/test-leaf-stats-report.txt +++ b/tests/data/test-abidiff-exit/test-leaf-stats-report.txt @@ -5,7 +5,7 @@ Removed/Changed/Added variables summary: 0 Removed, 1 Changed, 0 Added variable 1 function with some sub-type change: - [C] 'function int changed_fun()' has some sub-type changes: + [C] 'function int changed_fun(void)' has some sub-type changes: return type changed: type name changed from 'int' to 'long int' type size changed from 32 to 64 (in bits) diff --git a/tests/data/test-abidiff-exit/test-net-change-report0.txt b/tests/data/test-abidiff-exit/test-net-change-report0.txt index 64ac3a83..e087c15f 100644 --- a/tests/data/test-abidiff-exit/test-net-change-report0.txt +++ b/tests/data/test-abidiff-exit/test-net-change-report0.txt @@ -3,15 +3,15 @@ Variables changes summary: 1 Removed, 1 Changed, 1 Added variables 1 Removed function: - [D] 'function int fun_removed()' {fun_removed} + [D] 'function int fun_removed(void)' {fun_removed} 1 Added function: - [A] 'function long int fun_added()' {fun_added} + [A] 'function long int fun_added(void)' {fun_added} 2 functions with some indirect sub-type change: - [C] 'function int fun_changed()' has some indirect sub-type changes: + [C] 'function int fun_changed(void)' has some indirect sub-type changes: return type changed: type name changed from 'int' to 'long int' type size changed from 32 to 64 (in bits) diff --git a/tests/data/test-abidiff-exit/test-net-change-report2.txt b/tests/data/test-abidiff-exit/test-net-change-report2.txt index ca3b3e05..c6fd8079 100644 --- a/tests/data/test-abidiff-exit/test-net-change-report2.txt +++ b/tests/data/test-abidiff-exit/test-net-change-report2.txt @@ -5,15 +5,15 @@ Removed/Changed/Added variables summary: 1 Removed, 1 Changed, 1 Added variable 1 Removed function: - [D] 'function int fun_removed()' {fun_removed} + [D] 'function int fun_removed(void)' {fun_removed} 1 Added function: - [A] 'function long int fun_added()' {fun_added} + [A] 'function long int fun_added(void)' {fun_added} 1 function with some sub-type change: - [C] 'function int fun_changed()' has some sub-type changes: + [C] 'function int fun_changed(void)' has some sub-type changes: return type changed: type name changed from 'int' to 'long int' type size changed from 32 to 64 (in bits) diff --git a/tests/data/test-abidiff-exit/test2-filtered-removed-fns-report0.txt b/tests/data/test-abidiff-exit/test2-filtered-removed-fns-report0.txt index 6640a6dd..ecfcc70d 100644 --- a/tests/data/test-abidiff-exit/test2-filtered-removed-fns-report0.txt +++ b/tests/data/test-abidiff-exit/test2-filtered-removed-fns-report0.txt @@ -3,5 +3,5 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable 1 Removed function: - [D] 'function void to_erase()' {to_erase} + [D] 'function void to_erase(void)' {to_erase} diff --git a/tests/data/test-abidiff/test-PR18791-report0.txt b/tests/data/test-abidiff/test-PR18791-report0.txt index 49c96d53..18cb0cf9 100644 --- a/tests/data/test-abidiff/test-PR18791-report0.txt +++ b/tests/data/test-abidiff/test-PR18791-report0.txt @@ -16,11 +16,11 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable in pointed to type 'struct sigc::connection': type size hasn't changed 1 data member change: - type of 'sigc::slot_base* slot_' changed: + type of 'slot_base* slot_' changed: in pointed to type 'class sigc::slot_base': type size hasn't changed 1 data member change: - type of 'sigc::slot_base::rep_type* rep_' changed: + type of 'rep_type* rep_' changed: in pointed to type 'typedef sigc::slot_base::rep_type': underlying type 'struct sigc::internal::slot_rep' changed: type size hasn't changed @@ -28,7 +28,7 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable 'struct sigc::trackable' changed: type size hasn't changed 1 data member change: - type of 'sigc::internal::trackable_callback_list* callback_list_' changed: + type of 'trackable_callback_list* callback_list_' changed: in pointed to type 'struct sigc::internal::trackable_callback_list': type size changed from 192 to 256 (in bits) 2 data member changes: @@ -169,7 +169,7 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable 'struct sigc::trackable' changed: details were reported earlier 1 data member change: - type of 'sigc::internal::signal_impl* impl_' changed: + type of 'signal_impl* impl_' changed: pointed to type 'struct sigc::internal::signal_impl' changed, as reported earlier [C] 'method bool sigc::signal_base::blocked()' has some indirect sub-type changes: diff --git a/tests/data/test-abidiff/test-crc-report-0-1.txt b/tests/data/test-abidiff/test-crc-report-0-1.txt index 0db42f68..0a6438f5 100644 --- a/tests/data/test-abidiff/test-crc-report-0-1.txt +++ b/tests/data/test-abidiff/test-crc-report-0-1.txt @@ -3,7 +3,7 @@ Variables changes summary: 0 Removed, 2 Changed, 0 Added variables 1 function with some indirect sub-type change: - [C] 'function void exported_function()' has some indirect sub-type changes: + [C] 'function void exported_function(void)' has some indirect sub-type changes: CRC (modversions) changed from (none) to 0xe52d5bcf 2 Changed variables: diff --git a/tests/data/test-abidiff/test-crc-report-1-0.txt b/tests/data/test-abidiff/test-crc-report-1-0.txt index e11f29c1..cb2fb86e 100644 --- a/tests/data/test-abidiff/test-crc-report-1-0.txt +++ b/tests/data/test-abidiff/test-crc-report-1-0.txt @@ -3,7 +3,7 @@ Variables changes summary: 0 Removed, 2 Changed, 0 Added variables 1 function with some indirect sub-type change: - [C] 'function void exported_function()' has some indirect sub-type changes: + [C] 'function void exported_function(void)' has some indirect sub-type changes: CRC (modversions) changed from 0xe52d5bcf to (none) 2 Changed variables: diff --git a/tests/data/test-abidiff/test-crc-report-1-2.txt b/tests/data/test-abidiff/test-crc-report-1-2.txt index 9bea309e..809e278f 100644 --- a/tests/data/test-abidiff/test-crc-report-1-2.txt +++ b/tests/data/test-abidiff/test-crc-report-1-2.txt @@ -3,6 +3,6 @@ Variables changes summary: 0 Removed, 0 Changed, 0 Added variable 1 function with some indirect sub-type change: - [C] 'function void exported_function()' has some indirect sub-type changes: + [C] 'function void exported_function(void)' has some indirect sub-type changes: CRC (modversions) changed from 0xe52d5bcf to 0xe52d5bd0 diff --git a/tests/data/test-annotate/test13-pr18894.so.abi b/tests/data/test-annotate/test13-pr18894.so.abi index 9abd7adf..850b1255 100644 --- a/tests/data/test-annotate/test13-pr18894.so.abi +++ b/tests/data/test-annotate/test13-pr18894.so.abi @@ -1293,19 +1293,19 @@ - + - + - + - + @@ -1324,13 +1324,13 @@ - + - + - + - + @@ -1340,11 +1340,11 @@ - + - + - + @@ -1354,9 +1354,9 @@ - + - + @@ -1364,67 +1364,67 @@ - + - + - + - + - + + + - + - + - + - + - + - + - + - + - + + + + + + + + + - - - - - - - - - - - + - + - + - + - + - + @@ -1482,7 +1482,7 @@ - + @@ -1692,14 +1692,14 @@ - + - + @@ -1708,7 +1708,7 @@ - + @@ -1734,7 +1734,7 @@ - + @@ -1927,7 +1927,7 @@ - + @@ -1949,7 +1949,7 @@ - + @@ -2015,7 +2015,7 @@ - + @@ -2030,7 +2030,7 @@ - + @@ -2043,7 +2043,7 @@ - + @@ -2058,7 +2058,7 @@ - + @@ -2091,21 +2091,21 @@ - + - + - + @@ -2227,7 +2227,7 @@ - + @@ -2238,7 +2238,7 @@ - + @@ -2249,7 +2249,7 @@ - + @@ -2260,18 +2260,18 @@ - + - + - + - + @@ -2300,7 +2300,7 @@ - + @@ -2309,7 +2309,7 @@ - + @@ -2429,7 +2429,7 @@ - + @@ -2908,7 +2908,7 @@ - + @@ -3094,14 +3094,14 @@ - + - + @@ -3146,7 +3146,7 @@ - + @@ -3216,7 +3216,7 @@ - + @@ -3235,28 +3235,28 @@ - + - + - + - + - + - + @@ -3269,49 +3269,49 @@ - + - + - + - + - + - + - + @@ -3324,7 +3324,7 @@ - + @@ -3333,7 +3333,7 @@ - + @@ -3411,7 +3411,7 @@ - + @@ -3425,17 +3425,17 @@ - + - + - + @@ -3460,9 +3460,9 @@ - + - + @@ -3592,14 +3592,14 @@ - + - + @@ -3900,72 +3900,72 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - + + + + + + + + @@ -4018,20 +4018,15 @@ - - - - - - + - + @@ -4040,12 +4035,17 @@ - + + + + + + @@ -4083,28 +4083,28 @@ - + - + - + - + - + @@ -4115,14 +4115,14 @@ - + - + @@ -4140,7 +4140,7 @@ - + @@ -4151,7 +4151,7 @@ - + @@ -4200,49 +4200,49 @@ - + - + - + - + - + - + - + - + @@ -4253,14 +4253,14 @@ - + - + @@ -4269,7 +4269,7 @@ - + diff --git a/tests/data/test-annotate/test14-pr18893.so.abi b/tests/data/test-annotate/test14-pr18893.so.abi index 07e81a50..e7f0e2c6 100644 --- a/tests/data/test-annotate/test14-pr18893.so.abi +++ b/tests/data/test-annotate/test14-pr18893.so.abi @@ -186,51 +186,51 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -578,9 +578,9 @@ - + - + @@ -942,48 +942,48 @@ - + - + - + - + - + - + - + - + - + - + @@ -1018,7 +1018,7 @@ - + @@ -1096,51 +1096,51 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -2131,48 +2131,48 @@ - + - + - + - + - + - + - + - + - + - + @@ -2207,7 +2207,7 @@ - + @@ -2252,9 +2252,9 @@ - + - + @@ -2883,51 +2883,51 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -3878,7 +3878,7 @@ - + @@ -13565,9 +13565,9 @@ - + - + @@ -14368,7 +14368,7 @@ - + @@ -14386,7 +14386,7 @@ - + @@ -14885,7 +14885,7 @@ - + @@ -14919,11 +14919,11 @@ - + - + @@ -14934,11 +14934,11 @@ - + - + @@ -14949,11 +14949,11 @@ - + - + @@ -15027,11 +15027,11 @@ - + - + @@ -15173,11 +15173,11 @@ - + - + @@ -15323,7 +15323,7 @@ - + @@ -15337,7 +15337,7 @@ - + @@ -15399,22 +15399,22 @@ - + - + - + - + @@ -16402,11 +16402,11 @@ - + - + @@ -16455,11 +16455,11 @@ - + - + @@ -16620,11 +16620,11 @@ - + - + @@ -16655,11 +16655,11 @@ - + - + @@ -16690,11 +16690,11 @@ - + - + @@ -16725,11 +16725,11 @@ - + - + @@ -16760,11 +16760,11 @@ - + - + @@ -16795,11 +16795,11 @@ - + - + @@ -16827,14 +16827,14 @@ + + - - @@ -21338,13 +21338,13 @@ - + - + @@ -21413,13 +21413,13 @@ - + - + @@ -21470,13 +21470,13 @@ - + - + @@ -21527,13 +21527,13 @@ - + - + @@ -21584,13 +21584,13 @@ - + - + @@ -21641,13 +21641,13 @@ - + - + @@ -21698,13 +21698,13 @@ - + - + @@ -21755,13 +21755,13 @@ - + - + @@ -21812,13 +21812,13 @@ - + - + @@ -22310,7 +22310,7 @@ - + @@ -22429,7 +22429,7 @@ - + @@ -22469,7 +22469,7 @@ - + @@ -22485,23 +22485,23 @@ - + - + - + - + - + @@ -22517,27 +22517,27 @@ - + - + - + - + - + - + @@ -22629,7 +22629,7 @@ - + @@ -22660,7 +22660,7 @@ - + @@ -22763,27 +22763,27 @@ - + - + - + - - - - - - - - - + + + + + + + + + - + - + - + @@ -22943,7 +22943,7 @@ - + @@ -22956,7 +22956,7 @@ - + @@ -22971,14 +22971,14 @@ - + - + @@ -23370,7 +23370,7 @@ - + @@ -23378,14 +23378,14 @@ - + - - - + + + diff --git a/tests/data/test-annotate/test15-pr18892.so.abi b/tests/data/test-annotate/test15-pr18892.so.abi index b749a0a6..65e69956 100644 --- a/tests/data/test-annotate/test15-pr18892.so.abi +++ b/tests/data/test-annotate/test15-pr18892.so.abi @@ -3123,11 +3123,11 @@ - + - + - + @@ -3139,9 +3139,9 @@ - + - + @@ -3191,7 +3191,7 @@ - + @@ -3199,7 +3199,7 @@ - + @@ -3437,9 +3437,9 @@ - + - + @@ -4338,7 +4338,7 @@ - + @@ -4393,7 +4393,7 @@ - + @@ -4414,7 +4414,7 @@ - + @@ -4609,9 +4609,9 @@ - + - + @@ -4853,7 +4853,7 @@ - + @@ -4982,7 +4982,7 @@ - + @@ -5062,11 +5062,11 @@ - + - + @@ -5289,7 +5289,7 @@ - + @@ -5335,13 +5335,8 @@ - - - - - - + @@ -5355,6 +5350,11 @@ + + + + + @@ -6162,9 +6162,9 @@ - + - + @@ -6456,20 +6456,20 @@ - + - + - + - + @@ -6477,7 +6477,7 @@ - + @@ -6699,7 +6699,7 @@ - + @@ -6782,7 +6782,7 @@ - + @@ -6798,7 +6798,7 @@ - + @@ -8065,9 +8065,9 @@ - + - + @@ -8129,7 +8129,7 @@ - + @@ -8169,7 +8169,7 @@ - + @@ -8545,7 +8545,7 @@ - + @@ -8555,7 +8555,7 @@ - + @@ -8842,7 +8842,7 @@ - + @@ -8939,25 +8939,25 @@ - + - + - + - + - + - + - + - + @@ -9038,7 +9038,7 @@ - + @@ -9185,7 +9185,7 @@ - + @@ -9564,11 +9564,11 @@ - + - + @@ -9835,7 +9835,7 @@ - + @@ -10669,7 +10669,7 @@ - + @@ -10681,7 +10681,7 @@ - + @@ -10999,20 +10999,20 @@ - + - + - + @@ -11024,7 +11024,7 @@ - + @@ -11064,645 +11064,645 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -11734,7 +11734,7 @@ - + @@ -11745,8 +11745,42 @@ + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + @@ -11754,575 +11788,541 @@ - + - + - + - + - + - + - + - + - + - + - + - + + + - - - + + + - + - + - - - + + + - + - + - - - - - + + + + + - - - - - - - - - + + + + + + + + + - + - + - + - + - + - + - - - - - + + + + + - + - + - + - + - - - - - + + + + + - + - + - + - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - + + + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - + + + + + + + + + - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + - + - + + + + + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - - - - - - + + - + - - - + - + - + - + - + - + - + - + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - - - - - + + + + + - + - + - + - + - + - + @@ -13069,7 +13069,7 @@ - + @@ -13080,7 +13080,7 @@ - + @@ -13093,7 +13093,7 @@ - + @@ -13143,7 +13143,7 @@ - + @@ -13154,7 +13154,7 @@ - + @@ -13167,7 +13167,7 @@ - + @@ -13202,7 +13202,7 @@ - + @@ -13211,14 +13211,14 @@ - + - + @@ -13227,7 +13227,7 @@ - + @@ -13248,14 +13248,14 @@ - + - + @@ -13268,7 +13268,7 @@ - + @@ -13277,7 +13277,7 @@ - + @@ -13288,7 +13288,7 @@ - + @@ -13299,7 +13299,7 @@ - + @@ -13308,7 +13308,7 @@ - + @@ -13319,7 +13319,7 @@ - + @@ -13330,7 +13330,7 @@ - + @@ -13563,7 +13563,7 @@ - + @@ -13574,14 +13574,14 @@ - + - + @@ -13590,18 +13590,18 @@ - + - + - + @@ -13616,13 +13616,13 @@ - + - + @@ -13633,13 +13633,13 @@ - + - + @@ -13652,13 +13652,13 @@ - + - + @@ -13708,7 +13708,7 @@ - + @@ -13717,7 +13717,7 @@ - + @@ -13726,7 +13726,7 @@ - + @@ -13735,7 +13735,7 @@ - + @@ -13764,16 +13764,16 @@ - + - + - + @@ -13782,16 +13782,16 @@ - + - + - + @@ -13838,7 +13838,7 @@ - + @@ -13849,7 +13849,7 @@ - + @@ -13899,7 +13899,7 @@ - + @@ -13910,7 +13910,7 @@ - + @@ -13923,7 +13923,7 @@ - + @@ -14014,7 +14014,7 @@ - + @@ -14027,7 +14027,7 @@ - + @@ -14040,14 +14040,14 @@ - + - + @@ -14058,13 +14058,13 @@ - + - + @@ -14073,7 +14073,7 @@ - + @@ -14082,7 +14082,7 @@ - + @@ -14091,7 +14091,7 @@ - + @@ -14100,7 +14100,7 @@ - + @@ -14111,21 +14111,21 @@ - + - + - + @@ -14134,9 +14134,9 @@ - + - + @@ -14156,7 +14156,7 @@ - + @@ -14216,20 +14216,20 @@ - + - + - + @@ -14315,7 +14315,7 @@ - + @@ -14324,14 +14324,14 @@ - + - + @@ -14340,7 +14340,7 @@ - + @@ -14349,7 +14349,7 @@ - + @@ -14358,7 +14358,7 @@ - + @@ -14369,9 +14369,9 @@ - + - + @@ -14389,7 +14389,7 @@ - + @@ -14454,7 +14454,7 @@ - + @@ -14515,9 +14515,9 @@ - + - + @@ -14526,9 +14526,9 @@ - + - + @@ -14537,9 +14537,9 @@ - + - + @@ -14629,7 +14629,7 @@ - + @@ -14638,16 +14638,16 @@ - + - + - + @@ -14656,9 +14656,9 @@ - + - + @@ -14671,13 +14671,13 @@ - + - + - + - + @@ -14693,7 +14693,7 @@ - + @@ -14706,7 +14706,7 @@ - + @@ -14717,7 +14717,7 @@ - + @@ -14734,7 +14734,7 @@ - + @@ -15100,7 +15100,7 @@ - + @@ -15293,7 +15293,7 @@ - + @@ -15304,7 +15304,7 @@ - + @@ -17913,7 +17913,7 @@ - + @@ -17930,7 +17930,7 @@ - + @@ -17943,7 +17943,7 @@ - + @@ -17956,7 +17956,7 @@ - + @@ -17965,9 +17965,9 @@ - + - + @@ -17978,9 +17978,9 @@ - + - + @@ -18006,7 +18006,7 @@ - + @@ -18034,7 +18034,7 @@ - + @@ -18412,11 +18412,11 @@ - + - + - + @@ -18460,11 +18460,11 @@ - + - + - + @@ -18505,7 +18505,7 @@ - + @@ -18516,7 +18516,7 @@ - + @@ -18525,7 +18525,7 @@ - + @@ -18536,7 +18536,7 @@ - + @@ -18689,7 +18689,7 @@ - + @@ -18702,7 +18702,7 @@ - + @@ -18737,7 +18737,7 @@ - + @@ -18750,7 +18750,7 @@ - + @@ -18817,7 +18817,7 @@ - + @@ -18834,7 +18834,7 @@ - + @@ -18849,7 +18849,7 @@ - + @@ -18866,7 +18866,7 @@ - + @@ -19133,7 +19133,7 @@ - + @@ -19146,7 +19146,7 @@ - + @@ -19157,7 +19157,7 @@ - + @@ -19170,7 +19170,7 @@ - + @@ -19181,7 +19181,7 @@ - + @@ -19194,7 +19194,7 @@ - + @@ -19205,7 +19205,7 @@ - + @@ -19220,7 +19220,7 @@ - + @@ -19233,7 +19233,7 @@ - + @@ -19246,7 +19246,7 @@ - + @@ -19257,7 +19257,7 @@ - + @@ -19270,7 +19270,7 @@ - + @@ -19315,7 +19315,7 @@ - + @@ -19334,7 +19334,7 @@ - + @@ -19429,7 +19429,7 @@ - + @@ -19448,7 +19448,7 @@ - + @@ -19562,7 +19562,7 @@ - + @@ -19575,11 +19575,11 @@ - + - + - + @@ -19592,11 +19592,11 @@ - + - + - + @@ -20585,7 +20585,7 @@ - + @@ -20594,7 +20594,7 @@ - + @@ -21595,7 +21595,7 @@ - + @@ -21610,7 +21610,7 @@ - + @@ -21899,11 +21899,11 @@ - + - + - + @@ -21918,11 +21918,11 @@ - + - + - + @@ -21933,7 +21933,7 @@ - + @@ -21950,7 +21950,7 @@ - + @@ -21981,7 +21981,7 @@ - + @@ -21998,7 +21998,7 @@ - + @@ -22143,7 +22143,7 @@ - + @@ -22162,7 +22162,7 @@ - + @@ -22179,7 +22179,7 @@ - + @@ -22198,7 +22198,7 @@ - + @@ -22237,10 +22237,10 @@ - + - + @@ -22254,7 +22254,7 @@ - + @@ -22265,7 +22265,7 @@ - + @@ -22276,9 +22276,9 @@ - + - + @@ -22287,7 +22287,7 @@ - + @@ -22298,7 +22298,7 @@ - + @@ -22309,9 +22309,9 @@ - + - + @@ -22320,7 +22320,7 @@ - + @@ -22331,7 +22331,7 @@ - + @@ -22342,9 +22342,9 @@ - + - + @@ -22353,7 +22353,7 @@ - + @@ -22362,29 +22362,29 @@ - + - + - + - + - + @@ -22395,16 +22395,16 @@ - + - + - + @@ -22467,7 +22467,7 @@ - + @@ -22478,9 +22478,9 @@ - + - + @@ -22489,7 +22489,7 @@ - + @@ -22500,7 +22500,7 @@ - + @@ -22511,9 +22511,9 @@ - + - + @@ -22522,7 +22522,7 @@ - + @@ -22533,9 +22533,9 @@ - + - + @@ -22544,7 +22544,7 @@ - + @@ -22555,17 +22555,17 @@ - + - + - + @@ -22575,7 +22575,7 @@ - + @@ -22584,7 +22584,7 @@ - + @@ -22593,7 +22593,7 @@ - + @@ -22602,7 +22602,7 @@ - + @@ -22611,7 +22611,7 @@ - + @@ -22626,7 +22626,7 @@ - + @@ -22637,7 +22637,7 @@ - + @@ -22646,18 +22646,18 @@ - + - + - + @@ -22666,14 +22666,14 @@ - + - + @@ -22704,7 +22704,7 @@ - + @@ -22719,7 +22719,7 @@ - + @@ -22734,21 +22734,21 @@ - + - + - + @@ -22760,11 +22760,11 @@ - + - + @@ -22783,7 +22783,7 @@ - + @@ -22830,7 +22830,7 @@ - + @@ -22848,7 +22848,7 @@ - + @@ -22875,7 +22875,7 @@ - + @@ -22886,7 +22886,7 @@ - + @@ -22906,7 +22906,7 @@ - + @@ -22917,7 +22917,7 @@ - + @@ -22939,7 +22939,7 @@ - + @@ -22986,14 +22986,14 @@ - + - + @@ -23001,7 +23001,7 @@ - + @@ -23016,17 +23016,17 @@ - + - + - + - + - + - + @@ -23357,7 +23357,7 @@ - + @@ -23395,9 +23395,9 @@ - + - + @@ -23430,11 +23430,11 @@ - + - + @@ -23467,9 +23467,9 @@ - + - + @@ -23558,25 +23558,25 @@ - + - + - + - + - + - + @@ -23705,7 +23705,7 @@ - + @@ -23714,7 +23714,7 @@ - + @@ -23737,7 +23737,7 @@ - + @@ -23746,7 +23746,7 @@ - + @@ -23966,31 +23966,31 @@ - + - + - + - + - + @@ -24194,11 +24194,11 @@ - + - + @@ -24752,9 +24752,9 @@ - + - + @@ -24770,7 +24770,7 @@ - + @@ -25559,60 +25559,60 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -25620,85 +25620,85 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -25707,18 +25707,18 @@ - + - + - + @@ -25729,7 +25729,7 @@ - + @@ -25738,7 +25738,7 @@ - + @@ -25747,7 +25747,7 @@ - + @@ -25756,7 +25756,7 @@ - + @@ -25765,14 +25765,14 @@ - + - + @@ -25781,7 +25781,7 @@ - + @@ -25792,7 +25792,7 @@ - + @@ -25805,14 +25805,14 @@ - + - + @@ -25821,16 +25821,16 @@ - + - + - + @@ -25839,39 +25839,39 @@ - + - + - + - + - + - + - + @@ -25882,7 +25882,7 @@ - + @@ -25893,7 +25893,7 @@ - + @@ -25902,7 +25902,7 @@ - + @@ -25911,23 +25911,23 @@ - + - + - + - + @@ -25938,7 +25938,7 @@ - + @@ -25946,30 +25946,25 @@ - - - - - - + - + - + - + - + @@ -25978,47 +25973,47 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -26027,18 +26022,18 @@ - + - + - + - + @@ -26047,22 +26042,22 @@ - + - + - + - + - + @@ -26071,11 +26066,11 @@ - + - + @@ -26084,74 +26079,74 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -26160,7 +26155,7 @@ - + @@ -26169,64 +26164,72 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + - + - + - + @@ -26234,19 +26237,29 @@ + + + + + + + + + + - + - + - + @@ -26256,18 +26269,8 @@ - - - - - - - - - - - + @@ -26276,7 +26279,7 @@ - + @@ -26287,24 +26290,16 @@ - + - - - - - - - - - + - + @@ -26313,28 +26308,28 @@ - + - + - + - + @@ -26343,7 +26338,7 @@ - + @@ -26354,22 +26349,22 @@ - + - + - + - + @@ -26378,29 +26373,29 @@ - + - + - + - + - + - + @@ -26411,7 +26406,7 @@ - + @@ -26422,7 +26417,7 @@ - + @@ -26431,7 +26426,7 @@ - + @@ -26442,7 +26437,7 @@ - + @@ -26455,7 +26450,7 @@ - + @@ -26466,7 +26461,7 @@ - + @@ -26479,7 +26474,7 @@ - + @@ -26492,7 +26487,7 @@ - + @@ -26507,7 +26502,7 @@ - + @@ -26518,7 +26513,7 @@ - + @@ -26531,27 +26526,27 @@ - + - + - + - + - + - + @@ -26566,7 +26561,7 @@ - + @@ -26577,7 +26572,7 @@ - + @@ -26588,7 +26583,7 @@ - + @@ -26597,7 +26592,7 @@ - + @@ -26608,7 +26603,7 @@ - + @@ -26619,7 +26614,7 @@ - + @@ -26630,7 +26625,7 @@ - + @@ -26643,7 +26638,7 @@ - + @@ -26656,7 +26651,7 @@ - + @@ -26667,7 +26662,7 @@ - + @@ -26678,7 +26673,7 @@ - + @@ -26689,7 +26684,7 @@ - + @@ -26702,7 +26697,7 @@ - + @@ -26715,7 +26710,7 @@ - + @@ -26728,7 +26723,7 @@ - + @@ -26739,7 +26734,7 @@ - + @@ -26748,7 +26743,7 @@ - + @@ -26757,7 +26752,7 @@ - + @@ -26768,7 +26763,7 @@ - + @@ -26776,25 +26771,25 @@ - - - - - - - - - - + + + - - - + + + + + + + + + + @@ -26803,15 +26798,20 @@ + + + + + - + - + @@ -26820,7 +26820,7 @@ - + @@ -26831,59 +26831,59 @@ - + - + - + - + - + - + - - + + - - + - - + + - + + - + - + - + @@ -26892,7 +26892,7 @@ - + @@ -26901,7 +26901,7 @@ - + @@ -26910,16 +26910,16 @@ - + - + - + @@ -26927,20 +26927,20 @@ - + - + - + @@ -26951,16 +26951,16 @@ - + - + - + @@ -26969,7 +26969,7 @@ - + @@ -26979,17 +26979,17 @@ - - + + - + - + @@ -26998,18 +26998,18 @@ - + - + - + @@ -27020,7 +27020,7 @@ - + @@ -27030,13 +27030,13 @@ - - + + - + @@ -27044,7 +27044,7 @@ - + @@ -27055,7 +27055,7 @@ - + @@ -27068,11 +27068,11 @@ - + - + @@ -27083,11 +27083,11 @@ - + - + @@ -27096,18 +27096,18 @@ - + - + - + @@ -27118,7 +27118,7 @@ - + @@ -27145,29 +27145,29 @@ - + - + - + - + - + - + - + @@ -27180,7 +27180,7 @@ - + @@ -27195,7 +27195,7 @@ - + @@ -27208,7 +27208,7 @@ - + @@ -27218,14 +27218,23 @@ + + + + + + + + + - + - + @@ -27234,9 +27243,9 @@ - + - + @@ -27245,27 +27254,18 @@ - + - + - - - - - - - - - - + @@ -27299,14 +27299,14 @@ - + - + @@ -27315,7 +27315,7 @@ - + @@ -27326,7 +27326,7 @@ - + @@ -27337,7 +27337,7 @@ - + @@ -27346,7 +27346,7 @@ - + @@ -27394,7 +27394,7 @@ - + @@ -27403,14 +27403,14 @@ - + - + @@ -27424,7 +27424,7 @@ - + @@ -27433,7 +27433,7 @@ - + @@ -28537,10 +28537,10 @@ - + - + @@ -28612,7 +28612,7 @@ - + @@ -28754,9 +28754,9 @@ - + - + @@ -30011,11 +30011,11 @@ - + - + @@ -30997,7 +30997,7 @@ - + @@ -31048,11 +31048,11 @@ - + - + @@ -33500,7 +33500,7 @@ - + @@ -36919,10 +36919,10 @@ - - - - + + + + @@ -37221,11 +37221,11 @@ - + - + @@ -37315,7 +37315,7 @@ - + @@ -37324,7 +37324,7 @@ - + @@ -39014,9 +39014,9 @@ - - - + + + @@ -39942,7 +39942,7 @@ - + @@ -42720,13 +42720,13 @@ - + - + @@ -43277,7 +43277,7 @@ - + @@ -43290,7 +43290,7 @@ - + diff --git a/tests/data/test-annotate/test17-pr19027.so.abi b/tests/data/test-annotate/test17-pr19027.so.abi index d27999c0..98d5282e 100644 --- a/tests/data/test-annotate/test17-pr19027.so.abi +++ b/tests/data/test-annotate/test17-pr19027.so.abi @@ -973,7 +973,7 @@ - + @@ -1085,7 +1085,7 @@ - + @@ -2395,23 +2395,23 @@ - + - + - + - + - + - + - + - + @@ -2502,22 +2502,20 @@ - - - - - - + + + + - + - + @@ -2526,17 +2524,19 @@ + + + + - - - - - + + + - + @@ -3055,7 +3055,7 @@ - + @@ -3067,7 +3067,7 @@ - + @@ -3078,7 +3078,7 @@ - + @@ -3086,14 +3086,14 @@ - + - + @@ -3104,7 +3104,7 @@ - + @@ -3115,7 +3115,7 @@ - + @@ -3126,7 +3126,7 @@ - + @@ -3141,7 +3141,7 @@ - + @@ -3344,31 +3344,31 @@ - + - + - + - + - + - + @@ -3383,7 +3383,7 @@ - + @@ -3392,7 +3392,7 @@ - + @@ -3401,14 +3401,14 @@ - + - + @@ -3417,14 +3417,14 @@ - + - + @@ -3433,14 +3433,14 @@ - + - + @@ -3449,14 +3449,14 @@ - + - + @@ -3465,14 +3465,14 @@ - + - + @@ -3481,7 +3481,7 @@ - + @@ -3490,7 +3490,7 @@ - + @@ -3499,14 +3499,14 @@ - + - + @@ -3515,28 +3515,28 @@ - + - + - + - + @@ -3545,14 +3545,14 @@ - + - + @@ -3563,7 +3563,7 @@ - + @@ -3572,14 +3572,14 @@ - + - + @@ -3588,7 +3588,7 @@ - + @@ -3597,28 +3597,28 @@ - + - + - + - + @@ -3633,7 +3633,7 @@ - + @@ -3648,7 +3648,7 @@ - + @@ -3663,7 +3663,7 @@ - + @@ -3678,7 +3678,7 @@ - + @@ -4826,15 +4826,15 @@ - + - + - + - + - + @@ -4842,11 +4842,11 @@ - + - + - + @@ -4856,7 +4856,7 @@ - + @@ -5067,8 +5067,20 @@ - + + + + + + + + + + + + + @@ -5081,28 +5093,16 @@ + + + + - - - - - - - - - - - - - - - - @@ -8918,7 +8918,7 @@ - + @@ -8935,7 +8935,7 @@ - + @@ -8950,9 +8950,9 @@ - + - + @@ -8965,9 +8965,9 @@ - + - + @@ -8982,9 +8982,9 @@ - + - + @@ -9001,7 +9001,7 @@ - + @@ -9020,7 +9020,7 @@ - + @@ -9035,7 +9035,7 @@ - + @@ -9050,9 +9050,9 @@ - - + + @@ -9274,7 +9274,7 @@ - + @@ -9287,7 +9287,7 @@ - + @@ -9296,7 +9296,7 @@ - + @@ -9305,7 +9305,7 @@ - + @@ -9318,7 +9318,7 @@ - + @@ -9331,7 +9331,7 @@ - + @@ -9342,7 +9342,7 @@ - + @@ -9353,7 +9353,7 @@ - + @@ -9364,7 +9364,7 @@ - + @@ -9379,7 +9379,7 @@ - + @@ -9392,7 +9392,7 @@ - + @@ -9405,7 +9405,7 @@ - + @@ -9420,7 +9420,7 @@ - + @@ -9435,7 +9435,7 @@ - + @@ -9450,7 +9450,7 @@ - + @@ -9465,7 +9465,7 @@ - + @@ -9482,7 +9482,7 @@ - + @@ -9495,7 +9495,7 @@ - + @@ -9512,7 +9512,7 @@ - + @@ -9525,7 +9525,7 @@ - + @@ -9540,38 +9540,38 @@ - + - + - + - + - + - + - + - + @@ -9586,7 +9586,7 @@ - + @@ -9595,35 +9595,35 @@ - + - + - + - + - + - + @@ -9636,7 +9636,7 @@ - + @@ -9647,7 +9647,7 @@ - + @@ -9658,7 +9658,7 @@ - + @@ -9669,7 +9669,7 @@ - + @@ -9680,7 +9680,7 @@ - + @@ -10262,7 +10262,7 @@ - + @@ -10278,11 +10278,11 @@ - + - + @@ -10304,7 +10304,7 @@ - + @@ -10316,9 +10316,9 @@ - + - + @@ -10365,15 +10365,15 @@ - + - + - + - + - + @@ -10434,19 +10434,19 @@ - + - + - + @@ -12802,7 +12802,7 @@ - + @@ -13329,7 +13329,7 @@ - + @@ -13385,9 +13385,9 @@ - - + + @@ -13402,9 +13402,9 @@ - - + + @@ -13417,9 +13417,9 @@ - - + + @@ -13432,9 +13432,9 @@ - - + + @@ -14644,1032 +14644,1038 @@ - + - + - + - + - + - + - + - + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -15687,7 +15693,7 @@ - + @@ -15707,16 +15713,10 @@ - - - - - - - - + + - + @@ -15760,7 +15760,7 @@ - + @@ -15828,9 +15828,9 @@ - - + + @@ -15841,9 +15841,9 @@ - - + + @@ -15883,9 +15883,9 @@ - + - + @@ -15894,9 +15894,9 @@ - + - + @@ -15905,7 +15905,7 @@ - + @@ -15916,9 +15916,9 @@ - + - + @@ -15927,9 +15927,9 @@ - + - + @@ -15949,9 +15949,9 @@ - + - + @@ -15979,9 +15979,9 @@ - + - + @@ -15990,7 +15990,7 @@ - + @@ -15999,9 +15999,9 @@ - + - + @@ -16010,9 +16010,9 @@ - + - + @@ -16032,7 +16032,7 @@ - + @@ -16086,9 +16086,9 @@ - + - + @@ -16139,7 +16139,7 @@ - + @@ -16194,7 +16194,7 @@ - + @@ -16253,7 +16253,7 @@ - + @@ -16304,9 +16304,9 @@ - + - + @@ -16356,7 +16356,7 @@ - + @@ -16384,7 +16384,7 @@ - + @@ -16395,7 +16395,7 @@ - + @@ -16543,7 +16543,7 @@ - + @@ -16669,7 +16669,7 @@ - + @@ -16771,7 +16771,7 @@ - + @@ -16821,7 +16821,7 @@ - + @@ -16880,7 +16880,7 @@ - + @@ -16930,7 +16930,7 @@ - + @@ -17004,7 +17004,7 @@ - + @@ -17030,7 +17030,7 @@ - + @@ -17113,7 +17113,7 @@ - + @@ -17261,7 +17261,7 @@ - + @@ -17341,7 +17341,7 @@ - + @@ -17378,7 +17378,7 @@ - + @@ -17428,7 +17428,7 @@ - + @@ -17478,7 +17478,7 @@ - + @@ -17582,7 +17582,7 @@ - + @@ -17630,7 +17630,7 @@ - + @@ -17698,7 +17698,7 @@ - + @@ -17761,7 +17761,7 @@ - + @@ -17824,7 +17824,7 @@ - + @@ -17883,7 +17883,7 @@ - + @@ -17956,9 +17956,9 @@ - + - + @@ -18003,7 +18003,7 @@ - + @@ -18048,7 +18048,7 @@ - + @@ -18097,7 +18097,7 @@ - + @@ -18138,9 +18138,9 @@ - + - + @@ -18149,9 +18149,9 @@ - + - + @@ -18160,9 +18160,9 @@ - + - + @@ -18171,9 +18171,9 @@ - + - + @@ -18193,7 +18193,7 @@ - + @@ -18204,9 +18204,9 @@ - + - + @@ -18267,7 +18267,7 @@ - + @@ -18276,9 +18276,9 @@ - + - + @@ -18287,9 +18287,9 @@ - + - + @@ -18309,7 +18309,7 @@ - + @@ -18320,9 +18320,9 @@ - + - + @@ -18362,7 +18362,7 @@ - + @@ -18371,9 +18371,9 @@ - + - + @@ -18393,7 +18393,7 @@ - + @@ -18404,9 +18404,9 @@ - + - + @@ -18415,9 +18415,9 @@ - + - + @@ -18453,7 +18453,7 @@ - + @@ -18462,9 +18462,9 @@ - + - + @@ -18473,9 +18473,9 @@ - + - + @@ -18495,7 +18495,7 @@ - + @@ -18506,9 +18506,9 @@ - + - + @@ -18550,9 +18550,9 @@ - + - + @@ -18563,9 +18563,9 @@ - + - + @@ -18587,7 +18587,7 @@ - + @@ -18600,9 +18600,9 @@ - + - + @@ -18635,9 +18635,9 @@ - + - + @@ -18648,9 +18648,9 @@ - + - + @@ -18661,9 +18661,9 @@ - + - + @@ -18674,7 +18674,7 @@ - + @@ -18726,7 +18726,7 @@ - + @@ -18737,7 +18737,7 @@ - + @@ -18750,7 +18750,7 @@ - + @@ -18835,7 +18835,7 @@ - + @@ -18845,7 +18845,7 @@ - + @@ -18858,7 +18858,7 @@ - + @@ -18880,7 +18880,7 @@ - + @@ -18921,9 +18921,9 @@ - + - + @@ -18932,9 +18932,9 @@ - + - + @@ -18943,9 +18943,9 @@ - + - + @@ -18954,9 +18954,9 @@ - + - + @@ -18976,7 +18976,7 @@ - + @@ -18987,9 +18987,9 @@ - + - + @@ -19071,7 +19071,7 @@ - + @@ -19080,9 +19080,9 @@ - + - + @@ -19091,9 +19091,9 @@ - + - + @@ -19113,7 +19113,7 @@ - + @@ -19124,9 +19124,9 @@ - + - + @@ -19158,7 +19158,7 @@ - + @@ -19167,9 +19167,9 @@ - + - + @@ -19189,7 +19189,7 @@ - + @@ -19200,9 +19200,9 @@ - + - +