From patchwork Fri Apr 1 19:42:11 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Faust X-Patchwork-Id: 52588 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id ABF3E385741D for ; Fri, 1 Apr 2022 19:46:28 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org ABF3E385741D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1648842388; bh=sWpSxyiNhvQcubrer8Ui6kgN0TSMeEspytpokyYISOg=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=wI+mWvvIiuLtcPj4/fY84sjwEJqrC8x8YirJV2eUXBdZjCv9LkaOwq5f/jDtuGMPl glXQcPK20IUG8Ar6tqGCmCCN4Y1z5dHunVpFyVvkEtP3l7mGl0C0N5PichjYaKcpIx rVGtMWNTCnU8n8uFpfFw7c9bCJlTNOggqLn35Jao= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by sourceware.org (Postfix) with ESMTPS id 41EBF3858C2C for ; Fri, 1 Apr 2022 19:43:02 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 41EBF3858C2C Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 231JG1Dx031566; Fri, 1 Apr 2022 19:43:00 GMT Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com with ESMTP id 3f1tes7upd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 01 Apr 2022 19:43:00 +0000 Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.16.1.2/8.16.1.2) with SMTP id 231JgCWH025565; Fri, 1 Apr 2022 19:42:59 GMT Received: from nam10-mw2-obe.outbound.protection.outlook.com (mail-mw2nam10lp2108.outbound.protection.outlook.com [104.47.55.108]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com with ESMTP id 3f1tg9j7n7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 01 Apr 2022 19:42:59 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mNmLnJsLcn3fkPfbMkdLSnn3HY8958HaVM5ojjS3U6lqlk7z3k4jdiNAKNzUs+H6OYxUpgiP/1wogOQ+nESO6o0ESZysmEtc52HZVJJBLJoTm/sRdI3SuyGEoXk53F+ALTJdkkB1uXfNaEaIXUbPolR2mnANNb2c5iDrCYR8aLY77hUiDUM+1g4WbhKhsEwcM/22RbN4enX2FQvZktV6z5M39i9OfoRB2rKsJRcWvTIdVaBl960LBaDbjNuSSO0dYPDsOBKPYbyozoKMXNhgg29wpIENtH8ylqdPF56f+Y8FsGiqT0Ylx48kuEZHLs8HfyU2l4N9VS1jTRfTFUAqRw== 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=sWpSxyiNhvQcubrer8Ui6kgN0TSMeEspytpokyYISOg=; b=ZT+sadIepJUjxuVPmHJNbbeXFiWs2r1BwJA3ii7uYaNCHnDcx/e9UMI5medmWYqOnS4/xApJcQWOK0LggXEphpku5tPFL2FPGuqnA1QDDXWcULqERjMdOZzNGNN+Zr/IRuuM/OtyFHd1nUR/uHnfJ0CRyPA19thzIq/SlXVt1kkCvmwpICZ+CgFhkrG2HR51HzhAXRWg0FfN/l5Vd9OAoMYoMhizzv5Y17aB6auElizmDemFRI3I/yg8yhZefnhPJMjl7uKMwpyji4jFcvHkx4UcWFkGOeAA9dQa/3fF4z8XXAPF82AD4h3veNXzzAK0rg0pW4Z3ocpZGBan2KlqXg== 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 MN2PR10MB3213.namprd10.prod.outlook.com (2603:10b6:208:131::33) by MWHPR1001MB2286.namprd10.prod.outlook.com (2603:10b6:301:2d::35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.19; Fri, 1 Apr 2022 19:42:57 +0000 Received: from MN2PR10MB3213.namprd10.prod.outlook.com ([fe80::705e:a465:c30b:fec6]) by MN2PR10MB3213.namprd10.prod.outlook.com ([fe80::705e:a465:c30b:fec6%6]) with mapi id 15.20.5123.021; Fri, 1 Apr 2022 19:42:57 +0000 To: gcc-patches@gcc.gnu.org Subject: [PATCH 3/8] c-family: Add BTF tag attribute handlers Date: Fri, 1 Apr 2022 12:42:11 -0700 Message-Id: <20220401194216.16469-4-david.faust@oracle.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220401194216.16469-1-david.faust@oracle.com> References: <20220401194216.16469-1-david.faust@oracle.com> X-ClientProxiedBy: DM6PR03CA0052.namprd03.prod.outlook.com (2603:10b6:5:100::29) To MN2PR10MB3213.namprd10.prod.outlook.com (2603:10b6:208:131::33) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 3de6123c-5f36-4b83-68b4-08da1417d24c X-MS-TrafficTypeDiagnostic: MWHPR1001MB2286:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: xt4v6aZ/w6q9MTMsjgvCVas1s520tKAHxahTis4d9l+JlS0Xy7Yi85A1upRxINAATnm4RQRSZ/7DeaX2F2n6PrbkgiexbV5hn+KlwIrtsoEoZ5h3TeTFILJ9Mt4uiAxSsGX5Yd1Mh/RXjMbc64+0PrXGFYA6T7rWoz7xV2D0DhM9hSL5jz2zW2l1Zrkb/ObllxlbgO77U1yx6AmzIlwcnOIo8SqKW0W44aznlOhlXCXh36Oph2mIDDE0AwxO7ROeazYAk1cbUCVyt9CK6kurMM2KEcqUxThlX53ogF/fSNRsIps2+HGIVGDaIcMnJWIT3c+QTpLMREWxzXYzqebiF/gnZmuWVL3X+wg5FkRfZIVnu0w3rKsxQn7/H9P0KFs40cmJ1OEkPVQgtxdFor2bhvQvLJ9F50gOO9Dc8xjpphg81HxYpR4jhsMtWO5dPI8ytIRpxkAslHKh8orjF19IokpP/WFsOmObshTPn71yG2dZLFwaWJgxmxNCQWOkruYepO4Uv4OCBj49WIOlPjDcHiRmgOFMCVD2i4q7uPFRElZI1A7Lw9PC1V/HuXGsGFw37Qg4UmcxS7X3zEZTsTwKkFdxFt1CZk4qxDs/pyefBLF4czHvP03OUpb+e3sFoRhDoL5jlqWxiEx8/lb8BVTG+g== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR10MB3213.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(366004)(66946007)(6916009)(316002)(36756003)(66556008)(5660300002)(66476007)(508600001)(38100700002)(86362001)(6666004)(8676002)(44832011)(4326008)(8936002)(6486002)(6512007)(107886003)(52116002)(2906002)(6506007)(2616005)(83380400001)(186003)(1076003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: r08KxiVMZRx7UnEQ40RtgRnRuAdxn+45QD0tRYVoORUEB0eS8T88cR7iIy9gfF8d6402bV3IZr1lLxAZefxLvwN6AUodBFjXCHjSWmlES5I2LrhrZAZufR+4Cx/sJXm5ohhKg47YD/JI7nVJaCIUIEB9/jY7rnkaUw/1gEMmek15QFuqZWoqFt+zqAWCVNPYTvrt2zMgTlLkRm2f7XnFAmmPkgU31RGC4O/Hz2XFHlWQTLRLpNl9h1RxB2dG+RNaE438kfzwuLmkdVMHxenKsWLJ1EpIgypgW+ifBLsMJnDqigdbP8KYWAhMr4uig0K7Un/WO3cL7ijubpgJWJUxnj7O6keP2ro+dVYhTT+gdAB7Nn/Bp8XaP0v9qWQKh/NsWXXDRiM7EBqpuhxETE8zoYGkanqY4Q3MXG0jIL4LcHDxpo7L39fM0GktH1ve3MSrNCr/1jAytlySD1MqSNO6+ChYUv13ZQaLEIeRWlUWM9gR9xN1hlhSIgWlapsCHC3rQSQMed0YtPEElP1VoMTad0V/Q+NJhfIHZSl2gdi3ePkp+9K/JObNAlEl4LXJ8drFjcz/GhtjKrk7CqD01Sd9CHWLCRU/n0/HtU4DKjxZGzWfKKtf/nNCt0dhwH2zy2QIHMq88GJ0Z9Exjg4pYxpraaHJPuwA0GmthT9F1xz3qhxIExWH2hjaxhTTLXTvgdBlPUTt3At5gPXLWidiCclu/EIkhxueeQdE0QEhs5lR0CNDQNnqS/8xGIWr/+IzucsWql18dDLUc6CcVy/7nT8VVJXYDOZ01Lm2MD2GqXorBUX94znti9eSw2Qlqub/FW1uCNNGhypc/BdeS+FNOV/KMfp/uDwjSwUVv60HXoZxJ3h92a5jwsfsBLZ55YPabMrWpTYxZT6uSUDXPhwMWAyJGPEi+G6nt7sTk56f5ZX/lebv3ZXLOXXE+e9szvqSF3vwPq5EneIX7uQxTS580vlOIHBAhPRSd8n7BkLWdqzZaXO/cnZMGYxhfKO2MVo+55hlZiEyvXQFQKxlmAarORxMu2eo0MNk3YudgzLgL3+lIPW8QuBYywgX3Wk6a4aJq+U6p/hb+kv71RiKUGqBXY5xM1WavWA42d4i8/9J4lcEUs3yVFtUCnDpXYuYbfgxgjEKPpolwFYagIy7YJfhh4H0lO2ReKveQopYRZy3yStWyq1beDRdd+3LSV/cmiE75ZytVkYANL4+NcBMxjLv5c8hNZCrgtg+cStzT1g5RhXNOyuVb9gQ/GeI57WbsHNz6uUjK+anF+PKYR+chyNmVjMwLIKqS3hgEzZU4Tdx5GguytBmFeW29YPvbmHerOFV/aBuyZMV5NXhFy7+laozy40Q0XSUbGLWRdPhzzsJVJ3L6WtYQUdbOxUK+icRqukzyg+8ShtTTFvu8WCZYh8zNOW/v5v61/S2T4YearZBP+Zt/BlJKLCCUGa254qzbyq0K3Wx7rAmkWrgajRqv7GxU8i5b5/RBCGwNMMyYuh3iUMDRbl1egFzZbbwHPcNyk+jmkNwxl0x5bwd59Jx4qN8v4+2a/D1u537Av7LLL5QHevfM12LdBUu55P/LoQAWFrqMxLxWNmnX/y8tXfLCUA0x/PGqIGu0+tONOfKUwSmimsNGYEijqnXoc/UCqdOjtZyTIwM26R1PGQBACmaf7k2pGqjsyOmCzUS21pY/YcFEZybPL+cjzhQF2Fz6zYJYElQuMY2g8+HwnmjZRB23nSMLtjdcwLeCYNmieUF6BlJddZmHCnfeRVmm2Tpz+38x1bJ+UIz X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3de6123c-5f36-4b83-68b4-08da1417d24c X-MS-Exchange-CrossTenant-AuthSource: MN2PR10MB3213.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Apr 2022 19:42:57.3091 (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: Qd5//G+002tjUjK9rpptUv82NYuNmBGpU1ydXsKla5f53V+1dN8WzHA0Mt1G2km5ODPE/HsR/L3jsc6B60Famg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR1001MB2286 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.425, 18.0.850 definitions=2022-04-01_05:2022-03-30, 2022-04-01 signatures=0 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 adultscore=0 mlxscore=0 phishscore=0 spamscore=0 suspectscore=0 bulkscore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2202240000 definitions=main-2204010093 X-Proofpoint-GUID: 4gynda9IQh8PzfsAActhph_vzxuU4YCu X-Proofpoint-ORIG-GUID: 4gynda9IQh8PzfsAActhph_vzxuU4YCu X-Spam-Status: No, score=-13.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H5, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: 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-Patchwork-Original-From: David Faust via Gcc-patches From: David Faust Reply-To: David Faust Cc: yhs@fb.com Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" This patch adds attribute handlers in GCC for two attributes already supported in LLVM: "btf_decl_tag" and "btf_type_tag". Both attributes accept a single string constant argument, and are used to add arbitrary annotations to debug information generated for the types/decls to which they apply. gcc/c-family/ * c-attribs.cc (c_common_attribute_table): Add new attributes btf_decl_tag and btf_type_tag. (handle_btf_decl_tag_attribute): New. (handle_btf_type_tag_attribute): Likewise. --- gcc/c-family/c-attribs.cc | 45 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/gcc/c-family/c-attribs.cc b/gcc/c-family/c-attribs.cc index 111a33f405a..ec52f6defb4 100644 --- a/gcc/c-family/c-attribs.cc +++ b/gcc/c-family/c-attribs.cc @@ -174,6 +174,9 @@ static tree handle_signed_bool_precision_attribute (tree *, tree, tree, int, bool *); static tree handle_retain_attribute (tree *, tree, tree, int, bool *); +static tree handle_btf_decl_tag_attribute (tree *, tree, tree, int, bool *); +static tree handle_btf_type_tag_attribute (tree *, tree, tree, int, bool *); + /* Helper to define attribute exclusions. */ #define ATTR_EXCL(name, function, type, variable) \ { name, function, type, variable } @@ -555,6 +558,12 @@ const struct attribute_spec c_common_attribute_table[] = handle_dealloc_attribute, NULL }, { "tainted_args", 0, 0, true, false, false, false, handle_tainted_args_attribute, NULL }, + + { "btf_type_tag", 1, 1, false, true, false, false, + handle_btf_type_tag_attribute, NULL }, + { "btf_decl_tag", 1, 1, false, false, false, false, + handle_btf_decl_tag_attribute, NULL }, + { NULL, 0, 0, false, false, false, false, NULL, NULL } }; @@ -5854,6 +5863,42 @@ handle_tainted_args_attribute (tree *node, tree name, tree, int, return NULL_TREE; } +/* Handle a "btf_decl_tag" attribute; arguments as in + struct attribute_spec.handler. */ + +static tree +handle_btf_decl_tag_attribute (tree *, tree name, tree args, int, + bool *no_add_attrs) +{ + if (!args) + *no_add_attrs = true; + else if (TREE_CODE (TREE_VALUE (args)) != STRING_CST) + { + error ("%qE attribute requires a string", name); + *no_add_attrs = true; + } + + return NULL_TREE; +} + +/* Handle a "btf_type_tag" attribute; arguments as in + struct attribute_spec.handler. */ + +static tree +handle_btf_type_tag_attribute (tree *, tree name, tree args, int, + bool *no_add_attrs) +{ + if (!args) + *no_add_attrs = true; + else if (TREE_CODE (TREE_VALUE (args)) != STRING_CST) + { + error ("%qE attribute requires a string", name); + *no_add_attrs = true; + } + + return NULL_TREE; +} + /* Attempt to partially validate a single attribute ATTR as if it were to be applied to an entity OPER. */