From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from JPN01-OS0-obe.outbound.protection.outlook.com (mail-os0jpn01olkn2089.outbound.protection.outlook.com [40.92.98.89]) by sourceware.org (Postfix) with ESMTPS id 98FA53858D32 for ; Sun, 2 Oct 2022 12:15:37 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 98FA53858D32 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kU18bpuxuDPFb9+G5rhZbYXhqtUWLX0bFvf0ng3Fiud4iDi8G8XLjrZoxnckOXcq+SDt0B8kMv5iQCeOXNzc6vq3BrfTol25pV7TfhtMOVmsKmsqCdu2tK+A3RWKeJ/GzaK8GuoborZ7sxT1cF0hnWPPCDaqBlJXxt8kYM1cw9vngwywTBvctDa5K7OIAWO7YidWsqh2dpVKxOxPS4h2IjqR5OAQbCwTgpYn7Jn/h4B29tnj58iq0ZpRfv+CQzljLq2OErPi00pRLNDac0x19IHE4y3NiPssrxQLSHoMD0Ywqd5qGrwCnPe7wZ4GvgxxOU6GaHcrSEVKYsVw+wbPkA== 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=mYHGtg3Ey/YPWPkgZtorRJNFGo1Eqg5pngLTTPp9fc8=; b=AxOfAv1rCbLyWrtdoM9UgbGXDcYndnU1DoAhfuDo92++IHCMAFr6JrCrnFguK4RCyvr4KNvT7QvXevKty140ATaZ4zUZY/ypjAnJUiPepks0ayYhmjBTn3otD+qvYsd17NK9BTMKtT12IQwp9d1XEz61UujLOAATymqjuzenuHVdX+H3xKFojBApJjqGYh6wPWPyIXnKH4hz2xha85RqS7BEF9B63/I1DyqgjYju7hHZ++LCPilzaCbu82KRQQYM5J0kdMV/MHLvaFFLjIyeeeUzL+18KeQXQzXt1UZ9YPItAm3XqXj/fKcWcFtbpSmuPtj3MHTUo4k7rjbXtTBUyA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none Received: from OS3P286MB2152.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:197::9) by TY1P286MB3389.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2f0::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.28; Sun, 2 Oct 2022 12:15:32 +0000 Received: from OS3P286MB2152.JPNP286.PROD.OUTLOOK.COM ([fe80::e442:a4b4:201c:8097]) by OS3P286MB2152.JPNP286.PROD.OUTLOOK.COM ([fe80::e442:a4b4:201c:8097%4]) with mapi id 15.20.5676.023; Sun, 2 Oct 2022 12:15:32 +0000 From: Enze Li To: Tom Tromey Cc: Enze Li via Gdb-patches , schwab@linux-m68k.org, enze.li@gmx.com Subject: Re: [PATCH v2] gdb: add a numeric check after the exponent (PR cli/24124) References: <875yhg38bm.fsf@tromey.com> <87o7v619tk.fsf@tromey.com> Date: Sun, 02 Oct 2022 20:15:22 +0800 In-Reply-To: <87o7v619tk.fsf@tromey.com> (Tom Tromey's message of "Fri, 23 Sep 2022 07:47:51 -0600") Message-ID: Content-Type: text/plain X-TMN: [NoNUTdGv0ci12zMMW7KPE+DVCivLi60E] X-ClientProxiedBy: SI2PR01CA0034.apcprd01.prod.exchangelabs.com (2603:1096:4:192::9) To OS3P286MB2152.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:197::9) X-Microsoft-Original-Message-ID: <87a66ewhet.fsf@hotmail.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OS3P286MB2152:EE_|TY1P286MB3389:EE_ X-MS-Office365-Filtering-Correlation-Id: 241fb2f7-9c05-452f-3ca4-08daa46fcd9e X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 3lOHvN3iMaeYobhQf81N5S58GHqIyRu8pnk4/4Gy1nOz6C5VhLHrdqjNTKNmgaKENpVsWkJcG4YO+lA5pWwDrSFej5mb/wxfTsW0rD3j/dirNDzMBvqvOm6/Aj7aiKWeRX7TiQOiNpDH6HPHc0drt7nBm9BHza3lNOYE1nkXSgn801Zg27wXPvCVfRhMyKytgG2eB/tPYyfcMmNKktPDWKIp/7h/WPlYqAGgevgCn4wbO8GPjcyNvSGxv6g2vc3MPHq+iZo/HCJwBnr7pH9EQf3vMfxhh4qtdVn5v7DAIomv3OIr/fw5ojhkiRPB/b0oPXM1rNkLjO2CQFdnkmgudGHDBONNv67F3wAxySl6DjPZIVjCtqgsZJXCq8QNdEJcXr/wFWW7jcjKK8mbex7zoNe1ihhHJU1wYKzAr6zqDJReI6z5w789FZPymiRc7NIRQLfVN01cXXBzLrXRPNQNRNfcDCWBLPrerHODJc497F5H8Pj3RgGo40LS3E1YBuwEoP4+VSlsicu/53A5PuybafAMsT9bb5p0IZClnOqyWZXWkTm8R8YA0ZtcZjq45HCgMEkefUKGdiC1sm8GnKAQ6LrTrpEgPRgapl7EPBbDzC2Iczz23SdtRJpKrDgT9vpo4lMewKBIJwu4vSqHOB71Y/16RWfMFnsLHye2mizBnpfwR4bq88f5FSyVqeIGtrLN X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?hrcjsOKmCk6q2juNUtni1MuFeZLtfl0aSJuUTvi3k50eWZd8AEOFpMqHAwMB?= =?us-ascii?Q?ZMfmXHDR57KLJRJCV84CoSCPpoB7UKmaHlluUlDukLrYLUAp3iyWEM9jibcb?= =?us-ascii?Q?CeeDTI2/a2IktjAuPC7v8Jn+VDLh9t8hbnU+8buSbTS1uEvq6sXtrT2V/cuF?= =?us-ascii?Q?O91I+zl3AY4siOwUon76d3aC9tjGxXh/RwvNDPLrNOOsk7rtPGLum+c3uvXF?= =?us-ascii?Q?TxcvXW+loOxJuhpHk2q2lrA2ordICPZitN0riY6Ivg8BHA7A788CARL15lbD?= =?us-ascii?Q?pi9L8zRcUT7OIXcnVQE+a/Qn7w4eDw/RYhCZF8wPrglMSizWKboN6sSt3Q21?= =?us-ascii?Q?nKUxnmxpKjMYQScIhyvwtXpmLMz5imE05HOMGSRabLA7LyM119MhlL0DxwNp?= =?us-ascii?Q?alVm2sd65mQV2Uea5nFehzzc5WKPOBq4LkESm3INs3ylxrHA9LBOyWeXSmm7?= =?us-ascii?Q?om46X2xZWF3xq93tHbxwlRFHg0fVmYEPYaEb776bPo24LevTOEXcP1YhI0HT?= =?us-ascii?Q?YK0JuEknFOC0Kz3YPB4iqrNy4+bT2Oo2Ru7bmC0TAKD9txsINeIpI5V+Y76J?= =?us-ascii?Q?tOq/3TVJ9lIeUSglm7zVFIcb5LMUKvZVY83mIHQOpBY7bqGvfovrYtLIlVDU?= =?us-ascii?Q?Tt2s2BlTban8osAs8zDJx8UMSwjvh3TC1787Mto8SQSdr+gdyYfaiS4avUlc?= =?us-ascii?Q?itnPz0GBhvhSbdHz6B1+O0nzGnFtxAsgu9n2KZfmTDGAOMZ39OU2mANoBJnX?= =?us-ascii?Q?TKIZdfgtDXUnCRlZN1XC9BgiXXrNWnakdPKXM3dq/7sExHdKLaBvZ5Ta/qIa?= =?us-ascii?Q?Emt7VYyHOdXelhW8wdAe9Zlv5SfAdWqnrnWTK3x+8iOqL4Id7L/k1d4k02AL?= =?us-ascii?Q?k5UokpjQ7gTy//DobsWVory+CM03TDt0+D55mQ9BRUbUsKQp3HgGU4wno7E0?= =?us-ascii?Q?oaWENB+euXt8APkZlSkr6928BdRZ2MxtmOsEeCYzVfaHX/7ofiZC4/6X5siQ?= =?us-ascii?Q?0qnAPC00Y7yncLcbz5QF4t+QLGvnSb/O2Pf0Xqj761YwRuBmTg4jFt9Z4gnm?= =?us-ascii?Q?NIUOkFbGNRGcM/e56NVD9fW3EqMmcGtpm38wXUN6+O3b7feqXfccgeKMJpNk?= =?us-ascii?Q?UmrSjVN53DFWQ9Xndrl57sw6p4gLoHeH7DOQAoA2nQnOtF/M8Jv3CeWHvIaL?= =?us-ascii?Q?Ca970ImEAr+oJg7BSx49xfGsXsAKR+oLRqQd8fZmRo647OazFYF16h9QmDnq?= =?us-ascii?Q?dKL0V/pxFbr8/eeDaqfXIeGiIribWME/g9qOAHhTZw=3D=3D?= X-OriginatorOrg: sct-15-20-4755-11-msonline-outlook-05f45.templateTenant X-MS-Exchange-CrossTenant-Network-Message-Id: 241fb2f7-9c05-452f-3ca4-08daa46fcd9e X-MS-Exchange-CrossTenant-AuthSource: OS3P286MB2152.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Oct 2022 12:15:32.5933 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY1P286MB3389 X-Spam-Status: No, score=-5.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, 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 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 02 Oct 2022 12:15:39 -0000 Hi Tom, Sorry for the delayed response. On Fri, Sep 23 2022 at 07:47:51 AM -0600, Tom Tromey wrote: >>>>>> "Enze" == Enze Li via Gdb-patches writes: > >>> I suspect the change has to be in c-exp.y:parse_number, in order to >>> support the case where the input radix is 16. In this situation, > Enze> ^^ > Enze> Sorry, I didn't get that. Shouldn't this radix be 10? > > No, what I mean is: > > (gdb) set input-radix 16 > Input radix now set to decimal 16, hex 10, octal 20. > (gdb) print 80e > $1 = 2062 > > I think with your patch this will issue an error. I got the same output as you metioned above with v2 of the patch applied. If I set input-radix to 16, the "input_radix"(line 2754) variable is 16, and "hex" will be 1. In this case, GDB assumes that the "80e" is a hex number. None of the following if and else-if conditions are satisfied. When GDB runs to line 2767, "hex" is still 1, this is vital. ...... 2751 /* It's a number. */ 2752 int got_dot = 0, got_e = 0, got_p = 0, toktype; 2753 const char *p = tokstart; 2754 int hex = input_radix > 10; 2755 int exp_num = 0; 2756 2757 if (c == '0' && (p[1] == 'x' || p[1] == 'X')) 2758 { 2759 p += 2; 2760 hex = 1; 2761 } 2762 else if (c == '0' && (p[1]=='t' || p[1]=='T' || p[1]=='d' || p[1]=='D')) 2763 { 2764 p += 2; 2765 hex = 0; 2766 } 2767 ...... Now, GDB runs to line 2773, the condition cannot be satisfied because "hex" is 1, which means that "got_e" cannot be set to 1. Then GDB runs to line 2788, the judgment condition contains "got_e", and "got_e" is now 0, which does not satisfy this condition, so it is not affected for "80e". ...... 2768 for (;; ++p) 2769 { 2770 /* This test includes !hex because 'e' is a valid hex digit 2771 and thus does not indicate a floating point number when 2772 the radix is hex. */ 2773 if (!hex && !got_e && !got_p && (*p == 'e' || *p == 'E')) 2774 got_dot = got_e = 1; 2775 else if (!got_e && !got_p && (*p == 'p' || *p == 'P')) 2776 got_dot = got_p = 1; 2777 /* This test does not include !hex, because a '.' always indicates 2778 a decimal floating point number regardless of the radix. */ 2779 else if (!got_dot && *p == '.') 2780 got_dot = 1; 2781 else if (((got_e && (p[-1] == 'e' || p[-1] == 'E')) 2782 || (got_p && (p[-1] == 'p' || p[-1] == 'P'))) 2783 && (*p == '-' || *p == '+')) 2784 /* This is the sign of the exponent, not the end of the 2785 number. */ 2786 continue; 2787 /* This is the digit of the exponent. */ 2788 else if (got_e && *p >= '0' && *p <= '9') 2789 exp_num++; ...... This is my understanding. Did I miss something? Best Regards, Enze > > Enze> In addition, do these test cases below meet expectations? > > They seem fine to me. > > Tom