From patchwork Mon Oct 16 20:43:34 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Marchi X-Patchwork-Id: 23622 Received: (qmail 125382 invoked by alias); 16 Oct 2017 20:43:53 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 124915 invoked by uid 89); 16 Oct 2017 20:43:52 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.4 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: sessmg23.ericsson.net Received: from sessmg23.ericsson.net (HELO sessmg23.ericsson.net) (193.180.251.45) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 16 Oct 2017 20:43:50 +0000 Received: from ESESSHC007.ericsson.se (Unknown_Domain [153.88.183.39]) by sessmg23.ericsson.net (Symantec Mail Security) with SMTP id 1B.A7.09869.30A15E95; Mon, 16 Oct 2017 22:43:47 +0200 (CEST) Received: from EUR02-HE1-obe.outbound.protection.outlook.com (153.88.183.145) by oa.msg.ericsson.com (153.88.183.39) with Microsoft SMTP Server (TLS) id 14.3.352.0; Mon, 16 Oct 2017 22:43:47 +0200 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=simon.marchi@ericsson.com; Received: from [142.133.49.59] (192.75.88.130) by DBXPR07MB317.eurprd07.prod.outlook.com (2a01:111:e400:941d::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.156.2; Mon, 16 Oct 2017 20:43:44 +0000 Subject: Re: [RFA 4/6] Simple cleanup removals in remote.c To: Tom Tromey , References: <20171016030427.21349-1-tom@tromey.com> <20171016030427.21349-5-tom@tromey.com> From: Simon Marchi Message-ID: <07804bc3-a6c5-2c0f-5730-5dd12fccafbe@ericsson.com> Date: Mon, 16 Oct 2017 16:43:34 -0400 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: <20171016030427.21349-5-tom@tromey.com> X-ClientProxiedBy: MWHPR13CA0023.namprd13.prod.outlook.com (2603:10b6:300:16::33) To DBXPR07MB317.eurprd07.prod.outlook.com (2a01:111:e400:941d::11) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2ccfef2b-096a-40ac-bd11-08d514d69861 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030254152)(2017052603199)(201703131423075)(201703031133081)(201702281549075); SRVR:DBXPR07MB317; X-Microsoft-Exchange-Diagnostics: 1; DBXPR07MB317; 3:C+fUYTtAmZC/bxL/l4rZc0N3BtoasN4chYaTlBDj/Y5JH9aQ8MBFiiHj6iz/gUETKQrolJBXnAGM0dxfE0toqYp7tAtUJ93oOikb9fRx8zl/3+EeYcWgMMGugFUxjnN8qcGWzTozhy3NLhIeH7zX7pnyhItCRWtwEIpwodzc9gmayyTm8ZxgvAJ17mkOQZNi/pfCGTxVjpOFD3wW5ffhWx3DcFCvOoULfIJd/YZSAcLeoMQZNwYvJCd1UUt09vut; 25:XFJj8heS7UutJmZR32dL0/+QsB9ohhEfz8bSecj+HxGv9wZUuuLsieWwfVwg8gctEFgSYo7tXxFecgW5j4eubjkR9d24HJAujazw8uTkUbKGMSi6pRlEHPSsYu/1n35wTG0mvv+Z5OPm/h6kmkVotEuotiyPsvw3JO0RPa86I8nm85gVUPGhdX+ekEzGNQL2aXA3AjpIDiWwSyKF3zpHkMe2jnd9rhzgZcrFKSlCdqIQ7U4y9gawtSlDRdsRy8G8JM/ATYgpSlqeeqGxxUqnX6Ipv3BmjvoUuFxMfBCVRNxO1jRLkFJQDVZ3q2vIbbJSi4D6H9CtBhSQBwpCBAMqMg==; 31:ViBn4NpU1dS3fXax/KK7CReoPju0Jw+qLTsSXN4IgV7AxLGGskDtt18jvDNPASONB0SqvRiHxP9j/QxZo6eDgxkeWEDXqnA/zlR53BhBBO1Ves3iyJAf5AtbebBuGlj/O3VIzFjKg3bc5MqmCv4SRiZBeQrcdVJzE3rJnjETj5RLeRpoavkPzxJa0W7o7Py1euc4QMguejlexoP0P/VLJDLvS2wNXvxMxykCv1DCW2Y= X-MS-TrafficTypeDiagnostic: DBXPR07MB317: X-Microsoft-Exchange-Diagnostics: 1; DBXPR07MB317; 20:29noktZLsYWLq9fQmoNoKQnMa87CwrWNuCntvg6WX+jyACWbPAoDAbeMGvVN5xGLlXHk7lmwKwFmDI5t7bK+jD8c9bSlwcsZdKoskYrBoWjqov86XLhrIcXqq5di7oUoPOgZ/ZhNKhUVNqJPwqKLlepOxMnIKu69xRvLp2jslP6uLa1k/+K7v2BPyeWMmDEi201TUhTFN00YqilB9bJa3FUOwBhJYRV0xDr13wUWkBJUT7mA1JtNlIE9bDotigcnW+lx2fR+VOHx4tyPDgMnZx+692rjd+svuViglurrDX0Kgk1GiuuykH5i1JqaUjotPpxtrqGGYnKPhLS3p2LZpah/btxBlsIkwicfV6SZZPRU8QO9Gu7QqJH9T8ualDFaEzpFXfafdY4w4gmx8IWQDQd4z573eNpuajZ9HoGCPQalB95uIqiAZZSccoywko5cZ5py2jKENKZ/6LQDqfx/AcNOYmvVxRDQu3YErShPv9Iy2y7aZi+937iRLY8a33Rl; 4:oKWTRFUncRQHoARcBw8UK2Og8gLEqSBODDfzwpwBrLsRFluAWM1xQTGSESoLlUNOTV91NN8xUxvSo3NBL8icx6k1ZJWB1ta2wQTowV6DAK9RHp7QO7Ey5E8zwtdrzw6nBcFFJJfR3kU7vhwezEA5Eit2GFB5sJ4ES5eatcYVM9CIA8iHNKAEIEa1K4w+8Zs0WX9YUZY5vONfMTxp6Jpo9+RXylEUv+kHIoAF+pBgdaDmnagQlIf44ARW8bu+a8bYF5awLzaVyuu/F3Vl/3PDdSDfeUIhXkQuWVWrbn0UVwY= X-Exchange-Antispam-Report-Test: UriScan:(37575265505322); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(5005006)(8121501046)(3002001)(10201501046)(93006095)(93001095)(100000703101)(100105400095)(6041248)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123558100)(20161123564025)(20161123560025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DBXPR07MB317; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DBXPR07MB317; X-Forefront-PRVS: 0462918D61 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6049001)(6009001)(346002)(376002)(54534003)(24454002)(377424004)(199003)(189002)(377454003)(65826007)(31696002)(53546010)(33646002)(305945005)(86362001)(229853002)(5660300001)(64126003)(68736007)(105586002)(106356001)(58126008)(50466002)(2906002)(7736002)(54356999)(8936002)(6486002)(101416001)(50986999)(8676002)(83506001)(2950100002)(316002)(16576012)(76176999)(81156014)(81166006)(6666003)(66066001)(65806001)(65956001)(47776003)(4001150100001)(189998001)(25786009)(97736004)(16526018)(230700001)(49976008)(478600001)(31686004)(23676002)(36756003)(6116002)(6246003)(53936002)(3846002)(78286006); DIR:OUT; SFP:1101; SCL:1; SRVR:DBXPR07MB317; H:[142.133.49.59]; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: ericsson.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtEQlhQUjA3TUIzMTc7MjM6ZGM0aXhEQlFkdGNIcnFOOWxVOFd2UWRZMi9z?= =?utf-8?B?bWVFRFJRZVZwdGZVTDJuekJkaFhvOU9SQnJKVTNxUGdwZ25pNTVKSFQ0d3VZ?= =?utf-8?B?VVJYM1RQZm8weU5HamkwREdDRnk5N0tSQjd1UlMxenJJaEdPTjJ5N2Ntd3B1?= =?utf-8?B?YStrbUhkVkM2U3BIdU9NZGFuWHR5L2hZbUZ1eHg4a010cm5KYWJPUHZqeDlH?= =?utf-8?B?OHRIZjFaNFIrOFNTbVphRzd4N1VIUHJZclVlRlJrRTdNZklkZGNBZ0RSS1kw?= =?utf-8?B?ZnF4QmorM3RlWVY1RnJBSWFSYmR5d0RKY1huaTc1Q3J1cit4blk4QjJjR0tH?= =?utf-8?B?UVNEMTRKMjdNbG9uUXRaVnZGaFVuVmZzQ0ljRUtBblU1Uis0ZGFqNU9FeHlF?= =?utf-8?B?ZjRwdG1tc2VDNll3SjZmUkdManFIMTFjdmlSU2Q0RENzNmJHTGhsTHFabXh0?= =?utf-8?B?OEcyRHJ1MzJOdmc3bDA0c3p5bW02RnJ5V1J3WUNVK1BHUlREc0J2R3BzenhK?= =?utf-8?B?M2l6YzMxb1hLTmNCYWtENjVjeFN2VVNjSDN6N0VTVytpTk9qMm5jL3NKRlh4?= =?utf-8?B?L1Y5TWc1RFJhckpiZzhoV09xbkkxdU5WeFl4d2ZPQUtiWTR6ZlNCQmxtYUVp?= =?utf-8?B?V0tVZXg3dlNDVGsyZ0ZEbitQV05PMEk4NVJNNGd0WEo4Qm1tc3B3ZVlxait1?= =?utf-8?B?d2J3ZFlLcXVBUHByVDhkOGdFWk1RaTNyVEFZRXNjRnh5UTVSTFZDaVVVQ1pE?= =?utf-8?B?SEFrakF6NFBrZzdNWWJoNTBBZXZUVXkrRTYzOFIxSjNRdDkweHdOZjBiMjNO?= =?utf-8?B?cEFUdDlrQ0VYS3A2dC9zRmlPZ1VmUkFIQkN6YVlSQUNxYy8rUFFSWVFneWRl?= =?utf-8?B?UnFqN2JxZVJVMWdObHlqdmRYVDZ5WGY0UFB2LzZBVEdxdWE2b1pYUmlJOExw?= =?utf-8?B?S282Unk2M1pGcmtmR09uZ2lNZjN4MlMrNDE4SVJjZ3RWdGlVUlo1RWtxTDVK?= =?utf-8?B?RWxrNDRQMzBTRm1nUzU5UzRRZGoydkxVQWVSK29tQlB2UHZYY2h2WjdwMGZZ?= =?utf-8?B?VU94eXBEQjFPOTNDMUIrYlJCTTlyR01ETDFjUzBGdVk0bHpITzRadmU4Vzhy?= =?utf-8?B?Yktwa3JGR2hhRmNyRHltTXNaLzJiWVIxRSt6a2JMZGZ3cHRJdzQ1b21VaDgz?= =?utf-8?B?VzZYUlZHZ3RZVzU5NWxiaVJqQzBQbG9xdVFqeUZxRnl6TXhibWFoN2FqR1NL?= =?utf-8?B?eGpEKyt3ODczUVVWTjBabzJSSkg5M2xxNjJTSzM0L1pYVVZCY1ZwcHpBdjhP?= =?utf-8?B?REdLM3B2SlppeXlYbTdkRGplWFlNVk5uakxNUmF6ZCtXaXVRdHVRRDlPNGlk?= =?utf-8?B?bDJkWEN4UjMvRXVDcTVBVlNtazFpMDdiMkwyS3RiK0M2eDN1Z3h1dlV2UkZD?= =?utf-8?B?cEMzZnhnM2llWHVVRmtMZTRFWlFQMTQxT21EUlhYTjFldWNDOXhCSUYrZUVp?= =?utf-8?B?WjZ2RmRGT295d0R4YmQvOVk5TUtUSU5aWmp3SzljUXZzQjF1ekFCa0JBOWFD?= =?utf-8?B?QU5KWG9XUmlBSDZkMHczTmRkUHVyMEV4OUMyVDV5c1ptbWdIOWJ2QjVGd2dL?= =?utf-8?B?NnQwd21iWWpBdTV4anllWE0xOHoyWlQ0ZC9xUUYwdnMzckJ4SWJpeTRlenlm?= =?utf-8?B?UTZ2bnJ1VUIybmcrOVZzOEtjdDlNYk14OXNyZXJnY080endaY3QwTUVybTBY?= =?utf-8?B?RWNBNzdpWXpVY01GQVpRdWVxVlRMZHRGZmZIbEhaaUdhSE5iRnZjN1NxTEFn?= =?utf-8?B?ZWY1Wm84QlBkNm9UVHFjV0FiVzJ6QWQ0alU1cXZRV1JpRm9KZHF4Q05YZnlZ?= =?utf-8?Q?yc6Tic2GJSH3Me+OO6KsVgM8WTxaK1y?= X-Microsoft-Exchange-Diagnostics: 1; DBXPR07MB317; 6:qKOcHtI6bLHZtwvZ2Of5HFPqw8q6PsMsXu+ErNCrk74vPq5g3QilljoajfSfFouIEc+Y9XBKoX8okg0iKdlDDFmK84qcI+qGzzx4v2mnzDhq9uDjtU+Xq8MJ5h/i2wInh80So+KGtRmH2pXC6gtxd1Qy5R2ymuMZmrsYV9w+Pa2R0CtujZsZxWaBBnBm8+PJtKBsMpk8Q8JEo5cOwcF2LltZVqDStPmOv7X2u7psLXGz9NFl2uQ/LG22dqtl6qNFSuT+oryTdRrc2NliCB21VjBbz1htAaRJjtUnNNJIfHFlzJmAiexSYNs8HTKWkjqAYJgQ8Oh/17SABNpkQUkEgA==; 5:/porWgyb1xZrHRML30jWJ4l8Tsrnb8bWIyme6J1hOupQQvArLwZ+nUgBzyGkzNIb85u0VTWWN4BP3zNoJY437U2KWjuqxzKzNoI29YlPeccl07/j9U8w3DGP6qaAFWhk7E7C0lpsB0+YBB8hLLP5yE8gmkdTyBUZFI9IUNtUg4I=; 24:Hg0xQgZ7HpOUs4cQvFonmzH+sWyBVXDAPX7wDJVtSK5Bz/VTT9+j6sKxRJTd9f5te8k4C8XHTqiFKCizZ1LKI9Yj+dccmrM3gsCtE0tIGb8=; 7:WTXBaO3VKtF5EjTmVUWjKx6hmjKLNgGgv2Xddxha//B2n38jwh4Jm8dFmP8X4v+JQgIul1oijUa8fEOz66MnSltDwI04xIRPUghXNOsAcKa7Y6XFjvDm0MW7eBam9enfV49+paA5+JxaeIQsgRl3VTnl95hl/0BcZOSZw19eXctcVejTeFtPjGGkc6vkV3I3PLxE8norKzfNLvsTozhJr/44sg5hslTb1LQrgJ0fFXY= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Oct 2017 20:43:44.5986 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2ccfef2b-096a-40ac-bd11-08d514d69861 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 92e84ceb-fbfd-47ab-be52-080c6b87953f X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBXPR07MB317 X-OriginatorOrg: ericsson.com X-IsSubscribed: yes Hi Tom, On 2017-10-15 11:04 PM, Tom Tromey wrote: > This removes a few cleanups in remote.c using the usual techniques: > std::vector, unique_xmalloc_ptr, and gdb::def_vector. > > ChangeLog > 2017-10-15 Tom Tromey > > * remote.c (remote_register_number_and_offset): Use std::vector. > (remote_set_syscall_catchpoint): Use gdb::unique_xmalloc_ptr. > (putpkt_binary): Use gdb::def_vector. > (compare_sections_command): Likewise. > --- > gdb/ChangeLog | 7 ++++++ > gdb/remote.c | 71 +++++++++++++++++++++++------------------------------------ > 2 files changed, 35 insertions(+), 43 deletions(-) > > diff --git a/gdb/remote.c b/gdb/remote.c > index e2bdd115f9..43cc661daf 100644 > --- a/gdb/remote.c > +++ b/gdb/remote.c > @@ -803,21 +803,15 @@ int > remote_register_number_and_offset (struct gdbarch *gdbarch, int regnum, > int *pnum, int *poffset) > { > - struct packet_reg *regs; > - struct cleanup *old_chain; > - > gdb_assert (regnum < gdbarch_num_regs (gdbarch)); > > - regs = XCNEWVEC (struct packet_reg, gdbarch_num_regs (gdbarch)); > - old_chain = make_cleanup (xfree, regs); > + std::vector regs (gdbarch_num_regs (gdbarch)); > > - map_regcache_remote_table (gdbarch, regs); > + map_regcache_remote_table (gdbarch, regs.data ()); > > *pnum = regs[regnum].pnum; > *poffset = regs[regnum].offset; > > - do_cleanups (old_chain); > - > return *pnum != -1; > } > > @@ -2062,7 +2056,7 @@ remote_set_syscall_catchpoint (struct target_ops *self, > int pid, int needed, int any_count, > int table_size, int *table) > { > - char *catch_packet; > + const char *catch_packet; > enum packet_result result; > int n_sysno = 0; > > @@ -2092,6 +2086,7 @@ remote_set_syscall_catchpoint (struct target_ops *self, > pid, needed, any_count, n_sysno); > } > > + gdb::unique_xmalloc_ptr built_packet; > if (needed) > { > /* Prepare a packet with the sysno list, assuming max 8+1 > @@ -2099,46 +2094,45 @@ remote_set_syscall_catchpoint (struct target_ops *self, > big, fallback on the non-selective packet. */ > const int maxpktsz = strlen ("QCatchSyscalls:1") + n_sysno * 9 + 1; > > - catch_packet = (char *) xmalloc (maxpktsz); > - strcpy (catch_packet, "QCatchSyscalls:1"); > + built_packet.reset ((char *) xmalloc (maxpktsz)); > + strcpy (built_packet.get (), "QCatchSyscalls:1"); > if (!any_count) > { > int i; > char *p; > > - p = catch_packet; > + p = built_packet.get (); > p += strlen (p); > > /* Add in catch_packet each syscall to be caught (table[i] != 0). */ > for (i = 0; i < table_size; i++) > { > if (table[i] != 0) > - p += xsnprintf (p, catch_packet + maxpktsz - p, ";%x", i); > + p += xsnprintf (p, built_packet.get () + maxpktsz - p, > + ";%x", i); > } > } > - if (strlen (catch_packet) > get_remote_packet_size ()) > + if (strlen (built_packet.get ()) > get_remote_packet_size ()) > { > /* catch_packet too big. Fallback to less efficient > non selective mode, with GDB doing the filtering. */ > - catch_packet[sizeof ("QCatchSyscalls:1") - 1] = 0; > + catch_packet = "QCatchSyscalls:1"; > } > + else > + catch_packet = built_packet.get (); > } > else > - catch_packet = xstrdup ("QCatchSyscalls:0"); > + catch_packet = "QCatchSyscalls:0"; > > - { > - struct cleanup *old_chain = make_cleanup (xfree, catch_packet); > - struct remote_state *rs = get_remote_state (); > + struct remote_state *rs = get_remote_state (); > > - putpkt (catch_packet); > - getpkt (&rs->buf, &rs->buf_size, 0); > - result = packet_ok (rs->buf, &remote_protocol_packets[PACKET_QCatchSyscalls]); > - do_cleanups (old_chain); > - if (result == PACKET_OK) > - return 0; > - else > - return -1; > - } > + putpkt (catch_packet); > + getpkt (&rs->buf, &rs->buf_size, 0); > + result = packet_ok (rs->buf, &remote_protocol_packets[PACKET_QCatchSyscalls]); > + if (result == PACKET_OK) > + return 0; > + else > + return -1; > } For this one, wouldn't it be easier to just go with a string? Something like: commit b8629fb5fa7e869341a745c168a5f7103ee91c1c Author: Simon Marchi Date: Mon Oct 16 16:36:51 2017 -0400 foo > > /* If 'QProgramSignals' is supported, tell the remote stub what > @@ -8762,8 +8756,8 @@ putpkt_binary (const char *buf, int cnt) > struct remote_state *rs = get_remote_state (); > int i; > unsigned char csum = 0; > - char *buf2 = (char *) xmalloc (cnt + 6); > - struct cleanup *old_chain = make_cleanup (xfree, buf2); > + gdb::def_vector data (cnt + 6); > + char *buf2 = data.data (); > > int ch; > int tcount = 0; > @@ -8866,7 +8860,6 @@ putpkt_binary (const char *buf, int cnt) > case '+': > if (remote_debug) > fprintf_unfiltered (gdb_stdlog, "Ack\n"); > - do_cleanups (old_chain); > return 1; > case '-': > if (remote_debug) > @@ -8875,10 +8868,7 @@ putpkt_binary (const char *buf, int cnt) > case SERIAL_TIMEOUT: > tcount++; > if (tcount > 3) > - { > - do_cleanups (old_chain); > - return 0; > - } > + return 0; > break; /* Retransmit buffer. */ > case '$': > { > @@ -8962,7 +8952,6 @@ putpkt_binary (const char *buf, int cnt) > #endif > } > > - do_cleanups (old_chain); > return 0; > } > > @@ -10331,7 +10320,6 @@ static void > compare_sections_command (const char *args, int from_tty) > { > asection *s; > - struct cleanup *old_chain; > gdb_byte *sectdata; > const char *sectname; > bfd_size_type size; > @@ -10372,11 +10360,10 @@ compare_sections_command (const char *args, int from_tty) > matched = 1; /* Do this section. */ > lma = s->lma; > > - sectdata = (gdb_byte *) xmalloc (size); > - old_chain = make_cleanup (xfree, sectdata); > - bfd_get_section_contents (exec_bfd, s, sectdata, 0, size); > + gdb::def_vector sectdata (size); Use gdb::byte_vector. > + bfd_get_section_contents (exec_bfd, s, sectdata.data (), 0, size); > > - res = target_verify_memory (sectdata, lma, size); > + res = target_verify_memory (sectdata.data (), lma, size); > > if (res == -1) > error (_("target memory fault, section %s, range %s -- %s"), sectname, > @@ -10393,8 +10380,6 @@ compare_sections_command (const char *args, int from_tty) > printf_filtered ("MIS-MATCHED!\n"); > mismatched++; > } > - > - do_cleanups (old_chain); > } > if (mismatched > 0) > warning (_("One or more sections of the target image does not match\n\ > Thanks, Simon diff --git a/gdb/remote.c b/gdb/remote.c index 6b77a9f..37874d3 100644 --- a/gdb/remote.c +++ b/gdb/remote.c @@ -2056,7 +2056,7 @@ remote_set_syscall_catchpoint (struct target_ops *self, int pid, int needed, int any_count, int table_size, int *table) { - const char *catch_packet; + std::string catch_packet; enum packet_result result; int n_sysno = 0; @@ -2086,47 +2086,31 @@ remote_set_syscall_catchpoint (struct target_ops *self, pid, needed, any_count, n_sysno); } - gdb::unique_xmalloc_ptr built_packet; if (needed) { - /* Prepare a packet with the sysno list, assuming max 8+1 - characters for a sysno. If the resulting packet size is too - big, fallback on the non-selective packet. */ - const int maxpktsz = strlen ("QCatchSyscalls:1") + n_sysno * 9 + 1; - - built_packet.reset ((char *) xmalloc (maxpktsz)); - strcpy (built_packet.get (), "QCatchSyscalls:1"); + catch_packet = "QCatchSyscalls:1"; if (!any_count) { - int i; - char *p; - - p = built_packet.get (); - p += strlen (p); - /* Add in catch_packet each syscall to be caught (table[i] != 0). */ - for (i = 0; i < table_size; i++) + for (int i = 0; i < table_size; i++) { if (table[i] != 0) - p += xsnprintf (p, built_packet.get () + maxpktsz - p, - ";%x", i); + catch_packet += string_printf (";%x", i); } } - if (strlen (built_packet.get ()) > get_remote_packet_size ()) + if (catch_packet.length () > get_remote_packet_size ()) { /* catch_packet too big. Fallback to less efficient non selective mode, with GDB doing the filtering. */ catch_packet = "QCatchSyscalls:1"; } - else - catch_packet = built_packet.get (); } else catch_packet = "QCatchSyscalls:0"; struct remote_state *rs = get_remote_state (); - putpkt (catch_packet); + putpkt (catch_packet.c_str ()); getpkt (&rs->buf, &rs->buf_size, 0); result = packet_ok (rs->buf, &remote_protocol_packets[PACKET_QCatchSyscalls]); if (result == PACKET_OK)