diff options
author | Alan Modra <amodra@gmail.com> | 2022-07-06 09:54:21 +0930 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2022-07-09 21:36:10 +0930 |
commit | 7bfc4db2893c5de00197e40ab52394979f83a75d (patch) | |
tree | 2241be46f5e1a57a9f5a8b62f680a205aa67f7aa /gas/config/tc-alpha.c | |
parent | a51628a9d49bf7abb89b71032aa38d7f596be674 (diff) | |
download | gdb-7bfc4db2893c5de00197e40ab52394979f83a75d.zip gdb-7bfc4db2893c5de00197e40ab52394979f83a75d.tar.gz gdb-7bfc4db2893c5de00197e40ab52394979f83a75d.tar.bz2 |
gas: target string hash tables
This allocates entries added to the string hash tables on the notes
obstack, so that at least those do not leak. A followup patch will
switch over the str_hash allocation to notes_calloc, which is why I
haven't implemented deleting all the target string hash tables.
* config/obj-coff-seh.c (get_pxdata_name, alloc_pxdata_item): Use
notes obstack for string hash table entries.
* config/tc-alpha.c (get_alpha_reloc_tag, md_begin): Likewise.
* config/tc-h8300.c (md_begin): Likewise.
* config/tc-ia64.c (dot_rot, dot_pred_rel, dot_alias): Likewise.
* config/tc-nds32.c (nds32_relax_hint): Likewise.
* config/tc-riscv.c (riscv_init_csr_hash): Likewise.
* config/tc-score.c (s3_insert_reg): Likewise.
(s3_build_score_ops_hsh, s3_build_dependency_insn_hsh): Likewise.
* config/tc-score7.c (s7_build_score_ops_hsh): Likewise.
(s7_build_dependency_insn_hsh): Likewise.
* config/tc-tic4x.c (tic4x_asg): Likewise.
Diffstat (limited to 'gas/config/tc-alpha.c')
-rw-r--r-- | gas/config/tc-alpha.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/gas/config/tc-alpha.c b/gas/config/tc-alpha.c index ecc6a2f..c305acc 100644 --- a/gas/config/tc-alpha.c +++ b/gas/config/tc-alpha.c @@ -594,8 +594,7 @@ get_alpha_reloc_tag (long sequence) { size_t len = strlen (buffer); - info = (struct alpha_reloc_tag *) - xcalloc (sizeof (struct alpha_reloc_tag) + len, 1); + info = notes_calloc (sizeof (struct alpha_reloc_tag) + len, 1); info->segment = now_seg; info->sequence = sequence; @@ -5434,10 +5433,12 @@ md_begin (void) if ((slash = strchr (name, '/')) != NULL) { - char *p = XNEWVEC (char, strlen (name)); + size_t len = strlen (name); + char *p = notes_alloc (len); + size_t len1 = slash - name; - memcpy (p, name, slash - name); - strcpy (p + (slash - name), slash + 1); + memcpy (p, name, len1); + memcpy (p + len1, slash + 1, len - len1); (void) str_hash_insert (alpha_opcode_hash, p, &alpha_opcodes[i], 0); /* Ignore failures -- the opcode table does duplicate some |