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 305CD38560BE for ; Fri, 8 Jul 2022 18:30:46 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 305CD38560BE Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 268IE4lQ023346 for ; Fri, 8 Jul 2022 18:30:45 GMT Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3h4ubyrvmm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Fri, 08 Jul 2022 18:30:44 +0000 Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.16.1.2/8.16.1.2) with SMTP id 268ILegX011384 for ; Fri, 8 Jul 2022 18:30:44 GMT Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2172.outbound.protection.outlook.com [104.47.59.172]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com with ESMTP id 3h4ud8cqvh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Fri, 08 Jul 2022 18:30:44 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LXRCQqEB0j6cfHa8rnZDcO4bnloYvL07puA0jCi7UMjYb11mejQ3Xl5Pnx8l7uhJtYBO6O2yQ0RL4J7cky60EesdLC7UiQfI7FDFWbHJaND5nCbAw51eHgcaFaHRkza5WEFSmq7vsawlDOIBTAjN3APu9gmqGnp+47ZEDoYTlmSZV63oXTkLZzDadCelyvYI9nfb17Y5iX9M0SqTBNr2mah3PpKO/lNMBpllNzusxSXsyz+SSH4/+bTESaFf4XIQpxBedJRvqSV5vipDg7Us46JP9MLxokqMyVTce9vIG86zq9+psF3HLS9/NXMNj8rUXNSEHqjPTz845T1cqNmShQ== 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=7raaKMIG3kzho3e0Y7fnZ1g3W4cAqOtWuQY9STM09DI=; b=RUwIzaXz3Z/x9r1y1SLn/hf9B+vBtjUbhOLxBNvzaQnlwtEt+JwMJ5ybJsQ/ZT+tRAlguE0K7WG4POFMmFRf1XtbzAJptRNWk5rGLI6htH4VYdChSmDQwXjSsZvQ3whf1rTBrvF4cDLTh2HP9tiWZhr+A2Lw4BRt4dR64c5GtkJm2fJ9q9DCvnmKBfSjiInoKFAJ0MBOFzY8NjkHvPREPEDqz17aCaql/H8pb0JxgAoALkvK5IJxwuEpWC7AMa6qXcnexSXOJ7DCEaQ5wkGkCT2M4EC6vFgSJWbIAeNptnlS3aRuXBlj1t3tbXaGXfRoyffvD9A0Li8nCfpFYZPGTg== 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 BYAPR10MB2888.namprd10.prod.outlook.com (2603:10b6:a03:88::32) by SJ0PR10MB4414.namprd10.prod.outlook.com (2603:10b6:a03:2d0::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5417.16; Fri, 8 Jul 2022 18:30:42 +0000 Received: from BYAPR10MB2888.namprd10.prod.outlook.com ([fe80::287e:5ffc:d595:8316]) by BYAPR10MB2888.namprd10.prod.outlook.com ([fe80::287e:5ffc:d595:8316%6]) with mapi id 15.20.5395.020; Fri, 8 Jul 2022 18:30:42 +0000 From: "Jose E. Marchesi" To: gcc-patches@gcc.gnu.org Subject: [PATCH] btf: emit linkage information in BTF_KIND_FUNC entries Date: Fri, 08 Jul 2022 20:30:23 +0200 Message-ID: <877d4ncv9c.fsf@oracle.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) Content-Type: text/plain X-ClientProxiedBy: LO4P265CA0228.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:315::16) To BYAPR10MB2888.namprd10.prod.outlook.com (2603:10b6:a03:88::32) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 977912ea-9e7a-4e53-05d1-08da610ff6d8 X-MS-TrafficTypeDiagnostic: SJ0PR10MB4414:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: PvLoBfs5DIQJfe4lFBG+50mJ6WOwPSKvP5GmAlNZsfD8594kp4JTJEVSdUN8q7jWbyLHB9OaYoChLno/xNnMG/xc3Xu6f25Iw/0rpnP7I7Hr5/BG4e0U6ss9FV8QMnBIWdIQdsmzjO+bCh0VTkMF5jXFyiWhZ2hsnk1SVPbSZJDdaZ/1DWJAPVgK9PvrabbYllvvP/XqG0s1xmFQK3VP3G/0G3Bo8iTtlLmqB2v+gYa3ZPUMgAD2vIHDr/Un6jyoQ56tLnE4qOf5ZsqsOo041+4fn6nTtr5zQDxzMn5Iu3kLW7rM56TJhzIuRqUhpqibRFOaKq1JlVna08UZ9MlyuLGfzl99sfJkw6Xs6TkOLUa1sB08HZo5L9ShjIbGUe5Iq49AZenYHmSekYu6GSS9U9LFfqcfTpwymYPQjnOTWE7Bo2Rm2PpndhTVzbvCyqnJCeD3nHFQqm7HV8dGcV2EaquWB8436qYNqgqiNdBn4APTM6EfQWsuaMuIAbrSXndhF/6xpq1GzBjNn9ftNwnV+GnH4kO3UuPD7PkETWAxsvo+JZ36zP1k0oUtar8fHDriZ3M18ZtR6EE334DZMVAG7LYyamsplF3P/9jvnBQqpA+V/s9SUYMDeL4y6yPAg0K5Wg0VR7HLSbvXjxWc0azOZC9glos/J9OKVy1Er6c2XJhmcZ+SAT4fA6Bo1gWSrU/AhnU1cSH/hCchDy98dtF4mh3upQuvCDS5vZbLx1QfVFyX0cgvWBpbArbk0RBKABq7PgoyRg+Ql9S2E+NVFRzRpp1MT4UTbPkcTiNSE05ErmYp/gHTgv49RqUwyvHPuNkk X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BYAPR10MB2888.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(376002)(396003)(39860400002)(366004)(346002)(136003)(186003)(66556008)(6512007)(2616005)(6916009)(66476007)(52116002)(83380400001)(66946007)(36756003)(6506007)(8676002)(26005)(38350700002)(86362001)(6666004)(41300700001)(5660300002)(2906002)(8936002)(38100700002)(478600001)(6486002)(316002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?IIkzv50LUmUtGnftUHmMysJCODBauvwye7zr/CEkLfnw7ROECI3j13YEs8t/?= =?us-ascii?Q?53XbvNCNUfl6cDIl6rkVtGjIDg8GK2vSX5vPpsa6yjCiLDxfElZ29eqoVMBK?= =?us-ascii?Q?mN5AMK8BFC2WFYB1FV7VrcphXqk5HAdoczVrMjk1/m9G0RXvNISqcE8T7jAG?= =?us-ascii?Q?btwZMaK/zUdFpjuc+qSguXm+zi18EfLHLBYgEukyAUjcdBOTDkYAETarEJP+?= =?us-ascii?Q?46i5ioxG4cuFe6davvZAu6TKAedsiVwU+dYHsGxiJqfdOpqunTOVcbMGI0Lh?= =?us-ascii?Q?TdnGENlHNZOLX3vBdeaX3C7uBZNQ9099/NcDEHbK0YYuNP2lsZGNYm/nOwU/?= =?us-ascii?Q?Vk6/RY75W9eQz+z9aWc9313GA1sNXm+bMBzG/VaH/FtX1EwiiHzvjiltoOwQ?= =?us-ascii?Q?tArxiTGfbihw/HKEXqyqysM+e6I8w/+lWJeOjq2fvD3d33BoPhHKoVMSDhpM?= =?us-ascii?Q?CTdsPc9Yc6CZ8gwldEu7Xxf2AjF40GMHntn0V6LP7tHFa7L23jknPybfFgL0?= =?us-ascii?Q?1ON/anEuDhCaY0X3vaIuGc0ZywIQTR7UrvN56NQO/UTs3FR4afMLzHmnb2GU?= =?us-ascii?Q?cjocCFlFj/Fwk5F2FTHBV4Ni5t73UbyPqhDNo7zsTulMgquWZTqKIkp9/rNi?= =?us-ascii?Q?/JtLcABK+h5287YURz31YQfSz5VvqtecnCZyUnnXI5PmGxTZPAZIBRwTaye7?= =?us-ascii?Q?Fh+duQbzzOOBvEZbS1UgkKvLtmpvdWfyWHC7JwAyfcgCBcyIp0y6p9Xx7Ste?= =?us-ascii?Q?84Xr10Bb2Toj7ijUdxpF2fJZaVTc/LTg8w2Yr6bWTuCoZxRuHHNtWz7EJL43?= =?us-ascii?Q?E27lrsHyfDNNLqGcGOoax1Uh/2pIqqRRb/Lk7aG5SHb/c11eWiratJyNZIVg?= =?us-ascii?Q?gk8A8RO91MQrf5zFPMhDfofailliVaGK6UaoL04slyB49F3iDg94WSTkdVgB?= =?us-ascii?Q?RunfCSSaKgls6S4HY47SyCU86YMi7Slp8EgrwcIhz6XW+91fvV9PQOMPSb8N?= =?us-ascii?Q?Rp++jHBvNrIlIptiUdNVxJU6rSnWkGosUP39WnYQMQh3ljIC1wnADIMl4oYY?= =?us-ascii?Q?cjF+wzqyDIP01vX5MTdUhwXHllQEFMfvhmp9mI9ZiWtcD3qjF3+/pXNsrwAH?= =?us-ascii?Q?0T27vEqa8cn6Z1ZyVST1oP3UQPPp9lXjjd45UBgkdkjvm9E1lgR+oZObRBzk?= =?us-ascii?Q?ME6Ri9rTRIlsn9O+A4LwiFess775YlB+9eipFUmqGPaB4JWMNpRdGEqqnATa?= =?us-ascii?Q?ErZPwbvmQWTOvPdlnRFhcInXv+6pVfJlMHGAdeBjZzBh/Xq0doeL0MnbqFT4?= =?us-ascii?Q?Y4pUz1v+R03iphQnKT4Yi4ZkVW9u0u4Jmaks1TbVdE7v2y060dy6ED0i+idw?= =?us-ascii?Q?TzZFpM8mISGMAZNh3mp23dBKJpmyCJFji9OHx/ywaMMZ7HDzV81c5NFj0BY/?= =?us-ascii?Q?CthxMvvV6ISyDOrB48QumK3/9LsxB8wSUcyIvGWocgFrZ5fH9yTRT9KkoY3q?= =?us-ascii?Q?LIXJG7++IUMN3bmXOrrAAyy/azkKaFBXe4nAX1PXOHNhT+R9hlc9e1kFAblr?= =?us-ascii?Q?4hzpEhCFxo6bO6kqHIBKZUjOyGaLdHWkMtgFFaQBOgd00jbpeb68Ik+Y3kin?= =?us-ascii?Q?YQ=3D=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 977912ea-9e7a-4e53-05d1-08da610ff6d8 X-MS-Exchange-CrossTenant-AuthSource: BYAPR10MB2888.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jul 2022 18:30:42.1352 (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: wMUds5zMqGKaQPObLLchbautPg/Jhfrg9VT0zc+TR9X2V32fEGK24Y0vxkJcjQsaye0TWl+lWgXDBwpXv8nuvQO9gTPylondmvADs025EN4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR10MB4414 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.517, 18.0.883 definitions=2022-07-08_15:2022-07-08, 2022-07-08 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 suspectscore=0 phishscore=0 adultscore=0 malwarescore=0 mlxscore=0 spamscore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2206140000 definitions=main-2207080071 X-Proofpoint-GUID: KvnpBn0RDCEUkEk-ssDtdsSKYtGRzui0 X-Proofpoint-ORIG-GUID: KvnpBn0RDCEUkEk-ssDtdsSKYtGRzui0 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, 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 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 08 Jul 2022 18:30:57 -0000 The kernel bpftool expects BTF_KIND_FUNC entries in BTF to include an annotation reflecting the linkage of functions (static, global). For whatever reason they (ab)use the `vlen' field of the BTF_KIND_FUNC entry instead of adding a variable-part to the record like it is done with other entry kinds. This patch makes GCC to include this linkage info in BTF_KIND_FUNC entries. Tested in bpf-unknown-none target. gcc/ChangeLog: * ctfc.h (struct ctf_itype): Add field ctti_linkage. * ctfc.cc (ctf_add_function): Set ctti_linkage. * dwarf2ctf.cc (gen_ctf_function_type): Pass a linkage for function types and subprograms. * btfout.cc (btf_asm_func_type): Emit linkage information for the function. --- gcc/btfout.cc | 3 ++- gcc/ctfc.cc | 3 ++- gcc/ctfc.h | 3 ++- gcc/dwarf2ctf.cc | 4 +++- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/gcc/btfout.cc b/gcc/btfout.cc index 31af50521da..417d87cf519 100644 --- a/gcc/btfout.cc +++ b/gcc/btfout.cc @@ -740,7 +740,8 @@ static void btf_asm_func_type (ctf_dtdef_ref dtd) { dw2_asm_output_data (4, dtd->dtd_data.ctti_name, "btt_name"); - dw2_asm_output_data (4, BTF_TYPE_INFO (BTF_KIND_FUNC, 0, 0), "btt_info"); + dw2_asm_output_data (4, BTF_TYPE_INFO (BTF_KIND_FUNC, 0, + dtd->dtd_data.ctti_linkage), "btt_info"); dw2_asm_output_data (4, get_btf_id (dtd->dtd_data.ctti_type), "btt_type"); } diff --git a/gcc/ctfc.cc b/gcc/ctfc.cc index f24e7bff948..ad7f8bb8e86 100644 --- a/gcc/ctfc.cc +++ b/gcc/ctfc.cc @@ -777,7 +777,7 @@ ctf_add_function_arg (ctf_container_ref ctfc, dw_die_ref func, ctf_id_t ctf_add_function (ctf_container_ref ctfc, uint32_t flag, const char * name, const ctf_funcinfo_t * ctc, dw_die_ref die, - bool from_global_func) + bool from_global_func, int linkage) { ctf_dtdef_ref dtd; ctf_id_t type; @@ -792,6 +792,7 @@ ctf_add_function (ctf_container_ref ctfc, uint32_t flag, const char * name, dtd->from_global_func = from_global_func; dtd->dtd_data.ctti_info = CTF_TYPE_INFO (CTF_K_FUNCTION, flag, vlen); + dtd->dtd_data.ctti_linkage = linkage; /* Caller must make sure CTF types for ctc->ctc_return are already added. */ dtd->dtd_data.ctti_type = (uint32_t) ctc->ctc_return; /* Caller must make sure CTF types for function arguments are already added diff --git a/gcc/ctfc.h b/gcc/ctfc.h index 001e544ef08..273997a2302 100644 --- a/gcc/ctfc.h +++ b/gcc/ctfc.h @@ -116,6 +116,7 @@ typedef struct GTY (()) ctf_itype } _u; uint32_t ctti_lsizehi; /* High 32 bits of type size in bytes. */ uint32_t ctti_lsizelo; /* Low 32 bits of type size in bytes. */ + uint32_t ctti_linkage; /* Linkage info for function types. */ } ctf_itype_t; #define ctti_size _u._size @@ -423,7 +424,7 @@ extern ctf_id_t ctf_add_forward (ctf_container_ref, uint32_t, const char *, extern ctf_id_t ctf_add_typedef (ctf_container_ref, uint32_t, const char *, ctf_id_t, dw_die_ref); extern ctf_id_t ctf_add_function (ctf_container_ref, uint32_t, const char *, - const ctf_funcinfo_t *, dw_die_ref, bool); + const ctf_funcinfo_t *, dw_die_ref, bool, int); extern ctf_id_t ctf_add_sou (ctf_container_ref, uint32_t, const char *, uint32_t, size_t, dw_die_ref); diff --git a/gcc/dwarf2ctf.cc b/gcc/dwarf2ctf.cc index a6329ab6ee4..397100004c2 100644 --- a/gcc/dwarf2ctf.cc +++ b/gcc/dwarf2ctf.cc @@ -644,6 +644,7 @@ gen_ctf_function_type (ctf_container_ref ctfc, dw_die_ref function, ctf_funcinfo_t func_info; uint32_t num_args = 0; + int linkage = get_AT_flag (function, DW_AT_external); ctf_id_t return_type_id; ctf_id_t function_type_id; @@ -687,7 +688,8 @@ gen_ctf_function_type (ctf_container_ref ctfc, dw_die_ref function, function_name, (const ctf_funcinfo_t *)&func_info, function, - from_global_func); + from_global_func, + linkage); /* Second pass on formals: generate the CTF types corresponding to them and add them as CTF function args. */ -- 2.11.0