From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7751 invoked by alias); 2 Nov 2017 22:36:24 -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 7368 invoked by uid 89); 2 Nov 2017 22:36:21 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.5 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=longest, rfa X-HELO: gateway24.websitewelcome.com Received: from gateway24.websitewelcome.com (HELO gateway24.websitewelcome.com) (192.185.51.110) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 02 Nov 2017 22:36:19 +0000 Received: from cm11.websitewelcome.com (cm11.websitewelcome.com [100.42.49.5]) by gateway24.websitewelcome.com (Postfix) with ESMTP id 313482EF84 for ; Thu, 2 Nov 2017 17:36:18 -0500 (CDT) Received: from box5379.bluehost.com ([162.241.216.53]) by cmsmtp with SMTP id AO5ye1wDWtuxmAO5yePhcD; Thu, 02 Nov 2017 17:36:18 -0500 Received: from 71-218-90-63.hlrn.qwest.net ([71.218.90.63]:58978 helo=bapiya.Home) by box5379.bluehost.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.89) (envelope-from ) id 1eAO5y-003CfJ-04; Thu, 02 Nov 2017 17:36:18 -0500 From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [RFA 10/13] Remove cleanups from linux-tdep.c Date: Thu, 02 Nov 2017 22:36:00 -0000 Message-Id: <20171102223612.3642-11-tom@tromey.com> In-Reply-To: <20171102223612.3642-1-tom@tromey.com> References: <20171102223612.3642-1-tom@tromey.com> X-BWhitelist: no X-Source-L: No X-Exim-ID: 1eAO5y-003CfJ-04 X-Source-Sender: 71-218-90-63.hlrn.qwest.net (bapiya.Home) [71.218.90.63]:58978 X-Source-Auth: tom+tromey.com X-Email-Count: 11 X-Source-Cap: ZWx5bnJvYmk7ZWx5bnJvYmk7Ym94NTM3OS5ibHVlaG9zdC5jb20= X-Local-Domain: yes X-SW-Source: 2017-11/txt/msg00050.txt.bz2 This removes some cleanups from linux-tdep.c, replacing them with def_vector or unique_xmalloc_ptr as appropriate. gdb/ChangeLog 2017-11-02 Tom Tromey * linux-tdep.c (linux_core_info_proc_mappings): Use gdb::def_vector. (linux_get_siginfo_data): Return gdb::unique_xmalloc_ptr. (linux_corefile_thread): Update. --- gdb/ChangeLog | 7 +++++++ gdb/linux-tdep.c | 45 ++++++++++++++------------------------------- 2 files changed, 21 insertions(+), 31 deletions(-) diff --git a/gdb/linux-tdep.c b/gdb/linux-tdep.c index 83ff59faee..0350ccea16 100644 --- a/gdb/linux-tdep.c +++ b/gdb/linux-tdep.c @@ -998,10 +998,9 @@ linux_core_info_proc_mappings (struct gdbarch *gdbarch, const char *args) { asection *section; ULONGEST count, page_size; - unsigned char *descdata, *filenames, *descend, *contents; + unsigned char *descdata, *filenames, *descend; size_t note_size; unsigned int addr_size_bits, addr_size; - struct cleanup *cleanup; struct gdbarch *core_gdbarch = gdbarch_from_bfd (core_bfd); /* We assume this for reading 64-bit core files. */ gdb_static_assert (sizeof (ULONGEST) >= 8); @@ -1020,12 +1019,12 @@ linux_core_info_proc_mappings (struct gdbarch *gdbarch, const char *args) if (note_size < 2 * addr_size) error (_("malformed core note - too short for header")); - contents = (unsigned char *) xmalloc (note_size); - cleanup = make_cleanup (xfree, contents); - if (!bfd_get_section_contents (core_bfd, section, contents, 0, note_size)) + gdb::def_vector contents (note_size); + if (!bfd_get_section_contents (core_bfd, section, contents.data (), + 0, note_size)) error (_("could not get core note contents")); - descdata = contents; + descdata = contents.data (); descend = descdata + note_size; if (descdata[note_size - 1] != '\0') @@ -1090,8 +1089,6 @@ linux_core_info_proc_mappings (struct gdbarch *gdbarch, const char *args) filenames += 1 + strlen ((char *) filenames); } - - do_cleanups (cleanup); } /* Implement "info proc" for a corefile. */ @@ -1516,7 +1513,6 @@ static char * linux_make_mappings_corefile_notes (struct gdbarch *gdbarch, bfd *obfd, char *note_data, int *note_size) { - struct cleanup *cleanup; struct linux_make_mappings_data mapping_data; struct type *long_type = arch_integer_type (gdbarch, gdbarch_long_bit (gdbarch), 0, "long"); @@ -1646,14 +1642,12 @@ linux_collect_thread_registers (const struct regcache *regcache, with the size of the data. The caller is responsible for freeing the data. */ -static gdb_byte * +static gdb::unique_xmalloc_ptr linux_get_siginfo_data (thread_info *thread, struct gdbarch *gdbarch, LONGEST *size) { struct type *siginfo_type; - gdb_byte *buf; LONGEST bytes_read; - struct cleanup *cleanups; if (!gdbarch_get_siginfo_type_p (gdbarch)) return NULL; @@ -1663,21 +1657,15 @@ linux_get_siginfo_data (thread_info *thread, struct gdbarch *gdbarch, siginfo_type = gdbarch_get_siginfo_type (gdbarch); - buf = (gdb_byte *) xmalloc (TYPE_LENGTH (siginfo_type)); - cleanups = make_cleanup (xfree, buf); + gdb::unique_xmalloc_ptr buf + ((gdb_byte *) xmalloc (TYPE_LENGTH (siginfo_type))); bytes_read = target_read (¤t_target, TARGET_OBJECT_SIGNAL_INFO, NULL, - buf, 0, TYPE_LENGTH (siginfo_type)); + buf.get (), 0, TYPE_LENGTH (siginfo_type)); if (bytes_read == TYPE_LENGTH (siginfo_type)) - { - discard_cleanups (cleanups); - *size = bytes_read; - } + *size = bytes_read; else - { - do_cleanups (cleanups); - buf = NULL; - } + return NULL; return buf; } @@ -1698,17 +1686,14 @@ static void linux_corefile_thread (struct thread_info *info, struct linux_corefile_thread_data *args) { - struct cleanup *old_chain; struct regcache *regcache; - gdb_byte *siginfo_data; LONGEST siginfo_size = 0; regcache = get_thread_arch_regcache (info->ptid, args->gdbarch); target_fetch_registers (regcache, -1); - siginfo_data = linux_get_siginfo_data (info, args->gdbarch, &siginfo_size); - - old_chain = make_cleanup (xfree, siginfo_data); + gdb::unique_xmalloc_ptr siginfo_data + = linux_get_siginfo_data (info, args->gdbarch, &siginfo_size); args->note_data = linux_collect_thread_registers (regcache, info->ptid, args->obfd, args->note_data, @@ -1722,9 +1707,7 @@ linux_corefile_thread (struct thread_info *info, args->note_data, args->note_size, "CORE", NT_SIGINFO, - siginfo_data, siginfo_size); - - do_cleanups (old_chain); + siginfo_data.get (), siginfo_size); } /* Fill the PRPSINFO structure with information about the process being -- 2.13.6