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 3389B3857709 for ; Wed, 31 May 2023 06:13:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 3389B3857709 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 (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 34UNOPFd011751 for ; Wed, 31 May 2023 06:13:54 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=message-id : date : subject : to : references : from : in-reply-to : content-type : content-transfer-encoding : mime-version; s=corp-2023-03-30; bh=vDegBwCwXnDDeD1TvtjzTOa+BYk0W0IM2gPcuzqame8=; b=0VGH3hY6SZAAG1LWzIgRwXtPgnlDnvAOgDs0RI6h5rYuYhraUXRjXeI8yjObL0Rxq53B C+L6UIqHnmHffGyDRK3L7TF5nbiP6ThdtF/8sRvt084rUB3OiIdjw9q+FWx163dnN1OL iq5eMpuH8OfWvNB29N2CpNGJlT02VWnB34YI0bQdcxp+RUwomNpghGMClLmT38MkI5o7 iuYDN+ixhcXNUBkddQKaIjpi28K9R7wsXjDVSX0j4nDEvBI4pWpkNxGX0dLo7KEbAAFL cFsZM6/RbmT5djZYeG2sHf7+iU+3C7hq4aRwLQAFHMG6eGc0weDIdHH821ob+gE7nrpL MA== Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3qvhjkmsqc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Wed, 31 May 2023 06:13:53 +0000 Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 34V413dC003685 for ; Wed, 31 May 2023 06:13:52 GMT Received: from nam02-dm3-obe.outbound.protection.outlook.com (mail-dm3nam02lp2044.outbound.protection.outlook.com [104.47.56.44]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3qv4ycm8bw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Wed, 31 May 2023 06:13:51 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=M3ZO+dflul/pjYpA7wYKMHJsI6+h/ifi2yzoCRODwWHBycV6lB21Iwz+6l61VeS/5rAvWKTW/QL3OO+oh3miLSV0UWJvcVDV2hNyRXW7t0Fxkv5KEECrK1IWJ/JHIpHcMWTXg9U561Fr7wH899QHnntiZ+hvJLzp5Yw3vzYLgzSfo+P6qT0RIX4MiJ50uW6ILYUrji3FiPll5JWbeLYmrWHGqZqBEuPfkI4QXaiFUJqmFnR4MFYcGfAheW+OJitBOR14asBh7F1hoQcCtCFV7d4p8zzo7ywPJKfOVPpHRrmiY+QT2HjDT7ZxjYx/yp2SIlEtC5M4IuvhUNF5AeAu1A== 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=vDegBwCwXnDDeD1TvtjzTOa+BYk0W0IM2gPcuzqame8=; b=H2EYtx2OyE+NYKsylXn6mFuevpm9zJYdKf0kYA6KrgyzsDe1kbl5UdNPQswDwrtmO74Cp8jfe+RsiRoRaN5qSOzKw8QSHfLqFztauMF9Dt/ob2sCPsxXYBFfBOAbaJg8ZnbKHHMoxg2cy2LHaZlEgJJWB13IQR2pDeR2zbJbhdscLkiR2bAvO7bkdhmAuVtWG4+FjAa7+QK6OiTpQn4KfzWn0hcqoaFxzmyXMHYPmbZXUva01TrHQ119WKL5ql749rft+OqfocZ0rqipIi6kmZR488gT+HP5nnrariBlYqSUx/DdY/zSLsJ9Ph2XCw5F9rnLEkP7bv/9SGRBh2KKIw== 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=vDegBwCwXnDDeD1TvtjzTOa+BYk0W0IM2gPcuzqame8=; b=HJwjlJAXdTHVRePoY/XW9S5HSUTBzssbGDGi6naSoOk2DPcWBSqnP8SGUFcvisDNcNRZM+3pOdAoqZelhquFFyRsWPYzqMU7erthBr/zuVj1fU6Ii5IC7p048JNJMX1YhWOlPdX+sHis+sAc90S04SNYDU5haIShUICRfWiCNiQ= Received: from MWHPR1001MB2158.namprd10.prod.outlook.com (2603:10b6:301:2d::17) by CH2PR10MB4118.namprd10.prod.outlook.com (2603:10b6:610:a4::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6433.21; Wed, 31 May 2023 06:13:14 +0000 Received: from MWHPR1001MB2158.namprd10.prod.outlook.com ([fe80::fdbb:b921:1ef:2d44]) by MWHPR1001MB2158.namprd10.prod.outlook.com ([fe80::fdbb:b921:1ef:2d44%4]) with mapi id 15.20.6411.025; Wed, 31 May 2023 06:13:14 +0000 Message-ID: <16c13d09-eff0-8722-52c1-fe2eec165f11@oracle.com> Date: Tue, 30 May 2023 23:13:12 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 Subject: Re: [PATCH 2/2] btf: improve -dA comments for testsuite Content-Language: en-US To: David Faust , gcc-patches@gcc.gnu.org References: <20230525163740.6062-1-david.faust@oracle.com> <20230530182702.8020-1-david.faust@oracle.com> <20230530182702.8020-2-david.faust@oracle.com> From: Indu Bhagat In-Reply-To: <20230530182702.8020-2-david.faust@oracle.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: MW4PR04CA0129.namprd04.prod.outlook.com (2603:10b6:303:84::14) To MWHPR1001MB2158.namprd10.prod.outlook.com (2603:10b6:301:2d::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MWHPR1001MB2158:EE_|CH2PR10MB4118:EE_ X-MS-Office365-Filtering-Correlation-Id: dec0b8bc-6ae9-4d61-27c7-08db619e1e33 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: jqZqm9pdzFsLHiZPBfECA7719ME05s16nq8E2XR95/t+Jiru5WqobQmx0F2k7LGUAn2MRWn2QCnApoUdZiq3UVRwjsibX7ckq2frkIshIukRmtJhBL4hXJBQn/vNKuy/2lbc8U5QX/RO2neo/P4+NXRICX2BSLCzrmwC8BbbAFCeCanL4vHBb3+rC9vcom+Kd+aqTEKfZpaJ2EXDBQhEejLxXxEGw2A/Eb2UyMLPhMyiZ3j5HkxTtvMBqcTkfz0iWL1Ekp7dCALQr3GyUZv875v87ol8PIdEISTuIqeI9R9XBg+nqIDkov+1VI3uyrPAvo8YAWMAxen4ik8ejHrBTMj9RG9o0/s+SEfoOUsxlcmGeEtdwcnZYPsjSYCPXwurff5j4Mr8TAxZOT5CM/8UtD77ERdDuJCzCmojZ9IY7ejnqEAlTLwLXweB2jiJZSx5oMIKRD880mfQZjTZbmmRYk6Ml3Ho9RXOPr23zf7yGIDWbDdQPFzwByh6HiTFcIZkRm5GKYaPypIsS/vitfvx8HfonNtUYwYACVfQCtR0aB8e1jarI2XJKqFXdlm1mV3MMzPweKYQ1tuFerRRqbYGBYvjaJFfiDttrTj6ofZ0uK7ieObie/36dt+/RWl8dr6fFst0CsBXOs5dTv+OjkMXPA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MWHPR1001MB2158.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(366004)(136003)(346002)(396003)(376002)(39860400002)(451199021)(84970400001)(31686004)(31696002)(186003)(53546011)(2616005)(8676002)(8936002)(6506007)(83380400001)(26005)(6512007)(41300700001)(36756003)(86362001)(30864003)(2906002)(44832011)(66556008)(66946007)(316002)(66476007)(5660300002)(478600001)(38100700002)(6486002)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?WUc2WEJFa3U4K0pxbEcrVkczOC9zaXlVUVd3NGxHN0VzWWZER1ZKaGR0OU9U?= =?utf-8?B?VWpXSUVkRXc2RE1haGZ3WEF3MXhOMlRBc09KTUhUUGl2ZmM2bzJwZEdGbFQ1?= =?utf-8?B?YXFvazhsYzhTb2tmK2Naem92c0xwOVNoeWRVYkJSUzh0QnBzdHRTUVJsQWEx?= =?utf-8?B?dFErSVdMY1BZL2V6REZNMFdFdDVEUlAxdWFtWXFKSm9aWFRGWkdVa1ZYOUlO?= =?utf-8?B?TC9DT3ROc2xkeTltbExKS2Z5T09rVng2aHNnaFY1OWwrVDZVb29rbVBVRGFj?= =?utf-8?B?UTNsUXNMWGVLYVBYaXlNd3RGVFdzVjNBY2lXdVFjZ0tJYUh6NXNkYW82alVm?= =?utf-8?B?dWR3T0hFZmlBWjJEeUhMb0JLOVBZdzBtdnpTMkU1K2R2YXlWY3NKeGdTQXdq?= =?utf-8?B?U1BPTkF0MDF5RVU4blNxRjZDVnRLVloyZTdjdjB0eDFhMUptRkxHOGtyRklt?= =?utf-8?B?Zmo3cG4vODVWWHpweS9FbnpJU3pweFEvZTJaOHhqQ04wOVVmaDZ3WlFVbVV2?= =?utf-8?B?dGNZbWVYODNSSTliMHBmYUlqNkVJVkxhZ1ZSRzdzK2NWY01VTHhueml0bGlp?= =?utf-8?B?WExyTjQvM3dVQldIVkd0RlEzcUJBUm8vWGFxTzJiTDJxdTR3QU5lV2ErUDI0?= =?utf-8?B?S3pVSndFTW5tbERiYWFVUWNjR1FRd3RNdzljc3NuK29lQmpSenE5clNBekZE?= =?utf-8?B?YktDd1JzdGZ5UHdjUEVtKzE0K0hyM3RMeVFkeFNyK2RhWE5xRzNzTVJxdzQ0?= =?utf-8?B?T2d6ME1IbWFkRnR3eVJvdzhZN081U3NNZXVydk5vdjBCRzVFT21QaUQ3c3Bz?= =?utf-8?B?WVJwWHAvL25LVGtaMC9PbC9mamtOcmlwYmxic3JJV3lpKzQ3SHdXVVN5QTl4?= =?utf-8?B?N0xOTzBSVlg0VFBsbmovSk1JbUFnVkxrcnFyMzBaUUhJajFiZ0pvcjdaWW5Z?= =?utf-8?B?R0thdGQ2MldTRVFqVVI3c0JWbnlOa2grNGs5d3FnemJOZjV5RFRSdWs5WGNr?= =?utf-8?B?RGVVK0VLd3VsWCtwZEY0UWpEQTNSSjh3cGg4ZlpnUjQwZ0UxQmY0UlluK2F2?= =?utf-8?B?M1RNTU5LbEJWSm13ckQra1hiQTlGUExlajZ4NTh2TkZNSjhJbzZRRzQ0bU4r?= =?utf-8?B?VjZyRTZRMWVjUUkzRlZvZW5tY2tnNmxsZ1ViN0FVRXpvZWQ0NVl0eHNGTGth?= =?utf-8?B?cmRKcEpSSHRtREo1ZjB4dkdpR3U0U0dxVm9BcDB0NmVUelFjRGNEYkc5MGFs?= =?utf-8?B?VE56dFhka2ZKYUNZNi9TMDFnNkFQMW4zK3V1NTZma1dEckhUUFlCWGVTcmFy?= =?utf-8?B?Mi9YaXdXWGYzUUhFdksrVFFOL0dVOFBUOEhlZjkxdEJUY1hWcUg2aEVDUStM?= =?utf-8?B?SHZYdVBFSEtaMXM0VmlCQnc5T01BSnhYL21nTUxObnErcDk2aTJFYk1sWUly?= =?utf-8?B?RnpZSWMrcUx1Vlh0QnFtSkJuQVorUlJpRUF0Y0czVzRQYzhnbnE4WERyQ1JZ?= =?utf-8?B?NS9pZU5LQVpnS0hPQkg1Q3ZJdE5BZnpuN3lIdzdnc0EwaThSeEdVY1JmaEgx?= =?utf-8?B?Z0RPZTN4VFNCUk5DWXZaNkdZZE5Lb1orS0llOGJOUEVDdDJNRUZML0hwT0Fj?= =?utf-8?B?UnFySTVtSEowK05zdlh1SGZYcTZ5bGc1MysrNGNVYlIvODNKUmd1T0ZFZFFa?= =?utf-8?B?TkZFdnI0cHd1VlRZZjFqa2hCaHEzNm05eHorU21lNHhya1I5V3o3SUpUdGQ4?= =?utf-8?B?dlV6UWgvd0l2Slo5TUVhUDRsZ1VqUXRDeXcxempCbU9pVU9NZSt4WncyaXhP?= =?utf-8?B?K2FxaTlmQmNvL2RXWTMvWS9ZaDRheXU0UG1pUTZuSjZPbloxSVVTTFRJYUNi?= =?utf-8?B?MnN1UmE1b2NFaHNMS2pPcVFHbnVpOUVMUVhOaE5CYWJqVDk4eTEvR0RyTEtM?= =?utf-8?B?TGFHRGp0VHJYRnlvcXZsbUVTYjFXcit2QmhxWEM5bWhaamphZ2ZyZUpQV1A3?= =?utf-8?B?QkhESVN2K0lYaEtyNERlU3JrTWp4VzNnRTQyeFM5M1hmMWhDS0p6RXo4Z3ZN?= =?utf-8?B?eXhLdlkybnBaVTZvcWZmSjBwbjY3a0xncHZ4TWR1VXFEbUhMaGxNZWs5Y2kw?= =?utf-8?Q?1WUyNAUfIg5rNOqdD/Vvetdyj?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: nPCIYuBWAXgKbKwoElPWaOnWcEOpZSZ61KFX0apTJWPSgEibalzwI1koa8tkDQP3TNS2/M4JG1yy82loSgVgc38UPcpwguKBXbV5Ob1gHZsOJA/2SAoJT1mXYqzAPtgOxW6LAQHfdREXJJACsYZYRF93fs8UBPDb45YyqhcNqYhmVjaQ1UFWAHEryLW7pguulKja6psr08Lx3gzHRRMVugy71fisfjMOtMK1Xe9yaHoM+Ky7cn/26oD8nBX3eBORBa+hFYMcSfpx00pPvR23TcudA0maEwux6M0zu2ch4oYLC7m2+bUeLvWK/zClORLRWbWzArzbRqAPhD3NnIFcpH0nrJVj9HTJVgBsdrf+fInBWGGg1KDVphBYF3GgrrNorgMIUMrb/cTmzaXEgkzsLyM3i0RsgjZrkvOzr21WOKgmSJryaQWFA5aS5EHAsS6AvI0iWFTOZ6+K67GuXrQIcsWcoBKPsuHGGWukMtkY2N3aZecOVoMzrfkYYQN0Y6s3tHzGh4S01vrW7aTQ8YDdQedxVxpXSVSojTS/iXoHHdxAwUcst+doUBr5iAOxz547iMXJQ8nkyaHS0NmjfCJEThD6ARxUINnAGpD6pTggJCpidICSDLvgfhKEvUbh6OGla1lk0q6fznT4SglpJpGNxQUidTRbdAoxAyKVlsUhlPZfSgNO2Z0iR5noUPwHY0P/LGZ+TeF8hPuACmXeh7URrYgbyYeKP/60AGN4eQBymb2WtATsbBTPf1nbjmAhPD/T X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: dec0b8bc-6ae9-4d61-27c7-08db619e1e33 X-MS-Exchange-CrossTenant-AuthSource: MWHPR1001MB2158.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 May 2023 06:13:14.4070 (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: ZKPpF9BBJzlU31JgQB/FPwA+Q2S9OhSqAQvSWVolThAweQ/0X355R4jNu99n22qjAYC0jkr8ktMzLZLvqJyklQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR10MB4118 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.957,Hydra:6.0.573,FMLib:17.11.176.26 definitions=2023-05-31_02,2023-05-30_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 mlxlogscore=999 adultscore=0 malwarescore=0 bulkscore=0 suspectscore=0 mlxscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2304280000 definitions=main-2305310054 X-Proofpoint-ORIG-GUID: HW8ZlFMOMTdSifuP2cEbVfzTaLsvIW0r X-Proofpoint-GUID: HW8ZlFMOMTdSifuP2cEbVfzTaLsvIW0r X-Spam-Status: No, score=-13.2 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,NICE_REPLY_A,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.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On 5/30/23 11:27, David Faust wrote: > [Changes from v1: > - Fix typos. > - Split unrelated change into separate commit. > - Improve asm comment for enum constants, update btf-enum-1 test. > - Improve asm comment for DATASEC records, update btf-datasec-2 test.] > > Many BTF type kinds refer to other types via index to the final types > list. However, the order of the final types list is not guaranteed to > remain the same for the same source program between different runs of > the compiler, making it difficult to test inter-type references. > > This patch updates the assembler comments output when writing a > given BTF record to include minimal information about the referenced > type, if any. This allows for the regular expressions used in the gcc > testsuite to do some basic integrity checks on inter-type references. > > For example, for the type > > unsigned int * > > Assembly comments like the following are written with -dA: > > .4byte 0 ; TYPE 2 BTF_KIND_PTR '' > .4byte 0x2000000 ; btt_info: kind=2, kflag=0, vlen=0 > .4byte 0x1 ; btt_type: (BTF_KIND_INT 'unsigned int') > > Several BTF tests which can immediately be made more robust with this > change are updated. It will also be useful in new tests for the upcoming > btf_type_tag support. > > Re-tested on BPF and x86_64, no known regressions. > Thanks. > LGTM. Thanks > gcc/ > > * btfout.cc (btf_kind_names): New. > (btf_kind_name): New. > (btf_absolute_var_id): New utility function. > (btf_relative_var_id): Likewise. > (btf_relative_func_id): Likewise. > (btf_absolute_datasec_id): Likewise. > (btf_asm_type_ref): New. > (btf_asm_type): Update asm comments and use btf_asm_type_ref (). > (btf_asm_array): Likewise. Accept ctf_container_ref parameter. > (btf_asm_varent): Likewise. > (btf_asm_func_arg): Likewise. > (btf_asm_datasec_entry): Likewise. > (btf_asm_datasec_type): Likewise. > (btf_asm_func_type): Likewise. Add index parameter. > (btf_asm_enum_const): Likewise. > (btf_asm_sou_member): Likewise. > (output_btf_vars): Update btf_asm_* call accordingly. > (output_asm_btf_sou_fields): Likewise. > (output_asm_btf_enum_list): Likewise. > (output_asm_btf_func_args_list): Likewise. > (output_asm_btf_vlen_bytes): Likewise. > (output_btf_func_types): Add ctf_container_ref parameter. > Pass it to btf_asm_func_type. > (output_btf_datasec_types): Update btf_asm_datsec_type call similarly. > (btf_output): Update output_btf_func_types call similarly. > > gcc/testsuite/ > > * gcc.dg/debug/btf/btf-array-1.c: Use new BTF asm comments > in scan-assembler expressions where useful. > * gcc.dg/debug/btf/btf-anonymous-struct-1.c: Likewise. > * gcc.dg/debug/btf/btf-anonymous-union-1.c: Likewise. > * gcc.dg/debug/btf/btf-bitfields-2.c: Likewise. > * gcc.dg/debug/btf/btf-bitfields-3.c: Likewise. > * gcc.dg/debug/btf/btf-datasec-2.c: Likewise. > * gcc.dg/debug/btf/btf-enum-1.c: Likewise. > * gcc.dg/debug/btf/btf-function-6.c: Likewise. > * gcc.dg/debug/btf/btf-pointers-1.c: Likewise. > * gcc.dg/debug/btf/btf-struct-1.c: Likewise. > * gcc.dg/debug/btf/btf-struct-2.c: Likewise. > * gcc.dg/debug/btf/btf-typedef-1.c: Likewise. > * gcc.dg/debug/btf/btf-union-1.c: Likewise. > * gcc.dg/debug/btf/btf-variables-1.c: Likewise. > * gcc.dg/debug/btf/btf-variables-2.c: Likewise. Update outdated comment. > * gcc.dg/debug/btf/btf-function-3.c: Update outdated comment. > --- > gcc/btfout.cc | 227 ++++++++++++++---- > .../gcc.dg/debug/btf/btf-anonymous-struct-1.c | 3 +- > .../gcc.dg/debug/btf/btf-anonymous-union-1.c | 4 +- > gcc/testsuite/gcc.dg/debug/btf/btf-array-1.c | 3 + > .../gcc.dg/debug/btf/btf-bitfields-2.c | 2 +- > .../gcc.dg/debug/btf/btf-bitfields-3.c | 2 +- > .../gcc.dg/debug/btf/btf-datasec-2.c | 4 +- > gcc/testsuite/gcc.dg/debug/btf/btf-enum-1.c | 4 + > .../gcc.dg/debug/btf/btf-function-3.c | 2 +- > .../gcc.dg/debug/btf/btf-function-6.c | 4 +- > .../gcc.dg/debug/btf/btf-pointers-1.c | 3 + > gcc/testsuite/gcc.dg/debug/btf/btf-struct-1.c | 4 +- > gcc/testsuite/gcc.dg/debug/btf/btf-struct-2.c | 2 +- > .../gcc.dg/debug/btf/btf-typedef-1.c | 14 +- > gcc/testsuite/gcc.dg/debug/btf/btf-union-1.c | 2 +- > .../gcc.dg/debug/btf/btf-variables-1.c | 6 + > .../gcc.dg/debug/btf/btf-variables-2.c | 7 +- > 17 files changed, 224 insertions(+), 69 deletions(-) > > diff --git a/gcc/btfout.cc b/gcc/btfout.cc > index ae9855716eb..f51ccf73242 100644 > --- a/gcc/btfout.cc > +++ b/gcc/btfout.cc > @@ -114,6 +114,23 @@ static unsigned int num_types_added = 0; > CTF types. */ > static unsigned int num_types_created = 0; > > +/* Name strings for BTF kinds. > + Note: the indices here must match the type defines in btf.h. */ > +static const char *const btf_kind_names[] = > + { > + "UNKN", "INT", "PTR", "ARRAY", "STRUCT", "UNION", "ENUM", "FWD", > + "TYPEDEF", "VOLATILE", "CONST", "RESTRICT", "FUNC", "FUNC_PROTO", > + "VAR", "DATASEC", "FLOAT", "DECL_TAG", "TYPE_TAG", "ENUM64" > + }; > + > +/* Return a name string for the given BTF_KIND. */ > + > +static const char * > +btf_kind_name (uint32_t btf_kind) > +{ > + return btf_kind_names[btf_kind]; > +} > + > /* Map a CTF type kind to the corresponding BTF type kind. */ > > static uint32_t > @@ -141,6 +158,57 @@ get_btf_kind (uint32_t ctf_kind) > return BTF_KIND_UNKN; > } > > +/* Helper routines to map between 'relative' and 'absolute' IDs. > + > + In BTF all records (including variables) are output in one long list, and all > + inter-type references are via index into that list. But internally since we > + a) translate from CTF, which separates variable records from regular types > + and b) create some additional types after the fact, things like VAR and FUNC > + records are stored in separate vectors with their own indices. These > + functions map between the 'relative' IDs (i.e. indices in their respective > + containers) and 'absolute' IDs (i.e. indices in the final contiguous > + output list), which goes in order: > + all normal type records translated from CTF > + all BTF_KIND_VAR records > + all BTF_KIND_FUNC records (synthesized split function records) > + all BTF_KIND_DATASEC records (synthesized) > + > + The extra '+ 1's below are to account for the implicit "void" record, which > + has index 0 but isn't actually contained in the type list. */ > + > +/* Return the final BTF ID of the variable at relative index REL. */ > + > +static ctf_id_t > +btf_absolute_var_id (ctf_id_t rel) > +{ > + return rel + (num_types_added + 1); > +} > + > +/* Return the relative index of the variable with final BTF ID ABS. */ > + > +static ctf_id_t > +btf_relative_var_id (ctf_id_t abs) > +{ > + return abs - (num_types_added + 1); > +} > + > +/* Return the relative index of the func record with final BTF ID ABS. */ > + > +static ctf_id_t > +btf_relative_func_id (ctf_id_t abs) > +{ > + return abs - ((num_types_added + 1) + num_vars_added); > +} > + > +/* Return the final BTF ID of the datasec record at relative index REL. */ > + > +static ctf_id_t > +btf_absolute_datasec_id (ctf_id_t rel) > +{ > + return rel + (num_types_added + 1) + num_vars_added + funcs->length (); > +} > + > + > /* Allocate the btf_id_map, and initialize elements to BTF_INVALID_TYPEID. */ > > static void > @@ -407,8 +475,7 @@ btf_collect_datasec (ctf_container_ref ctfc) > info.type = 0; > unsigned int *var_id = btf_var_ids->get (dvd); > if (var_id) > - /* +1 for the sentinel type not in the types map. */ > - info.type = *var_id + num_types_added + 1; > + info.type = btf_absolute_var_id (*var_id); > else > continue; > > @@ -620,6 +687,48 @@ btf_dmd_representable_bitfield_p (ctf_container_ref ctfc, ctf_dmdef_t *dmd) > > /* BTF asm helper routines. */ > > +/* Asm'out a reference to another BTF type. */ > + > +static void > +btf_asm_type_ref (const char *prefix, ctf_container_ref ctfc, ctf_id_t ref_id) > +{ > + if (ref_id == BTF_VOID_TYPEID || ref_id == BTF_INVALID_TYPEID) > + { > + /* There is no explicit void type. > + Also handle any invalid refs that made it this far, just in case. */ > + dw2_asm_output_data (4, ref_id, "%s: void", prefix); > + } > + else if (ref_id >= num_types_added + 1 > + && ref_id < num_types_added + num_vars_added + 1) > + { > + /* Ref to a variable. Should only appear in DATASEC entries. */ > + ctf_id_t var_id = btf_relative_var_id (ref_id); > + ctf_dvdef_ref dvd = ctfc->ctfc_vars_list[var_id]; > + dw2_asm_output_data (4, ref_id, "%s: (BTF_KIND_VAR '%s')", > + prefix, dvd->dvd_name); > + > + } > + else if (ref_id >= num_types_added + num_vars_added + 1) > + { > + /* Ref to a FUNC record. */ > + size_t func_id = btf_relative_func_id (ref_id); > + ctf_dtdef_ref ref_type = (*funcs)[func_id]; > + dw2_asm_output_data (4, ref_id, "%s: (BTF_KIND_FUNC '%s')", > + prefix, ref_type->dtd_name); > + } > + else > + { > + /* Ref to a standard type in the types list. */ > + ctf_dtdef_ref ref_type = ctfc->ctfc_types_list[ref_id]; > + uint32_t ref_kind > + = get_btf_kind (CTF_V2_INFO_KIND (ref_type->dtd_data.ctti_info)); > + > + dw2_asm_output_data (4, ref_id, "%s: (BTF_KIND_%s '%s')", > + prefix, btf_kind_name (ref_kind), > + ref_type->dtd_name); > + } > +} > + > /* Asm'out a BTF type. This routine is responsible for the bulk of the task > of converting CTF types to their BTF representation. */ > > @@ -689,7 +798,10 @@ btf_asm_type (ctf_container_ref ctfc, ctf_dtdef_ref dtd) > btf_kind = BTF_KIND_ENUM64; > } > > - dw2_asm_output_data (4, dtd->dtd_data.ctti_name, "btt_name"); > + dw2_asm_output_data (4, dtd->dtd_data.ctti_name, > + "TYPE %lu BTF_KIND_%s '%s'", > + get_btf_id (dtd->dtd_type), btf_kind_name (btf_kind), > + dtd->dtd_name); > dw2_asm_output_data (4, BTF_TYPE_INFO (btf_kind, btf_kflag, btf_vlen), > "btt_info: kind=%u, kflag=%u, vlen=%u", > btf_kind, btf_kflag, btf_vlen); > @@ -715,29 +827,31 @@ btf_asm_type (ctf_container_ref ctfc, ctf_dtdef_ref dtd) > break; > } > > - dw2_asm_output_data (4, get_btf_id (dtd->dtd_data.ctti_type), "btt_type"); > + ctf_id_t ref_id = get_btf_id (dtd->dtd_data.ctti_type); > + btf_asm_type_ref ("btt_type", ctfc, ref_id); > } > > /* Asm'out the variable information following a BTF_KIND_ARRAY. */ > > static void > -btf_asm_array (ctf_dtdef_ref dtd) > +btf_asm_array (ctf_container_ref ctfc, ctf_arinfo_t arr) > { > - dw2_asm_output_data (4, get_btf_id (dtd->dtd_u.dtu_arr.ctr_contents), > - "bta_contents"); > - dw2_asm_output_data (4, get_btf_id (dtd->dtd_u.dtu_arr.ctr_index), > - "bta_index"); > - dw2_asm_output_data (4, dtd->dtd_u.dtu_arr.ctr_nelems, "bta_nelems"); > + btf_asm_type_ref ("bta_elem_type", ctfc, get_btf_id (arr.ctr_contents)); > + btf_asm_type_ref ("bta_index_type", ctfc, get_btf_id (arr.ctr_index)); > + dw2_asm_output_data (4, arr.ctr_nelems, "bta_nelems"); > } > > /* Asm'out a BTF_KIND_VAR. */ > > static void > -btf_asm_varent (ctf_dvdef_ref var) > +btf_asm_varent (ctf_container_ref ctfc, ctf_dvdef_ref var) > { > - dw2_asm_output_data (4, var->dvd_name_offset, "btv_name"); > + ctf_id_t ref_id = get_btf_id (var->dvd_type); > + dw2_asm_output_data (4, var->dvd_name_offset, "TYPE %u BTF_KIND_VAR '%s'", > + (*(btf_var_ids->get (var)) + num_types_added + 1), > + var->dvd_name); > dw2_asm_output_data (4, BTF_TYPE_INFO (BTF_KIND_VAR, 0, 0), "btv_info"); > - dw2_asm_output_data (4, get_btf_id (var->dvd_type), "btv_type"); > + btf_asm_type_ref ("btv_type", ctfc, ref_id); > dw2_asm_output_data (4, var->dvd_visibility, "btv_linkage"); > } > > @@ -745,7 +859,7 @@ btf_asm_varent (ctf_dvdef_ref var) > BTF_KIND_UNION. */ > > static void > -btf_asm_sou_member (ctf_container_ref ctfc, ctf_dmdef_t * dmd) > +btf_asm_sou_member (ctf_container_ref ctfc, ctf_dmdef_t * dmd, unsigned int idx) > { > ctf_dtdef_ref ref_type = ctfc->ctfc_types_list[dmd->dmd_type]; > > @@ -768,15 +882,19 @@ btf_asm_sou_member (ctf_container_ref ctfc, ctf_dmdef_t * dmd) > sou_offset &= 0x00ffffff; > sou_offset |= ((bits & 0xff) << 24); > > + dw2_asm_output_data (4, dmd->dmd_name_offset, > + "MEMBER '%s' idx=%u", > + dmd->dmd_name, idx); > /* Refer to the base type of the slice. */ > - dw2_asm_output_data (4, dmd->dmd_name_offset, "btm_name_off"); > - dw2_asm_output_data (4, get_btf_id (base_type), "btm_type"); > + btf_asm_type_ref ("btm_type", ctfc, get_btf_id (base_type)); > dw2_asm_output_data (4, sou_offset, "btm_offset"); > } > else > { > - dw2_asm_output_data (4, dmd->dmd_name_offset, "btm_name_off"); > - dw2_asm_output_data (4, get_btf_id (dmd->dmd_type), "btm_type"); > + dw2_asm_output_data (4, dmd->dmd_name_offset, > + "MEMBER '%s' idx=%u", > + dmd->dmd_name, idx); > + btf_asm_type_ref ("btm_type", ctfc, get_btf_id (dmd->dmd_type)); > dw2_asm_output_data (4, dmd->dmd_offset, "btm_offset"); > } > } > @@ -784,9 +902,10 @@ btf_asm_sou_member (ctf_container_ref ctfc, ctf_dmdef_t * dmd) > /* Asm'out an enum constant following a BTF_KIND_ENUM{,64}. */ > > static void > -btf_asm_enum_const (unsigned int size, ctf_dmdef_t * dmd) > +btf_asm_enum_const (unsigned int size, ctf_dmdef_t * dmd, unsigned int idx) > { > - dw2_asm_output_data (4, dmd->dmd_name_offset, "bte_name"); > + dw2_asm_output_data (4, dmd->dmd_name_offset, "ENUM_CONST '%s' idx=%u", > + dmd->dmd_name, idx); > if (size == 4) > dw2_asm_output_data (size, dmd->dmd_value, "bte_value"); > else > @@ -799,7 +918,8 @@ btf_asm_enum_const (unsigned int size, ctf_dmdef_t * dmd) > /* Asm'out a function parameter description following a BTF_KIND_FUNC_PROTO. */ > > static void > -btf_asm_func_arg (ctf_func_arg_t * farg, size_t stroffset) > +btf_asm_func_arg (ctf_container_ref ctfc, ctf_func_arg_t * farg, > + size_t stroffset) > { > /* If the function arg does not have a name, refer to the null string at > the start of the string table. This ensures correct encoding for varargs > @@ -809,31 +929,33 @@ btf_asm_func_arg (ctf_func_arg_t * farg, size_t stroffset) > else > dw2_asm_output_data (4, 0, "farg_name"); > > - dw2_asm_output_data (4, (btf_removed_type_p (farg->farg_type) > - ? BTF_VOID_TYPEID > - : get_btf_id (farg->farg_type)), > - "farg_type"); > + btf_asm_type_ref ("farg_type", ctfc, (btf_removed_type_p (farg->farg_type) > + ? BTF_VOID_TYPEID > + : get_btf_id (farg->farg_type))); > } > > /* Asm'out a BTF_KIND_FUNC type. */ > > static void > -btf_asm_func_type (ctf_dtdef_ref dtd) > +btf_asm_func_type (ctf_container_ref ctfc, ctf_dtdef_ref dtd, size_t i) > { > - dw2_asm_output_data (4, dtd->dtd_data.ctti_name, "btt_name"); > - dw2_asm_output_data (4, BTF_TYPE_INFO (BTF_KIND_FUNC, 0, > - dtd->linkage), > - "btt_info: kind=%u, kflag=%u, linkage=%u", > - BTF_KIND_FUNC, 0, dtd->linkage); > - dw2_asm_output_data (4, get_btf_id (dtd->dtd_data.ctti_type), "btt_type"); > + ctf_id_t ref_id = dtd->dtd_data.ctti_type; > + dw2_asm_output_data (4, dtd->dtd_data.ctti_name, > + "TYPE %lu BTF_KIND_FUNC '%s'", > + num_types_added + num_vars_added + 1 + i, > + dtd->dtd_name); > + dw2_asm_output_data (4, BTF_TYPE_INFO (BTF_KIND_FUNC, 0, dtd->linkage), > + "btt_info: kind=%u, kflag=%u, linkage=%u", > + BTF_KIND_FUNC, 0, dtd->linkage); > + btf_asm_type_ref ("btt_type", ctfc, get_btf_id (ref_id)); > } > > /* Asm'out a variable entry following a BTF_KIND_DATASEC. */ > > static void > -btf_asm_datasec_entry (struct btf_var_secinfo info) > +btf_asm_datasec_entry (ctf_container_ref ctfc, struct btf_var_secinfo info) > { > - dw2_asm_output_data (4, info.type, "bts_type"); > + btf_asm_type_ref ("bts_type", ctfc, info.type); > dw2_asm_output_data (4, info.offset, "bts_offset"); > dw2_asm_output_data (4, info.size, "bts_size"); > } > @@ -841,17 +963,20 @@ btf_asm_datasec_entry (struct btf_var_secinfo info) > /* Asm'out a whole BTF_KIND_DATASEC, including its variable entries. */ > > static void > -btf_asm_datasec_type (btf_datasec_t ds, size_t stroffset) > +btf_asm_datasec_type (ctf_container_ref ctfc, btf_datasec_t ds, ctf_id_t id, > + size_t stroffset) > { > - dw2_asm_output_data (4, ds.name_offset + stroffset, "btt_name"); > + dw2_asm_output_data (4, ds.name_offset + stroffset, > + "TYPE %lu BTF_KIND_DATASEC '%s'", > + btf_absolute_datasec_id (id), ds.name); > dw2_asm_output_data (4, BTF_TYPE_INFO (BTF_KIND_DATASEC, 0, > ds.entries.length ()), > - "btt_info"); > + "btt_info: n_entries=%u", ds.entries.length ()); > /* Note: the "total section size in bytes" is emitted as 0 and patched by > loaders such as libbpf. */ > dw2_asm_output_data (4, 0, "btt_size"); > for (size_t i = 0; i < ds.entries.length (); i++) > - btf_asm_datasec_entry (ds.entries[i]); > + btf_asm_datasec_entry (ctfc, ds.entries[i]); > } > > /* Compute and output the header information for a .BTF section. */ > @@ -912,7 +1037,7 @@ output_btf_vars (ctf_container_ref ctfc) > if (num_ctf_vars) > { > for (i = 0; i < num_ctf_vars; i++) > - btf_asm_varent (ctfc->ctfc_vars_list[i]); > + btf_asm_varent (ctfc, ctfc->ctfc_vars_list[i]); > } > } > > @@ -946,9 +1071,13 @@ output_asm_btf_sou_fields (ctf_container_ref ctfc, ctf_dtdef_ref dtd) > { > ctf_dmdef_t * dmd; > > + unsigned idx = 0; > for (dmd = dtd->dtd_u.dtu_members; > dmd != NULL; dmd = (ctf_dmdef_t *) ctf_dmd_list_next (dmd)) > - btf_asm_sou_member (ctfc, dmd); > + { > + btf_asm_sou_member (ctfc, dmd, idx); > + idx++; > + } > } > > /* Output all enumerator constants following a BTF_KIND_ENUM{,64}. */ > @@ -959,9 +1088,13 @@ output_asm_btf_enum_list (ctf_container_ref ARG_UNUSED (ctfc), > { > ctf_dmdef_t * dmd; > > + unsigned idx = 0; > for (dmd = dtd->dtd_u.dtu_members; > dmd != NULL; dmd = (ctf_dmdef_t *) ctf_dmd_list_next (dmd)) > - btf_asm_enum_const (dtd->dtd_data.ctti_size, dmd); > + { > + btf_asm_enum_const (dtd->dtd_data.ctti_size, dmd, idx); > + idx++; > + } > } > > /* Output all function arguments following a BTF_KIND_FUNC_PROTO. */ > @@ -974,7 +1107,7 @@ output_asm_btf_func_args_list (ctf_container_ref ctfc, > ctf_func_arg_t * farg; > for (farg = dtd->dtd_u.dtu_argv; > farg != NULL; farg = (ctf_func_arg_t *) ctf_farg_list_next (farg)) > - btf_asm_func_arg (farg, farg_name_offset); > + btf_asm_func_arg (ctfc, farg, farg_name_offset); > } > > /* Output the variable portion of a BTF type record. The information depends > @@ -1010,7 +1143,7 @@ output_asm_btf_vlen_bytes (ctf_container_ref ctfc, ctf_dtdef_ref dtd) > break; > > case BTF_KIND_ARRAY: > - btf_asm_array (dtd); > + btf_asm_array (ctfc, dtd->dtd_u.dtu_arr); > break; > > case BTF_KIND_STRUCT: > @@ -1074,10 +1207,10 @@ output_btf_types (ctf_container_ref ctfc) > /* Output all BTF_KIND_FUNC type records. */ > > static void > -output_btf_func_types (void) > +output_btf_func_types (ctf_container_ref ctfc) > { > for (size_t i = 0; i < vec_safe_length (funcs); i++) > - btf_asm_func_type ((*funcs)[i]); > + btf_asm_func_type (ctfc, (*funcs)[i], i); > } > > /* Output all BTF_KIND_DATASEC records. */ > @@ -1088,7 +1221,7 @@ output_btf_datasec_types (ctf_container_ref ctfc) > size_t name_offset = ctfc_get_strtab_len (ctfc, CTF_STRTAB); > > for (size_t i = 0; i < datasecs.length(); i++) > - btf_asm_datasec_type (datasecs[i], name_offset); > + btf_asm_datasec_type (ctfc, datasecs[i], i, name_offset); > } > > /* Postprocess the CTF debug data post initialization. > @@ -1215,7 +1348,7 @@ btf_output (const char * filename) > output_btf_header (tu_ctfc); > output_btf_types (tu_ctfc); > output_btf_vars (tu_ctfc); > - output_btf_func_types (); > + output_btf_func_types (tu_ctfc); > output_btf_datasec_types (tu_ctfc); > output_btf_strs (tu_ctfc); > } > diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-anonymous-struct-1.c b/gcc/testsuite/gcc.dg/debug/btf/btf-anonymous-struct-1.c > index 89a5701bba0..05996fe195a 100644 > --- a/gcc/testsuite/gcc.dg/debug/btf/btf-anonymous-struct-1.c > +++ b/gcc/testsuite/gcc.dg/debug/btf/btf-anonymous-struct-1.c > @@ -11,10 +11,11 @@ > /* { dg-options "-O0 -gbtf -dA" } */ > > /* Struct type with 2 members (struct foo). */ > +/* { dg-final { scan-assembler-times " BTF_KIND_STRUCT 'foo'" 1 } } */ > /* { dg-final { scan-assembler-times "\[\t \]0x4000002\[\t \]+\[^\n\]*btt_info" 1 } } */ > /* Struct type with 1 member (anon struct). */ > +/* { dg-final { scan-assembler-times " BTF_KIND_STRUCT ''" 1 } } */ > /* { dg-final { scan-assembler-times "\[\t \]0x4000001\[\t \]+\[^\n\]*btt_info" 1 } } */ > -/* { dg-final { scan-assembler-times "\[\t \]0\[\t \]+\[^\n\]*btt_name" 1 } } */ > > struct foo > { > diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-anonymous-union-1.c b/gcc/testsuite/gcc.dg/debug/btf/btf-anonymous-union-1.c > index f3b120bb458..49cdc87cf59 100644 > --- a/gcc/testsuite/gcc.dg/debug/btf/btf-anonymous-union-1.c > +++ b/gcc/testsuite/gcc.dg/debug/btf/btf-anonymous-union-1.c > @@ -9,9 +9,9 @@ > > /* Struct type with 1 member. */ > /* { dg-final { scan-assembler-times "\[\t \]0x4000001\[\t \]+\[^\n\]*btt_info" 1 } } */ > -/* Union type with 2 members. */ > +/* Anonymous union type with 2 members. */ > /* { dg-final { scan-assembler-times "\[\t \]0x5000002\[\t \]+\[^\n\]*btt_info" 1 } } */ > -/* { dg-final { scan-assembler-times "\[\t \]0\[\t \]+\[^\n\]*btt_name" 1 } } */ > +/* { dg-final { scan-assembler-times " BTF_KIND_UNION ''" 1 } } */ > > struct foo > { > diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-array-1.c b/gcc/testsuite/gcc.dg/debug/btf/btf-array-1.c > index ab55445bd35..967b1e8746a 100644 > --- a/gcc/testsuite/gcc.dg/debug/btf/btf-array-1.c > +++ b/gcc/testsuite/gcc.dg/debug/btf/btf-array-1.c > @@ -18,6 +18,9 @@ > /* { dg-final { scan-assembler-times "\[\t \]0x5\[\t \]+\[^\n\]*bta_nelems" 1 } } */ > /* { dg-final { scan-assembler-times "\[\t \]0\[\t \]+\[^\n\]*bta_nelems" 1 } } */ > > +/* { dg-final { scan-assembler-times " bta_elem_type: \\(BTF_KIND_INT 'int'\\)" 4 } } */ > +/* { dg-final { scan-assembler-times " bta_elem_type: \\(BTF_KIND_ARRAY ''\\)" 1 } } */ > + > int b1[2] = {0,1}; > int c1[5] = {0,1,2,3,4}; > int a1[2][3] = { {3,4,5}, {2,3,4} }; > diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-bitfields-2.c b/gcc/testsuite/gcc.dg/debug/btf/btf-bitfields-2.c > index 9665ab67145..03c323a6d49 100644 > --- a/gcc/testsuite/gcc.dg/debug/btf/btf-bitfields-2.c > +++ b/gcc/testsuite/gcc.dg/debug/btf/btf-bitfields-2.c > @@ -16,7 +16,7 @@ > /* { dg-final { scan-assembler-times "\[\t \]0x20000020\[\t \]+\[^\n\]*btm_offset" 1 } } */ > > /* Only 2 members. */ > -/* { dg-final { scan-assembler-times "btm_name" 2 } } */ > +/* { dg-final { scan-assembler-times "MEMBER" 2 } } */ > > struct foo > { > diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-bitfields-3.c b/gcc/testsuite/gcc.dg/debug/btf/btf-bitfields-3.c > index 2984a3357eb..78b8b7d49ad 100644 > --- a/gcc/testsuite/gcc.dg/debug/btf/btf-bitfields-3.c > +++ b/gcc/testsuite/gcc.dg/debug/btf/btf-bitfields-3.c > @@ -22,7 +22,7 @@ > /* { dg-final { scan-assembler-times "\[\t \]0x84000001\[\t \]+\[^\n\]*btt_info" 1 } } */ > > /* Bitfield "f" points to type ID 1. */ > -/* { dg-final { scan-assembler-times "\[\t \]0x1\[\t \]+\[^\n\]*btm_type" 1 } } */ > +/* { dg-final { scan-assembler-times " btm_type: \\(BTF_KIND_ENUM 'foo'" 1 } } */ > > enum foo > { > diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-datasec-2.c b/gcc/testsuite/gcc.dg/debug/btf/btf-datasec-2.c > index f4b298cf019..d6f3358d6fb 100644 > --- a/gcc/testsuite/gcc.dg/debug/btf/btf-datasec-2.c > +++ b/gcc/testsuite/gcc.dg/debug/btf/btf-datasec-2.c > @@ -6,8 +6,8 @@ > /* { dg-options "-O0 -gbtf -dA" } */ > > /* Expect one DATASEC with vlen=1 (.foo_sec) and one with vlen=2 (.bar_sec) */ > -/* { dg-final { scan-assembler-times "0xf000002\[\t \]+\[^\n\]*btt_info" 1 } } */ > -/* { dg-final { scan-assembler-times "0xf000001\[\t \]+\[^\n\]*btt_info" 1 } } */ > +/* { dg-final { scan-assembler-times " BTF_KIND_DATASEC '.foo_sec'\[\\r\\n\]+\[^\\r\\n\]*0xf000001\[\t \]+\[^\n\]*btt_info" 1 } } */ > +/* { dg-final { scan-assembler-times " BTF_KIND_DATASEC '.bar_sec'\[\\r\\n\]+\[^\\r\\n\]*0xf000002\[\t \]+\[^\n\]*btt_info" 1 } } */ > > /* Function entries should have offset and size of 0 at compile time. */ > /* { dg-final { scan-assembler-times "0\[\t \]+\[^\n\]*bts_offset" 3 } } */ > diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-enum-1.c b/gcc/testsuite/gcc.dg/debug/btf/btf-enum-1.c > index 2887cb1c5f2..021ce0345e4 100644 > --- a/gcc/testsuite/gcc.dg/debug/btf/btf-enum-1.c > +++ b/gcc/testsuite/gcc.dg/debug/btf/btf-enum-1.c > @@ -5,6 +5,10 @@ > > /* { dg-final { scan-assembler-times "\[\t \]0x6000004\[\t \]+\[^\n\]*btt_info" 1 } } */ > /* { dg-final { scan-assembler-times "\[\t \]0x86000003\[\t \]+\[^\n\]*btt_info" 1 } } */ > +/* { dg-final { scan-assembler-times " ENUM_CONST 'QAD' idx=0" 1 } } */ > +/* { dg-final { scan-assembler-times " ENUM_CONST 'QED' idx=1" 1 } } */ > +/* { dg-final { scan-assembler-times " ENUM_CONST 'QOD' idx=2" 1 } } */ > +/* { dg-final { scan-assembler-times " ENUM_CONST 'QUD' idx=3" 1 } } */ > /* { dg-final { scan-assembler-times "ascii \"QAD.0\"\[\t \]+\[^\n\]*btf_string" 1 } } */ > /* { dg-final { scan-assembler-times "ascii \"QED.0\"\[\t \]+\[^\n\]*btf_string" 1 } } */ > /* { dg-final { scan-assembler-times "ascii \"QOD.0\"\[\t \]+\[^\n\]*btf_string" 1 } } */ > diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-function-3.c b/gcc/testsuite/gcc.dg/debug/btf/btf-function-3.c > index 884d25cfbda..7ca0890884e 100644 > --- a/gcc/testsuite/gcc.dg/debug/btf/btf-function-3.c > +++ b/gcc/testsuite/gcc.dg/debug/btf/btf-function-3.c > @@ -1,6 +1,6 @@ > /* Test BTF generation for a function with an unrepresentable parameter. > > - BTF has no encoding for floating point types, among others. Function > + BTF has no encoding for vector types, among others. Function > parameters of unrepresentable types are emitted as 'void' types. > > We expect one BTF_KIND_FUNC_PROTO with 3 parameters, one of which > diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-function-6.c b/gcc/testsuite/gcc.dg/debug/btf/btf-function-6.c > index 48a946ab14b..e014d9990a9 100644 > --- a/gcc/testsuite/gcc.dg/debug/btf/btf-function-6.c > +++ b/gcc/testsuite/gcc.dg/debug/btf/btf-function-6.c > @@ -6,8 +6,8 @@ > /* { dg-do compile } */ > /* { dg-options "-O0 -gbtf -dA" } */ > > -/* { dg-final { scan-assembler-times "btt_info: kind=12, kflag=0, linkage=2" 1 } } */ > -/* { dg-final { scan-assembler-times "btt_info: kind=12, kflag=0, linkage=1" 1 } } */ > +/* { dg-final { scan-assembler-times " BTF_KIND_FUNC\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*linkage=2\[\\r\\n\]+\[^\\r\\n\]*\\(BTF_KIND_FUNC_PROTO 'extfunc'" 1 } } */ > +/* { dg-final { scan-assembler-times " BTF_KIND_FUNC\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*linkage=1\[\\r\\n\]+\[^\\r\\n\]*\\(BTF_KIND_FUNC_PROTO 'foo'" 1 } } */ > > extern int extfunc(int a, int b); > > diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-pointers-1.c b/gcc/testsuite/gcc.dg/debug/btf/btf-pointers-1.c > index a14ac0f89b2..f80d8089877 100644 > --- a/gcc/testsuite/gcc.dg/debug/btf/btf-pointers-1.c > +++ b/gcc/testsuite/gcc.dg/debug/btf/btf-pointers-1.c > @@ -9,6 +9,9 @@ > /* { dg-options "-O0 -gbtf -dA" } */ > > /* { dg-final { scan-assembler-times "\[\t \]0x2000000\[\t \]+\[^\n\]*btt_info" 2 } } */ > +/* { dg-final { scan-assembeler-times " BTF_KIND_PTR ''\[\\r\\n\]+\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\\(BTF_KIND_INT 'int'"}} */ > +/* { dg-final { scan-assembeler-times " BTF_KIND_PTR ''\[\\r\\n\]+\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\\(BTF_KIND_STRUCT 'st'"}} */ > + > /* { dg-final { scan-assembler-times "ascii \"int.0\"\[\t \]+\[^\n\]*btf_string" 1 } } */ > /* { dg-final { scan-assembler-times "ascii \"st.0\"\[\t \]+\[^\n\]*btf_string" 1 } } */ > > diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-struct-1.c b/gcc/testsuite/gcc.dg/debug/btf/btf-struct-1.c > index bc3281437c9..79156cd7bcf 100644 > --- a/gcc/testsuite/gcc.dg/debug/btf/btf-struct-1.c > +++ b/gcc/testsuite/gcc.dg/debug/btf/btf-struct-1.c > @@ -9,7 +9,9 @@ > > /* { dg-final { scan-assembler-times "\[\t \]0x4000003\[\t \]+\[^\n\]*btt_info" 1 } } */ > /* { dg-final { scan-assembler-times "\[\t \]0x4000002\[\t \]+\[^\n\]*btt_info" 1 } } */ > -/* { dg-final { scan-assembler-times "btm_name" 5 } } */ > +/* { dg-final { scan-assembler-times " btm_type: \\(BTF_KIND_INT" 3 } } */ > +/* { dg-final { scan-assembler-times " btm_type: \\(BTF_KIND_ARRAY" 1 } } */ > +/* { dg-final { scan-assembler-times " btm_type: \\(BTF_KIND_STRUCT" 1 } } */ > > struct foo > { > diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-struct-2.c b/gcc/testsuite/gcc.dg/debug/btf/btf-struct-2.c > index c3aff09ed9a..e9ff06883db 100644 > --- a/gcc/testsuite/gcc.dg/debug/btf/btf-struct-2.c > +++ b/gcc/testsuite/gcc.dg/debug/btf/btf-struct-2.c > @@ -1,7 +1,7 @@ > /* Test BTF generation for struct type with a member which refers to an > unsupported type. > > - BTF does not support floating point types (among other things). When > + BTF does not support vector types (among other things). When > generating BTF for a struct (or union) type, members which refer to > unsupported types should be skipped. */ > > diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-typedef-1.c b/gcc/testsuite/gcc.dg/debug/btf/btf-typedef-1.c > index 472cc63f600..36bbb292f5c 100644 > --- a/gcc/testsuite/gcc.dg/debug/btf/btf-typedef-1.c > +++ b/gcc/testsuite/gcc.dg/debug/btf/btf-typedef-1.c > @@ -41,13 +41,13 @@ > /* { dg-final { scan-assembler-times "ascii \"node_t.0\"\[\t \]+\[^\n\]*btf_string" 1 } } */ > /* { dg-final { scan-assembler-times "ascii \"arena_t.0\"\[\t \]+\[^\n\]*btf_string" 1 } } */ > > -/* { dg-final { scan-assembler-times "\[\t \]0x2\[\t \]+\[^\n\]*btv_type" 1 } } */ > -/* { dg-final { scan-assembler-times "\[\t \]0x3\[\t \]+\[^\n\]*btv_type" 1 } } */ > -/* { dg-final { scan-assembler-times "\[\t \]0x4\[\t \]+\[^\n\]*btv_type" 1 } } */ > -/* { dg-final { scan-assembler-times "\[\t \]0x6\[\t \]+\[^\n\]*btv_type" 1 } } */ > -/* { dg-final { scan-assembler-times "\[\t \]0x8\[\t \]+\[^\n\]*btv_type" 1 } } */ > -/* { dg-final { scan-assembler-times "\[\t \]0xb\[\t \]+\[^\n\]*btv_type" 1 } } */ > -/* { dg-final { scan-assembler-times "\[\t \]0xf\[\t \]+\[^\n\]*btv_type" 1 } } */ > +/* { dg-final { scan-assembler "BTF_KIND_VAR 'a'\[\\r\\n\]+\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\\(BTF_KIND_TYPEDEF 'my_int'" } } */ > +/* { dg-final { scan-assembler "BTF_KIND_VAR 'b'\[\\r\\n\]+\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\\(BTF_KIND_TYPEDEF 'foo_int'" } } */ > +/* { dg-final { scan-assembler "BTF_KIND_VAR 'c'\[\\r\\n\]+\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\\(BTF_KIND_TYPEDEF 'bar_int'" } } */ > +/* { dg-final { scan-assembler "BTF_KIND_VAR 'd'\[\\r\\n\]+\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\\(BTF_KIND_TYPEDEF 'node_t'" } } */ > +/* { dg-final { scan-assembler "BTF_KIND_VAR 'destination'\[\\r\\n\]+\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\\(BTF_KIND_TYPEDEF 'CBAR'" } } */ > +/* { dg-final { scan-assembler "BTF_KIND_VAR 'ticket'\[\\r\\n\]+\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\\(BTF_KIND_TYPEDEF 'CBARP'" } } */ > +/* { dg-final { scan-assembler "BTF_KIND_VAR 'suitcase'\[\\r\\n\]+\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\\(BTF_KIND_TYPEDEF 'arena_t'" } } */ > > typedef int my_int; > typedef int foo_int; > diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-union-1.c b/gcc/testsuite/gcc.dg/debug/btf/btf-union-1.c > index d66843717b3..e3a19028843 100644 > --- a/gcc/testsuite/gcc.dg/debug/btf/btf-union-1.c > +++ b/gcc/testsuite/gcc.dg/debug/btf/btf-union-1.c > @@ -5,7 +5,7 @@ > > /* One union type with 4 members */ > /* { dg-final { scan-assembler-times "\[\t \]0x5000004\[\t \]+\[^\n\]*btt_info" 1 } } */ > -/* { dg-final { scan-assembler-times "btm_name" 4 } } */ > +/* { dg-final { scan-assembler-times "MEMBER" 4 } } */ > > union onion > { > diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-variables-1.c b/gcc/testsuite/gcc.dg/debug/btf/btf-variables-1.c > index a79ed1d53b7..42503df396f 100644 > --- a/gcc/testsuite/gcc.dg/debug/btf/btf-variables-1.c > +++ b/gcc/testsuite/gcc.dg/debug/btf/btf-variables-1.c > @@ -5,6 +5,12 @@ > > /* We expect 6 variables */ > /* { dg-final { scan-assembler-times "\[\t \]0xe000000\[\t \]+\[^\n\]*btv_info" 6 } } */ > +/* { dg-final { scan-assembler-times " BTF_KIND_VAR 'x1'\[\\r\\n\]+\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\\(BTF_KIND_INT" 1 } } */ > +/* { dg-final { scan-assembler-times " BTF_KIND_VAR 'bar'\[\\r\\n\]+\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\\(BTF_KIND_UNION" 1 } } */ > +/* { dg-final { scan-assembler-times " BTF_KIND_VAR 'lala'\[\\r\\n\]+\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\\(BTF_KIND_ENUM" 1 } } */ > +/* { dg-final { scan-assembler-times " BTF_KIND_VAR 'arr'\[\\r\\n\]+\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\\(BTF_KIND_ARRAY" 1 } } */ > +/* { dg-final { scan-assembler-times " BTF_KIND_VAR 'plong'\[\\r\\n\]+\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\\(BTF_KIND_PTR" 1 } } */ > +/* { dg-final { scan-assembler-times " BTF_KIND_VAR 'st_inst'\[\\r\\n\]+\[^\\r\\n\]*\[\\r\\n\]+\[^\\r\\n\]*\\(BTF_KIND_STRUCT 'st'" 1 } } */ > > unsigned int x1; > > diff --git a/gcc/testsuite/gcc.dg/debug/btf/btf-variables-2.c b/gcc/testsuite/gcc.dg/debug/btf/btf-variables-2.c > index db0bdd7be16..5f0c0b6e02d 100644 > --- a/gcc/testsuite/gcc.dg/debug/btf/btf-variables-2.c > +++ b/gcc/testsuite/gcc.dg/debug/btf/btf-variables-2.c > @@ -1,7 +1,7 @@ > /* BTF generation for variables with removed type. > > - BTF does not support floating point types, so no representation for the type > - 'float' will be emitted. In this test, we check to also ensure that the > + BTF does not support vector types, so no representation for the type > + of 'bar' will be emitted. In this test, we check to also ensure that the > variable 'bar' is not emitted, as it references a type that is not supported > in BTF. */ > > @@ -11,6 +11,9 @@ > /* We expect only 3 variables. */ > /* { dg-final { scan-assembler-times "\[\t \]0xe000000\[\t \]+\[^\n\]*btv_info" 3 } } */ > > +/* { dg-final { scan-assembler-times " BTF_KIND_VAR 'foo'" 1 } } */ > +/* { dg-final { scan-assembler-times " BTF_KIND_VAR 'baz'" 1 } } */ > +/* { dg-final { scan-assembler-times " BTF_KIND_VAR 'myst'" 1 } } */ > /* { dg-final { scan-assembler-times "ascii \"foo.0\"\[\t \]+\[^\n\]*btf_string" 1 } } */ > /* { dg-final { scan-assembler-times "ascii \"baz.0\"\[\t \]+\[^\n\]*btf_string" 1 } } */ > /* { dg-final { scan-assembler-times "ascii \"myst.0\"\[\t \]+\[^\n\]*btf_string" 1 } } */