From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 127651 invoked by alias); 28 Apr 2018 03:31:38 -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 127422 invoked by uid 89); 28 Apr 2018 03:31:36 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-21.9 required=5.0 tests=BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_STOCKGEN,RCVD_IN_DNSWL_NONE,SPF_SOFTFAIL,UNWANTED_LANGUAGE_BODY autolearn=ham version=3.3.2 spammy=simonmarchiericssoncom, simon.marchi@ericsson.com, msymbols, *filename X-HELO: barracuda.ebox.ca Received: from barracuda.ebox.ca (HELO barracuda.ebox.ca) (96.127.255.19) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sat, 28 Apr 2018 03:31:34 +0000 X-ASG-Debug-ID: 1524886285-0c856e618ac2b4b0001-fS2M51 Received: from smtp.ebox.ca (smtp.electronicbox.net [96.127.255.82]) by barracuda.ebox.ca with ESMTP id RGeEUUXDi22dA4XE (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 27 Apr 2018 23:31:25 -0400 (EDT) X-Barracuda-Envelope-From: simon.marchi@polymtl.ca X-Barracuda-RBL-Trusted-Forwarder: 96.127.255.82 Received: from simark.lan (unknown [192.222.164.54]) by smtp.ebox.ca (Postfix) with ESMTP id 71BAF441B21; Fri, 27 Apr 2018 23:31:25 -0400 (EDT) From: Simon Marchi X-Barracuda-Effective-Source-IP: 192-222-164-54.qc.cable.ebox.net[192.222.164.54] X-Barracuda-Apparent-Source-IP: 192.222.164.54 X-Barracuda-RBL-IP: 192.222.164.54 To: gdb-patches@sourceware.org Cc: Simon Marchi Subject: [PATCH v2 3/3] Use XOBNEW/XOBNEWVEC/OBSTACK_ZALLOC when possible Date: Sat, 28 Apr 2018 03:31:00 -0000 X-ASG-Orig-Subj: [PATCH v2 3/3] Use XOBNEW/XOBNEWVEC/OBSTACK_ZALLOC when possible Message-Id: <20180428033121.20163-4-simon.marchi@polymtl.ca> In-Reply-To: <20180428033121.20163-1-simon.marchi@polymtl.ca> References: <20180428033121.20163-1-simon.marchi@polymtl.ca> X-Barracuda-Connect: smtp.electronicbox.net[96.127.255.82] X-Barracuda-Start-Time: 1524886285 X-Barracuda-Encrypted: DHE-RSA-AES256-SHA X-Barracuda-URL: https://96.127.255.19:443/cgi-mod/mark.cgi X-Barracuda-Scan-Msg-Size: 12364 X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.50 X-Barracuda-Spam-Status: No, SCORE=0.50 using global scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=8.0 tests=BSF_RULE7568M X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.50382 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M Custom Rule 7568M X-IsSubscribed: yes X-SW-Source: 2018-04/txt/msg00593.txt.bz2 From: Simon Marchi Since XOBNEW/XOBNEWVEC/OBSTACK_ZALLOC are now poisoned to prevent using them with non-trivially-constructible objects, it is worth using them over plain obstack_alloc. This patch changes the locations I could find where we can do that change easily. gdb/ChangeLog: * ada-lang.c (cache_symbol): Use XOBNEW and/or XOBNEWVEC and/or OBSTACK_ZALLOC. * dwarf2-frame.c (dwarf2_build_frame_info): Likewise. * hppa-tdep.c (hppa_init_objfile_priv_data): Likewise. * mdebugread.c (mdebug_build_psymtabs): Likewise. (add_pending): Likewise. (parse_symbol): Likewise. (parse_partial_symbols): Likewise. (psymtab_to_symtab_1): Likewise. (new_psymtab): Likewise. (elfmdebug_build_psymtabs): Likewise. * minsyms.c (terminate_minimal_symbol_table): Likewise. * objfiles.c (get_objfile_bfd_data): Likewise. (objfile_register_static_link): Likewise. * psymtab.c (allocate_psymtab): Likewise. * stabsread.c (read_member_functions): Likewise. * xcoffread.c (xcoff_end_psymtab): Likewise. --- gdb/ada-lang.c | 3 +-- gdb/dwarf2-frame.c | 3 +-- gdb/hppa-tdep.c | 7 ++----- gdb/mdebugread.c | 51 ++++++++++++++++------------------------------ gdb/minsyms.c | 6 ++---- gdb/objfiles.c | 9 ++------ gdb/psymtab.c | 4 +--- gdb/stabsread.c | 7 ++----- gdb/xcoffread.c | 3 +-- 9 files changed, 29 insertions(+), 64 deletions(-) diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c index de20c43beddc..8145480d590c 100644 --- a/gdb/ada-lang.c +++ b/gdb/ada-lang.c @@ -4744,8 +4744,7 @@ cache_symbol (const char *name, domain_enum domain, struct symbol *sym, return; h = msymbol_hash (name) % HASH_SIZE; - e = (struct cache_entry *) obstack_alloc (&sym_cache->cache_space, - sizeof (*e)); + e = XOBNEW (&sym_cache->cache_space, cache_entry); e->next = sym_cache->root[h]; sym_cache->root[h] = e; e->name = copy diff --git a/gdb/dwarf2-frame.c b/gdb/dwarf2-frame.c index 38367f7d73e4..aed6c7b1e6ca 100644 --- a/gdb/dwarf2-frame.c +++ b/gdb/dwarf2-frame.c @@ -2205,8 +2205,7 @@ dwarf2_build_frame_info (struct objfile *objfile) fde_table.entries = NULL; /* Build a minimal decoding of the DWARF2 compilation unit. */ - unit = (struct comp_unit *) obstack_alloc (&objfile->objfile_obstack, - sizeof (struct comp_unit)); + unit = XOBNEW (&objfile->objfile_obstack, comp_unit); unit->abfd = objfile->obfd; unit->objfile = objfile; unit->dbase = 0; diff --git a/gdb/hppa-tdep.c b/gdb/hppa-tdep.c index 84dbd6674859..9692b33e097b 100644 --- a/gdb/hppa-tdep.c +++ b/gdb/hppa-tdep.c @@ -205,13 +205,10 @@ hppa_symbol_address(const char *sym) static struct hppa_objfile_private * hppa_init_objfile_priv_data (struct objfile *objfile) { - struct hppa_objfile_private *priv; + hppa_objfile_private *priv + = OBSTACK_ZALLOC (&objfile->objfile_obstack, hppa_objfile_private); - priv = (struct hppa_objfile_private *) - obstack_alloc (&objfile->objfile_obstack, - sizeof (struct hppa_objfile_private)); set_objfile_data (objfile, hppa_objfile_priv_data, priv); - memset (priv, 0, sizeof (*priv)); return priv; } diff --git a/gdb/mdebugread.c b/gdb/mdebugread.c index c0bce551489d..fee8d430aa08 100644 --- a/gdb/mdebugread.c +++ b/gdb/mdebugread.c @@ -356,9 +356,8 @@ mdebug_build_psymtabs (minimal_symbol_reader &reader, char *fdr_end; FDR *fdr_ptr; - info->fdr = (FDR *) obstack_alloc (&objfile->objfile_obstack, - (info->symbolic_header.ifdMax - * sizeof (FDR))); + info->fdr = (FDR *) XOBNEWVEC (&objfile->objfile_obstack, FDR, + info->symbolic_header.ifdMax); fdr_src = (char *) info->external_fdr; fdr_end = (fdr_src + info->symbolic_header.ifdMax * swap->external_fdr_size); @@ -508,9 +507,7 @@ add_pending (FDR *fh, char *sh, struct type *t) /* Make sure we do not make duplicates. */ if (!p) { - p = ((struct mdebug_pending *) - obstack_alloc (&mdebugread_objfile->objfile_obstack, - sizeof (struct mdebug_pending))); + p = XOBNEW (&mdebugread_objfile->objfile_obstack, mdebug_pending); p->s = sh; p->t = t; p->next = pending_list[f_idx]; @@ -1174,10 +1171,8 @@ parse_symbol (SYMR *sh, union aux_ext *ax, char *ext_sh, int bigend, SYMBOL_DOMAIN (s) = LABEL_DOMAIN; SYMBOL_ACLASS_INDEX (s) = LOC_CONST; SYMBOL_TYPE (s) = objfile_type (mdebugread_objfile)->builtin_void; - e = ((struct mdebug_extra_func_info *) - obstack_alloc (&mdebugread_objfile->objfile_obstack, - sizeof (struct mdebug_extra_func_info))); - memset (e, 0, sizeof (struct mdebug_extra_func_info)); + e = OBSTACK_ZALLOC (&mdebugread_objfile->objfile_obstack, + mdebug_extra_func_info); SYMBOL_VALUE_BYTES (s) = (gdb_byte *) e; e->numargs = top_stack->numargs; e->pdr.framereg = -1; @@ -2372,8 +2367,7 @@ parse_partial_symbols (minimal_symbol_reader &reader, && (bfd_get_section_flags (cur_bfd, text_sect) & SEC_RELOC)) relocatable = 1; - extern_tab = (EXTR *) obstack_alloc (&objfile->objfile_obstack, - sizeof (EXTR) * hdr->iextMax); + extern_tab = XOBNEWVEC (&objfile->objfile_obstack, EXTR, hdr->iextMax); includes_allocated = 30; includes_used = 0; @@ -2415,10 +2409,8 @@ parse_partial_symbols (minimal_symbol_reader &reader, } /* Allocate the global pending list. */ - pending_list = - ((struct mdebug_pending **) - obstack_alloc (&objfile->objfile_obstack, - hdr->ifdMax * sizeof (struct mdebug_pending *))); + pending_list = XOBNEWVEC (&objfile->objfile_obstack, mdebug_pending *, + hdr->ifdMax); memset (pending_list, 0, hdr->ifdMax * sizeof (struct mdebug_pending *)); @@ -2659,8 +2651,7 @@ parse_partial_symbols (minimal_symbol_reader &reader, textlow, objfile->global_psymbols, objfile->static_psymbols); - pst->read_symtab_private = obstack_alloc (&objfile->objfile_obstack, - sizeof (struct symloc)); + pst->read_symtab_private = XOBNEW (&objfile->objfile_obstack, symloc); memset (pst->read_symtab_private, 0, sizeof (struct symloc)); save_pst = pst; @@ -3773,11 +3764,8 @@ parse_partial_symbols (minimal_symbol_reader &reader, /* Skip the first file indirect entry as it is a self dependency for source files or a reverse .h -> .c dependency for header files. */ pst->number_of_dependencies = 0; - pst->dependencies = - ((struct partial_symtab **) - obstack_alloc (&objfile->objfile_obstack, - ((fh->crfd - 1) - * sizeof (struct partial_symtab *)))); + pst->dependencies = XOBNEWVEC (&objfile->objfile_obstack, + partial_symtab *, (fh->crfd - 1)); for (s_idx = 1; s_idx < fh->crfd; s_idx++) { RFDT rh; @@ -4064,13 +4052,11 @@ psymtab_to_symtab_1 (struct objfile *objfile, { /* Make up special symbol to contain procedure specific info. */ - struct mdebug_extra_func_info *e = - ((struct mdebug_extra_func_info *) - obstack_alloc (&mdebugread_objfile->objfile_obstack, - sizeof (struct mdebug_extra_func_info))); + mdebug_extra_func_info *e + = OBSTACK_ZALLOC (&mdebugread_objfile->objfile_obstack, + mdebug_extra_func_info); struct symbol *s = new_symbol (MDEBUG_EFI_SYMBOL_NAME); - memset (e, 0, sizeof (struct mdebug_extra_func_info)); SYMBOL_DOMAIN (s) = LABEL_DOMAIN; SYMBOL_ACLASS_INDEX (s) = LOC_CONST; SYMBOL_TYPE (s) = objfile_type (objfile)->builtin_void; @@ -4750,9 +4736,8 @@ new_psymtab (const char *name, struct objfile *objfile) /* Keep a backpointer to the file's symbols. */ - psymtab->read_symtab_private = obstack_alloc (&objfile->objfile_obstack, - sizeof (struct symloc)); - memset (psymtab->read_symtab_private, 0, sizeof (struct symloc)); + psymtab->read_symtab_private + = OBSTACK_ZALLOC (&objfile->objfile_obstack, symloc); CUR_BFD (psymtab) = cur_bfd; DEBUG_SWAP (psymtab) = debug_swap; DEBUG_INFO (psymtab) = debug_info; @@ -4877,9 +4862,7 @@ elfmdebug_build_psymtabs (struct objfile *objfile, minimal_symbol_reader reader (objfile); - info = ((struct ecoff_debug_info *) - obstack_alloc (&objfile->objfile_obstack, - sizeof (struct ecoff_debug_info))); + info = XOBNEW (&objfile->objfile_obstack, ecoff_debug_info); if (!(*swap->read_debug_info) (abfd, sec, info)) error (_("Error reading ECOFF debugging information: %s"), diff --git a/gdb/minsyms.c b/gdb/minsyms.c index 221404ee3ae7..eacc9d78a6a5 100644 --- a/gdb/minsyms.c +++ b/gdb/minsyms.c @@ -1419,10 +1419,8 @@ void terminate_minimal_symbol_table (struct objfile *objfile) { if (! objfile->per_bfd->msymbols) - objfile->per_bfd->msymbols - = ((struct minimal_symbol *) - obstack_alloc (&objfile->per_bfd->storage_obstack, - sizeof (struct minimal_symbol))); + objfile->per_bfd->msymbols = XOBNEW (&objfile->per_bfd->storage_obstack, + minimal_symbol); { struct minimal_symbol *m diff --git a/gdb/objfiles.c b/gdb/objfiles.c index 98e81c48c467..2ec358ad4dbb 100644 --- a/gdb/objfiles.c +++ b/gdb/objfiles.c @@ -147,11 +147,7 @@ get_objfile_bfd_data (struct objfile *objfile, struct bfd *abfd) set_bfd_data (abfd, objfiles_bfd_data, storage); } else - { - storage = (objfile_per_bfd_storage *) - obstack_alloc (&objfile->objfile_obstack, - sizeof (objfile_per_bfd_storage)); - } + storage = XOBNEW (&objfile->objfile_obstack, objfile_per_bfd_storage); /* objfile_per_bfd_storage is not trivially constructible, must call the ctor manually. */ @@ -269,8 +265,7 @@ objfile_register_static_link (struct objfile *objfile, slot = htab_find_slot (objfile->static_links, &lookup_entry, INSERT); gdb_assert (*slot == NULL); - entry = (struct static_link_htab_entry *) obstack_alloc - (&objfile->objfile_obstack, sizeof (*entry)); + entry = XOBNEW (&objfile->objfile_obstack, static_link_htab_entry); entry->block = block; entry->static_link = static_link; *slot = (void *) entry; diff --git a/gdb/psymtab.c b/gdb/psymtab.c index ac0ee0a5a64c..fa59ee2b0fb2 100644 --- a/gdb/psymtab.c +++ b/gdb/psymtab.c @@ -1805,9 +1805,7 @@ allocate_psymtab (const char *filename, struct objfile *objfile) objfile->free_psymtabs = psymtab->next; } else - psymtab = (struct partial_symtab *) - obstack_alloc (&objfile->objfile_obstack, - sizeof (struct partial_symtab)); + psymtab = XOBNEW (&objfile->objfile_obstack, partial_symtab); memset (psymtab, 0, sizeof (struct partial_symtab)); psymtab->filename diff --git a/gdb/stabsread.c b/gdb/stabsread.c index 0017f18c35ac..49990df82181 100644 --- a/gdb/stabsread.c +++ b/gdb/stabsread.c @@ -2731,11 +2731,8 @@ read_member_functions (struct field_info *fip, const char **pp, xfree (main_fn_name); } - new_fnlist->fn_fieldlist.fn_fields = (struct fn_field *) - obstack_alloc (&objfile->objfile_obstack, - sizeof (struct fn_field) * length); - memset (new_fnlist->fn_fieldlist.fn_fields, 0, - sizeof (struct fn_field) * length); + new_fnlist->fn_fieldlist.fn_fields + = OBSTACK_CALLOC (&objfile->objfile_obstack, length, fn_field); for (i = length; (i--, sublist); sublist = sublist->next) { new_fnlist->fn_fieldlist.fn_fields[i] = sublist->fn_field; diff --git a/gdb/xcoffread.c b/gdb/xcoffread.c index 8c707aa8fe68..4f9b315eca52 100644 --- a/gdb/xcoffread.c +++ b/gdb/xcoffread.c @@ -2097,8 +2097,7 @@ xcoff_end_psymtab (struct objfile *objfile, struct partial_symtab *pst, struct partial_symtab *subpst = allocate_psymtab (include_list[i], objfile); - subpst->read_symtab_private = obstack_alloc (&objfile->objfile_obstack, - sizeof (struct symloc)); + subpst->read_symtab_private = XOBNEW (&objfile->objfile_obstack, symloc); ((struct symloc *) subpst->read_symtab_private)->first_symnum = 0; ((struct symloc *) subpst->read_symtab_private)->numsyms = 0; subpst->textlow = 0; -- 2.17.0