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 5B4223858D1E for ; Fri, 13 Oct 2023 14:02:11 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 5B4223858D1E 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 (m0333521.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 39DE0o85015808; Fri, 13 Oct 2023 14:02:07 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-2023-03-30; bh=mrUzIJBEyqm6NYKfJVRkRwmu3gZJkFOhGHRNkz+4TCw=; b=agGeoSAk/nqnGwr16SAx169I/C3Hi9ITJxNJwcTwevVM0i79Da6SOdEcLtDBcY4ywOMa z7807SyiAdg+s53jW6smWlAASSr65F4OKlvzcsBUFNCoqVLbbX8UBS8gCvFMqmg+FXW2 H16b6qdcL3LLs6I2bEcDPoC++wPN/k0AyRof6vRIKIoo1Kxz/H8khBm365flxra9m/hE gAR0zaEpq+Ps/Yn/+9CZwoAI7OoZ+XYua6EtPWjIl26lxi4BTtp85TyP633EV7hS7yDp KqcKnqsqsg3uG4U1vZGSaoJu+FN87SGQD53htt+TwuQbfQOBiIIAE69WWsXR+SGeXMGc Nw== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3tjx8cn4w1-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 13 Oct 2023 14:02:06 +0000 Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 39DCJqH3037518; Fri, 13 Oct 2023 14:02:05 GMT Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2169.outbound.protection.outlook.com [104.47.59.169]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3tpt0ud6wd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 13 Oct 2023 14:02:05 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=D7AYYT6g/CC6DO5eJ2KjtQ9k32x3RLlQfmOVf6SdIq0GRC0BrgcxCCbOspVZPOs1SEn/DELN80YlTOM2PqhPARb+f/M5u8thLvAvIrfs61BLA2scge1cp7QOtysACbuVOpqmFbv3oCOhfkykm5osqQCK8sAGQLXKSZ9pIJjge7whOBtJs4VaNBKNApk4P9WyFk+Xz+V6A3xla7Ue95pI4KsbbcuUA2TJPU/K3CAmNyORWGfAzNbduupQgtvZb+MtWkifL4Ynvt7HY+IAiHDVjZU/mzgELMQLZXbzQsxRfzwTjgeXZ0yewrxXBSG1SoJSub1wTTOgInnYXWhs+YxQ0g== 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=mrUzIJBEyqm6NYKfJVRkRwmu3gZJkFOhGHRNkz+4TCw=; b=cbtUL21NYlwNKZwsQXaC2op0heDLuyjloWXuAO90/RxqlP6KAZrav8/4+LrrW4LmSH5l2ZBMoxUh68A9xCoUuaXynv7Ga51ejj6OAVnt8iqV3X7Al2VaZ/+gTNpjqDGRSRDdRajVDnswnmtB1sPuRklkKcB66QaIPnGmvbox7YfQ0Ydj6x9ua+7j0xjgMxEHLfD6uA1nQHz5T2itVCVPsUo119n1MNHV9t7jOJ3q5yrjCroEqKDSvTdjBUUrYaIrVFZf8tbKrylMBnRLMYlI/up5hWqhaDetqBqe6cGdQGFTnf8Ff3bMGNgq9bdvQhiPbK6IU8p7V15GYVADFDOl/w== 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=mrUzIJBEyqm6NYKfJVRkRwmu3gZJkFOhGHRNkz+4TCw=; b=0VnJFCVzx8fIYkJekOXMWUIXlc3JQt3Iyyf1p5GHaGBOXnNwQhkjn2GOutRvmR/0XPM4cZsgEtxH/mYZYPuCXoxpn4KWv3sYMAe/BQIXA9FcIBATuIqBBvYT5GPgyD97+v/Nx+Fzk/nXWk0fS/L2b/8OyQ9luW9UleWeRc4fzFc= Received: from DS0PR10MB6798.namprd10.prod.outlook.com (2603:10b6:8:13c::20) by IA1PR10MB6897.namprd10.prod.outlook.com (2603:10b6:208:423::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6863.46; Fri, 13 Oct 2023 14:02:02 +0000 Received: from DS0PR10MB6798.namprd10.prod.outlook.com ([fe80::19ff:c8cb:d04d:8b5a]) by DS0PR10MB6798.namprd10.prod.outlook.com ([fe80::19ff:c8cb:d04d:8b5a%4]) with mapi id 15.20.6863.043; Fri, 13 Oct 2023 14:02:02 +0000 From: Nick Alcock To: binutils@sourceware.org Cc: torbjorn.svensson@foss.st.com, yvan.roux@foss.st.com Subject: [PATCH] libctf: check for problems with error returns Date: Fri, 13 Oct 2023 15:01:52 +0100 Message-ID: <20231013140152.427376-1-nick.alcock@oracle.com> X-Mailer: git-send-email 2.42.0.271.g85384428f1 In-Reply-To: <20231009151146.3818141-1-torbjorn.svensson@foss.st.com> References: <20231009151146.3818141-1-torbjorn.svensson@foss.st.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: LO4P123CA0083.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:190::16) To DS0PR10MB6798.namprd10.prod.outlook.com (2603:10b6:8:13c::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS0PR10MB6798:EE_|IA1PR10MB6897:EE_ X-MS-Office365-Filtering-Correlation-Id: 3cd0fdc8-6ca8-4dff-9ee9-08dbcbf4f986 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 2iP2Lb0iDqD+qqSC5VV0pptM9mk+riSvSA32lVLqPizI2JLPg4gevEzfAhnqNT1KOFTvKcmqUI63IqbrgyxzPOxyEOUxfzkEaVhlKFks6N5uZv3y5edh8y9wFQEBRKtThov1E4iCfzRuILxwabxXnJC1E4WdRrvDRP0s6FmEUdM0G0f7fcTxedB5lMPZE0/RH9UFa//yWXno08WlD8fwNBBGyP0EGkss9Pj1KcYAb3rlRsw9KlfmxHzlFR1jmbojw+Sqyyay5sNW+FCD8UHKki/hCi/ecIcO5ixOckR1UeQzbdfH0cI/XZMmjsYTv6qbbTj2hgW/+zroh04+MtXo2kDbby8YKo9AtsX1+8nx1yeSXunhZL8td7K4wvgzT0GzRs1La19JuYQUxOLLVq7rbWJGZ9e6U2UcL2j9MnJhBCaPsQcYYl6QkpVfolM/7V0mOR01jJXV6fTMDf6KirMfoPuxUC1V8ZeJOddi1NkTZ48SpqRhgqlTAciMilMU3+47b7gZNY2gYFghgEA0+AlsbLLVfsx2sph3Vq8QOSYxAdCxTODciVWXp/ti+qIaMqfo 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:(13230031)(366004)(136003)(376002)(396003)(39860400002)(346002)(230922051799003)(451199024)(64100799003)(186009)(1800799009)(6666004)(478600001)(6486002)(6506007)(5660300002)(44832011)(83380400001)(2906002)(8936002)(4326008)(8676002)(41300700001)(2616005)(6512007)(1076003)(66476007)(6916009)(86362001)(66556008)(66946007)(316002)(36756003)(38100700002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?SVMAF3nqQMbx2A2ROcAzkwoFr/FWN53c2erGmMgdBU41TRBXXsyKGmJCL6FH?= =?us-ascii?Q?XZYj1KP+rzfkqPqXopnIKMtghfq9c9ckv1DSMYYeX/rDpnccJs21IC4sFuwe?= =?us-ascii?Q?UYqzZGHVkfqT55RwAe1KeDOrNqsrVFqFQdkcegQovG1S5VJHTl4Ur1xh3n0h?= =?us-ascii?Q?FllhN7oA3P8qgkUoWd8lsmnc0zgRCxObVpHOnIhcKLi84gL1XNHyQpAwWJJd?= =?us-ascii?Q?JFnqoL8kHwvVAtspgqMXhF5vgzPvOEdo0hkL8w6m0Ve7JNow2Jn4g0IhMI4l?= =?us-ascii?Q?A+Jy8VhBJQtB9j/QLsSTtwoKQ4HqTLHxrKKPVykzIBPCO+56tzdUwGYuWZkQ?= =?us-ascii?Q?WVF5d3KUEXMB4Jrd4Rv4kuxYdbQvsLemqFX4TZdROSN3c19B4nfKt+mb/vLz?= =?us-ascii?Q?jZJHdQheb16amqK4VMlaKZiAAtAUy8/oBlOjUp0VHqvNlvVXEc5HWPoym8vV?= =?us-ascii?Q?vWy5vYrPqRsEY9xh/JDHW6n9yy68l1Y89b85t6jNaT/CozBMBnvtFoyaducD?= =?us-ascii?Q?WJYFuGfX+Np83qXM0RGFWZqHBF22foIhwS6nDTMbRJ3Tu/kkCEQ+enO2L8Ca?= =?us-ascii?Q?M4rPoOTxUQpcPocXkRiwI+acyg6x/fyMwi166pjCNXvlnywbzR6tF4p2GaOq?= =?us-ascii?Q?ALP3kQYhCVVAr1m3QTLAYw2fQGqP6zZraFyygr3PbsMrVblPoPFCvPQk0hb2?= =?us-ascii?Q?+zQVcTgQNNKOd/UFXyLD8/wRvS1aD6iKGX8txFNhZO+MqhhuwFqIqbJSrgd7?= =?us-ascii?Q?7KfFjhj/x4QJFpXjFlLPtWi2etIKZaVDcoQkHZ+lOVaLsbv87wJsNxNCF+Xm?= =?us-ascii?Q?TiEmc9uoXl308N2N2Qiext69MqqMlwcgRVPXLbH5Qp1/fdOtT1UN0g5Hmjrr?= =?us-ascii?Q?+02hZC2tVER6ASYs9QU0BL6qxbbTTtl7QqmSZGYIdyhh+f8n9gTsc8pDCbnU?= =?us-ascii?Q?/WH/rSczGkU4nUtMB27TH16sW5HoYRqIlYbH8C4hPmdW9YbswqVmdmd8UAMx?= =?us-ascii?Q?Wd9zlfncsrq/sToM0tZqHILbD5ifTEXrQVSuhJCjg7lLVEQm/ixT/cnKqgur?= =?us-ascii?Q?mv/R8/kUUC3gfU2luQbfBlVkzgfmk7YbmiDuQNzGDRpFZ6CyQ9G5w14GWkBu?= =?us-ascii?Q?OT1YcR4DSwbAh7ur+UcCqC9s0gywsUYivkcDPV9b/IlmS1nPKLMScHOWQITO?= =?us-ascii?Q?8L5nKLSU6gTPH8bKFpqrFIJ9c/k9CwGBmID8KRH5LZRkbfCL44bT+Y9ASaMX?= =?us-ascii?Q?na+yfz5jY01+87KosV3Xb1EyS0grpLAKWLfW+Y5D2OGQUIMRpuqdj8hTPmht?= =?us-ascii?Q?ZX1ZReyj+7HEgD3f1CyQaGrnFQckXtDEh2pUs9oQYpufeGFSSwHwG6XOILIF?= =?us-ascii?Q?8QlECLC4F/9wAqoKtYsk9EfqJYMmxU875E3mxV2SGjOXdHKmH1/Tg92j1Cb0?= =?us-ascii?Q?zNUIruBtByVzT2F/PHC4ve9tocKJY2PRLP8RIu2kBG539yXWdhjAYLtArU3j?= =?us-ascii?Q?aTSBjipeULUUxAayFGSeMzEylMKgXb3fzMcTgF1FnX7Wdc9PdAb4AMQiATrv?= =?us-ascii?Q?YL0hp5XwkjBR+fB0QV7txcHEu4qBv/VQ6nER1y0gcGGwrpnPtO9V81PVEmxV?= =?us-ascii?Q?/A=3D=3D?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: FZJHkW6e00eLee4elZ0TEbNKsdO9CrpfgbcZMfmPxAIkTeoGFojBGw25j7tilLTDoijKQo2oHhBbXF3P1jgrKxC/CKQtp2hj5LOUbJ7bKVKj0ddFhmeghxYf7Pz9/G5wApj4R8EktE3BNVzhePSLevkGEZgVkNdI/isdnaHyCuyS47TBZFtVthssh31UhpgMYqjaCjB1tOepR+QAnX2J6jgK4NGhTAQCQe3OXenHE8MrOtKnXYl40PuS9+CP5dlyut6z+CsbmIK6ZrYea84XrxQpGLSc8gQF/1cjMEspfrzqxuf1l5wOWQgG+Xoe+SZxsUhnE2MLjisYufjmfwhoF0FlnEhUNNjHpyxG3ZjEG4I1908Ubp1UD2nrD1/Si34jG39d5Xqjz1GVhNFJmyz5+OpHWYdRMXVb/dZB2fQOWO/gAXV22yh2ScEdeTw0gF61QSQgUYFh+QdeBGSeY9U9nSqk6SXW2Vm1s5R2MRc6hPVoANEfpi5yWSAKEXx0bzE+WxZ1/iWYsKfnDiUNL75yN+iHgHbKbLBpKtt1yO/2miNZbkWggYPR4OtvNtKX+gBxE9azEWl8dn9UfF//DN85S4xz8GG8hv6PhgffNO8rM1nedeIUCdDmDDfBPMnI5qNfy5wTf5oAa8w1U8D6J2JbN7rEC2gkcKchEQAPr7vfNb3aXV1ID0t4lt8tbn1QZpSQB/d5opvX3/jiIKmSwwC+hK4pkmlln1nOroQWC/HNqbev8UvWdQPnrUG2nOyJfvNGgbmd8BBaoLEqK5/S3AMIV+R4M/LFysrg34X47tpnx+U= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3cd0fdc8-6ca8-4dff-9ee9-08dbcbf4f986 X-MS-Exchange-CrossTenant-AuthSource: DS0PR10MB6798.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Oct 2023 14:02:02.4179 (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: dMlGGrFxP6R0F0ued1UJAvdJeR8fNwdb8hUacBBdpGuLgyonMyQw8BmSfrym9Li4I8M3ZOmO4xxvGvCdUuY1mA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR10MB6897 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.980,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2023-10-13_05,2023-10-12_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 spamscore=0 malwarescore=0 mlxlogscore=999 bulkscore=0 suspectscore=0 adultscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2309180000 definitions=main-2310130117 X-Proofpoint-ORIG-GUID: cOj9fNKJwm0NbWWvPap5sB_-cYQhZFck X-Proofpoint-GUID: cOj9fNKJwm0NbWWvPap5sB_-cYQhZFck X-Spam-Status: No, score=-11.6 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 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 do this as a writable test because the only known-affected platforms (with ssize_t longer than unsigned long) use PE, and we do not have support for CTF linkage in the PE linker yet. PR libctf/30836 * libctf/testsuite/libctf-writable/libctf-errors.*: New test. --- .../testsuite/libctf-writable/libctf-errors.c | 74 +++++++++++++++++++ .../libctf-writable/libctf-errors.lk | 1 + 2 files changed, 75 insertions(+) create mode 100644 libctf/testsuite/libctf-writable/libctf-errors.c create mode 100644 libctf/testsuite/libctf-writable/libctf-errors.lk Your patch looks good, and passes every test I can throw at it. I think it can go in. You cleaned up a bunch of outright errors in this area, too, especially in ctf-dedup: thanks! (You probably want to adjust the commit log so that the version history is at the bottom rather than the top, or drop it entirely.) Here's a testcase that fails on mingw64 in the absence of your patch, without requiring a cross-build to an ELF arch. (It also checks at least one instance of the other classes of error return in libctf.) I'll push this after your commit goes in. (I can push it, with an adjusted commit log, if you want.) diff --git a/libctf/testsuite/libctf-writable/libctf-errors.c b/libctf/testsuite/libctf-writable/libctf-errors.c new file mode 100644 index 00000000000..71f8268cfad --- /dev/null +++ b/libctf/testsuite/libctf-writable/libctf-errors.c @@ -0,0 +1,74 @@ +/* Make sure that error returns are correct. Usually this is trivially + true, but on platforms with unusual type sizes all the casting might + cause problems with unexpected sign-extension and truncation. */ + +#include +#include +#include + +int +main (int argc, char *argv[]) +{ + ctf_dict_t *fp; + ctf_next_t *i = NULL; + size_t boom = 0; + ctf_id_t itype, stype; + ctf_encoding_t encoding = {0}; + ctf_membinfo_t mi; + ssize_t ret; + int err; + + if ((fp = ctf_create (&err)) == NULL) + { + fprintf (stderr, "%s: cannot create: %s\n", argv[0], ctf_errmsg (err)); + return 1; + } + + /* First error class: int return. */ + + if (ctf_member_count (fp, 1024) >= 0) + fprintf (stderr, "int return: non-error return: %i\n", + ctf_member_count(fp, 1024)); + + /* Second error class: type ID return. */ + + if (ctf_type_reference (fp, 1024) != CTF_ERR) + fprintf (stderr, "ctf_id_t return: non-error return: %li\n", + ctf_type_reference (fp, 1024)); + + /* Third error class: ssize_t return. Create a type to iterate over first. */ + + if ((itype = ctf_add_integer (fp, CTF_ADD_ROOT, "int", &encoding)) == CTF_ERR) + fprintf (stderr, "cannot add int: %s\n", ctf_errmsg (ctf_errno (fp))); + else if ((stype = ctf_add_struct (fp, CTF_ADD_ROOT, "foo")) == CTF_ERR) + fprintf (stderr, "cannot add struct: %s\n", ctf_errmsg (ctf_errno (fp))); + else if (ctf_add_member (fp, stype, "bar", itype) < 0) + fprintf (stderr, "cannot add member: %s\n", ctf_errmsg (ctf_errno (fp))); + + if (ctf_member_info (fp, stype, "bar", &mi) < 0) + fprintf (stderr, "cannot get member info: %s\n", ctf_errmsg (ctf_errno (fp))); + + /* Iteration should never produce an offset bigger than the offset just returned, + and should quickly terminate. */ + + while ((ret = ctf_member_next (fp, stype, &i, NULL, NULL, 0)) >= 0) { + if (ret > mi.ctm_offset) + fprintf (stderr, "ssize_t return: unexpected offset: %zi\n", ret); + if (boom++ > 1000) + { + fprintf (stderr, "member iteration went on way too long\n"); + exit (1); + } + } + + /* Fourth error class (trivial): pointer return. */ + if (ctf_type_aname (fp, 1024) != NULL) + fprintf (stderr, "pointer return: non-error return: %p\n", + ctf_type_aname (fp, 1024)); + + ctf_file_close (fp); + + printf("All done.\n"); + + return 0; +} diff --git a/libctf/testsuite/libctf-writable/libctf-errors.lk b/libctf/testsuite/libctf-writable/libctf-errors.lk new file mode 100644 index 00000000000..b944f73d013 --- /dev/null +++ b/libctf/testsuite/libctf-writable/libctf-errors.lk @@ -0,0 +1 @@ +All done. -- 2.42.0.271.g85384428f1