From patchwork Mon May 2 22:46:26 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Guillermo E. Martinez" X-Patchwork-Id: 53407 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 B3BB23857356 for ; Mon, 2 May 2022 22:46:46 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B3BB23857356 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1651531606; bh=UEw9Bc1IlwjgS/+TBovsZjLP/Md+G6A1TCFH2XYlc3s=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Help:List-Subscribe:From:Reply-To:From; b=QV8q+49zeiW4uV+h6PmuwW353T3FGA1UhKrObyXMNYrDY+OyqsEc1eU/TjqTz1k/G oL62lVecV8FuHiB5zgkb4p/UaRrIoiFs+lxzHulO7qklsQtRqLr6lyNbr/9efbXxuU Xq2zNcNJGUGBtbPCGeNT6Z2Hg+JHmFwIGOR+mTLI= X-Original-To: libabigail@sourceware.org Delivered-To: libabigail@sourceware.org Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by sourceware.org (Postfix) with ESMTPS id 955F73857815 for ; Mon, 2 May 2022 22:46:41 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 955F73857815 Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 242IvCJI018740 for ; Mon, 2 May 2022 22:46:40 GMT Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3frwnt4fs0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Mon, 02 May 2022 22:46:40 +0000 Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.16.1.2/8.16.1.2) with SMTP id 242MjOFf032157 for ; Mon, 2 May 2022 22:46:38 GMT Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2170.outbound.protection.outlook.com [104.47.59.170]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com with ESMTP id 3fsvbku4e0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Mon, 02 May 2022 22:46:38 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=U9fddN64IK1UCXZG1R7yhpTiPZtL9j5Yd7WOUGbUOFIMCk/mjNx/KIAv1y7wMxrEpfI7itG1aQk+5ASW0TX0JERXl3tR+4jwTvR0qF8bvctTg45Y1E6BdlQS7wd4xUAx5n5QrB8j+sIhcTDBIeDyj5UldQH+A6kwqgaZzf7X43GPpYHGsST00g/iNAGFvhqzpXo1qShRcVuMbSdJ003kqq0ZwFZhRJXp4teq59Fvpsp9zzr8dxXYvrt7NfyBlHR58ixr03+ydVQipyurDV1IYtyZIaWnJA2lBIZ86A9Fqr0dn7uuY9xxDlyZcbDZKStabFUky1S7O9D7f8PqKphccg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=UEw9Bc1IlwjgS/+TBovsZjLP/Md+G6A1TCFH2XYlc3s=; b=Td8xUOKYQVUiX/S6vdfIDKUI71i1Su9/LEWr0b5UTpH1li6amPL4mkILSsVIs6sNBQHuaMARWJk911PDySFXO5Zgll99HWOMiZRifOuqxB8T5qpDblJutkpE7HZzy835UGshpihiDij422I6Jen0TlIe/aACHv0962t6t+OZFjiuqQDEVeD02kanOd3jlumMzwXYD4BQts8n6T1IOqdHfs6HwA9uO4cqb2owfzpoZxmkN6bd/3UuMnjs3yH4njRJedsWfwkz8xvW5j3oKf3m/iJme76TAIkcJnINnsmwU1+l5I82k9epQR8xY6Ekr6Kkw3ud+EHnEq/b8VZyNy1i3A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none Received: from MWHPR10MB1407.namprd10.prod.outlook.com (2603:10b6:300:23::20) by CH2PR10MB4038.namprd10.prod.outlook.com (2603:10b6:610:2::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5206.13; Mon, 2 May 2022 22:46:36 +0000 Received: from MWHPR10MB1407.namprd10.prod.outlook.com ([fe80::107d:de35:fa5f:3cc0]) by MWHPR10MB1407.namprd10.prod.outlook.com ([fe80::107d:de35:fa5f:3cc0%7]) with mapi id 15.20.5206.024; Mon, 2 May 2022 22:46:36 +0000 To: libabigail@sourceware.org Subject: [PATCH v2] ctf-reader: shows incomplete summary changes Date: Mon, 2 May 2022 17:46:26 -0500 Message-Id: <20220502224626.748068-1-guillermo.e.martinez@oracle.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220427163828.2065797-1-guillermo.e.martinez@oracle.com> References: <20220427163828.2065797-1-guillermo.e.martinez@oracle.com> X-ClientProxiedBy: SA0PR11CA0108.namprd11.prod.outlook.com (2603:10b6:806:d1::23) To MWHPR10MB1407.namprd10.prod.outlook.com (2603:10b6:300:23::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: aa0c86bd-7b6c-4fc5-03f0-08da2c8d9ce2 X-MS-TrafficTypeDiagnostic: CH2PR10MB4038:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: nmhborm2chYALuF1kWSGYXlPOLKhZAvPU+BkDv1Ks4VPQgiwlf++xm/mRaMzpw/fQCDKtAQR4Q9bFEsKwXdVkUzcp2Jh3TqTcEM4Xdq6PmtS4r2wRv4aBCHJzztVBGSUUq8CJCbZBgG69YYYwQ5Voa5LGb1jf7yVj21/buXoE/+H9UVm2tdG9Fpk+pSDkbxCt++wC5z6QubzipxxLt8IBpCdHgq5f6EAh08sV1FCtyqO5yswbwmqeJfYdr+4X0iL/tHILKDkGx5+UZQriu+272Q6G9t0+ja+HKSs6t6BWAEmtqzkhTdqe1WDpGsCjRFHDsOKa8pfm+RqSnhZOntcrYvEWe13JbhUhjSkS/Z9QV2kPMtIM1GSm2TLVHI8pa5tctbW35TRCYkvSuOcAxZMMmS5ausrBsLSTTBXlkibrJ67dMuOdGLFFS2JAtO2Ce/wDsleJJpwdc72zvh0dY7umMEYLdRccvOCIusKi8mMe/rr9PFfZOyyS06vOTSGVQmak1obyA3sCRQvLjrDJWgCu6NsQOUahUSksOXLI5Fs/0S9En6I31ns4Gk2+HZq/Bk7Yd4NdMJzbW8c7uLbVcR51suTDIusdyX2UDLUl7SnTOPzS9513XHmdl3Vt/S6WX63yxlQKs30z+tx5pDwh77WYKLVNnCxloUDZXTxZRMLwjLtqMQTMDujPgQGAWPY8VxS+sjsMSDt9DvuQycLscGM+O7fbn+aYGPBIuzAesA6s4ITTi40nWPXUdLf0UO6TZ3skEAfqr4I1y0tc1vM06vwbg== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MWHPR10MB1407.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(6506007)(966005)(2906002)(316002)(6486002)(38100700002)(6666004)(6916009)(1076003)(103116003)(186003)(508600001)(86362001)(6512007)(107886003)(2616005)(83380400001)(36756003)(52116002)(5660300002)(8676002)(8936002)(66946007)(4326008)(66476007)(66556008); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: VKjO/bKFmWDSFRCvR45X+bQrhsovuaQ5HQeqlZ3rJkkXxQoxgAweA+42f93+t6Q5hXrR+HdjF5w1TzZbMQgoaH2m0zgRQYwUXyOh4pL1N0YZxbLpDwjbh7qWqbOx1Hy480BIZAVgXz7V4EE8igLCbqP6SSVHEz97nRJxx+VANf8i9JfHzYNsHGJAEeMx+7dPhxSzqn/RpDXsS3Ov4sleup3dioWSEtFDYcfQATYfE8mkTnrdn1dnQhqeADZLVkMzRGsuE0dNDuU+tGVn9MDy0ciKQxFXROoZ613De+A1DBDzSFHMNy/47+BGR0hewr4l5i17Fdl5tQAefxNjeul5fuQmCe3CYkB+uyQSrYvT6r3kDxmIF8dHve3KphHATPSmeNucCehaKg5vJizX1MQLryM5jGrNiB8SeteWqhpsv6JTiRTqHmZ/C20IFwE7+hT35PML4+sEmBOwhZnAHv6itKr63/TV3fyTaIM6F1sdhTueTL81LpMUbrGqpfBHqzGopzI+Fv3k9S07sHv4jP6MFFLkemt6ec39JqRUCE5PFq9PoWkW92kDNHl5H99t9Pz3/EC/41Fj+bGqNXozqAtBG+dhxvAmK6CvFvVjtUxlEbjq2KNXnS7tmxEcG2vCkcnQGmzggApOfo7QKxP+9TvvHSOAvl0h1enWQKNyoXY9rPgLl/vVVsmlCWmUcSKmcedf1YK5SAlIyywHV9+HhjoKZeJVpgAzoRGuLXu4lvTpIiR/EEC2D7uWE/SgOyRrTDU0obWG2ig2yZKl8TnuSvzQnXTGzzMqUDUvrdZsncF+6D5RxeyrKNFZk37+EMt2yBw+UMXUlzdsH7hZ4gzjW5Fp/6s6dn0s5QayFLnYlEhhsYiHWCfSWqHYpQ+urRUwg375iWOZjg+Zy5O+odJbHb18kvFe0RF/ezdaD7kSAjHX2uyIRVoN/Loqd5IaxScrG5paMXJ8jH3Q27CDuQnNgnyyDKrt50MGJGU/DlbpC8rf2ifwjmp1MAeTa3exotHX4aT7OJgM7uLfNjIYAgnKoKvyWREvERPKfKZXSi+ffvKkGZAlnIcJwLfFlLGR9C8NGH1UIQhQ6bAFG12bgELuZSU+V9ve6V80qKjThea3xRfCXVeFOP4a8NOVsLDx9pZPz7TwwB41p7GNbCXSFPd+7tSvRszOgkpDy37CDDydcdvEveQZ5o+WIl7/YLoICuubL6X112rMFwxMwk+k1ZbQEizEbmYzZK3X4PHKohQLUyVO5AS0BZGsaxIyiczbpV4t3fbL6bRD2jg5+vN71sL+d9nhlSka2iQBn8OISk3FfHJzYIYkTyJSZLfWRgSTxk4MvZDM/TSyVycIdHNL4iEu/wuqh5Ps7hNBvFvh+sPlsLzv3znBqBt3FcqrP6kA4hLgShJd5kTWH2tti+4F5lROd71spzCeefOCT3SDjIgrP+8yVgrJP6D8P6pn/pvdvYt+aoj7Lguak9Bo4tSIVcACPhcZ9uZle7uTcJtjW1E+8uRqrfTBn+kWMHsuotxRaIVSJ4fzzTM1zJNDRQohfnaS4Gh0A1oGMBfm+6T4wHSBHjG80auVO71HYTJNykrdjjZ1UjY47AZexYkV+be3jsJT9xAX41dk2brWtnG3PdsDw7/Co7QiXTNPNOIH6NGHRpN2pCCXtIcIl+nhEo4MHEhcvaAR2GVrtOnsKkn8zqr4xiY0HMtkbYjkGEF7xEGPg1M9P9GLWgOAx+UhSEdfYoXyaL5EU4Ehpsg8JU2nrbTcieOLRgxwdD69btKt4ANVyINmO97+xa5QO9s9 X-MS-Exchange-AntiSpam-MessageData-1: gPoCJicL6Dty6A== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: aa0c86bd-7b6c-4fc5-03f0-08da2c8d9ce2 X-MS-Exchange-CrossTenant-AuthSource: MWHPR10MB1407.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 May 2022 22:46:36.2602 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: v1L+2ipN1QVgeOm2ZPqiCVsSMwipvNkqW4QsNWhYk1QIYjs0nNdQiOoYJbxfLKHOrbJTDSG2oKginHmRkslmXBUO/jq+YoeyHPsXqMQAQl4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR10MB4038 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.486, 18.0.858 definitions=2022-05-02_07:2022-05-02, 2022-05-02 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 bulkscore=0 spamscore=0 malwarescore=0 adultscore=0 suspectscore=0 mlxscore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2205020168 X-Proofpoint-ORIG-GUID: VSUIOB9HKemEOOcT4xeqyy8eHqaujrNj X-Proofpoint-GUID: VSUIOB9HKemEOOcT4xeqyy8eHqaujrNj X-Spam-Status: No, score=-12.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, SPF_HELO_NONE, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libabigail@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Mailing list of the Libabigail project List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-Patchwork-Original-From: "Guillermo E. Martinez via Libabigail" From: "Guillermo E. Martinez" Reply-To: "Guillermo E. Martinez" Errors-To: libabigail-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libabigail" Hello libabigail team, This is the patch v2 to improves the output summary changes using CTF reader. Changes from v1: * Rebase from master This patch depends of: https://sourceware.org/pipermail/libabigail/2022q2/004309.html https://sourceware.org/pipermail/libabigail/2022q2/004310.html Comments are highly appreciated, Kind Regards, Guillermo During corpus comparison with ctf support, summary changes for functions and variables are shown like to the binaries doesn't have ctf debug information, even though they were compiled with '-gctf' compiler modifier, e.g: 2 Removed function symbols not referenced by debug info: [D] elf32_test_main@@ELFUTILS_1.7 [D] elf64_test_main@@ELFUTILS_1.7 So, expected changes summary should be: 2 Removed functions: [D] 'function long int elf32_test_main()' {elf32_test_main@@ELFUTILS_1.7} [D] 'function long int elf64_test_main()' {elf64_test_main@@ELFUTILS_1.7} * src/abg-ctf-reader.cc (read_context::exported_decls_builder_): Add new data member. (read_context::exported_decls_builder): Add new get/set member functions. (read_context::maybe_add_{fn,var}_to_exported_decls): Likewise. (read_context::initialize): Initialize exported_decls_builder_ member. (read_context::build_ir_node_for_variadic_parameter_type): Add new function. (read_context::process_ctf_function_type): Add additional code to handle function's variadic parameter. (read_context::process_ctf_archive): Rename variable for clarity from `ctf_var_type' to `ctf_sym_type', using new member functions `maybe_add_{fn,var}_to_exported_decls'. (read_context::read_corpus): Set `exported_decls_builder'. * tests/test-read-common.cc (test_task::run_abidw): Fix error message. * tests/data/test-read-ctf/test-PR26568-1.o.abi: Adjust test case. * tests/data/test-read-ctf/test-PR26568-2.o.abi: Likewise. * tests/data/test-read-ctf/test-anonymous-fields.o.abi Likewise. * tests/data/test-read-ctf/test5.o.abi: Likewise. * tests/data/test-read-ctf/test7.o.abi: Likewise. Signed-off-by: Guillermo E. Martinez --- src/abg-ctf-reader.cc | 106 +++++++++++++++++++++++++-- tests/data/test-read-ctf/test5.o.abi | 1 + tests/data/test-read-ctf/test7.o.abi | 1 + tests/test-read-common.cc | 4 +- 4 files changed, 103 insertions(+), 9 deletions(-) base-commit: 9054dbf9e2d1d0df09d02b07bf3aac6bf0f5bced prerequisite-patch-id: ef0f517f89af7ae3cc1b573532a4805493058fd4 prerequisite-patch-id: 06bfd002727e58acb5f8666c5fbc20be45b31d35 diff --git a/src/abg-ctf-reader.cc b/src/abg-ctf-reader.cc index 8cb65b65..d5e2d6e3 100644 --- a/src/abg-ctf-reader.cc +++ b/src/abg-ctf-reader.cc @@ -84,6 +84,52 @@ public: corpus_sptr cur_corpus_; corpus_group_sptr cur_corpus_group_; + corpus::exported_decls_builder* exported_decls_builder_; + + /// Setter of the exported decls builder object. + /// + /// Note that this @ref read_context is not responsible for the live + /// time of the exported_decls_builder object. The corpus is. + /// + /// @param b the new builder. + void + exported_decls_builder(corpus::exported_decls_builder* b) + {exported_decls_builder_ = b;} + + /// Getter of the exported decls builder object. + /// + /// @return the exported decls builder. + corpus::exported_decls_builder* + exported_decls_builder() + {return exported_decls_builder_;} + + /// If a given function decl is suitable for the set of exported + /// functions of the current corpus, this function adds it to that + /// set. + /// + /// @param fn the function to consider for inclusion into the set of + /// exported functions of the current corpus. + void + maybe_add_fn_to_exported_decls(function_decl* fn) + { + if (fn) + if (corpus::exported_decls_builder* b = exported_decls_builder()) + b->maybe_add_fn_to_exported_fns(fn); + } + + /// If a given variable decl is suitable for the set of exported + /// variables of the current corpus, this variable adds it to that + /// set. + /// + /// @param fn the variable to consider for inclusion into the set of + /// exported variables of the current corpus. + void + maybe_add_var_to_exported_decls(var_decl* var) + { + if (var) + if (corpus::exported_decls_builder* b = exported_decls_builder()) + b->maybe_add_var_to_exported_vars(var); + } /// Getter of the current corpus group being constructed. /// @@ -212,6 +258,7 @@ public: is_elf_exec = false; symtab.reset(); cur_corpus_group_.reset(); + exported_decls_builder_ = 0; } ~read_context() @@ -363,6 +410,28 @@ process_ctf_base_type(read_context *ctxt, return result; } +/// Build the IR node for a variadic parameter type. +/// +/// @param ctxt the read context to use. +/// +/// @param tunit the translation unit to use. +/// +/// @return the variadic parameter type. +static decl_base_sptr +build_ir_node_for_variadic_parameter_type(read_context &ctxt, + translation_unit_sptr tunit) +{ + + ir::environment* env = ctxt.ir_env; + ABG_ASSERT(env); + type_base_sptr t = env->get_variadic_parameter_type(); + decl_base_sptr type_declaration = get_type_declaration(t); + if (!has_scope(type_declaration)) + add_decl_to_scope(type_declaration, tunit->get_global_scope()); + canonicalize(t); + return type_declaration; +} + /// Build and return a function type libabigail IR. /// /// @param ctxt the read context. @@ -413,11 +482,24 @@ process_ctf_function_type(read_context *ctxt, function_decl::parameter_sptr parm (new function_decl::parameter(arg_type, "", location(), - vararg_p && (i == argc - 1), + false, false /* is_artificial */)); function_parms.push_back(parm); } + if (vararg_p) + { + type_base_sptr arg_type = + is_type(build_ir_node_for_variadic_parameter_type(*ctxt, tunit)); + + function_decl::parameter_sptr parm + (new function_decl::parameter(arg_type, "", + location(), + true, + false /* is_artificial */)); + function_parms.push_back(parm); + } + result = dynamic_pointer_cast(ctxt->lookup_type(ctf_dictionary, ctf_type)); if (result) @@ -1115,22 +1197,22 @@ process_ctf_archive(read_context *ctxt, corpus_sptr corp) for (const auto& symbol : symtab_reader::filtered_symtab(*symtab, filter)) { std::string sym_name = symbol->get_name(); - ctf_id_t ctf_var_type; + ctf_id_t ctf_sym_type; if (corp->get_origin() == corpus::LINUX_KERNEL_BINARY_ORIGIN || ctxt->is_elf_exec) - ctf_var_type= ctf_lookup_variable (ctf_dict, sym_name.c_str()); + ctf_sym_type= ctf_lookup_variable (ctf_dict, sym_name.c_str()); else - ctf_var_type = ctf_lookup_by_symbol_name(ctf_dict, sym_name.c_str()); + ctf_sym_type = ctf_lookup_by_symbol_name(ctf_dict, sym_name.c_str()); - if (ctf_var_type == (ctf_id_t) -1) + if (ctf_sym_type == (ctf_id_t) -1) continue; - if (ctf_type_kind (ctf_dict, ctf_var_type) != CTF_K_FUNCTION) + if (ctf_type_kind (ctf_dict, ctf_sym_type) != CTF_K_FUNCTION) { const char *var_name = sym_name.c_str(); type_base_sptr var_type = lookup_type(ctxt, corp, ir_translation_unit, - ctf_dict, ctf_var_type); + ctf_dict, ctf_sym_type); if (!var_type) /* Ignore variable if its type can't be sorted out. */ continue; @@ -1144,11 +1226,13 @@ process_ctf_archive(read_context *ctxt, corpus_sptr corp) var_declaration->set_symbol(symbol); add_decl_to_scope(var_declaration, ir_translation_unit->get_global_scope()); + var_declaration->set_is_in_public_symbol_table(true); + ctxt->maybe_add_var_to_exported_decls(var_declaration.get()); } else { const char *func_name = sym_name.c_str(); - ctf_id_t ctf_sym = ctf_var_type; + ctf_id_t ctf_sym = ctf_sym_type; type_base_sptr func_type = lookup_type(ctxt, corp, ir_translation_unit, ctf_dict, ctf_sym); if (!func_type) @@ -1164,6 +1248,8 @@ process_ctf_archive(read_context *ctxt, corpus_sptr corp) func_declaration->set_symbol(symbol); add_decl_to_scope(func_declaration, ir_translation_unit->get_global_scope()); + func_declaration->set_is_in_public_symbol_table(true); + ctxt->maybe_add_fn_to_exported_decls(func_declaration.get()); } } @@ -1341,6 +1427,10 @@ read_corpus(read_context *ctxt, elf_reader::status &status) return corp; } + // Set the set of exported declaration that are defined. + ctxt->exported_decls_builder + (ctxt->cur_corpus_->get_exported_decls_builder().get()); + int errp; if (corp->get_origin() == corpus::LINUX_KERNEL_BINARY_ORIGIN) { diff --git a/tests/data/test-read-ctf/test5.o.abi b/tests/data/test-read-ctf/test5.o.abi index f7bcdeb1..1dafd13e 100644 --- a/tests/data/test-read-ctf/test5.o.abi +++ b/tests/data/test-read-ctf/test5.o.abi @@ -32,6 +32,7 @@ + diff --git a/tests/data/test-read-ctf/test7.o.abi b/tests/data/test-read-ctf/test7.o.abi index a13af174..ca572400 100644 --- a/tests/data/test-read-ctf/test7.o.abi +++ b/tests/data/test-read-ctf/test7.o.abi @@ -26,6 +26,7 @@ + diff --git a/tests/test-read-common.cc b/tests/test-read-common.cc index 9681ac27..b441945c 100644 --- a/tests/test-read-common.cc +++ b/tests/test-read-common.cc @@ -95,6 +95,8 @@ test_task::run_abidw(const string& extargs) { string abidw = string(get_build_dir()) + "/tools/abidw"; string drop_private_types; + set_in_abi_path(); + if (!in_public_headers_path.empty()) drop_private_types += "--headers-dir " + in_public_headers_path + " --drop-private-types"; @@ -103,7 +105,7 @@ test_task::run_abidw(const string& extargs) if (system(cmd.c_str())) { error_message = string("ABIs differ:\n") - + in_elf_path + + in_abi_path + "\nand:\n" + out_abi_path + "\n";