From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by sourceware.org (Postfix) with ESMTPS id CBC2C38768A7 for ; Fri, 24 Mar 2023 13:36:50 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org CBC2C38768A7 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 (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 32ODJmxP004612 for ; Fri, 24 Mar 2023 13:36:50 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2022-7-12; bh=52OENeRagIwegWdBl+//sso+hNvHUzyTe0l6E6j/i9g=; b=Yzws2PDlKOIoZ0nyoDqzr+dkJ4m9ekFX+g4TXVg2tE0hKNV3ktTM3eL2uRTmTU/JCRHt q/rVnwP9SGrXlOtpkNAOQTSQIAMEhy8mGuDr9JcZXyv/r9ToXLWe8pzsvPZYtpJ9f0Lr BoxNAvCoyzQvtYuI9bszyFHUcxJOgn80+b0+meYR6nMgFNgrJy2qWST5TwJSz0Iw5sKY MladHLO8pt5quqM/DHLSWy7NF5k6FAgyl30rjBd4ViQTVqDvdC/YLTj2J5IjHwmUCWXT ZqY/x5g7jl1r0t8kNkmtkPj/61NXLXd5IoM5X97fvrfTd7ofRvfpMcLNCLlS+NBzriWZ ww== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3phcn181wt-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Fri, 24 Mar 2023 13:36:50 +0000 Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 32OD77LH011988 for ; Fri, 24 Mar 2023 13:36:49 GMT Received: from nam12-bn8-obe.outbound.protection.outlook.com (mail-bn8nam12lp2177.outbound.protection.outlook.com [104.47.55.177]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3pgxyys6nd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Fri, 24 Mar 2023 13:36:49 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Mm41OQJOx2m1IKrkyUIMLdZ6f8gucBiYxB8EYLnDsPN0xH5MgCoUnorIJXib+wyTqdL5jIvDCVXTyupA16OM4QI2xOEzgTKpXyN0+RredxG+BUuy9YaqmK4yyQYHgMoIb4k+uyyN9uOp5BCrUA8OFUqxGTbVdtwrxtyqUPQZwsL/+IrjVdkk0ItH6GCcsbCM5K1CGq9p8fehQIjGTMgSYq3IqzQVHC/F/KKJOgWJ8ykorXFKlh1y7dZQk+mJgAb9gIpLgmzeNmJIaB0UTCoCDD5Z6hEvmrfPgvxEw17GrwROyL0szYydZytepVSRcTzvj3GpcQlayKS5sAbYLfwvXA== 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=52OENeRagIwegWdBl+//sso+hNvHUzyTe0l6E6j/i9g=; b=noxESRC7Y2WO2+gVToWguLxftZrXrryC0GkfdgL7kPt2hmv4IjY6hcKpA8VAKW/JucHcy9Y3jwC7PctvjMCS/XgOiKV4yut/3FVipKy6g/CV//Qdu9Uos1m39M6Jy2V3cknsdSgfdKiNIBwCxPbEH2cZQLIoLcYgzzCap3tmnidHSma/JhfzdwZaZFPkhm9GlAuYekkb7KuolaJ7/5kYfYT/8P7VQVQ0mWBQf5eyi+hNp9vaDa7jIjS3f3TOyTONpr55maM2gm8cF4SvZ0X7FBqLOQTfR/EQKWAOn5igCuLaL9pSmfzqvT0GbCWIvR93OYGjZAgtmaSnpem6Ps3yxg== 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=52OENeRagIwegWdBl+//sso+hNvHUzyTe0l6E6j/i9g=; b=eiXTIXNzBIBx8jYPic7bO6IEbPoDZkr4asOtCSnMJddQ3pvHtilzj/aDNKshQpMGYh1Kx4Lr6uR63gmRunF3xVaNF3KO5RdeTkYzd907TY3wZFwyHYqqGhXv0saZCd79J1jgVCwULmPjaTpjpEE8TZ9c3w2IkihyjIWW0wEGxxc= Received: from DS0PR10MB6798.namprd10.prod.outlook.com (2603:10b6:8:13c::20) by CY5PR10MB5916.namprd10.prod.outlook.com (2603:10b6:930:2c::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.39; Fri, 24 Mar 2023 13:36:47 +0000 Received: from DS0PR10MB6798.namprd10.prod.outlook.com ([fe80::d0f7:e4fd:bd4:b760]) by DS0PR10MB6798.namprd10.prod.outlook.com ([fe80::d0f7:e4fd:bd4:b760%3]) with mapi id 15.20.6178.038; Fri, 24 Mar 2023 13:36:47 +0000 From: Nick Alcock To: binutils@sourceware.org Subject: [PATCH 4/4] libctf: get the offsets of fields of unnamed structs/unions right Date: Fri, 24 Mar 2023 13:36:25 +0000 Message-Id: <20230324133625.450723-4-nick.alcock@oracle.com> X-Mailer: git-send-email 2.39.1.268.g9de2f9a303 In-Reply-To: <20230324133625.450723-1-nick.alcock@oracle.com> References: <20230324133625.450723-1-nick.alcock@oracle.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: LO2P265CA0498.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:13a::23) To DS0PR10MB6798.namprd10.prod.outlook.com (2603:10b6:8:13c::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS0PR10MB6798:EE_|CY5PR10MB5916:EE_ X-MS-Office365-Filtering-Correlation-Id: 730e1435-44be-424c-2426-08db2c6cd093 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: mlgqx8I00RRYn4hqBCfeCe9io2SriHaarobW5Aw7t/7+D9M4FJnpslm0XWY87SboppYO3UVNTs3uz4JS2dZJcWse08Qb1akXH9Lg08jPn4ujYZXiRTGVWLOoAbY/v+xhXgtS8bQmcEI1p3gksX99o/nHUT/AN5UAWdVPsjss2dNJCxSNxaCE9jVd93T+ZxT10XP8JjXXZYu3QOLQUyMhMLdQq1c/DYWaMtTvJbIAmXmNYIbdoj4BYg9mv6KDNI5XKdu6GQRMSaYQfjP9d3Qq2aZFPd3uMtfy2faOtrJMxUOlwzaMy+A9w2JRCU/Wwl1UkMGnG6zu1IgcV+vZnBUi89lB/saEdaebeKA+ZA/K+E3eannS153elsV3IhnLbaoVgW5IejwsNa7OrDDTvNwt3iJYKhEvmcMJmcQuD9uLR6STr1t/QQYu/2GF3YaoLaw5Dg7sS/YRzGRKVKW3dTAFcTHRbupMs8kGkPuIEqK5bYsiENrbw3dgF7Ljj8E0+JmkZL0zsBEB3CdsD9OAUAwsvqYj2/pq7smyyVUOKBqWKgVrNmKF2/RKfKda4aIVCvTCYPn4WyLmUEhJR7lNAqYymDiR51w/ytx4VWADi+ZsBTM7DeyKXnMCUecmmSqqU4rVWRGSsm1S8RqbOYn8RbKJgA++5oqrHpuahmcqVcKCzw5PeK8dn6sRMSR1mFFx3+K1 X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS0PR10MB6798.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(346002)(39860400002)(136003)(376002)(396003)(366004)(451199018)(36756003)(41300700001)(6916009)(66946007)(66556008)(8676002)(66476007)(8936002)(478600001)(316002)(6486002)(2906002)(44832011)(5660300002)(86362001)(38100700002)(6512007)(6506007)(83380400001)(186003)(1076003)(6666004)(2616005)(15583001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?JSzcSGOBnkQrdTV3Vll+n9A8moG/YGSDZylOMWCKVTT+OOwwRcy5PW9CJx/2?= =?us-ascii?Q?xefmirbGClsFd8lOoVLGhmYlkqNL0MsEbDy4PViW+nKI8pagyYhE0+yqsS16?= =?us-ascii?Q?9UcK7HPJc81/N189O//HciAZa8INaUKXVttKHKYoUnrXzj7g4PbJfwYNon90?= =?us-ascii?Q?MgaOulo7ZA5hhIFcjrHPzbKxgL3B2Vp6eC7PCHsDQEzGODeZiIdQf9n8cc71?= =?us-ascii?Q?cB+390sXcOjlFBL97LaPsVx0kZTB9OYKsJmlWazDnS0zbLwMfKDRe8f1bH33?= =?us-ascii?Q?eVjg9RIsB1ZX7X5MKHR7B0jIl7IzKltyg2eDKg4yyoDIvXsIWuwu5YkhnJT3?= =?us-ascii?Q?E1TrakXtFlOwKsJVjCuYLrBHaIZLPDre5tdZg9BQ9CLH3bLmmjKlMUwjGffl?= =?us-ascii?Q?c7abG0kLwiHdUlefTVBTBshroV3WWUk3wVXUIaQX+6Lv2wV1LvTfOB84O55p?= =?us-ascii?Q?HNtb5FlS4zr0zYgrLPCVYexEr3h8/upFNSOnwHAjcXh2keluUPGfEfGNm3uQ?= =?us-ascii?Q?dbrfSfjWyyCmYHjzAkB+MSLBOfwhE33Sd8+xTJqSDHe2W4jeSI/ZoxCM+evU?= =?us-ascii?Q?PopH++a3P4wMB+E1B4RFqAwjfkD6M3pkMb17mAEDxXxCXkYgKNYh7OhXTX9/?= =?us-ascii?Q?FUdmrNiO1yC0nV0XIIbs/J84ze2WPKjp6P4GGdES7yRo3ww7lrER8iMlNBui?= =?us-ascii?Q?xwWPSgmRqwH1ftBQgR1hmgeJdPQRG8vVrGE43Z1PHqCzWUXKGDqDUwfE4HIR?= =?us-ascii?Q?SaQYoKlI0gJovJdpi5Y0BbcX+t44IY0AbbVFzw2xQKgrreeAUx0NzffSqgvM?= =?us-ascii?Q?tz68/yquuxQk/UtU4nOI0XyC8Up8Z7u7FT9V4eIE3Yx8S5JUaUf4/Qe54YV3?= =?us-ascii?Q?zDFL0zf4x3a6iat5SqRI4OeUwIqNusztz4LX1kZYCuLVkiwebBFKhRxjPI40?= =?us-ascii?Q?v6Pwa/CHW0ydB9XnNkiJUGuP1NJrjlo8mpbLiK7eYNXtq415Kz/EvRIK8poH?= =?us-ascii?Q?iPdhx1idBwT2HAid14zzA1PCQmrMjUClvT8+a2vqclD5SoVG1qJ2bDZC4dwv?= =?us-ascii?Q?Sab38Q9uWU4xyOAEE8rSSwaKSp+5yDdU+2xj+EDaQyIOcQyTacdG2CuAoB1t?= =?us-ascii?Q?wDM8PVd014e1z9AI/D0vJNYXv/ZOMjs6eWdReH2tFpEN5D2MCsCXhPPdKGdD?= =?us-ascii?Q?wy0KLNF8VNHNZOL7qBNlE2zs25iEkAdxdLJZigZf7R503b2nNF0vranPkCsy?= =?us-ascii?Q?nZUG9HBt4YYwkLZFdKwDZJWwivtSXUtyNhEt/rmDPmoFj8pW6CxDgRfsGImq?= =?us-ascii?Q?y6G8+nzAoZ3MwtgdHXIDFw4/kM1+o7XAbp+i+2A7z/bD0QHVy7xSOtl35SuU?= =?us-ascii?Q?8r0orL61XoMrEWdgtkH7AGYrkmtwBD5nEnjYo/pEDJBqo1CRVOAAnTbGmUSE?= =?us-ascii?Q?QZPjPtW0aimkPUsWoGJWyMWawU0Gl1pbjtRb5MHdPLOV7CSzlSOf0lrhA761?= =?us-ascii?Q?s3Z7rzFBOIp7SR18+1459RAA3kaKO8AJwgaRd7WTGo9nkdHf4ZPMd9fmwUX9?= =?us-ascii?Q?yqqadMzhY7NqhGUk+mpsWqdx+RCsLZax1/V1W3J73+L/GK9CbMF7CozMY3GL?= =?us-ascii?Q?aA=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: zIE52DoXJkVWrfM5kcZzTJ4t+op+r+VvAp1DVYUJ9lrQDub0Mb+CDFfye+RuUpSCDnmSjCxL29Xg0xM63RTg4TQJbtSnwfQ7GrieBpwO+FIeszwyJ4SK0RQFfwttwVzmbOGl6FLBtl22wngpWmXbpN/FAqlyrclIqbUstAvCNKF+cV1NSrzZ9kquSklRWPzCciOii25b9tFXQpomg5PWdnpkLlCQ4vp6rzIpRrTLovZl9W436dD0mXQEn18JnnVUT5VqtY3yzIcm7+WhI/B5vdU/l+9gDpaYq4Phhm/tskAk65AcUOSET5eK/n5uKKUXFXMJkGFAjouK2lPJ8xXTPzySaRoeq4iHBqeDVNQcZJIvM8ggZ9eS+nBAapd3zYljkF1KOMPnjH0Ed6NtC1sfVEBJNGcdTfQQFwymXl03BNjE5WbC2AVowM0UeJlkCIUWXBZY8pVBMYY1ro2wjketB5yeYaCVbc3Jc1knLMZuEOI1XKGu9kLgBdqw7ErblLt6rKhLUBZ0PHC+MX/7tHk2mahiNFb0HPdyqJDTkX1JEKAHZfsiPHmdGMLC+ZdaAQePA/hgOPyMI+dOE4PYFa5PutaQRpeaAf9fAXt4ePwoMTy0aomv+ABd7qhz7iv9jitRwyZjw5C2+Z9DDpYa3LNRCc4Brb/GFYNgS/I5KDFOGp6X+A9Q3LbIBK+0o2hTrhZZ8MTdIefn31MJJntFoDRSOP2pk+rq1oDN2lVMXvBGtoyxd6XhdJTHE7W/cwn6015B X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 730e1435-44be-424c-2426-08db2c6cd093 X-MS-Exchange-CrossTenant-AuthSource: DS0PR10MB6798.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Mar 2023 13:36:47.1701 (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: utH96si6NOAR/VBOIVxNgQCsUVr5aacEeuzmwTIG4Br0ePKq1kgKwe9WEMwUWjhww1shSxd2S9n5rH4bW2govw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR10MB5916 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-03-24_08,2023-03-24_01,2023-02-09_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 suspectscore=0 spamscore=0 adultscore=0 mlxscore=0 bulkscore=0 malwarescore=0 mlxlogscore=797 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2303200000 definitions=main-2303240109 X-Proofpoint-ORIG-GUID: dspkqw8BXAZYgfVwn-Svt8kpXkbrLkcj X-Proofpoint-GUID: dspkqw8BXAZYgfVwn-Svt8kpXkbrLkcj X-Spam-Status: No, score=-11.9 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,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: We were failing to add the offsets of the containing struct/union in this case, leading to all offsets being relative to the unnamed struct/union itself. libctf/ PR libctf/30264 * ctf-types.c (ctf_member_info): Add the offset of the unnamed member of the current struct as necessary. * testsuite/libctf-lookup/unnamed-field-info*: New test. --- libctf/ctf-types.c | 5 +- .../libctf-lookup/unnamed-field-info-ctf.c | 36 +++++++++ .../libctf-lookup/unnamed-field-info.c | 79 +++++++++++++++++++ .../libctf-lookup/unnamed-field-info.lk | 2 + 4 files changed, 121 insertions(+), 1 deletion(-) create mode 100644 libctf/testsuite/libctf-lookup/unnamed-field-info-ctf.c create mode 100644 libctf/testsuite/libctf-lookup/unnamed-field-info.c create mode 100644 libctf/testsuite/libctf-lookup/unnamed-field-info.lk diff --git a/libctf/ctf-types.c b/libctf/ctf-types.c index d21f6d5ff99..dd82053e1d7 100644 --- a/libctf/ctf-types.c +++ b/libctf/ctf-types.c @@ -1417,7 +1417,10 @@ ctf_member_info (ctf_dict_t *fp, ctf_id_t type, const char *name, && (ctf_type_kind (fp, memb.ctlm_type) == CTF_K_STRUCT || ctf_type_kind (fp, memb.ctlm_type) == CTF_K_UNION) && (ctf_member_info (fp, memb.ctlm_type, name, mip) == 0)) - return 0; + { + mip->ctm_offset += (unsigned long) CTF_LMEM_OFFSET (&memb); + return 0; + } if (strcmp (membname, name) == 0) { diff --git a/libctf/testsuite/libctf-lookup/unnamed-field-info-ctf.c b/libctf/testsuite/libctf-lookup/unnamed-field-info-ctf.c new file mode 100644 index 00000000000..54d60f5b195 --- /dev/null +++ b/libctf/testsuite/libctf-lookup/unnamed-field-info-ctf.c @@ -0,0 +1,36 @@ +struct A +{ + int a; + char *b; + struct + { + struct + { + char *one; + int two; + }; + union + { + char *three; + }; + }; + struct + { + int four; + }; + union + { + struct + { + double x; + long y; + }; + struct + { + struct { char *foo; } z; + float aleph; + }; + }; +}; + +struct A used; diff --git a/libctf/testsuite/libctf-lookup/unnamed-field-info.c b/libctf/testsuite/libctf-lookup/unnamed-field-info.c new file mode 100644 index 00000000000..9abe8b026bb --- /dev/null +++ b/libctf/testsuite/libctf-lookup/unnamed-field-info.c @@ -0,0 +1,79 @@ +/* Make sure unnamed field offsets are relative to the containing struct. */ + +#include +#include +#include +#include + +#include "unnamed-field-info-ctf.c" + +static void +verify_offsetof_matching (ctf_dict_t *fp, ctf_id_t type, const char *name, size_t offset) +{ + ctf_membinfo_t mi; + + if (ctf_member_info (fp, type, name, &mi) < 0) + goto err; + + if (mi.ctm_offset != offset * 8) + fprintf (stderr, "field %s inconsistency: offsetof() says %zi bits, CTF says %zi\n", + name, offset * 8, mi.ctm_offset); + + return; + + err: + fprintf (stderr, "Cannot look up field %s: %s\n", name, + ctf_errmsg (ctf_errno (fp))); + return; +} + +int +main (int argc, char *argv[]) +{ + ctf_dict_t *fp; + ctf_archive_t *ctf; + ctf_id_t type; + int err; + + if (argc != 2) + { + fprintf (stderr, "Syntax: %s PROGRAM\n", argv[0]); + exit(1); + } + + if ((ctf = ctf_open (argv[1], NULL, &err)) == NULL) + goto open_err; + if ((fp = ctf_dict_open (ctf, NULL, &err)) == NULL) + goto open_err; + + /* Dig out some structure members by name. */ + + if ((type = ctf_lookup_by_name (fp, "struct A") ) == CTF_ERR) + goto err; + + verify_offsetof_matching (fp, type, "a", offsetof (struct A, a)); + verify_offsetof_matching (fp, type, "b", offsetof (struct A, b)); + verify_offsetof_matching (fp, type, "one", offsetof (struct A, one)); + verify_offsetof_matching (fp, type, "two", offsetof (struct A, two)); + verify_offsetof_matching (fp, type, "three", offsetof (struct A, three)); + verify_offsetof_matching (fp, type, "four", offsetof (struct A, four)); + verify_offsetof_matching (fp, type, "x", offsetof (struct A, x)); + verify_offsetof_matching (fp, type, "y", offsetof (struct A, y)); + verify_offsetof_matching (fp, type, "z", offsetof (struct A, z)); + verify_offsetof_matching (fp, type, "aleph", offsetof (struct A, aleph)); + + ctf_dict_close (fp); + ctf_arc_close (ctf); + + printf ("Offset validation complete.\n"); + + return 0; + + open_err: + fprintf (stderr, "%s: cannot open: %s\n", argv[0], ctf_errmsg (err)); + return 1; + + err: + fprintf (stderr, "Cannot look up type: %s\n", ctf_errmsg (ctf_errno (fp))); + return 1; +} diff --git a/libctf/testsuite/libctf-lookup/unnamed-field-info.lk b/libctf/testsuite/libctf-lookup/unnamed-field-info.lk new file mode 100644 index 00000000000..eae6a517d50 --- /dev/null +++ b/libctf/testsuite/libctf-lookup/unnamed-field-info.lk @@ -0,0 +1,2 @@ +# source: unnamed-field-info-ctf.c +Offset validation complete. -- 2.39.1.268.g9de2f9a303