X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gas%2Fconfig%2Ftc-tic30.c;h=725691c3acaaa40922bae2bd64015896ec2a2ebc;hb=c1f61bd2b0644fc710dcfbb378a63f0b34be8903;hp=7dea5d7f9d3ac1e7290513c591059df2ea5d8e04;hpb=91d6fa6a035cc7d0b7be5c99c194a64cb80924b0;p=deliverable%2Fbinutils-gdb.git diff --git a/gas/config/tc-tic30.c b/gas/config/tc-tic30.c index 7dea5d7f9d..725691c3ac 100644 --- a/gas/config/tc-tic30.c +++ b/gas/config/tc-tic30.c @@ -1,6 +1,5 @@ /* tc-c30.c -- Assembly code for the Texas Instruments TMS320C30 - Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006, 2007, 2009 - Free Software Foundation, Inc. + Copyright (C) 1998-2016 Free Software Foundation, Inc. Contributed by Steven Haworth (steve@pm.cse.rmit.edu.au) This file is part of GAS, the GNU Assembler. @@ -32,9 +31,9 @@ /* Put here all non-digit non-letter characters that may occur in an operand. */ static char operand_special_chars[] = "%$-+(,)*._~/<>&^!:[@]"; -static char *ordinal_names[] = +static const char *ordinal_names[] = { - "first", "second", "third", "fourth", "fifth" + N_("first"), N_("second"), N_("third"), N_("fourth"), N_("fifth") }; const char comment_chars[] = ";"; @@ -85,11 +84,11 @@ debug (const char *string, ...) if (flag_debug) { char str[100]; + va_list argptr; - VA_OPEN (argptr, string); - VA_FIXEDARG (argptr, const char *, string); + va_start (argptr, string); vsprintf (str, string, argptr); - VA_CLOSE (argptr); + va_end (argptr); if (str[0] == '\0') return (0); fputs (str, USE_STDOUT ? stdout : stderr); @@ -281,7 +280,7 @@ output_invalid (char c) snprintf (output_invalid_buf, sizeof (output_invalid_buf), "'%c'", c); else - snprintf (output_invalid_buf, sizeof (output_invalid_buf), + snprintf (output_invalid_buf, sizeof (output_invalid_buf), "(0x%x)", (unsigned char) c); return output_invalid_buf; } @@ -400,12 +399,10 @@ static operand * tic30_operand (char *token) { unsigned int count; - char ind_buffer[strlen (token)]; operand *current_op; debug ("In tic30_operand with %s\n", token); - current_op = malloc (sizeof (* current_op)); - memset (current_op, '\0', sizeof (operand)); + current_op = XCNEW (operand); if (*token == DIRECT_REFERENCE) { @@ -464,6 +461,9 @@ tic30_operand (char *token) int disp_number = 0; int buffer_posn = 1; ind_addr_type *ind_addr_op; + char * ind_buffer; + + ind_buffer = XNEWVEC (char, strlen (token)); debug ("Found indirect reference\n"); ind_buffer[0] = *token; @@ -481,11 +481,13 @@ tic30_operand (char *token) if (found_ar) { as_bad (_("More than one AR register found in indirect reference")); + free (ind_buffer); return NULL; } if (*(token + count + 1) < '0' || *(token + count + 1) > '7') { as_bad (_("Illegal AR register in indirect reference")); + free (ind_buffer); return NULL; } ar_number = *(token + count + 1) - '0'; @@ -506,6 +508,7 @@ tic30_operand (char *token) if (found_disp) { as_bad (_("More than one displacement found in indirect reference")); + free (ind_buffer); return NULL; } count++; @@ -514,6 +517,7 @@ tic30_operand (char *token) if (!is_digit_char (*(token + count))) { as_bad (_("Invalid displacement in indirect reference")); + free (ind_buffer); return NULL; } disp[disp_posn++] = *(token + (count++)); @@ -531,6 +535,7 @@ tic30_operand (char *token) if (!found_ar) { as_bad (_("AR register not found in indirect reference")); + free (ind_buffer); return NULL; } @@ -547,18 +552,21 @@ tic30_operand (char *token) { /* Maybe an implied displacement of 1 again. */ as_bad (_("required displacement wasn't given in indirect reference")); - return 0; + free (ind_buffer); + return NULL; } } else { as_bad (_("illegal indirect reference")); + free (ind_buffer); return NULL; } if (found_disp && (disp_number < 0 || disp_number > 255)) { as_bad (_("displacement must be an unsigned 8-bit number")); + free (ind_buffer); return NULL; } @@ -566,6 +574,7 @@ tic30_operand (char *token) current_op->indirect.disp = disp_number; current_op->indirect.ARnum = ar_number; current_op->op_type = Indirect; + free (ind_buffer); } else { @@ -594,9 +603,7 @@ tic30_operand (char *token) segT retval; debug ("Probably a label: %s\n", token); - current_op->immediate.label = malloc (strlen (token) + 1); - strcpy (current_op->immediate.label, token); - current_op->immediate.label[strlen (token)] = '\0'; + current_op->immediate.label = xstrdup (token); save_input_line_pointer = input_line_pointer; input_line_pointer = token; @@ -624,9 +631,7 @@ tic30_operand (char *token) for (count = 0; count < strlen (token); count++) if (*(token + count) == '.') current_op->immediate.decimal_found = 1; - current_op->immediate.label = malloc (strlen (token) + 1); - strcpy (current_op->immediate.label, token); - current_op->immediate.label[strlen (token)] = '\0'; + current_op->immediate.label = xstrdup (token); current_op->immediate.f_number = (float) atof (token); current_op->immediate.s_number = (int) atoi (token); current_op->immediate.u_number = (unsigned int) atoi (token); @@ -1117,7 +1122,7 @@ md_estimate_size_before_relax (fragS *fragP ATTRIBUTE_UNUSED, void md_convert_frag (bfd *abfd ATTRIBUTE_UNUSED, segT sec ATTRIBUTE_UNUSED, - register fragS *fragP ATTRIBUTE_UNUSED) + fragS *fragP ATTRIBUTE_UNUSED) { debug ("In md_convert_frag()\n"); } @@ -1153,7 +1158,7 @@ md_apply_fix (fixS *fixP, int md_parse_option (int c ATTRIBUTE_UNUSED, - char *arg ATTRIBUTE_UNUSED) + const char *arg ATTRIBUTE_UNUSED) { debug ("In md_parse_option()\n"); return 0; @@ -1208,7 +1213,7 @@ md_pcrel_from (fixS *fixP) return fixP->fx_where - fixP->fx_size + (INSN_SIZE * offset); } -char * +const char * md_atof (int what_statement_type, char *literalP, int *sizeP) @@ -1385,9 +1390,9 @@ tc_gen_reloc (asection *section ATTRIBUTE_UNUSED, fixS *fixP) #undef MAP #undef F - rel = xmalloc (sizeof (* rel)); + rel = XNEW (arelent); gas_assert (rel != 0); - rel->sym_ptr_ptr = xmalloc (sizeof (asymbol *)); + rel->sym_ptr_ptr = XNEW (asymbol *); *rel->sym_ptr_ptr = symbol_get_bfdsym (fixP->fx_addsy); rel->address = fixP->fx_frag->fr_address + fixP->fx_where; rel->addend = 0;