From patchwork Wed Mar 28 04:24:24 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Tromey X-Patchwork-Id: 26497 Received: (qmail 26596 invoked by alias); 28 Mar 2018 04:24:58 -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 26530 invoked by uid 89); 28 Mar 2018 04:24:43 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, TIME_LIMIT_EXCEEDED autolearn=unavailable version=3.3.2 spammy=locate X-HELO: gateway24.websitewelcome.com Received: from gateway24.websitewelcome.com (HELO gateway24.websitewelcome.com) (192.185.50.71) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 28 Mar 2018 04:24:28 +0000 Received: from cm15.websitewelcome.com (cm15.websitewelcome.com [100.42.49.9]) by gateway24.websitewelcome.com (Postfix) with ESMTP id 44A711C6DB for ; Tue, 27 Mar 2018 23:24:27 -0500 (CDT) Received: from box5379.bluehost.com ([162.241.216.53]) by cmsmtp with SMTP id 12dPf6BznntAo12dPfjacG; Tue, 27 Mar 2018 23:24:27 -0500 Received: from 174-29-48-109.hlrn.qwest.net ([174.29.48.109]:42540 helo=bapiya.Home) by box5379.bluehost.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.89_1) (envelope-from ) id 1f12dP-0022Ff-1Q; Tue, 27 Mar 2018 23:24:27 -0500 From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [RFA 2/2] Remove some clanups from solib-svr4.c Date: Tue, 27 Mar 2018 22:24:24 -0600 Message-Id: <20180328042424.15276-3-tom@tromey.com> In-Reply-To: <20180328042424.15276-1-tom@tromey.com> References: <20180328042424.15276-1-tom@tromey.com> X-BWhitelist: no X-Source-L: No X-Exim-ID: 1f12dP-0022Ff-1Q X-Source-Sender: 174-29-48-109.hlrn.qwest.net (bapiya.Home) [174.29.48.109]:42540 X-Source-Auth: tom+tromey.com X-Email-Count: 3 X-Source-Cap: ZWx5bnJvYmk7ZWx5bnJvYmk7Ym94NTM3OS5ibHVlaG9zdC5jb20= X-Local-Domain: yes This removes a few cleanups from solib-svr4.c in a straightforward way. gdb/ChangeLog 2018-03-26 Tom Tromey * solib-svr4.c (lm_info_read): Use gdb::byte_vector. (svr4_keep_data_in_core): Use gdb::unique_xmalloc_ptr. --- gdb/ChangeLog | 5 +++++ gdb/solib-svr4.c | 47 ++++++++++------------------------------------- 2 files changed, 15 insertions(+), 37 deletions(-) diff --git a/gdb/solib-svr4.c b/gdb/solib-svr4.c index d8d047d394..c2170891e5 100644 --- a/gdb/solib-svr4.c +++ b/gdb/solib-svr4.c @@ -172,14 +172,11 @@ static lm_info_svr4 * lm_info_read (CORE_ADDR lm_addr) { struct link_map_offsets *lmo = svr4_fetch_link_map_offsets (); - gdb_byte *lm; lm_info_svr4 *lm_info; - struct cleanup *back_to; - lm = (gdb_byte *) xmalloc (lmo->link_map_size); - back_to = make_cleanup (xfree, lm); + gdb::byte_vector lm (lmo->link_map_size); - if (target_read_memory (lm_addr, lm, lmo->link_map_size) != 0) + if (target_read_memory (lm_addr, lm.data (), lmo->link_map_size) != 0) { warning (_("Error reading shared library list entry at %s"), paddress (target_gdbarch (), lm_addr)), @@ -203,8 +200,6 @@ lm_info_read (CORE_ADDR lm_addr) ptr_type); } - do_cleanups (back_to); - return lm_info; } @@ -958,8 +953,6 @@ svr4_keep_data_in_core (CORE_ADDR vaddr, unsigned long size) { struct svr4_info *info; CORE_ADDR ldsomap; - struct so_list *newobj; - struct cleanup *old_chain; CORE_ADDR name_lm; info = get_svr4_info (); @@ -973,13 +966,8 @@ svr4_keep_data_in_core (CORE_ADDR vaddr, unsigned long size) if (!ldsomap) return 0; - newobj = XCNEW (struct so_list); - old_chain = make_cleanup (xfree, newobj); - lm_info_svr4 *li = lm_info_read (ldsomap); - newobj->lm_info = li; - make_cleanup (xfree, newobj->lm_info); + gdb::unique_xmalloc_ptr li (lm_info_read (ldsomap)); name_lm = li != NULL ? li->l_name : 0; - do_cleanups (old_chain); return (name_lm >= vaddr && name_lm < vaddr + size); } @@ -995,8 +983,7 @@ open_symbol_file_object (int from_tty) struct link_map_offsets *lmo = svr4_fetch_link_map_offsets (); struct type *ptr_type = builtin_type (target_gdbarch ())->builtin_data_ptr; int l_name_size = TYPE_LENGTH (ptr_type); - gdb_byte *l_name_buf = (gdb_byte *) xmalloc (l_name_size); - struct cleanup *cleanups = make_cleanup (xfree, l_name_buf); + gdb::byte_vector l_name_buf (l_name_size); struct svr4_info *info = get_svr4_info (); symfile_add_flags add_flags = 0; @@ -1005,38 +992,26 @@ open_symbol_file_object (int from_tty) if (symfile_objfile) if (!query (_("Attempt to reload symbols from process? "))) - { - do_cleanups (cleanups); - return 0; - } + return 0; /* Always locate the debug struct, in case it has moved. */ info->debug_base = 0; if (locate_base (info) == 0) - { - do_cleanups (cleanups); - return 0; /* failed somehow... */ - } + return 0; /* failed somehow... */ /* First link map member should be the executable. */ lm = solib_svr4_r_map (info); if (lm == 0) - { - do_cleanups (cleanups); - return 0; /* failed somehow... */ - } + return 0; /* failed somehow... */ /* Read address of name from target memory to GDB. */ - read_memory (lm + lmo->l_name_offset, l_name_buf, l_name_size); + read_memory (lm + lmo->l_name_offset, l_name_buf.data (), l_name_size); /* Convert the address to host format. */ - l_name = extract_typed_address (l_name_buf, ptr_type); + l_name = extract_typed_address (l_name_buf.data (), ptr_type); if (l_name == 0) - { - do_cleanups (cleanups); - return 0; /* No filename. */ - } + return 0; /* No filename. */ /* Now fetch the filename from target memory. */ target_read_string (l_name, &filename, SO_NAME_MAX_PATH_SIZE - 1, &errcode); @@ -1045,14 +1020,12 @@ open_symbol_file_object (int from_tty) { warning (_("failed to read exec filename from attached file: %s"), safe_strerror (errcode)); - do_cleanups (cleanups); return 0; } /* Have a pathname: read the symbol file. */ symbol_file_add_main (filename.get (), add_flags); - do_cleanups (cleanups); return 1; }