From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 119378 invoked by alias); 23 Nov 2017 21:14:31 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 119344 invoked by uid 89); 23 Nov 2017 21:14:25 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-3.0 required=5.0 tests=AWL,BAYES_00,KB_WAM_FROM_NAME_SINGLEWORD,SPF_PASS autolearn=no version=3.3.2 spammy=rebased X-HELO: sessmg22.ericsson.net Received: from sessmg22.ericsson.net (HELO sessmg22.ericsson.net) (193.180.251.58) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 23 Nov 2017 21:14:24 +0000 Received: from ESESSHC001.ericsson.se (Unknown_Domain [153.88.183.21]) by sessmg22.ericsson.net (Symantec Mail Security) with SMTP id B3.74.19528.D2A371A5; Thu, 23 Nov 2017 22:14:21 +0100 (CET) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (153.88.183.145) by oa.msg.ericsson.com (153.88.183.21) with Microsoft SMTP Server (TLS) id 14.3.352.0; Thu, 23 Nov 2017 22:13:29 +0100 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=simon.marchi@ericsson.com; Received: from [142.133.61.121] (192.75.88.130) by AM3PR07MB308.eurprd07.prod.outlook.com (2a01:111:e400:881b::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.260.2; Thu, 23 Nov 2017 21:13:26 +0000 Subject: Re: [RFA] C++-ify parse_format_string To: Tom Tromey , References: <20171123164631.11055-1-tom@tromey.com> From: Simon Marchi Message-ID: Date: Thu, 23 Nov 2017 21:14:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 In-Reply-To: <20171123164631.11055-1-tom@tromey.com> Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-ClientProxiedBy: MWHPR12CA0039.namprd12.prod.outlook.com (2603:10b6:301:2::25) To AM3PR07MB308.eurprd07.prod.outlook.com (2a01:111:e400:881b::19) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1b309c3a-760e-44b0-a846-08d532b70a7d X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600025)(4604075)(2017052603199);SRVR:AM3PR07MB308; X-Microsoft-Exchange-Diagnostics: 1;AM3PR07MB308;3:wE7Dqgr+XmfBeXdhvUFDsB/UQCJmwdX9tL18qd3TGYxHU4Cqoj/xunj6pb5Hy4AgWSVTjjlXLG1WI5EZOdKGL4vlczmekQcGgp9Da71R0RCC0nQ7afWWsHzeSfKH19lMkqvz8V+a/l9fnQ/QnQ1XGZqKtidsg6ULvZurugYgZlfbeEw225KTV+Z81h7LLd5Kjl9AZbopagd+DhtVJW8vHpL78uZmQVQuVYDnQZ7cOiOHCxs9jototjrPqJaDjFId;25:UG7Cl8ZbWDuyjnWqx4K+em+MSXWRA3fCKb9FH0JSrbHB/zc7EDXN4+DNe+42uDzaw8XhawTV1rZMZ+Y9BxoQhuu61wiExJlR1OR578+7Bs/Kd2w1M0si0SDZBUGeYZ84zwpE0cJOnzW4ihMRtoWejKdZCk+eYxsPxyVGnVOO0Ne1BHWhEoX0hGWnWoOCMoiXqBgkzaGVWqX3lmtP2KaHo4DKKphkxRA6hpPiHcznSWGrP/hJolK4LvzkurEkg7RaiBv57QvodXF6o58imO0ctrDvw2dQZTwA/Td+X58nddzDftKqEgmFDEI+8uJKLIPkXIM2kW8aOFnHHvzME+4gfvrDwSyXIaNOwM3kPzGgFtk=;31:mC3GNeU0324xSEt2/TgY1C/6restrcDV9LD4FP4129v55w/yvup6t/twQBz1SbMD+XvJrzq0uy8nA3wkjIaRurpvSxZNij22gQzSqUKFsRb4D1cMCU8Wt2FIbpGRt+aAd4+WYvkLYf4hKRkxTO2Me9YhMv1GtwNo5XJ36fNoQxM3jLzJs6fp1DivMkCJmkoKS8hoMAT7hDEgAUk/DxPgDmOp7rXUra6lG6tmVBUhLRc= X-MS-TrafficTypeDiagnostic: AM3PR07MB308: X-Microsoft-Exchange-Diagnostics: 1;AM3PR07MB308;20:Klpr1sBMtUiIf5VwUQBFdOKGXm4G98Yu6JALqhew5xOkMBlovUyGOa6x78mCM5QLvmWy8qemWF0+b3IrkGYgcg09G2coIPJunl6TnWwTKsVSLoVYnAJZLrtSwquhnbRecMyrEt3wJNrPJVcDYVNh/QtKYOqe3jTHpI33E4R3HRgYRJvBxTEmagsoxgzXuiKzqZYWUtKy1/PgyV6AtAjerKkXsjFU1RbXMcokk8ET5B4lKvdKImJl1geAWThma4Q8a/McJjC32uDN8og9ejLnvqpBvd7tLqQxq4ijuARql6qiMSrb+yCZU32mg0oR5pZ6dRRWOunxHckLv+BFs07RqLYhwbggPiK1lyYPsTONuMH1jSrDihJoq6+m5aJbADtjceHGLTN7dxvExIOQVLFWjEibjNEHWZXrzoU0j/lvv/zKk322DaBZtwpDHnTwVLMg4I+S1TroZr0vUMtP6OT12tuSEQMZfOd3nDsGpSb8ymYYztrNXGNcD4GXPV5p+exT;4:HZ6iCjSWpMGi6q+CIQtZ7kmWwLoTiXY/U8ntOsyG4OUBzjbUEFanCa0J61FOENgNT845H7z1uDYlCXkxPEqKy3Tp7snShmHuEH3BM3BTL/Slg62+axVbGru5Oh6RmNTpk9PRUBUrnAgvirfPR10oClbM0wHZS1HPbO5ZgF6pxC0av8Y4PR/kWVKfqLkg2T77sTMGtILL7MPhy7yPwmIFIF2Tcj492UzIU0LlhH/EGxoiuAOpcuUsfZlKYzt8nvJ20lmUw2OhU17kOkhdY8L6Uv8lVFwtzncwxpbuRhMCpW7G9OBvY7MzE9ares5MA5RR X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(166708455590820); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(2401047)(5005006)(8121501046)(3002001)(10201501046)(93006095)(93001095)(3231022)(6041248)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(20161123558100)(20161123562025)(20161123560025)(6072148)(201708071742011);SRVR:AM3PR07MB308;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:AM3PR07MB308; X-Forefront-PRVS: 05009853EF X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6049001)(6009001)(346002)(376002)(39860400002)(366004)(377424004)(189002)(76104003)(24454002)(199003)(51444003)(25786009)(2950100002)(8936002)(6666003)(189998001)(6306002)(229853002)(53546010)(230700001)(6486002)(7736002)(49976008)(478600001)(31696002)(86362001)(58126008)(2486003)(106356001)(76176999)(16576012)(16526018)(966005)(54356999)(316002)(50466002)(101416001)(65806001)(5660300001)(65826007)(31686004)(66066001)(47776003)(65956001)(105586002)(64126003)(50986999)(68736007)(2906002)(4001150100001)(3846002)(52146003)(36756003)(81156014)(23676004)(53936002)(6116002)(8676002)(6246003)(97736004)(33646002)(52116002)(81166006)(83506002)(305945005)(78286006);DIR:OUT;SFP:1101;SCL:1;SRVR:AM3PR07MB308;H:[142.133.61.121];FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; Received-SPF: None (protection.outlook.com: ericsson.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtBTTNQUjA3TUIzMDg7MjM6UmlTUTMxL1JYanNIYTRJLzJOa1ZSOXRSLzJ1?= =?utf-8?B?dlNsdS9HVCtjNWpBMXNsWkIwbFplb1ROQkFKbXJsalJZa2NjYll6cXJHUm90?= =?utf-8?B?RFRMSkoyZ2IxQ3J1cEVxZkpIMVB2bGpLS0d0QUZvWDU4cFZaQXNaUU9tVGs5?= =?utf-8?B?YkJLY2pkRkhiRk0xbDZiejhRZ3U4eC93MjFEckZEQ0JFYkNHNGVHSy9UV3hI?= =?utf-8?B?WC9LazV1aDZ5cFNFTHYycVMxS2dWdUhDZ2NQSU1CYmM0a0JRUk15RGRTVS9q?= =?utf-8?B?ckV6RVQzTDczeEQ5NVlrdFpWdjZJY1EwTDNteFlNTS9KSW83OFJ2TWZEdmMx?= =?utf-8?B?dWNNU0hhMjBZRkxwUzNzSnlkeEI5MzAvU2NWb0h5ZXJLY0pXc2RlL1A0OFN6?= =?utf-8?B?NFIxMlVWbldqQlUvaGN0NHVWb0FadzAxVDhVS2hUaEZhZHBMeHlKOGpwdWd2?= =?utf-8?B?bEpSSEp6Yk5Yb0syK0FLY01MVTlUQUdUZ2xYZ3dSTnE3c2NObjZlTTAxdHVr?= =?utf-8?B?aU1ZSzl5ampIS0RnMm1oN3NWU2tEQXFCanR0OFhEdmJrdllINjNiTmNVK3dW?= =?utf-8?B?d2k4NVo0cnNVQm82c25Galp2Y2MrRmhmeEhOTUxoRTFjZGVNVXcwY3htdWNO?= =?utf-8?B?L1lqdGNpVU9xalQ1Nm16aUhBdzNTbnlZQjYzTEIwM2N6UXh5UitkcEpabWVJ?= =?utf-8?B?V2huQktvajBDdVV2enNjcm1oZTUwbW80VFltSmFyQTAzZk82a1hQMnlxSVFy?= =?utf-8?B?M0Y5c3phMllQQnNjWnRzK0dyZ2trWE92eGF6WllRMTJzOXVveHgyL3N4citt?= =?utf-8?B?TFoxd3JBakFXTHN6R0prM2dKQ2dnNGxLRVVTck9Kbk8wK0psbFZVL0FmTW15?= =?utf-8?B?UmNwQStlN1B3WUNoamVpYmdjTnFFcTE5RzF5ZWlJMWdHQzVaQitUVEcvNWk0?= =?utf-8?B?K3pUUmE4NDRzN3NObEVCN2lWWllNZnRmR2dZZXFaTVh4RlRRd29sK29kemc4?= =?utf-8?B?clFzekdncTd5eEhYRlVERUFyczJ4SnNaYXFpaURQOFVXWlhUV0p3bkpMQlFi?= =?utf-8?B?TlFaNkRzZnNFcHJqTHg3c09TQ2ZKYkRvKzgvQmEzS1hydFdscXpSZmpXQkdj?= =?utf-8?B?ZzdHMTVHdWhIVjBBQXl3N003Ry84TXBVb2FIak1rOFRxRHF0MnZpcWY1WDNX?= =?utf-8?B?Ym9xZG8vak01VlRjTm0vUUQvWDNXUTNnZWx0aTNtYTFqdUNBM255QVJvV0Vw?= =?utf-8?B?QVduOXZFeDQwaXZYeHJObWRyRzlVTnBpOFY0WWJBTGtHUUlBRFFlU0pWNUtN?= =?utf-8?B?TUoxb3lxZHRwQnFjeTFGR3lqWG9qS0lqQUhKeEFtR04rbCtTLzkwTkp6U0ZQ?= =?utf-8?B?dS9kb2lGYVY2MTFKWGI0NDJVZzNncGNrU1FzWHdVaUxvTU15Ulg2UGR6MzA1?= =?utf-8?B?Tm9wbnNkQVZZWDhHUFh6ZmJaaWF1WXozWGpvamgyeU4zZHRsa2JXamw4SVQr?= =?utf-8?B?UlU2NWZBa0FzVVZCb09yelZOTHVTbmx0NTZiYmVCTC9GaXpxVkxVU1JzTWlz?= =?utf-8?B?MThiUlU3TGlkU0NPdDVOWXhsQUlxNk5BRVdYK3BvMVh6WlcrRXBFUGpMWThW?= =?utf-8?B?aXl2WE84a2hWQ29TZ2J0RWVnYk9WNDc2ZS80eGt3S01KYjRTSVc0V1NUV1JN?= =?utf-8?B?QzUyVHpoTSt2L2dGOEIvQk5jemRXcXVqUUFKUkhkNHBkVWpSNTNEMEMwSWtv?= =?utf-8?B?V29TeStpcEtmejRldnQ3T0RWc1lLZTJNc3EzeVgzbXMrc0tMNUhEY25KM0ps?= =?utf-8?B?VkdWRGxFNktscmFJdUpua1hxN1g5NERyV1Nyc0pQOWxXQmZpQ1RBdmRkN3g2?= =?utf-8?B?b2NZSG5UWkM2dWdmOWtsNkxjUmpOeWRqWndQblR5VXV5MkR1TGlVUWJ5OHFQ?= =?utf-8?B?T2JDTC9oNXpnMDRlZXZpMXRVeXhQNXkrbzN1aE5iTElqZGltcW5rcUU5cGF2?= =?utf-8?B?aDQvSE1UbFVSS0pVZGhlRldJNmM4ckF6OTc2LzJMVWxtK0hWUmQrS1pFMnFB?= =?utf-8?Q?t2c5dc/+DvabaBY1qUcn5fMF?= X-Microsoft-Exchange-Diagnostics: 1;AM3PR07MB308;6:0KTi/wUtkT0NtYbeDvb4CTBxwFLct3R9NchdsSgTqw4HJptyqU7S0LenJIV5bopanX3e34pAmWzmE9Jizz0L2I0YvVTtSbeXAG0B3c/+wAlMGKdy0kCK+xRp0FAmwYE2b3C7FOBKDOFZqfdyqdZZW1mRTALQdkLBEcWQcc6RWuWp2e3QdbCM0o9KopuRUScZVIRWiKJmJW/yWV7EyIiXS2BeVykRSS8Ylffg+FIj2Uv/RCDuOnVO6kbBK5exf+f4pMHvQOPQmYpM2rS0eKm+wt9ij7BguCfwlTWfOMZjDvHex7i08iC+jmtzSklBTIh6lzNQHAE+0kfQz9DKLslVSJDyjsiJEH19Bi+p5y/0akc=;5:cI2YidFQoNAOWUQHuNQa0l344+t1nuf0EeBrIGLFsexs5XV6kzrtaY3oviKeBgdyneibSW80dLdyeWVTot7I2U/sa8B+98kqTf6y2bIVv9f/5DvrSEcQbBjlBgWDgxHHwpSvZ3i/SYnjr35L3/ioiCCDCpQ2ao6dC/4MHIpZqzA=;24:1k6kSM0bpvPnJGOO8+o3Sh4BH9r+MzeTvoIsFFr01z21PvoLUPQidR1gcqtr/yBO7nO1znsU+I04uLJxjuN6woem6u7qq/87XU9BW/wRCms=;7:YlGP+F0NmLm6pu8vBV3KxzyZ+Uhz74mAHjChG11oAGUcubId2xjJRz0PUyOkADKOJLbLKvmhPeZ/mxd5z6gdZZaoIu080XrsqOtb72zwfRwgAAztr0UNDQ+oNYOkZQsGioi2LpEqoD2ZHZKXOrVCzGl7mp5RcBt8/qJpk5d1jTEGrsEh1kKMvIayVaK4C0npweO+bFUARdAnjSlIF+gspsbWsNRyhhDdmm111nGU8fCvRKFgnoVZhNBrLTb97zzl SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Nov 2017 21:13:26.7954 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1b309c3a-760e-44b0-a846-08d532b70a7d X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 92e84ceb-fbfd-47ab-be52-080c6b87953f X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM3PR07MB308 X-OriginatorOrg: ericsson.com X-IsSubscribed: yes X-SW-Source: 2017-11/txt/msg00579.txt.bz2 On 2017-11-23 11:46 AM, Tom Tromey wrote: > This replaces parse_format_string with a class, removing some > constructors along the way. While doing this, I found that one > argument to gen_printf is unused, so I removed it. > > Also, I am not completely sure, but the use of `release' in > maint_agent_printf_command and parse_cmd_to_aexpr seems like it may > leak expressions. It looks fishy indeed. You could change argvec to be a vector of expression_up. > Regression tested by the buildbot. I have a patch in some branch that does essentially the same thing, so I was able to compare our approaches. In my version, I removed the big allocation that is shared among pieces, and made each piece have its own std::string. Unless we want to keep the current allocation scheme for performance/memory usage reasons, I think that using std::strings simplifies things in the parse_format_string function. The format_pieces structure is replaced with an std::vector of format_piece. I rebased it and stole some parts from your patch for other little cleanups (e.g. remove unused argument, use vectors of expressions). Here it is, the 3rd from the top: https://github.com/simark/binutils-gdb/commits/vec-format_piece Let me know what you think about the approach, if you think it's good I'll get it in a mergeable state. Simon