Fri May 29 16:03:26 1998 Pat Rankin <rankin@eql.caltech.edu>

* config/tc-vax.c (_): Delete this macro used for placeholder
	values in vax_operand_width_size; it conflicts with the _() macro
	used for internationalization.
This commit is contained in:
Ian Lance Taylor
1998-05-29 20:08:25 +00:00
parent 4ea4905324
commit 1a20177a13
2 changed files with 123 additions and 119 deletions

View File

@ -1,3 +1,9 @@
Fri May 29 16:03:26 1998 Pat Rankin <rankin@eql.caltech.edu>
* config/tc-vax.c (_): Delete this macro used for placeholder
values in vax_operand_width_size; it conflicts with the _() macro
used for internationalization.
Fri May 29 13:46:07 1998 Ian Lance Taylor <ian@cygnus.com> Fri May 29 13:46:07 1998 Ian Lance Taylor <ian@cygnus.com>
Based on patch from Klaus Kaempf <kkaempf@progis.de>: Based on patch from Klaus Kaempf <kkaempf@progis.de>:

View File

@ -1,5 +1,5 @@
/* tc-vax.c - vax-specific - /* tc-vax.c - vax-specific -
Copyright (C) 1987, 1991, 1992, 1994 Free Software Foundation, Inc. Copyright (C) 1987, 91, 92, 93, 94, 95, 1998 Free Software Foundation, Inc.
This file is part of GAS, the GNU Assembler. This file is part of GAS, the GNU Assembler.
@ -14,8 +14,9 @@
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with GAS; see the file COPYING. If not, write to along with GAS; see the file COPYING. If not, write to the Free
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA. */
#include "as.h" #include "as.h"
@ -183,8 +184,7 @@ int flag_no_hash_mixed_case; /* -h NUM */
/* This macro has no side-effects. */ /* This macro has no side-effects. */
#define ENCODE_RELAX(what,length) (((what) << 2) + (length)) #define ENCODE_RELAX(what,length) (((what) << 2) + (length))
const relax_typeS const relax_typeS md_relax_table[] =
md_relax_table[] =
{ {
{1, 1, 0, 0}, /* error sentinel 0,0 */ {1, 1, 0, 0}, /* error sentinel 0,0 */
{1, 1, 0, 0}, /* unused 0,1 */ {1, 1, 0, 0}, /* unused 0,1 */
@ -244,9 +244,9 @@ const pseudo_typeS md_pseudo_table[] =
int flonum_gen2vax PARAMS ((char format_letter, FLONUM_TYPE * f, int flonum_gen2vax PARAMS ((char format_letter, FLONUM_TYPE * f,
LITTLENUM_TYPE * words)); LITTLENUM_TYPE * words));
static const char *vip_begin PARAMS ((int, char *, char *, char *)); static const char *vip_begin PARAMS ((int, const char *, const char *,
static void vip_op_defaults PARAMS ((char *immediate, char *indirect, const char *));
char *displen)); static void vip_op_defaults PARAMS ((const char *, const char *, const char *));
static void vip_op PARAMS ((char *, struct vop *)); static void vip_op PARAMS ((char *, struct vop *));
static void vip PARAMS ((struct vit *, char *)); static void vip PARAMS ((struct vit *, char *));
@ -259,7 +259,7 @@ md_begin ()
if ((errtxt = vip_begin (1, "$", "*", "`")) != 0) if ((errtxt = vip_begin (1, "$", "*", "`")) != 0)
{ {
as_fatal ("VIP_BEGIN error:%s", errtxt); as_fatal (_("VIP_BEGIN error:%s"), errtxt);
} }
for (i = 0, fP = float_operand; for (i = 0, fP = float_operand;
@ -364,7 +364,7 @@ md_assemble (instruction_string)
*/ */
if ((goofed = (*v.vit_error)) != 0) if ((goofed = (*v.vit_error)) != 0)
{ {
as_warn ("Ignoring statement due to \"%s\"", v.vit_error); as_warn (_("Ignoring statement due to \"%s\""), v.vit_error);
} }
/* /*
* We need to use expression() and friends, which require us to diddle * We need to use expression() and friends, which require us to diddle
@ -383,7 +383,7 @@ md_assemble (instruction_string)
{ /* for each operand */ { /* for each operand */
if (operandP->vop_error) if (operandP->vop_error)
{ {
as_warn ("Ignoring statement because \"%s\"", operandP->vop_error); as_warn (_("Ignoring statement because \"%s\""), operandP->vop_error);
goofed = 1; goofed = 1;
} }
else else
@ -430,7 +430,7 @@ md_assemble (instruction_string)
* instruction operands. * instruction operands.
*/ */
need_pass_2 = 1; need_pass_2 = 1;
as_warn ("Can't relocate expression"); as_warn (_("Can't relocate expression"));
break; break;
case O_big: case O_big:
@ -533,7 +533,7 @@ md_assemble (instruction_string)
/* Wants to be a short literal. */ /* Wants to be a short literal. */
if (expP->X_add_number > 0) if (expP->X_add_number > 0)
{ {
as_warn ("Bignum not permitted in short literal. Immediate mode assumed."); as_warn (_("Bignum not permitted in short literal. Immediate mode assumed."));
operandP->vop_short = 'i'; operandP->vop_short = 'i';
operandP->vop_mode = 8; operandP->vop_mode = 8;
operandP->vop_reg = 0xF; /* VAX PC. */ operandP->vop_reg = 0xF; /* VAX PC. */
@ -542,7 +542,7 @@ md_assemble (instruction_string)
{ {
if (!can_be_short) if (!can_be_short)
{ {
as_warn ("Can't do flonum short literal: immediate mode used."); as_warn (_("Can't do flonum short literal: immediate mode used."));
operandP->vop_short = 'i'; operandP->vop_short = 'i';
operandP->vop_mode = 8; operandP->vop_mode = 8;
operandP->vop_reg = 0xF; /* VAX PC. */ operandP->vop_reg = 0xF; /* VAX PC. */
@ -587,7 +587,7 @@ md_assemble (instruction_string)
} }
else else
{ {
as_warn ("A bignum/flonum may not be a displacement: 0x%lx used", as_warn (_("A bignum/flonum may not be a displacement: 0x%lx used"),
(expP->X_add_number = 0x80000000L)); (expP->X_add_number = 0x80000000L));
/* Chosen so luser gets the most offset bits to patch later. */ /* Chosen so luser gets the most offset bits to patch later. */
} }
@ -907,9 +907,9 @@ md_assemble (instruction_string)
{ {
if (to_seg == SEG_ABSOLUTE) if (to_seg == SEG_ABSOLUTE)
{ {
if (this_add_number < 0 || this_add_number >= 64) if (this_add_number >= 64)
{ {
as_warn ("Short literal overflow(%ld.), immediate mode assumed.", as_warn (_("Short literal overflow(%ld.), immediate mode assumed."),
(long) this_add_number); (long) this_add_number);
operandP->vop_short = 'i'; operandP->vop_short = 'i';
operandP->vop_mode = 8; operandP->vop_mode = 8;
@ -918,7 +918,7 @@ md_assemble (instruction_string)
} }
else else
{ {
as_warn ("Forced short literal to immediate mode. now_seg=%s to_seg=%s", as_warn (_("Forced short literal to immediate mode. now_seg=%s to_seg=%s"),
segment_name (now_seg), segment_name (to_seg)); segment_name (now_seg), segment_name (to_seg));
operandP->vop_short = 'i'; operandP->vop_short = 'i';
operandP->vop_mode = 8; operandP->vop_mode = 8;
@ -977,7 +977,7 @@ md_assemble (instruction_string)
md_number_to_chars (p + 1, this_add_number, 4); md_number_to_chars (p + 1, this_add_number, 4);
if (length && length != 4) if (length && length != 4)
{ {
as_warn ("Length specification ignored. Address mode 9F used"); as_warn (_("Length specification ignored. Address mode 9F used"));
} }
} }
else else
@ -1022,11 +1022,20 @@ md_assemble (instruction_string)
if (operandP->vop_mode < 0xA) if (operandP->vop_mode < 0xA)
{ {
/* # or S^# or I^# */ /* # or S^# or I^# */
if (operandP->vop_access == 'v'
|| operandP->vop_access == 'a')
{
if (operandP->vop_access == 'v')
as_warn (_("Invalid operand: immediate value used as base address."));
else
as_warn (_("Invalid operand: immediate value used as address."));
/* gcc 2.6.3 is known to generate these in at least
one case. */
}
if (length == 0 if (length == 0
&& to_seg == SEG_ABSOLUTE && (expP->X_op != O_big) && to_seg == SEG_ABSOLUTE && (expP->X_op != O_big)
&& operandP->vop_mode == 8 /* No '@'. */ && operandP->vop_mode == 8 /* No '@'. */
&& this_add_number < 64 && this_add_number < 64)
&& this_add_number >= 0)
{ {
operandP->vop_short = 's'; operandP->vop_short = 's';
} }
@ -1269,8 +1278,9 @@ md_estimate_size_before_relax (fragP, segment)
* Caller will turn frag into a ".space 0". * Caller will turn frag into a ".space 0".
*/ */
void void
md_convert_frag (headers, fragP) md_convert_frag (headers, seg, fragP)
object_headers *headers; object_headers *headers;
segT seg;
fragS *fragP; fragS *fragP;
{ {
char *addressP; /* -> _var to change. */ char *addressP; /* -> _var to change. */
@ -1541,25 +1551,23 @@ static struct hash_control *op_hash;
static const short int vax_operand_width_size[256] = static const short int vax_operand_width_size[256] =
{ {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
#define _ 0 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 0, 0, 1, 0, 8, 0, 4, 8, 16, 0, 0, 0, 4, 0, 0,16, /* ..b.d.fgh...l..o */
_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 0, 8, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, /* .q.....w........ */
_, _, 1, _, 8, _, 4, 8, 16, _, _, _, 4, _, _, 16, /* ..b.d.fgh...l..o */ 0, 0, 1, 0, 8, 0, 4, 8, 16, 0, 0, 0, 4, 0, 0,16, /* ..b.d.fgh...l..o */
_, 8, _, _, _, _, _, 2, _, _, _, _, _, _, _, _, /* .q.....w........ */ 0, 8, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, /* .q.....w........ */
_, _, 1, _, 8, _, 4, 8, 16, _, _, _, 4, _, _, 16, /* ..b.d.fgh...l..o */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
_, 8, _, _, _, _, _, 2, _, _, _, _, _, _, _, _, /* .q.....w........ */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, };
_, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _};
#undef _
/* /*
* This perversion encodes all the vax opcodes as a bunch of strings. * This perversion encodes all the vax opcodes as a bunch of strings.
@ -1688,7 +1696,7 @@ static const struct vot
static const char * static const char *
vip_begin (synthetic_too, immediate, indirect, displen) vip_begin (synthetic_too, immediate, indirect, displen)
int synthetic_too; /* 1 means include jXXX op-codes. */ int synthetic_too; /* 1 means include jXXX op-codes. */
char *immediate, *indirect, *displen; const char *immediate, *indirect, *displen;
{ {
const struct vot *vP; /* scan votstrs */ const struct vot *vP; /* scan votstrs */
const char *retval = 0; /* error text */ const char *retval = 0; /* error text */
@ -1749,7 +1757,7 @@ vip (vitP, instring)
/* scan operands in struct vit */ /* scan operands in struct vit */
struct vop *operandp; struct vop *operandp;
/* error over all operands */ /* error over all operands */
char *alloperr; const char *alloperr;
/* Remember char, (we clobber it with '\0' temporarily). */ /* Remember char, (we clobber it with '\0' temporarily). */
char c; char c;
/* Op-code of this instruction. */ /* Op-code of this instruction. */
@ -1762,7 +1770,7 @@ vip (vitP, instring)
/* Operation-code is ended with whitespace. */ /* Operation-code is ended with whitespace. */
if (p - instring == 0) if (p - instring == 0)
{ {
vitP->vit_error = "No operator"; vitP->vit_error = _("No operator");
count = 0; count = 0;
memset (vitP->vit_opcode, '\0', sizeof (vitP->vit_opcode)); memset (vitP->vit_opcode, '\0', sizeof (vitP->vit_opcode));
} }
@ -1779,7 +1787,7 @@ vip (vitP, instring)
*p = c; /* Restore char after op-code. */ *p = c; /* Restore char after op-code. */
if (vwP == 0) if (vwP == 0)
{ {
vitP->vit_error = "Unknown operator"; vitP->vit_error = _("Unknown operator");
count = 0; count = 0;
memset (vitP->vit_opcode, '\0', sizeof (vitP->vit_opcode)); memset (vitP->vit_opcode, '\0', sizeof (vitP->vit_opcode));
} }
@ -1792,6 +1800,7 @@ vip (vitP, instring)
* We let instring track the text, while p tracks a part of the * We let instring track the text, while p tracks a part of the
* struct vot. * struct vot.
*/ */
const char *howp;
/* /*
* The lines below know about 2-byte opcodes starting FD,FE or FF. * The lines below know about 2-byte opcodes starting FD,FE or FF.
* They also understand synthetic opcodes. Note: * They also understand synthetic opcodes. Note:
@ -1804,16 +1813,16 @@ vip (vitP, instring)
count = 0; /* no operands seen yet */ count = 0; /* no operands seen yet */
instring = p; /* point just past operation code */ instring = p; /* point just past operation code */
alloperr = ""; alloperr = "";
for (p = vwP->vot_how, operandp = vitP->vit_operand; for (howp = vwP->vot_how, operandp = vitP->vit_operand;
!(alloperr && *alloperr) && *p; !(alloperr && *alloperr) && *howp;
operandp++, p += 2) operandp++, howp += 2)
{ {
/* /*
* Here to parse one operand. Leave instring pointing just * Here to parse one operand. Leave instring pointing just
* past any one ',' that marks the end of this operand. * past any one ',' that marks the end of this operand.
*/ */
if (!p[1]) if (!howp[1])
as_fatal ("odd number of bytes in operand description"); as_fatal (_("odd number of bytes in operand description"));
else if (*instring) else if (*instring)
{ {
for (q = instring; (c = *q) && c != ','; q++) for (q = instring; (c = *q) && c != ','; q++)
@ -1823,25 +1832,25 @@ vip (vitP, instring)
* character. * character.
*/ */
*q = 0; *q = 0;
operandp->vop_width = p[1]; operandp->vop_width = howp[1];
operandp->vop_nbytes = vax_operand_width_size[(unsigned) p[1]]; operandp->vop_nbytes = vax_operand_width_size[(unsigned) howp[1]];
operandp->vop_access = p[0]; operandp->vop_access = howp[0];
vip_op (instring, operandp); vip_op (instring, operandp);
*q = c; /* Restore input text. */ *q = c; /* Restore input text. */
if (operandp->vop_error) if (operandp->vop_error)
alloperr = "Bad operand"; alloperr = _("Bad operand");
instring = q + (c ? 1 : 0); /* next operand (if any) */ instring = q + (c ? 1 : 0); /* next operand (if any) */
count++; /* won another argument, may have an operr */ count++; /* won another argument, may have an operr */
} }
else else
alloperr = "Not enough operands"; alloperr = _("Not enough operands");
} }
if (!*alloperr) if (!*alloperr)
{ {
if (*instring == ' ') if (*instring == ' ')
instring++; /* Skip whitespace. */ instring++; /* Skip whitespace. */
if (*instring) if (*instring)
alloperr = "Too many operands"; alloperr = _("Too many operands");
} }
vitP->vit_error = alloperr; vitP->vit_error = alloperr;
} }
@ -2184,7 +2193,7 @@ static char vip_metacharacters[256];
static void static void
vip_op_1 (bit, syms) vip_op_1 (bit, syms)
int bit; int bit;
char *syms; const char *syms;
{ {
unsigned char t; unsigned char t;
@ -2195,9 +2204,9 @@ vip_op_1 (bit, syms)
/* Can be called any time. More arguments may appear in future. */ /* Can be called any time. More arguments may appear in future. */
static void static void
vip_op_defaults (immediate, indirect, displen) vip_op_defaults (immediate, indirect, displen)
char *immediate; const char *immediate;
char *indirect; const char *indirect;
char *displen; const char *displen;
{ {
vip_op_1 (VIP_IMMEDIATE, immediate); vip_op_1 (VIP_IMMEDIATE, immediate);
vip_op_1 (VIP_INDIRECT, indirect); vip_op_1 (VIP_INDIRECT, indirect);
@ -2297,9 +2306,9 @@ vip_op (optext, vopP)
/* " " is a FAKE error: means we won */ /* " " is a FAKE error: means we won */
/* ANY err that begins with ' ' is a fake. */ /* ANY err that begins with ' ' is a fake. */
/* " " is converted to "" before return */ /* " " is converted to "" before return */
char *err; const char *err;
/* warn about weird modes pf address */ /* warn about weird modes pf address */
char *wrn; const char *wrn;
/* preserve q in case we backup */ /* preserve q in case we backup */
char *oldq = NULL; char *oldq = NULL;
/* build up 4-bit operand mode here */ /* build up 4-bit operand mode here */
@ -2311,10 +2320,10 @@ vip_op (optext, vopP)
* get the types wrong below, we lose at compile time rather than at * get the types wrong below, we lose at compile time rather than at
* lint or run time. * lint or run time.
*/ */
char access; /* vop_access. */ char access_mode; /* vop_access. */
char width; /* vop_width. */ char width; /* vop_width. */
access = vopP->vop_access; access_mode = vopP->vop_access;
width = vopP->vop_width; width = vopP->vop_width;
/* None of our code bugs (yet), no user text errors, no warnings /* None of our code bugs (yet), no user text errors, no warnings
even. */ even. */
@ -2386,7 +2395,7 @@ vip_op (optext, vopP)
q--; q--;
/* either q<p or we got matching '[' */ /* either q<p or we got matching '[' */
if (q < p) if (q < p)
err = "no '[' to match ']'"; err = _("no '[' to match ']'");
else else
{ {
/* /*
@ -2404,9 +2413,9 @@ vip_op (optext, vopP)
* If luser hasn't given us one: be rude. * If luser hasn't given us one: be rude.
*/ */
if (ndx < 0) if (ndx < 0)
err = "bad register in []"; err = _("bad register in []");
else if (ndx == PC) else if (ndx == PC)
err = "[PC] index banned"; err = _("[PC] index banned");
else else
q--; /* point q just before "[...]" */ q--; /* point q just before "[...]" */
} }
@ -2441,7 +2450,7 @@ vip_op (optext, vopP)
q--; q--;
/* either q<p or we got matching '(' */ /* either q<p or we got matching '(' */
if (q < p) if (q < p)
err = "no '(' to match ')'"; err = _("no '(' to match ')'");
else else
{ {
/* /*
@ -2573,10 +2582,10 @@ vip_op (optext, vopP)
* err " " or error message, and other outputs trashed * err " " or error message, and other outputs trashed
*/ */
/* branch operands have restricted forms */ /* branch operands have restricted forms */
if ((!err || !*err) && access == 'b') if ((!err || !*err) && access_mode == 'b')
{ {
if (at || hash || sign || paren || ndx >= 0 || reg >= 0 || len != ' ') if (at || hash || sign || paren || ndx >= 0 || reg >= 0 || len != ' ')
err = "invalid branch operand"; err = _("invalid branch operand");
else else
err = " "; err = " ";
} }
@ -2602,27 +2611,27 @@ vip_op (optext, vopP)
* ndx -1 * ndx -1
* err " " or error message, and other outputs trashed * err " " or error message, and other outputs trashed
*/ */
if ((!err || !*err) && access == ' ') if ((!err || !*err) && access_mode == ' ')
{ {
if (at) if (at)
err = "address prohibits @"; err = _("address prohibits @");
else if (hash) else if (hash)
err = "address prohibits #"; err = _("address prohibits #");
else if (sign) else if (sign)
{ {
if (sign < 0) if (sign < 0)
err = "address prohibits -()"; err = _("address prohibits -()");
else else
err = "address prohibits ()+"; err = _("address prohibits ()+");
} }
else if (paren) else if (paren)
err = "address prohibits ()"; err = _("address prohibits ()");
else if (ndx >= 0) else if (ndx >= 0)
err = "address prohibits []"; err = _("address prohibits []");
else if (reg >= 0) else if (reg >= 0)
err = "address prohibits register"; err = _("address prohibits register");
else if (len != ' ') else if (len != ' ')
err = "address prohibits displacement length specifier"; err = _("address prohibits displacement length specifier");
else else
{ {
err = " "; /* succeed */ err = " "; /* succeed */
@ -2652,7 +2661,7 @@ vip_op (optext, vopP)
if ((!err || !*err) && len == 's') if ((!err || !*err) && len == 's')
{ {
if (!hash || paren || at || ndx >= 0) if (!hash || paren || at || ndx >= 0)
err = "invalid operand of S^#"; err = _("invalid operand of S^#");
else else
{ {
if (reg >= 0) if (reg >= 0)
@ -2669,14 +2678,14 @@ vip_op (optext, vopP)
* We have all the expression we will ever get. * We have all the expression we will ever get.
*/ */
if (p > q) if (p > q)
err = "S^# needs expression"; err = _("S^# needs expression");
else if (access == 'r') else if (access_mode == 'r')
{ {
err = " "; /* WIN! */ err = " "; /* WIN! */
mode = 0; mode = 0;
} }
else else
err = "S^# may only read-access"; err = _("S^# may only read-access");
} }
} }
@ -2701,15 +2710,15 @@ vip_op (optext, vopP)
if ((!err || !*err) && sign < 0) if ((!err || !*err) && sign < 0)
{ {
if (len != ' ' || hash || at || p <= q) if (len != ' ' || hash || at || p <= q)
err = "invalid operand of -()"; err = _("invalid operand of -()");
else else
{ {
err = " "; /* win */ err = " "; /* win */
mode = 7; mode = 7;
if (reg == PC) if (reg == PC)
wrn = "-(PC) unpredictable"; wrn = _("-(PC) unpredictable");
else if (reg == ndx) else if (reg == ndx)
wrn = "[]index same as -()register: unpredictable"; wrn = _("[]index same as -()register: unpredictable");
} }
} }
@ -2745,15 +2754,15 @@ vip_op (optext, vopP)
if ((!err || !*err) && sign > 0) if ((!err || !*err) && sign > 0)
{ {
if (len != ' ' || hash || p <= q) if (len != ' ' || hash || p <= q)
err = "invalid operand of ()+"; err = _("invalid operand of ()+");
else else
{ {
err = " "; /* win */ err = " "; /* win */
mode = 8 + (at ? 1 : 0); mode = 8 + (at ? 1 : 0);
if (reg == PC) if (reg == PC)
wrn = "(PC)+ unpredictable"; wrn = _("(PC)+ unpredictable");
else if (reg == ndx) else if (reg == ndx)
wrn = "[]index same as ()+register: unpredictable"; wrn = _("[]index same as ()+register: unpredictable");
} }
} }
@ -2778,9 +2787,9 @@ vip_op (optext, vopP)
if ((!err || !*err) && hash) if ((!err || !*err) && hash)
{ {
if (len != 'i' && len != ' ') if (len != 'i' && len != ' ')
err = "# conflicts length"; err = _("# conflicts length");
else if (paren) else if (paren)
err = "# bars register"; err = _("# bars register");
else else
{ {
if (reg >= 0) if (reg >= 0)
@ -2796,13 +2805,13 @@ vip_op (optext, vopP)
err = " "; /* win */ err = " "; /* win */
/* JF a bugfix, I think! */ /* JF a bugfix, I think! */
if (at && access == 'a') if (at && access_mode == 'a')
vopP->vop_nbytes = 4; vopP->vop_nbytes = 4;
mode = (at ? 9 : 8); mode = (at ? 9 : 8);
reg = PC; reg = PC;
if ((access == 'm' || access == 'w') && !at) if ((access_mode == 'm' || access_mode == 'w') && !at)
wrn = "writing or modifying # is unpredictable"; wrn = _("writing or modifying # is unpredictable");
} }
} }
/* /*
@ -2832,16 +2841,16 @@ vip_op (optext, vopP)
if ((!err || !*err) && !paren && reg >= 0) if ((!err || !*err) && !paren && reg >= 0)
{ {
if (len != ' ') if (len != ' ')
err = "length not needed"; err = _("length not needed");
else if (at) else if (at)
{ {
err = " "; /* win */ err = " "; /* win */
mode = 6; /* @Rn */ mode = 6; /* @Rn */
} }
else if (ndx >= 0) else if (ndx >= 0)
err = "can't []index a register, because it has no address"; err = _("can't []index a register, because it has no address");
else if (access == 'a') else if (access_mode == 'a')
err = "a register has no address"; err = _("a register has no address");
else else
{ {
/* /*
@ -2852,7 +2861,7 @@ vip_op (optext, vopP)
* Compute highest byte affected, compare to PC0. * Compute highest byte affected, compare to PC0.
*/ */
if ((vopP->vop_nbytes + reg * 4) > 60) if ((vopP->vop_nbytes + reg * 4) > 60)
wrn = "PC part of operand unpredictable"; wrn = _("PC part of operand unpredictable");
err = " "; /* win */ err = " "; /* win */
mode = 5; /* Rn */ mode = 5; /* Rn */
} }
@ -3116,23 +3125,23 @@ md_parse_option (c, arg)
switch (c) switch (c)
{ {
case 'S': case 'S':
as_warn ("SYMBOL TABLE not implemented"); as_warn (_("SYMBOL TABLE not implemented"));
break; break;
case 'T': case 'T':
as_warn ("TOKEN TRACE not implemented"); as_warn (_("TOKEN TRACE not implemented"));
break; break;
case 'd': case 'd':
as_warn ("Displacement length %s ignored!", arg); as_warn (_("Displacement length %s ignored!"), arg);
break; break;
case 't': case 't':
as_warn ("I don't need or use temp. file \"%s\".", arg); as_warn (_("I don't need or use temp. file \"%s\"."), arg);
break; break;
case 'V': case 'V':
as_warn ("I don't use an interpass file! -V ignored"); as_warn (_("I don't use an interpass file! -V ignored"));
break; break;
#ifdef OBJ_VMS #ifdef OBJ_VMS
@ -3177,23 +3186,23 @@ void
md_show_usage (stream) md_show_usage (stream)
FILE *stream; FILE *stream;
{ {
fprintf(stream, "\ fprintf(stream, _("\
VAX options:\n\ VAX options:\n\
-d LENGTH ignored\n\ -d LENGTH ignored\n\
-J ignored\n\ -J ignored\n\
-S ignored\n\ -S ignored\n\
-t FILE ignored\n\ -t FILE ignored\n\
-T ignored\n\ -T ignored\n\
-V ignored\n"); -V ignored\n"));
#ifdef OBJ_VMS #ifdef OBJ_VMS
fprintf (stream, "\ fprintf (stream, _("\
VMS options:\n\ VMS options:\n\
-+ hash encode names longer than 31 characters\n\ -+ hash encode names longer than 31 characters\n\
-1 `const' handling compatible with gcc 1.x\n\ -1 `const' handling compatible with gcc 1.x\n\
-H show new symbol after hash truncation\n\ -H show new symbol after hash truncation\n\
-h NUM don't hash mixed-case names, and adjust case:\n\ -h NUM don't hash mixed-case names, and adjust case:\n\
0 = upper, 2 = lower, 3 = preserve case\n\ 0 = upper, 2 = lower, 3 = preserve case\n\
-v\"VERSION\" code being assembled was produced by compiler \"VERSION\"\n"); -v\"VERSION\" code being assembled was produced by compiler \"VERSION\"\n"));
#endif #endif
} }
@ -3207,17 +3216,6 @@ md_undefined_symbol (name)
return 0; return 0;
} }
/* Parse an operand that is machine-specific.
We just return without modifying the expression if we have nothing
to do. */
/* ARGSUSED */
void
md_operand (expressionP)
expressionS *expressionP;
{
}
/* Round up a section size to the appropriate boundary. */ /* Round up a section size to the appropriate boundary. */
valueT valueT
md_section_align (segment, size) md_section_align (segment, size)