From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by sourceware.org (Postfix) with ESMTPS id A41E03954C5D for ; Thu, 17 Nov 2022 03:43:33 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org A41E03954C5D Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=oracle.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=oracle.com Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 2AH25QLL032463 for ; Thu, 17 Nov 2022 03:43:32 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2022-7-12; bh=643c6J+zS1A3YvMHJVj0DlJgFKp8Cy+EvSyhQvWfpz8=; b=wBsqiqVJsNnECdB7jjZYJOmXqU9TKVSR2mWNrjLWWJuV1b7DUNhTinUdshhiBA/BRQ/g wIcKuUnRKsyEQPOLmy95++mrZAQyV3V30jK3V/egxAXMmpqdW62NiOgCRtFfs/4oRqSL M1PyIJexCNW3TQTDi49F/Etxx9uJrrrR+5auIIwhjXxAdcV20FPVgHWwtRLeYjBVMmAC jw2P+H87Q++2Z6cuFxY5F1huiSGsGuLb0Z5PglfCPYEe4yNPTskSdMp08virT5Y7VHfu n0Cz6/1SNhuzzQODREz3xBTvocKibtEIVIKw7v8RBNNSLR9J8tRYuh6HsOgzdgb5ri2I ig== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3kv3ns7npd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 17 Nov 2022 03:43:32 +0000 Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 2AH3Nwc9027035 for ; Thu, 17 Nov 2022 03:43:31 GMT Received: from nam11-co1-obe.outbound.protection.outlook.com (mail-co1nam11lp2171.outbound.protection.outlook.com [104.47.56.171]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3kt1x8e6db-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 17 Nov 2022 03:43:31 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AtBZtjV5JBlY9+Io3XNtzwFHUXgZtXAOXqmNrqJkZFjf/5wro9XKEFoN3isU5P3UXEFxNlJp7e++bBYkI01JI28GIeBFmeLw1Fyi+RugYAai8O5yidFGSUHuJG+BuwNj6UVxlevoCDEv1/eK3rFYrHgHfly3NrEYqFhWwuXGCReACs7op9hYSLFYaKcfEBDJByg56oVokLzFe576R32zq2GpSkbNZHqbGZq45VGaT46RzPV7Qe/RApqfkczguh68HCivE5wCcbnSgtOcOPVJKLbwahGZUPhjwtPN6v3XTqKeET9WSfEOzYf/7kCKVk8L7dh8sEvJcyYl5sGxJ6imuw== 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=643c6J+zS1A3YvMHJVj0DlJgFKp8Cy+EvSyhQvWfpz8=; b=Dc+2EWu1q9yzcfA0oUhGi5mIaBFHzNPByAkEK49LlxF1THBtm6OfwlWoVDg10IiJ6B4+I2KGy5mZvaa+M5OC4cynIBLveyFiSaoT+aOp0CDkts2vrcQRd1j6z6fqLDkYwVxwQM6GKK+NNa1eWBK9lyaeeKXGp9xGx+26ZJfNzyufmjljEMQG8u1LleP4mt2ZZuPwFJe+DbGXjVLWihYCmcNDr0wBw4+gHspGZiJxkpxvxONbRasTs8R3z5BaTwl+kepjsaj4NwyAD0ixAE5HGQlszj5Uu1P9Sr3BlCK4JHmCEKZZ0DmqJQbJ4XQihTFl9A/wKzhEGt6t0Pn5ok8iRQ== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=643c6J+zS1A3YvMHJVj0DlJgFKp8Cy+EvSyhQvWfpz8=; b=vt2p2ZdFa8wuk/NE3gzINOrQg9thNE5cF3833WjtCOn1evPUpw6cptGyskVbWaEd/GPJGgiLtfkh/OJvjeTh7CB35+XiJPxMBmJvN2NQd1ldy8rEr4varbpoFGGN4onLPPHsEGxzzwfqs5pzYYb30Jt1udIIckPlhzWQeDm6umg= Received: from MWHPR10MB1407.namprd10.prod.outlook.com (2603:10b6:300:23::20) by CH0PR10MB4843.namprd10.prod.outlook.com (2603:10b6:610:cb::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5813.20; Thu, 17 Nov 2022 03:43:28 +0000 Received: from MWHPR10MB1407.namprd10.prod.outlook.com ([fe80::1800:88c1:fae8:13b4]) by MWHPR10MB1407.namprd10.prod.outlook.com ([fe80::1800:88c1:fae8:13b4%10]) with mapi id 15.20.5813.020; Thu, 17 Nov 2022 03:43:27 +0000 From: "Guillermo E. Martinez" To: libabigail@sourceware.org Cc: "Guillermo E. Martinez" Subject: [PATCH 2/5] ctf-front-end: Fix size and name for underlying types Date: Wed, 16 Nov 2022 21:43:02 -0600 Message-Id: <20221117034305.184864-3-guillermo.e.martinez@oracle.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20221117034305.184864-1-guillermo.e.martinez@oracle.com> References: <20221117034305.184864-1-guillermo.e.martinez@oracle.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: SA0PR11CA0028.namprd11.prod.outlook.com (2603:10b6:806:d3::33) To MWHPR10MB1407.namprd10.prod.outlook.com (2603:10b6:300:23::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MWHPR10MB1407:EE_|CH0PR10MB4843:EE_ X-MS-Office365-Filtering-Correlation-Id: 11d2d365-a4d6-4114-bf89-08dac84de091 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: bsZe5KB7kalz+oHsOonbkoKJr2aes0DAB29EVW7gCRXrg+5aJKC73tQ0gVtR9c2xREngqLTXz2FF+kwF1LXdSqxY0c1Do95j5ayamSoSDr1yXqEtU+ytGriI8Fmx2ZGH13XSIr7KJuzi44kV66xR7euSd+H2ZM5zss8MjpoMzMGNfC0jADdrYiCv7cKmU8tsbk65KCMztfW2vaZNi2VjrEeYLXh3+pKRaOLzFlpqJxNIS2UlV7icEXwPWF0TiUzA9Df3mafNyd7I7gssTAM4KV/6p5gzp7LMOUQv6xaKQEfvJjRE0QrhAus+Iis27+3vJxRcF+WO84n4VFWDXejmCNQKxexZitugfdXalN/9hFrbdTUFslyOFVn62po1BFlYRrptIN+b9LTeb1UysptM4FLDhwR1B+pj72EVp20cDMIl6SmjB40K13wd+ikqL7bEqgNpD6FliV8tkYuS4UiApIlgvxadLvv1m5Fpcy6j8imkI+fQ5+t0cnchR/TH8RHJnwAvM9Jb1joJgPvR9Eixz9YD5StX1gEp7bVgjUBZ4oijt9jOfdGQozCYAESaNdTtpDG9HF29V4JjodP1b+MVafrnyY3KOZsKuRD4z6Ckt7t4aV/YCVb2pgx7OK6LONQ11zOFAeFCxJKrlkfcUTT74cCX0z2hSmmMFDeJEP6UXoaNueH8CjouzfppbVsHq1oyYmgwYMF3ri/hsoKUmvnNcg== 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:(13230022)(136003)(346002)(39860400002)(376002)(396003)(366004)(451199015)(86362001)(36756003)(103116003)(41300700001)(2616005)(66946007)(66476007)(66556008)(4326008)(8676002)(30864003)(1076003)(186003)(8936002)(5660300002)(107886003)(6666004)(478600001)(6486002)(19627235002)(316002)(6512007)(6506007)(6916009)(38100700002)(83380400001)(2906002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?IBDWlxncwgC/Gsp2rueFfTpA9SZp7hL9tWvy/tY08cPop1TT3JOCj3vb1ecH?= =?us-ascii?Q?Jb0x61jQRmuDc2QEGzjW3yfBzk8agUTjmjnjxOXQmbawFw5DJQ8U2un0JXhW?= =?us-ascii?Q?BKD/gtJpAtNW4CtPhM0q1xF2D9dqr3paLmwEsNH7kD3r4VzCD/Tt0yTtPWOH?= =?us-ascii?Q?2JoZpVh9C46LEWoU/c+HML65vUjdxe8sFaWgrPlBaTNQH8nimc0CYQ+kRq3D?= =?us-ascii?Q?3Ez1x8jbWSdLMX/Mf38Z1KE3py/QaBmxO2AddQ0vhYak3z8swMQZWZenUWYB?= =?us-ascii?Q?7Ye5PIr7nQhP0g+PNcdWQcBo//JUupOzVP+H7rS0dh4HZVc3XZJcH5/q0WIj?= =?us-ascii?Q?HP9Y/S9Fpv7H0/EoX95KX3X4kGzxd6LJq5eD5tJy6/D7SxEypn6nplfhO6Nx?= =?us-ascii?Q?RCBxjwMRPtu2FKbVUGGiYQmqMwni4Tk/aEZI4rPv4PXUzHY4BhqqcGMrSz3E?= =?us-ascii?Q?RXowe/gr6QDhRBE0q7GFrUhuZBzFBtgPF6/39WIV9FVui8lBT1F6IHTcFLYI?= =?us-ascii?Q?b2dmR3o6ShTglWMF4UKtQyarMnYIWEleUSmYA/FmBhUQFKp4Qnla3ktYncF7?= =?us-ascii?Q?C4PXdWBs4aO/nkVpEhpr6rd6q3QGERl7DtMlI6M5JXBRFG75nIwJfmy2M5B0?= =?us-ascii?Q?omZJ48YLW6b/8tkPhGpuT017xTMWyt7LPJoigct0TY/RsXFKgou3A5CrbWzO?= =?us-ascii?Q?x5Q6vqtaoFp2dwelVJRjji6qh19HkpOSKqnKC/UDF+B7MTEEy8NSThOpaqRc?= =?us-ascii?Q?v5UCLhOkzHn/HkWgfdgi5z6K/CC+/sVQAFjSxU0wkET8RMuxtPlwtotRUA/f?= =?us-ascii?Q?RONvITEbRqaWdmpJcCs4hl/b5WymG5f+Xa8aBYKOmam2HMd21xt7OHNx/Sxf?= =?us-ascii?Q?EJ/w+EPZbgj1n241DySrOH4yiv1Fsxxz7DJEuAL5xxLbOriHoDlIcu5u5UCK?= =?us-ascii?Q?7aUJhRiCXYtNxJht1I+Oe87WxMo9vEOPE9QQ0GR+0LdBAwZumZ2rmwrYk6ZT?= =?us-ascii?Q?nibBosEtMEm1gCWucLOFIvvNFhro2yVB4EzDXbmhPab5XukUGARZsEKyOJzz?= =?us-ascii?Q?2YX4Zfx/snHxRtZqFW2iLoMWObV/TTEG58pHl67zTdNH6fMSMrJWJvsRXSxK?= =?us-ascii?Q?MTiiOZUIhlGw14kdDh/IaKV0zVKJgwTcDz4hIGdEyzEtVLgYtlfjJhSbaowG?= =?us-ascii?Q?s81JWIOj5ZTTxd09sBY+l0pAJSSqTLnNq3NCkAhc9rOl3ZE+7+EBODP+pFf1?= =?us-ascii?Q?uSMPuZXQamnQ1ktNVaJ1fzsfoWalJXXT3OdTs/1wI1dOCdagkgRb/W1Y9CC/?= =?us-ascii?Q?4IVKwExMELh5GmntkxLUFq071EnL5UrWcTX31pPA4x6wLtRYnfv/tIkLubUK?= =?us-ascii?Q?Zbrw1SJ2fR+ydvgdaxqarxAIIAHpHyPBSO7aRlaneTwfyolxq1965dq2WWZH?= =?us-ascii?Q?V/em/1t9U85SQniuyAJ9bbGIj6/v3O3s47tz6ZEd7YEoUGPEPpcuzE6ydxsF?= =?us-ascii?Q?qhyc5foh9iNSzCBwlPtLRvF8HuF/kxaHbPi+GdLG2O5lb+cIm1wsHkPawJNd?= =?us-ascii?Q?bOPbaNcdTMCgiawU9uEnGmtyTx5CZ/MUHrrom3SjJmB+2HyuDXAhm3B/xG2I?= =?us-ascii?Q?AM5y41NFsnrmBUl0EmoXwRGNQWdli4nWcmahpwHYe73Qrm7pnR0uaN9P66Nl?= =?us-ascii?Q?G4XAYi6MihXUvQ8FEa4EBsHvLrk=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: eNd3B1qJbmmu+btXn2ev99XhY0+YwZ+KEZkVxtFG/pk9BcGpRDqduOPDJFaZsMsYqM+diN8OpQVrzu0NlT+FgXQrsypViv7CTj7Xm/Xk9jB4MDR3/m4n3oaxAxKjZ/8rjP3zQ8joqyTOOrGZcNdbhAZWtYc4CU3R5Vh1QqaVPRRpO4g26RO95APnbV8CcR3XB3684sgGYb+Dy2jOVgMGkw2Ua23KGz3zRqRWTjJecwDmhoxNPc5eDEP3S6kJc2gsn4bEs3K/NL/Oy6vObqGv+2Vex/JrIsEbM85COMPWgCxe7NRAdAH1TavIzLzoxvbcXCm6Jza+0FEB6NeLVV2VlWhb2haBcLIJgQWBzFVZflQw2pIErMaVzB072pgFIi1TKqYlD5aCUwEtPWuvyDdgUDyFjAyylHjeCuvdZtj5aoLAOaOm1b4bPKGTc4GoDl93iYTpqIyVcCvVCCC4Qy1K3Mpwm9Kqio4qPHnt59gYXK+K0N62C5PQHqVbXHHXWfhyiV0wq61YqQUnbS8fx/RWatBFfu4BgOURLOiVa9IyT4lQJrKE2zb/sUIobzDZhutaDOsGpPds7iPfKdr/c9VCEOPkqGLRY6bOMd+0erP366uei9YagKS7UT1jyv7Y4/IferTYzrzjYbn1HsCmc+IV0XMniSVHHntKPY3ksydxO14BHy/l8gkx93+VjwRhgdcpveJxM35M1FJWCNYLuzjEBLCjZRkUcKnlo2Mivn2KHQdlsuiw0/aurYhADgWRgioDgzW/CakG960n02/kA7x6xg== X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 11d2d365-a4d6-4114-bf89-08dac84de091 X-MS-Exchange-CrossTenant-AuthSource: MWHPR10MB1407.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Nov 2022 03:43:26.5466 (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: xxq7LHZ7Xfsn7e3rt7HsrwTOeRhXbv3gcgN4rznv6rTdL1emP9L4j/TjxNGTBoThhhFyfa3pHRvX/wD6g3cNM4ubsyNPLWtp49jruKet6ms= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR10MB4843 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.895,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2022-11-16_03,2022-11-16_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 phishscore=0 bulkscore=0 mlxlogscore=999 spamscore=0 adultscore=0 malwarescore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2210170000 definitions=main-2211170024 X-Proofpoint-GUID: hbWHWoMCsuJhWeuSc5ZMJqST-q4LtavT X-Proofpoint-ORIG-GUID: hbWHWoMCsuJhWeuSc5ZMJqST-q4LtavT X-Spam-Status: No, score=-11.5 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_H2,SCC_10_SHORT_WORD_LINES,SCC_5_SHORT_WORD_LINES,SPF_HELO_NONE,SPF_NONE,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: It fixed an incorrect representation in size and name for underlying enum and struct types when it has a bitfield members: struct foo { unsigned bar : 2; unsigned baz : 1; }; So, `name' empty property, no showing the right enumerator's type and size in bits: * src/abg-ctf-reader.cc (process_ctf_{base_type,enum_type}): Look at ctf refence type to build the underlying type if present. * tests/data/Makefile.am: New test cases. * tests/data/test-read-ctf/PR27700/test-PR27700.abi: New test input. * tests/data/test-read-ctf/test-bitfield-enum.abi: Likewise. * tests/data/test-read-ctf/test-bitfield-enum.c: Likewise. * tests/data/test-read-ctf/test-bitfield-enum.o: Likewise. * tests/data/test-read-ctf/test-bitfield.abi: Likewise. * tests/data/test-read-ctf/test-bitfield.c: Likewise. * tests/data/test-read-ctf/test-bitfield.o: Likewise. * tests/data/test-read-ctf/test-enum-many.o.hash.abi: Adjust. * tests/data/test-read-ctf/test-enum-symbol.o.hash.abi: Likewise. * tests/data/test-read-ctf/test-enum.o.abi: Likewise: * tests/data/test-read-ctf/test0.abi: Likewise. * tests/data/test-read-ctf/test0.hash.abi: Likewise. * tests/data/test-read-ctf/test1.so.abi: Likewise. * tests/data/test-read-ctf/test1.so.hash.abi: Likewise. * tests/data/test-read-ctf/test5.o.abi: Likewise. * tests/test-read-ctf.cc: Update test suite. Signed-off-by: Guillermo E. Martinez --- src/abg-ctf-reader.cc | 31 +++++++---- tests/data/Makefile.am | 6 +++ .../test-read-ctf/PR27700/test-PR27700.abi | 4 +- .../data/test-read-ctf/test-bitfield-enum.abi | 18 +++++++ tests/data/test-read-ctf/test-bitfield-enum.c | 12 +++++ tests/data/test-read-ctf/test-bitfield-enum.o | Bin 0 -> 1336 bytes tests/data/test-read-ctf/test-bitfield.abi | 28 ++++++++++ tests/data/test-read-ctf/test-bitfield.c | 15 ++++++ tests/data/test-read-ctf/test-bitfield.o | Bin 0 -> 1488 bytes .../test-read-ctf/test-enum-many.o.hash.abi | 6 +-- .../test-read-ctf/test-enum-symbol.o.hash.abi | 4 +- tests/data/test-read-ctf/test-enum.o.abi | 10 ++-- tests/data/test-read-ctf/test0.abi | 48 +++++++++--------- tests/data/test-read-ctf/test0.hash.abi | 10 ++-- tests/data/test-read-ctf/test1.so.abi | 8 +-- tests/data/test-read-ctf/test1.so.hash.abi | 4 +- tests/data/test-read-ctf/test5.o.abi | 12 ++--- tests/test-read-ctf.cc | 18 +++++++ 18 files changed, 171 insertions(+), 63 deletions(-) create mode 100644 tests/data/test-read-ctf/test-bitfield-enum.abi create mode 100644 tests/data/test-read-ctf/test-bitfield-enum.c create mode 100644 tests/data/test-read-ctf/test-bitfield-enum.o create mode 100644 tests/data/test-read-ctf/test-bitfield.abi create mode 100644 tests/data/test-read-ctf/test-bitfield.c create mode 100644 tests/data/test-read-ctf/test-bitfield.o diff --git a/src/abg-ctf-reader.cc b/src/abg-ctf-reader.cc index 9c41edf4..feafc91d 100644 --- a/src/abg-ctf-reader.cc +++ b/src/abg-ctf-reader.cc @@ -788,15 +788,17 @@ process_ctf_base_type(reader *rdr, translation_unit_sptr tunit = rdr->cur_transl_unit(); type_decl_sptr result; - const char *type_name = ctf_type_name_raw(ctf_dictionary, ctf_type); + ctf_id_t ctf_ref = ctf_type_reference(ctf_dictionary, ctf_type); + const char *type_name = ctf_type_name_raw(ctf_dictionary, + (ctf_ref != CTF_ERR) ? ctf_ref : ctf_type); /* Get the type encoding and extract some useful properties of the type from it. In case of any error, just ignore the type. */ ctf_encoding_t type_encoding; if (ctf_type_encoding(ctf_dictionary, - ctf_type, - &type_encoding)) + (ctf_ref != CTF_ERR) ? ctf_ref : ctf_type, + &type_encoding)) return result; /* Create the IR type corresponding to the CTF type. */ @@ -1369,7 +1371,10 @@ process_ctf_enum_type(reader *rdr, { translation_unit_sptr tunit = rdr->cur_transl_unit(); enum_type_decl_sptr result; - std::string enum_name = ctf_type_name_raw(ctf_dictionary, ctf_type); + ctf_id_t ctf_ref = ctf_type_reference(ctf_dictionary, ctf_type); + std::string enum_name = ctf_type_name_raw(ctf_dictionary, + (ctf_ref != CTF_ERR) + ? ctf_ref : ctf_type); if (!enum_name.empty()) if (corpus_sptr corp = rdr->should_reuse_type_from_corpus_group()) @@ -1379,18 +1384,24 @@ process_ctf_enum_type(reader *rdr, /* Build a signed integral type for the type of the enumerators, aka the underlying type. The size of the enumerators in bytes is specified in the CTF enumeration type. */ - size_t utype_size_in_bits = ctf_type_size(ctf_dictionary, ctf_type) * 8; - type_decl_sptr utype; + size_t utype_size_in_bits = ctf_type_size(ctf_dictionary, + (ctf_ref != CTF_ERR) + ? ctf_ref : ctf_type) * 8; + string underlying_type_name = + build_internal_underlying_enum_type_name(enum_name, true, + utype_size_in_bits); + type_decl_sptr utype; utype.reset(new type_decl(rdr->env(), - "", - utype_size_in_bits, - utype_size_in_bits, - location())); + underlying_type_name, + utype_size_in_bits, + utype_size_in_bits, + location())); utype->set_is_anonymous(true); utype->set_is_artificial(true); if (!utype) return result; + add_decl_to_scope(utype, tunit->get_global_scope()); canonicalize(utype); diff --git a/tests/data/Makefile.am b/tests/data/Makefile.am index 4b6e9305..b89a4dd8 100644 --- a/tests/data/Makefile.am +++ b/tests/data/Makefile.am @@ -704,6 +704,12 @@ test-read-ctf/test-linux-module.ko \ test-read-ctf/test-fallback.abi \ test-read-ctf/test-fallback.c \ test-read-ctf/test-fallback.o \ +test-read-ctf/test-bitfield.abi \ +test-read-ctf/test-bitfield.c \ +test-read-ctf/test-bitfield.o \ +test-read-ctf/test-bitfield-enum.abi \ +test-read-ctf/test-bitfield-enum.c \ +test-read-ctf/test-bitfield-enum.o \ \ test-annotate/test0.abi \ test-annotate/test1.abi \ diff --git a/tests/data/test-read-ctf/PR27700/test-PR27700.abi b/tests/data/test-read-ctf/PR27700/test-PR27700.abi index 4f34eb8a..1a7c229e 100644 --- a/tests/data/test-read-ctf/PR27700/test-PR27700.abi +++ b/tests/data/test-read-ctf/PR27700/test-PR27700.abi @@ -3,14 +3,14 @@ - - + + diff --git a/tests/data/test-read-ctf/test-bitfield-enum.abi b/tests/data/test-read-ctf/test-bitfield-enum.abi new file mode 100644 index 00000000..b95f1781 --- /dev/null +++ b/tests/data/test-read-ctf/test-bitfield-enum.abi @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/tests/data/test-read-ctf/test-bitfield-enum.c b/tests/data/test-read-ctf/test-bitfield-enum.c new file mode 100644 index 00000000..502ec06a --- /dev/null +++ b/tests/data/test-read-ctf/test-bitfield-enum.c @@ -0,0 +1,12 @@ +/* gcc -gctf -c test-bitfield-enum.c -o test-bitfield-enum.o */ +enum event_kind +{ + NO_EVENT, +}; + +struct input +{ + enum event_kind kind : 16; +}; + +struct input e; diff --git a/tests/data/test-read-ctf/test-bitfield-enum.o b/tests/data/test-read-ctf/test-bitfield-enum.o new file mode 100644 index 0000000000000000000000000000000000000000..2c532f50c724f7bf4327b7c36699a432ca08eab1 GIT binary patch literal 1336 zcmbVL&2G~`5T1lkeh>7}s)CE@g;e0R6E4sLvQ&j4gu(@SLuGAm(^c(tWN#ojAvp0! z9C;I-0bT%R?A>IwlnWz$p1CWILVPqFR91M(XDu?Oo)5*zX`UV!NkuxRoKq?JV%@-P4f`I6}Dn*p8(p6N|JS#-h)LB%> zl&5mWWf3azG18*ZO_X!Z+c2yJ&%;cgby+I)nG{7H3biO%25@|IbQlber*98}(PI{~ zI2gy{@n{r34TfSl7qu+$io7^zuZ#~n=T(eR27Ty#cjm*{y1bjws{Z!WAHdJwerFd8 z+wJDN&iZT`EcEX$09dmsHBZs&y7T8Y(qgHB(Jp|cO#=+~fRC!AnSiNE3x+dXW>y>}E|H<#6h-TgL#EF;N)Zg2EY*3B9Ki3jBabjQp0DJUp|4YB#uQ|id zA7R};lc)(j(00A1m%<1+REvr1*oh%NbZQh@z4eDq&82>}1h;qz_a)Y@A?Uwz?W@uI y_o7|7Ml@eb{clG9!jNwmp4IO;b$|D5%N%NXhQ6NP=Gz!trr$IAca~_pzm`9z|8lDU literal 0 HcmV?d00001 diff --git a/tests/data/test-read-ctf/test-bitfield.abi b/tests/data/test-read-ctf/test-bitfield.abi new file mode 100644 index 00000000..4231ba3e --- /dev/null +++ b/tests/data/test-read-ctf/test-bitfield.abi @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/data/test-read-ctf/test-bitfield.c b/tests/data/test-read-ctf/test-bitfield.c new file mode 100644 index 00000000..7d76d2f4 --- /dev/null +++ b/tests/data/test-read-ctf/test-bitfield.c @@ -0,0 +1,15 @@ +/* gcc -gctf -c test-bitfield.c -o test-bitfield.o */ +struct foo +{ + unsigned bar : 2; + unsigned baz : 1; +}; + +struct foobar +{ + unsigned char bar : 2; + unsigned char baz : 1; +}; + +struct foo f; +struct foobar fb; diff --git a/tests/data/test-read-ctf/test-bitfield.o b/tests/data/test-read-ctf/test-bitfield.o new file mode 100644 index 0000000000000000000000000000000000000000..c23c8188d880587f2ba78b8b852cdb067607e4b6 GIT binary patch literal 1488 zcmbVM&2G~`5FVEh3S3$$Arvm|iB=FhNe{FYLXj${gb+85NZ8IMu}JL7-in3`cOC%o z6g&e@fw=Ju@B%QOcgITo!uG)6&AoRG-bD`2A&r_o-G&p09E`K4Wl85nozDt2 z3G+fznpCWBK)`LeY~B!-q-jd=yj-d{U8SqItdeY@;=0P>MV=;UK1=dNzfiAZt!iDz zlSC(t+pknI>1TRsqBPgjTrDP1Ms#{|avbiRK6}0&4iBP1Gzdq7(P%gv9EE%8;!IWf zQWZK`?3+=|PD2i`S1#kBgHPD4NMK{^Ex?a#H?BG57>6;et?}c5t yf_wP2;14bM5&_FqRzOmJ3m^+{fA_#Y*n0dAb4BJB4DaMm^&f5h3rV!rum1@|M0T$L literal 0 HcmV?d00001 diff --git a/tests/data/test-read-ctf/test-enum-many.o.hash.abi b/tests/data/test-read-ctf/test-enum-many.o.hash.abi index 116325f9..9119525b 100644 --- a/tests/data/test-read-ctf/test-enum-many.o.hash.abi +++ b/tests/data/test-read-ctf/test-enum-many.o.hash.abi @@ -4,14 +4,13 @@ - - + - + @@ -61,6 +60,7 @@ + diff --git a/tests/data/test-read-ctf/test-enum-symbol.o.hash.abi b/tests/data/test-read-ctf/test-enum-symbol.o.hash.abi index f4911bc4..da68828c 100644 --- a/tests/data/test-read-ctf/test-enum-symbol.o.hash.abi +++ b/tests/data/test-read-ctf/test-enum-symbol.o.hash.abi @@ -3,13 +3,13 @@ - - + + diff --git a/tests/data/test-read-ctf/test-enum.o.abi b/tests/data/test-read-ctf/test-enum.o.abi index bd3a55be..e13ebdd0 100644 --- a/tests/data/test-read-ctf/test-enum.o.abi +++ b/tests/data/test-read-ctf/test-enum.o.abi @@ -4,19 +4,19 @@ - - - + + - + - + + diff --git a/tests/data/test-read-ctf/test0.abi b/tests/data/test-read-ctf/test0.abi index 05430067..60d3cf1e 100644 --- a/tests/data/test-read-ctf/test0.abi +++ b/tests/data/test-read-ctf/test0.abi @@ -20,47 +20,47 @@ - - - - - - + + + + + - - - + + + - + - + - + - + - - - - - + + + + + + - - + + - + - + - + - + diff --git a/tests/data/test-read-ctf/test0.hash.abi b/tests/data/test-read-ctf/test0.hash.abi index 4aa9a93c..76dd581e 100644 --- a/tests/data/test-read-ctf/test0.hash.abi +++ b/tests/data/test-read-ctf/test0.hash.abi @@ -20,7 +20,6 @@ - @@ -34,14 +33,15 @@ - + - + - + + @@ -49,7 +49,7 @@ - + diff --git a/tests/data/test-read-ctf/test1.so.abi b/tests/data/test-read-ctf/test1.so.abi index 822b57a5..2ecd5826 100644 --- a/tests/data/test-read-ctf/test1.so.abi +++ b/tests/data/test-read-ctf/test1.so.abi @@ -6,9 +6,8 @@ - - - + + @@ -17,8 +16,9 @@ - + + diff --git a/tests/data/test-read-ctf/test1.so.hash.abi b/tests/data/test-read-ctf/test1.so.hash.abi index b3ace158..4f8633dd 100644 --- a/tests/data/test-read-ctf/test1.so.hash.abi +++ b/tests/data/test-read-ctf/test1.so.hash.abi @@ -6,9 +6,8 @@ - - + @@ -19,6 +18,7 @@ + diff --git a/tests/data/test-read-ctf/test5.o.abi b/tests/data/test-read-ctf/test5.o.abi index 6d72d7ab..814aff7f 100644 --- a/tests/data/test-read-ctf/test5.o.abi +++ b/tests/data/test-read-ctf/test5.o.abi @@ -7,10 +7,9 @@ - - - - + + + @@ -18,7 +17,8 @@ - + + @@ -37,7 +37,7 @@ - + diff --git a/tests/test-read-ctf.cc b/tests/test-read-ctf.cc index 14e63ef0..5d0e7435 100644 --- a/tests/test-read-ctf.cc +++ b/tests/test-read-ctf.cc @@ -345,6 +345,24 @@ static InOutSpec in_out_specs[] = "output/test-read-ctf/test-fallback.abi", NULL, }, + { + "data/test-read-ctf/test-bitfield.o", + "", + "", + SEQUENCE_TYPE_ID_STYLE, + "data/test-read-ctf/test-bitfield.abi", + "output/test-read-ctf/test-bitfield.abi", + "--ctf", + }, + { + "data/test-read-ctf/test-bitfield-enum.o", + "", + "", + SEQUENCE_TYPE_ID_STYLE, + "data/test-read-ctf/test-bitfield-enum.abi", + "output/test-read-ctf/test-bitfield-enum.abi", + "--ctf", + }, // This should be the last entry. {NULL, NULL, NULL, SEQUENCE_TYPE_ID_STYLE, NULL, NULL} }; -- 2.35.1