From patchwork Wed Apr 6 16:59:07 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: 52684 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 E74FF3857C4A for ; Wed, 6 Apr 2022 16:59:42 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E74FF3857C4A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1649264382; bh=YeMjpcHMqf13fqYpL9swgCB8Km/+HvgKOsFsFv6m/EQ=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Help:List-Subscribe:From:Reply-To:From; b=Qd4aX0zC1XJFi/XhEDOuAz2e6C31DrKnieP8SWdFk2wzIuC5+kxKj3XQqfDv+IQBr 6PNUTrtWi6A+npniQVd5wgf20FwsMUgZ48AGxDX7/xn42P+O7KwnLB3DTvmX8dDgTl DuSFrVFJQUR9sfHXaTpvkyfg4ihGmtXABFb+je3U= 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 597393858C50 for ; Wed, 6 Apr 2022 16:59:22 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 597393858C50 Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 236GWb9j014690 for ; Wed, 6 Apr 2022 16:59:21 GMT Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com with ESMTP id 3f6ec9sc9b-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Wed, 06 Apr 2022 16:59:20 +0000 Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.16.1.2/8.16.1.2) with SMTP id 236Guuhu020543 for ; Wed, 6 Apr 2022 16:59:19 GMT Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2172.outbound.protection.outlook.com [104.47.59.172]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com with ESMTP id 3f974d383y-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Wed, 06 Apr 2022 16:59:18 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bJVj/KOsL9hDPF1RrJhAluer/Ut2DE1CJpN6clYurT6t+SS/VPp8aRlMbhpDoi7skYNmaPGXVqHppiubL60a39HiGbzP6l24Ljw5PAFH6oeajmw5HBn2BF+bL2AoSXV+5YAkX42a9FRef4Y+XE3+UhQordunVx6XzHYOuuxMvMSZlXhgDvgVAOARZByppMIqgvjQDi0hdUbBjxi+FPlzSw/QFe80liRPIloPBRALbye81m7BATO6Kuyaa2/ImiTL2BTl03uil9YsAxX3qXENv9Qe9Gqha19xZUgsZkuSTjqVhUiDBbo7Zvlkw7gmJ+yDsV0JtX+de4LrtYXvxlkAsQ== 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=YeMjpcHMqf13fqYpL9swgCB8Km/+HvgKOsFsFv6m/EQ=; b=inoBlsbrJ5KqvpGGnL7i9ZsgMX6TRrbHTPdjoIt96o8dGUIV2n7d4a3hI3ObP1TiNwprAydZ20EYuH8CXgpwhIRwb3cOhaV977IX8hqZ1aqpnBk2YosXjGZWR6t74evHT4x191yE8yVO6omf/jX0jFVIhEjN6fS/3BuSxdHSRZ/2fAQDnAc+cP7MEI1Ihv3sys2LorqWrfcarUjnOZ24UkCxuiUqu/ujlCh0a3Bqw+3B6sxz5m6PeSxRWeaSt4hssN7Po7iaZlyZuBPN7Gx+DL4jZVtH4Z/VF7Cfr3Ks5u7aAP6pdDOHOFk82JfSYYlVY1BjBWEHJDGfaQG7xONyGw== 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 MWHPR1001MB2189.namprd10.prod.outlook.com (2603:10b6:301:36::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5144.21; Wed, 6 Apr 2022 16:59:17 +0000 Received: from MWHPR10MB1407.namprd10.prod.outlook.com ([fe80::28aa:6d3b:680b:3cb5]) by MWHPR10MB1407.namprd10.prod.outlook.com ([fe80::28aa:6d3b:680b:3cb5%9]) with mapi id 15.20.5144.021; Wed, 6 Apr 2022 16:59:17 +0000 To: libabigail@sourceware.org Subject: [PATCH v2] ctf-reader: Fix multiple var-decl in anonymous struct/uninons Date: Wed, 6 Apr 2022 11:59:07 -0500 Message-Id: <20220406165907.1474155-1-guillermo.e.martinez@oracle.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20211216052007.374822-1-guillermo.e.martinez@oracle.com> References: <20211216052007.374822-1-guillermo.e.martinez@oracle.com> X-ClientProxiedBy: DM6PR11CA0054.namprd11.prod.outlook.com (2603:10b6:5:14c::31) 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: a7db8610-63ed-4515-3505-08da17eec8d9 X-MS-TrafficTypeDiagnostic: MWHPR1001MB2189: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: /Kq+3G9zh1LhRkPVEknUShBqS8PJh9kbRqUpG8fUqFT6yR/kYgVaUH1n+3bD6+hFKafvDKcBr0yD3cbd7oXhRDeA/G/UEKDUlvwHOn+vdZcuKgh+bwZtS3Y37chCJvuI1JwiraFeuffBGi+PoU14Hpdd6dQ5xFnCDME4miJwozbijpPAaSF/RqTp8BF8DF0Upy8rQlc799eV91LyQbkKDwHoKsiTOYj3AhRLhmFuQ9wUdoHKnGtro5XAvwgfS4cSUjyMwfAt8ZGbNV+ksg1Ftj8a4C4Y8WVywV4APlQJ5W/A0ussIq99Od1y55VNI1rjzKzRkwUL2ZJNVJWSmfwpTwDmq1CrtlJ8/khBRaowHz4SmENf4uzrW6kUtECuvsJdtXlUBBaUiNOo/KKYnyu3m1yGeE8eFYBp/g0Ho3h0+kk5OYf7r1WBD+EemM2ASPQ+xSYsZAR2XPGwJi5Xc/8DqY9WtxaayZa/5Li7cmbxpdg8bXD8CDqeZF+PgxjSyN5pd9p2gaxPQQPdk/lDR8BpboTPUToP1qybQTScM76ivoV0RtjGnOzNtMy2+Khrf9GwIvi9/uqTV3USrDMcS5VU0w9Nyez5XbrI0OvIpkBLubSeeWpLI1K4rQI4dGhumAvadqcOGYwQdOUbGOZPJ8ZsfA== 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)(38100700002)(86362001)(103116003)(66476007)(66556008)(4326008)(66946007)(6916009)(107886003)(316002)(2906002)(8936002)(5660300002)(36756003)(6506007)(6512007)(6666004)(186003)(1076003)(52116002)(2616005)(6486002)(83380400001)(8676002)(508600001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: ui3EOv2eMBBLJRwH0mO1xCxERnMy6Zhz4qNBWv2JoIIwZyB36ZZzivZWkyjkb8XxTA11UH99fyxodv3U1tKZ3mF85fv6q+HJReQ2qP+7vThUqgMYrArW7bYx4wI07xMpI/gNQqFXCFclUjyAHSdLIpUCt6IALpH8UMsB01dylmgR6f8nlu7JjcPwedqCaGauuB/a2NjvAS4vY0QuwphONUKRz/k3vdyyW5iyKsooIYVxfvzEJw0k0G3qhQO3NcjknqMPzS7MnsBLXhOd6wXh7KPoM5X/igDvumSAIwdrKDh+QpUD0UmpyvhM1MBxBsrlXPGMXj2RXtpOnRUqX4yt0aZtc0kU3YhY0mjzqbbENvCKoMsdIxNIdBzSV36mXgUA6V4mnUHlTIvW3Chc+n3Y/eh3o3T08VVurWwCyRVYfmWnEwzI9TG+/P0/V5QqAEacoN9rMo6zXx/wLdOmv+XmCIIUxuuiRmduCfwR6JSQNQ1lXPnFtq0l8oIhruf7rVqj8L6hKR7DmUILRBV65IYg8RaKs2PbFLhoJx+MmBfGJpWuIICOh782WFhMd3gwrjL4oXsXDnh+OHxXO11teyardO34pqHqXD9SXPEpoJL+vTUR5IfKwO9kvMo8R5Tdj+xASJOChrLSVkw7P74PFKKMhj8veRHuFFBreEZNOvgeNz3tgjPakPS/mwmd/hU+DUw2v9PYPtuyvJ9rrUJPqwSAbUyhlVlsurTP9fn6aHroa8eGvDFtc4dwQnwDk7IFsl4Zj5K9cq71SvYceuekt70B8rZ+0kSFo/qq71jNe7AhiRIKaRZILh+Fr1pCenOmBcofbcwzGjRYXrbLAvOJ+oOgEdBQEx0Lycm5BUuqsWAUOkIcq2Yjw7r6qKNmAIT1yU4bH3E/7pM7vtojK9hjhWi2QaxihmdVrrKYmPBHBr3aV0ksNZO99zgM067qBctgqbSD5i1ai3vL5kvHSiYMY83E1msPpiR68XK0bu4mNbHJEugzkpZ3TD7/ATBNTbkXMWzgW1qeGL4/y8vc4pY/bvb6rCd7MRrdN2uuFutOXl1bBPyu/+dvoSHfh6gdArgpRSzb2M8+pV7FNmcDzMmGr0Opcy6NeCJqzi+pQvL/pAjhlTpFa0XuGUNScy4y9wcseO3Pyw5sBIiJpAZdkSQKuLk9z2mSdB+ryudUsFYeuEIJC8HD8dhZ2G90R7MR+VMXDwAv47xSzTnx9EP+oLf/HwwnlkS3azFLQjZ/tql5W8/ip6qo8uldRwU50v1mhrCyaKHGvlGEbhKqgtq8loziqCWQ4GonPE4SPr/QnDdyBJDdMmPs+m+yhzZ/lN1mZI5Mfea33Qm323O+VrnF3195w6JU4OMwW9tYsqTgj6fVsR5ZRbCyi6hbrMr5TvV6X9DW0hJtw2Bu45qYdbBcgwc9CV4nSzK65xHeVwkpVWLyb4nbyngofoH2anmmBfbhcH3z9h5nFbfC3/0frZJa76K2NHsoQrZj45ysuaBg99qk6rq3yfZ1z93oCG7763jzBUDKwptQb7VxzfQpZ4YMaZn0w+aj3nwxI7FMqtjVm48RhKTtDwPvvU3jE9m4rYhEdKffRazIfxM8+uv0v0Hr5jM6QIwYbvA662J+3YiAniSgyEotYuEhUL03z7JQmywyODVmvBR+Ge9UZXvcYdo/2ZNa7y/gGzEaydKx1B60kUh0AgHq6ANRd0ekvUdVEebLC6Qu1426CENjjZ5WdjYxw7dQliGUh09yFOvne6zbXk3+/5N69WUOC9jNVXdgUF7smdi9FrIFlYk5db+A X-MS-Exchange-AntiSpam-MessageData-1: WmEjJyuzGCW/Mg== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: a7db8610-63ed-4515-3505-08da17eec8d9 X-MS-Exchange-CrossTenant-AuthSource: MWHPR10MB1407.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Apr 2022 16:59:17.0992 (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: BrMPyvfAYb9GhBmmSvu8kW+M7LHymui+8CYGvu2ENl3ctn1NtGdJGAtGuJYSWeTYPvW4pu3u3xODh3jikJs1GADZb0noEfreqA7Nw/EK9BQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR1001MB2189 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.425, 18.0.850 definitions=2022-04-06_09:2022-04-06, 2022-04-06 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 phishscore=0 malwarescore=0 mlxlogscore=999 suspectscore=0 adultscore=0 bulkscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2204060084 X-Proofpoint-GUID: ScgqV1geklPBoj-MJdXjkUSyE4LEzLPz X-Proofpoint-ORIG-GUID: ScgqV1geklPBoj-MJdXjkUSyE4LEzLPz 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, RCVD_IN_MSPIKE_H5, RCVD_IN_MSPIKE_WL, 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 v2 patch to fix multiple `var-decl' node in anonymous struct/uninons in ctf-reader, changes from v1: * Update tests/data/Makefile.am Comments will be appreciated. Thanks in advanced!, Guillermo This patch avoid multiple inclusion of `var-decl' node for the same field in anonymous struct/union declaration in the abixml, e.g: struct uprobe_task { union { struct { unsigned long vaddr; }; struct { int dup_xol_work; }; }; }; Three `var-decl' nodes are written in abixml file, expected a single one: * src/abg-ctf-reader.cc (process_ctf_sou_members): Remove CTF_MN_RECURSE flag. * tests/data/Makefile.am: Add new input test files. * tests/data/test-read-ctf/test-anonymous-fields.c: New test file. * tests/data/test-read-ctf/test-anonymous-fields.o: New expected test output. * tests/data/test-read-ctf/test-anonymous-fields.o.abi: Likewise. * tests/test-read-ctf.cc: Add new test. Signed-off-by: Guillermo E. Martinez --- src/abg-ctf-reader.cc | 2 +- tests/data/Makefile.am | 3 ++ .../test-read-ctf/test-anonymous-fields.c | 18 ++++++++++ .../test-read-ctf/test-anonymous-fields.o | Bin 0 -> 1408 bytes .../test-read-ctf/test-anonymous-fields.o.abi | 33 ++++++++++++++++++ tests/test-read-ctf.cc | 8 +++++ 6 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 tests/data/test-read-ctf/test-anonymous-fields.c create mode 100644 tests/data/test-read-ctf/test-anonymous-fields.o create mode 100644 tests/data/test-read-ctf/test-anonymous-fields.o.abi diff --git a/src/abg-ctf-reader.cc b/src/abg-ctf-reader.cc index e5ea0ca2..9c4726a6 100644 --- a/src/abg-ctf-reader.cc +++ b/src/abg-ctf-reader.cc @@ -350,7 +350,7 @@ process_ctf_sou_members(read_context *ctxt, while ((member_size = ctf_member_next(ctf_dictionary, ctf_type, &member_next, &member_name, &member_ctf_type, - CTF_MN_RECURSE)) >= 0) + 0 /* flags */)) >= 0) { ctf_membinfo_t membinfo; diff --git a/tests/data/Makefile.am b/tests/data/Makefile.am index a7eb7ff0..243be3ba 100644 --- a/tests/data/Makefile.am +++ b/tests/data/Makefile.am @@ -666,6 +666,9 @@ test-read-ctf/test-list-struct.abi \ test-read-ctf/test-callback2.c \ test-read-ctf/test-callback2.o \ test-read-ctf/test-callback2.abi \ +test-read-ctf/test-anonymous-fields.c \ +test-read-ctf/test-anonymous-fields.o \ +test-read-ctf/test-anonymous-fields.o.abi \ \ test-annotate/test0.abi \ test-annotate/test1.abi \ diff --git a/tests/data/test-read-ctf/test-anonymous-fields.c b/tests/data/test-read-ctf/test-anonymous-fields.c new file mode 100644 index 00000000..25c21047 --- /dev/null +++ b/tests/data/test-read-ctf/test-anonymous-fields.c @@ -0,0 +1,18 @@ +/* + * test single var-decl in anonymous struct/union + * gcc -gctf -c tests/data/test-read- ctf/test-anonymous-fields.c \ + * -o tests/data/test-read-ctf/test-anonymous-fields.o +*/ +struct uprobe_task { + union { + struct { + unsigned long vaddr; + }; + + struct { + int dup_xol_work; + }; + }; +}; + +struct uprobe_task t; diff --git a/tests/data/test-read-ctf/test-anonymous-fields.o b/tests/data/test-read-ctf/test-anonymous-fields.o new file mode 100644 index 0000000000000000000000000000000000000000..452a8122c5cf4fa8fb81772bdfd824dfa92954ce GIT binary patch literal 1408 zcmbVL&5qMB5S}ch{9Raa;YXlwVi$6T?#<&Ao4O!gmHd zCL9_W>K~BKnwiz7m+*XyPP5#e%Tz68y$IV{6^mNrVNq-N!1KHTLV3HIuVp#^D4Qj; zt45|`uDM!*hWK1oB2K%si)F*JQpBps;<8A2S}b@`M(s-JM(`@uLTMG}T=O1ANaj(d z&xVZGvhFI`s_3i`Wv*BTaB_Tn6ds(seRmj6XKcbI;cPOSPSL{yv0jO$s6?%Kd5G6H zI{=eB;c4KBH(_cd}?(CPo~+IOS(@8!Rr+I($4$B?IH=rz-4^|u|~-#wL1 Yjh?;_*ZgPgV{w;0Gy3NRR910 literal 0 HcmV?d00001 diff --git a/tests/data/test-read-ctf/test-anonymous-fields.o.abi b/tests/data/test-read-ctf/test-anonymous-fields.o.abi new file mode 100644 index 00000000..0419c29c --- /dev/null +++ b/tests/data/test-read-ctf/test-anonymous-fields.o.abi @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/test-read-ctf.cc b/tests/test-read-ctf.cc index e7a87186..94e65197 100644 --- a/tests/test-read-ctf.cc +++ b/tests/test-read-ctf.cc @@ -212,6 +212,14 @@ static InOutSpec in_out_specs[] = "data/test-read-ctf/test-dynamic-array.o.abi", "output/test-read-ctf/test-dynamic-array.o.abi" }, + { + "data/test-read-ctf/test-anonymous-fields.o", + "", + "", + SEQUENCE_TYPE_ID_STYLE, + "data/test-read-ctf/test-anonymous-fields.o.abi", + "output/test-read-ctf/test-anonymous-fields.o.abi" + }, { "data/test-read-common/PR27700/test-PR27700.o", "",