X-Git-Url: https://oss.titaniummirror.com/gitweb?p=msp430-binutils.git;a=blobdiff_plain;f=gas%2Fconfig%2Ftc-i370.c;fp=gas%2Fconfig%2Ftc-i370.c;h=3c7b1403fc40acd4c3669be7109734d00723bcba;hp=c6bedb7cc2072e4987772e873b57e49c5e6a2952;hb=88750007d7869f178f0ba528f41efd3b74c424cf;hpb=6df9443a374e2b81278c61b8afc0a1eef7db280b diff --git a/gas/config/tc-i370.c b/gas/config/tc-i370.c index c6bedb7..3c7b140 100644 --- a/gas/config/tc-i370.c +++ b/gas/config/tc-i370.c @@ -1,7 +1,7 @@ /* tc-i370.c -- Assembler for the IBM 360/370/390 instruction set. Loosely based on the ppc files by Linas Vepstas 1998, 99 Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, - 2004, 2005, 2006, 2007 Free Software Foundation, Inc. + 2004, 2005, 2006, 2007, 2009 Free Software Foundation, Inc. Written by Ian Lance Taylor, Cygnus Support. This file is part of GAS, the GNU Assembler. @@ -416,7 +416,7 @@ md_parse_option (int c, char *arg) #endif else { - as_bad ("invalid switch -m%s", arg); + as_bad (_("invalid switch -m%s"), arg); return 0; } break; @@ -513,7 +513,7 @@ md_begin (void) retval = hash_insert (i370_hash, op->name, (void *) op); if (retval != (const char *) NULL) { - as_bad ("Internal assembler error for instruction %s", op->name); + as_bad (_("Internal assembler error for instruction %s"), op->name); dup_insn = TRUE; } } @@ -532,7 +532,7 @@ md_begin (void) retval = hash_insert (i370_macro_hash, macro->name, (void *) macro); if (retval != (const char *) NULL) { - as_bad ("Internal assembler error for macro %s", macro->name); + as_bad (_("Internal assembler error for macro %s"), macro->name); dup_insn = TRUE; } } @@ -627,7 +627,7 @@ i370_elf_suffix (char **str_p, expressionS *exp_p) || ptr->reloc == BFD_RELOC_LO16_GOTOFF || ptr->reloc == BFD_RELOC_HI16_GOTOFF || ptr->reloc == BFD_RELOC_HI16_S_GOTOFF)) - as_warn ("identifier+constant@got means identifier@got+constant"); + as_warn (_("identifier+constant@got means identifier@got+constant")); /* Now check for identifier@suffix+constant */ if (*str == '-' || *str == '+') @@ -681,7 +681,8 @@ i370_elf_cons (int nbytes) /* 1=.byte, 2=.word, 4=.long. */ int size = bfd_get_reloc_size (reloc_howto); if (size > nbytes) - as_bad ("%s relocations do not fit in %d bytes\n", reloc_howto->name, nbytes); + as_bad (_("%s relocations do not fit in %d bytes\n"), + reloc_howto->name, nbytes); else { char *p = frag_more ((int) nbytes); @@ -921,7 +922,7 @@ i370_dc (int unused ATTRIBUTE_UNUSED) nbytes = 8; break; default: - as_bad ("unsupported DC type"); + as_bad (_("unsupported DC type")); return; } @@ -935,7 +936,7 @@ i370_dc (int unused ATTRIBUTE_UNUSED) if (close) *close= ' '; else - as_bad ("missing end-quote"); + as_bad (_("missing end-quote")); } if ('\"' == *input_line_pointer) @@ -947,7 +948,7 @@ i370_dc (int unused ATTRIBUTE_UNUSED) if (close) *close= ' '; else - as_bad ("missing end-quote"); + as_bad (_("missing end-quote")); } switch (type) @@ -958,13 +959,14 @@ i370_dc (int unused ATTRIBUTE_UNUSED) emit_expr (&exp, nbytes); break; case 'E': /* 32-bit */ + type = 'f'; case 'D': /* 64-bit */ md_atof (type, tmp, &nbytes); p = frag_more (nbytes); memcpy (p, tmp, nbytes); break; default: - as_bad ("unsupported DC type"); + as_bad (_("unsupported DC type")); return; } @@ -994,14 +996,14 @@ i370_ds (int unused ATTRIBUTE_UNUSED) alignment = 3; break; default: - as_bad ("unsupported alignment"); + as_bad (_("unsupported alignment")); return; } frag_align (alignment, 0, 0); record_alignment (now_seg, alignment); } else - as_bad ("this DS form not yet supported"); + as_bad (_("this DS form not yet supported")); } /* Solaris pseudo op to change to the .rodata section. */ @@ -1044,7 +1046,7 @@ i370_elf_lcomm (int unused ATTRIBUTE_UNUSED) SKIP_WHITESPACE (); if (*input_line_pointer != ',') { - as_bad ("Expected comma after symbol-name: rest of line ignored."); + as_bad (_("Expected comma after symbol-name: rest of line ignored.")); ignore_rest_of_line (); return; } @@ -1053,7 +1055,7 @@ i370_elf_lcomm (int unused ATTRIBUTE_UNUSED) input_line_pointer++; if ((size = get_absolute_expression ()) < 0) { - as_warn (".COMMon length (%ld.) <0! Ignored.", (long) size); + as_warn (_(".COMMon length (%ld.) <0! Ignored."), (long) size); ignore_rest_of_line (); return; } @@ -1067,7 +1069,7 @@ i370_elf_lcomm (int unused ATTRIBUTE_UNUSED) align = get_absolute_expression (); if (align <= 0) { - as_warn ("ignoring bad alignment"); + as_warn (_("ignoring bad alignment")); align = 8; } } @@ -1078,7 +1080,7 @@ i370_elf_lcomm (int unused ATTRIBUTE_UNUSED) if (S_IS_DEFINED (symbolP) && ! S_IS_COMMON (symbolP)) { - as_bad ("Ignoring attempt to re-define symbol `%s'.", + as_bad (_("Ignoring attempt to re-define symbol `%s'."), S_GET_NAME (symbolP)); ignore_rest_of_line (); return; @@ -1086,7 +1088,7 @@ i370_elf_lcomm (int unused ATTRIBUTE_UNUSED) if (S_GET_VALUE (symbolP) && S_GET_VALUE (symbolP) != (valueT) size) { - as_bad ("Length of .lcomm \"%s\" is already %ld. Not changed to %ld.", + as_bad (_("Length of .lcomm \"%s\" is already %ld. Not changed to %ld."), S_GET_NAME (symbolP), (long) S_GET_VALUE (symbolP), (long) size); @@ -1105,7 +1107,7 @@ i370_elf_lcomm (int unused ATTRIBUTE_UNUSED) ; if (align != 1) { - as_bad ("Common alignment not a power of 2"); + as_bad (_("Common alignment not a power of 2")); ignore_rest_of_line (); return; } @@ -1243,7 +1245,7 @@ i370_make_relative (expressionS *exx, expressionS *baseaddr) exx->X_add_number += baseaddr->X_add_number; } else - as_bad ("Missing or bad .using directive"); + as_bad (_("Missing or bad .using directive")); } /* Add an expression to the literal pool. */ @@ -1288,7 +1290,7 @@ add_to_lit_pool (expressionS *exx, char *name, int sz) if (lit_count == next_literal_pool_place) /* new entry */ { if (next_literal_pool_place > MAX_LITERAL_POOL_SIZE) - as_bad ("Literal Pool Overflow"); + as_bad (_("Literal Pool Overflow")); literals[next_literal_pool_place].exp = *exx; literals[next_literal_pool_place].size = sz; @@ -1527,7 +1529,7 @@ i370_addr_cons (expressionS *exp) if (close) *close= ' '; else - as_bad ("missing end-quote"); + as_bad (_("missing end-quote")); } if ('\"' == *input_line_pointer) { @@ -1537,7 +1539,7 @@ i370_addr_cons (expressionS *exp) if (close) *close= ' '; else - as_bad ("missing end-quote"); + as_bad (_("missing end-quote")); } if (('X' == name[0]) || ('E' == name[0]) || ('D' == name[0])) { @@ -1584,14 +1586,14 @@ i370_addr_cons (expressionS *exp) /* O_big occurs when more than 4 bytes worth gets parsed. */ if ((exp->X_op != O_constant) && (exp->X_op != O_big)) { - as_bad ("expression not a constant"); + as_bad (_("expression not a constant")); return FALSE; } add_to_lit_pool (exp, 0x0, cons_len); break; default: - as_bad ("Unknown/unsupported address literal type"); + as_bad (_("Unknown/unsupported address literal type")); return FALSE; } @@ -1614,11 +1616,11 @@ i370_ltorg (int ignore ATTRIBUTE_UNUSED) if (strncmp (now_seg->name, ".text", 5)) { if (i370_other_section == undefined_section) - as_bad (".ltorg without prior .using in section %s", + as_bad (_(".ltorg without prior .using in section %s"), now_seg->name); if (i370_other_section != now_seg) - as_bad (".ltorg in section %s paired to .using in section %s", + as_bad (_(".ltorg in section %s paired to .using in section %s"), now_seg->name, i370_other_section->name); } @@ -1641,7 +1643,7 @@ i370_ltorg (int ignore ATTRIBUTE_UNUSED) else if (2 == biggest_literal_size) biggest_align = 1; else if (4 == biggest_literal_size) biggest_align = 2; else if (8 == biggest_literal_size) biggest_align = 3; - else as_bad ("bad alignment of %d bytes in literal pool", biggest_literal_size); + else as_bad (_("bad alignment of %d bytes in literal pool"), biggest_literal_size); if (0 == biggest_align) biggest_align = 1; /* Align pool for short, word, double word accesses. */ @@ -1665,7 +1667,7 @@ i370_ltorg (int ignore ATTRIBUTE_UNUSED) case 1: current_poolP = byte_poolP; break; default: - as_bad ("bad literal size\n"); + as_bad (_("bad literal size\n")); } if (NULL == current_poolP) continue; @@ -1739,7 +1741,7 @@ i370_using (int ignore ATTRIBUTE_UNUSED) if (O_constant != baseaddr.X_op && O_symbol != baseaddr.X_op && O_uminus != baseaddr.X_op) - as_bad (".using: base address expression illegal or too complex"); + as_bad (_(".using: base address expression illegal or too complex")); if (*input_line_pointer != '\0') ++input_line_pointer; @@ -1774,7 +1776,7 @@ i370_drop (int ignore ATTRIBUTE_UNUSED) if (0 == strncmp (now_seg->name, ".text", 5)) { if (iregno != i370_using_text_regno) - as_bad ("droping register %d in section %s does not match using register %d", + as_bad (_("droping register %d in section %s does not match using register %d"), iregno, now_seg->name, i370_using_text_regno); i370_using_text_regno = -1; @@ -1783,11 +1785,11 @@ i370_drop (int ignore ATTRIBUTE_UNUSED) else { if (iregno != i370_using_other_regno) - as_bad ("droping register %d in section %s does not match using register %d", + as_bad (_("droping register %d in section %s does not match using register %d"), iregno, now_seg->name, i370_using_other_regno); if (i370_other_section != now_seg) - as_bad ("droping register %d in section %s previously used in section %s", + as_bad (_("droping register %d in section %s previously used in section %s"), iregno, now_seg->name, i370_other_section->name); i370_using_other_regno = -1; @@ -1843,7 +1845,7 @@ i370_macro (char *str, const struct i370_macro *macro) if (count != macro->operands) { - as_bad ("wrong number of operands"); + as_bad (_("wrong number of operands")); return; } @@ -1922,10 +1924,10 @@ md_assemble (char *str) { const struct i370_macro *macro; - assert (i370_macro_hash); + gas_assert (i370_macro_hash); macro = (const struct i370_macro *) hash_find (i370_macro_hash, str); if (macro == (const struct i370_macro *) NULL) - as_bad ("Unrecognized opcode: `%s'", str); + as_bad (_("Unrecognized opcode: `%s'"), str); else i370_macro (s, macro); @@ -2070,7 +2072,7 @@ md_assemble (char *str) basereg = i370_using_other_regno; } if (0 > basereg) - as_bad ("not using any base register"); + as_bad (_("not using any base register")); insn = i370_insert_operand (insn, operand, basereg); continue; @@ -2100,7 +2102,7 @@ md_assemble (char *str) } if (! register_name (&ex)) - as_bad ("expecting a register for operand %d", + as_bad (_("expecting a register for operand %d"), (int) (opindex_ptr - opcode->operands + 1)); } @@ -2124,9 +2126,9 @@ md_assemble (char *str) ex.X_add_number --; if (ex.X_op == O_illegal) - as_bad ("illegal operand"); + as_bad (_("illegal operand")); else if (ex.X_op == O_absent) - as_bad ("missing operand"); + as_bad (_("missing operand")); else if (ex.X_op == O_register) insn = i370_insert_operand (insn, operand, ex.X_add_number); else if (ex.X_op == O_constant) @@ -2206,7 +2208,7 @@ md_assemble (char *str) ++str; if (*str != '\0') - as_bad ("junk at end of line: `%s'", str); + as_bad (_("junk at end of line: `%s'"), str); /* Write out the instruction. */ f = frag_more (opcode->len); @@ -2221,7 +2223,7 @@ md_assemble (char *str) else { /* Not used --- don't have any 8 byte instructions. */ - as_bad ("Internal Error: bad instruction length"); + as_bad (_("Internal Error: bad instruction length")); md_number_to_chars ((f + 4), insn.i[1], opcode->len -4); } } @@ -2355,53 +2357,12 @@ i370_tc (int ignore ATTRIBUTE_UNUSED) } } -/* Turn a string in input_line_pointer into a floating point constant - of type TYPE, and store the appropriate bytes in *LITP. The number - of LITTLENUMS emitted is stored in *SIZEP. An error message is - returned, or NULL on OK. */ - char * md_atof (int type, char *litp, int *sizep) { - int prec; - LITTLENUM_TYPE words[4]; - char *t; - int i; - - switch (type) - { - case 'f': - case 'E': - type = 'f'; - prec = 2; - break; - - case 'd': - case 'D': - type = 'd'; - prec = 4; - break; - - default: - *sizep = 0; - return "bad call to md_atof"; - } - /* 360/370/390 have two float formats: an old, funky 360 single-precision - * format, and the ieee format. Support only the ieee format. */ - t = atof_ieee (input_line_pointer, type, words); - if (t) - input_line_pointer = t; - - *sizep = prec * 2; - - for (i = 0; i < prec; i++) - { - md_number_to_chars (litp, (valueT) words[i], 2); - litp += 2; - } - - return NULL; + format, and the ieee format. Support only the ieee format. */ + return ieee_md_atof (type, litp, sizep, TRUE); } /* Write a value out to the object file, using the appropriate @@ -2708,4 +2669,3 @@ const pseudo_typeS md_pseudo_table[] = { NULL, NULL, 0 } }; -