X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gas%2Fconfig%2Fobj-coff.c;h=c4e1d71ce4e6ccfd46cd0cec6d5c69fcd7669248;hb=4288405d5ec2c68c7e9d8d68a090c6c9ff3825d1;hp=c0a3f1fbc52be3fd2b255e7a547c68433c03e1bc;hpb=d02603dc201f80cd9d2a1f4b1a16110b1e04222b;p=deliverable%2Fbinutils-gdb.git diff --git a/gas/config/obj-coff.c b/gas/config/obj-coff.c index c0a3f1fbc5..c4e1d71ce4 100644 --- a/gas/config/obj-coff.c +++ b/gas/config/obj-coff.c @@ -1,5 +1,5 @@ /* coff object file format - Copyright (C) 1989-2015 Free Software Foundation, Inc. + Copyright (C) 1989-2019 Free Software Foundation, Inc. This file is part of GAS. @@ -23,7 +23,6 @@ #include "as.h" #include "safe-ctype.h" #include "subsegs.h" -#include "struc-symbol.h" #ifdef TE_PE #include "coff/pe.h" @@ -77,10 +76,8 @@ stack_init (unsigned long chunk_size, { stack *st; - st = malloc (sizeof (* st)); - if (!st) - return NULL; - st->data = malloc (chunk_size); + st = XNEW (stack); + st->data = XNEWVEC (char, chunk_size); if (!st->data) { free (st); @@ -99,8 +96,7 @@ stack_push (stack *st, char *element) if (st->pointer + st->element_size >= st->size) { st->size += st->chunk_size; - if ((st->data = xrealloc (st->data, st->size)) == NULL) - return NULL; + st->data = XRESIZEVEC (char, st->data, st->size); } memcpy (st->data + st->pointer, element, st->element_size); st->pointer += st->element_size; @@ -239,9 +235,6 @@ obj_coff_comm (int ignore ATTRIBUTE_UNUSED) } #endif /* TE_PE */ -#define GET_FILENAME_STRING(X) \ - ((char *) (&((X)->sy_symbol.ost_auxent->x_file.x_n.x_offset))[1]) - /* @@ Ick. */ static segT fetch_coff_debug_section (void) @@ -383,7 +376,7 @@ void coff_obj_symbol_new_hook (symbolS *symbolP) { long sz = (OBJ_COFF_MAX_AUXENTRIES + 1) * sizeof (combined_entry_type); - char * s = xmalloc (sz); + char * s = XNEWVEC (char, sz); memset (s, 0, sz); coffsymbol (symbol_get_bfdsym (symbolP))->native = (combined_entry_type *) s; @@ -403,10 +396,11 @@ coff_obj_symbol_new_hook (symbolS *symbolP) void coff_obj_symbol_clone_hook (symbolS *newsymP, symbolS *orgsymP) { - long sz = (OBJ_COFF_MAX_AUXENTRIES + 1) * sizeof (combined_entry_type); - combined_entry_type * s = xmalloc (sz); + long elts = OBJ_COFF_MAX_AUXENTRIES + 1; + combined_entry_type * s = XNEWVEC (combined_entry_type, elts); - memcpy (s, coffsymbol (symbol_get_bfdsym (orgsymP))->native, sz); + memcpy (s, coffsymbol (symbol_get_bfdsym (orgsymP))->native, + elts * sizeof (combined_entry_type)); coffsymbol (symbol_get_bfdsym (newsymP))->native = s; SF_SET (newsymP, SF_GET (orgsymP)); @@ -423,7 +417,7 @@ int coff_n_line_nos; static void add_lineno (fragS * frag, addressT offset, int num) { - struct line_no * new_line = xmalloc (sizeof (* new_line)); + struct line_no * new_line = XNEW (struct line_no); if (!current_lineno_sym) abort (); @@ -592,7 +586,6 @@ obj_coff_def (int what ATTRIBUTE_UNUSED) char name_end; /* Char after the end of name. */ char *symbol_name; /* Name of the debug symbol. */ char *symbol_name_copy; /* Temporary copy of the name. */ - unsigned int symbol_name_length; if (def_symbol_in_progress != NULL) { @@ -604,9 +597,7 @@ obj_coff_def (int what ATTRIBUTE_UNUSED) SKIP_WHITESPACES (); name_end = get_symbol_name (&symbol_name); - symbol_name_length = strlen (symbol_name); - symbol_name_copy = xmalloc (symbol_name_length + 1); - strcpy (symbol_name_copy, symbol_name); + symbol_name_copy = xstrdup (symbol_name); #ifdef tc_canonicalize_symbol_name symbol_name_copy = tc_canonicalize_symbol_name (symbol_name_copy); #endif @@ -934,7 +925,7 @@ obj_coff_size (int ignore ATTRIBUTE_UNUSED) { if (def_symbol_in_progress == NULL) { - as_warn (_(".size pseudo-op used outside of .def/.endef ignored.")); + as_warn (_(".size pseudo-op used outside of .def/.endef: ignored.")); demand_empty_rest_of_line (); return; } @@ -949,7 +940,7 @@ obj_coff_scl (int ignore ATTRIBUTE_UNUSED) { if (def_symbol_in_progress == NULL) { - as_warn (_(".scl pseudo-op used outside of .def/.endef ignored.")); + as_warn (_(".scl pseudo-op used outside of .def/.endef: ignored.")); demand_empty_rest_of_line (); return; } @@ -966,7 +957,7 @@ obj_coff_tag (int ignore ATTRIBUTE_UNUSED) if (def_symbol_in_progress == NULL) { - as_warn (_(".tag pseudo-op used outside of .def/.endef ignored.")); + as_warn (_(".tag pseudo-op used outside of .def/.endef: ignored.")); demand_empty_rest_of_line (); return; } @@ -996,7 +987,7 @@ obj_coff_type (int ignore ATTRIBUTE_UNUSED) { if (def_symbol_in_progress == NULL) { - as_warn (_(".type pseudo-op used outside of .def/.endef ignored.")); + as_warn (_(".type pseudo-op used outside of .def/.endef: ignored.")); demand_empty_rest_of_line (); return; } @@ -1015,7 +1006,7 @@ obj_coff_val (int ignore ATTRIBUTE_UNUSED) { if (def_symbol_in_progress == NULL) { - as_warn (_(".val pseudo-op used outside of .def/.endef ignored.")); + as_warn (_(".val pseudo-op used outside of .def/.endef: ignored.")); demand_empty_rest_of_line (); return; } @@ -1083,11 +1074,7 @@ weak_is_altname (const char * name) static const char * weak_name2altname (const char * name) { - char *alt_name; - - alt_name = xmalloc (sizeof (weak_altprefix) + strlen (name)); - strcpy (alt_name, weak_altprefix); - return strcat (alt_name, name); + return concat (weak_altprefix, name, (char *) NULL); } /* Return the name of the weak symbol corresponding to an @@ -1106,7 +1093,6 @@ weak_altname2name (const char * name) static const char * weak_uniquify (const char * name) { - char *ret; const char * unique = ""; #ifdef TE_PE @@ -1115,11 +1101,7 @@ weak_uniquify (const char * name) #endif gas_assert (weak_is_altname (name)); - ret = xmalloc (strlen (name) + strlen (unique) + 2); - strcpy (ret, name); - strcat (ret, "."); - strcat (ret, unique); - return ret; + return concat (name, ".", unique, (char *) NULL); } void @@ -1455,7 +1437,7 @@ coff_frob_symbol (symbolS *symp, int *punt) /* We need i entries for line numbers, plus 1 for the first entry which BFD will override, plus 1 for the last zero entry (a marker for BFD). */ - l = xmalloc ((i + 2) * sizeof (* l)); + l = XNEWVEC (alent, (i + 2)); coffsymbol (symbol_get_bfdsym (symp))->lineno = l; l[i + 1].line_number = 0; l[i + 1].u.sym = NULL; @@ -1562,8 +1544,7 @@ obj_coff_section (int ignore ATTRIBUTE_UNUSED) } c = get_symbol_name (§ion_name); - name = xmalloc (input_line_pointer - section_name + 1); - strcpy (name, section_name); + name = xmemdup0 (section_name, input_line_pointer - section_name); *input_line_pointer = c; SKIP_WHITESPACE_AFTER_NAME (); @@ -1810,7 +1791,7 @@ coff_frob_section (segT sec) void obj_coff_init_stab_section (segT seg) { - char *file; + const char *file; char *p; char *stabstr_name; unsigned int stroff; @@ -1819,11 +1800,9 @@ obj_coff_init_stab_section (segT seg) p = frag_more (12); /* Zero it out. */ memset (p, 0, 12); - as_where (&file, (unsigned int *) NULL); - stabstr_name = xmalloc (strlen (seg->name) + 4); - strcpy (stabstr_name, seg->name); - strcat (stabstr_name, "str"); - stroff = get_stab_string_offset (file, stabstr_name); + file = as_where ((unsigned int *) NULL); + stabstr_name = concat (seg->name, "str", (char *) NULL); + stroff = get_stab_string_offset (file, stabstr_name, TRUE); know (stroff == 1); md_number_to_chars (p, stroff, 4); }