{
{ "align", s_align_bytes, 0 },
/* Pseudo-ops which must be defined. */
- { "bss", s390_bss, 0 },
+ { "bss", s390_bss, 0 },
{ "insn", s390_insn, 0 },
/* Pseudo-ops which must be overridden. */
{ "byte", s390_byte, 0 },
{ "c9", 9 },
{ "f0", 0 }, /* Floating point registers */
- { "f1", 1 },
- { "f10", 10 },
- { "f11", 11 },
- { "f12", 12 },
- { "f13", 13 },
- { "f14", 14 },
- { "f15", 15 },
- { "f2", 2 },
- { "f3", 3 },
- { "f4", 4 },
- { "f5", 5 },
- { "f6", 6 },
- { "f7", 7 },
- { "f8", 8 },
- { "f9", 9 },
+ { "f1", 1 },
+ { "f10", 10 },
+ { "f11", 11 },
+ { "f12", 12 },
+ { "f13", 13 },
+ { "f14", 14 },
+ { "f15", 15 },
+ { "f2", 2 },
+ { "f3", 3 },
+ { "f4", 4 },
+ { "f5", 5 },
+ { "f6", 6 },
+ { "f7", 7 },
+ { "f8", 8 },
+ { "f9", 9 },
{ "lit", 13 }, /* Pointer to literal pool */
*input_line_pointer = c;
/* Look to see if it's in the register table. */
- if (reg_number >= 0)
+ if (reg_number >= 0)
{
expressionP->X_op = O_register;
expressionP->X_add_number = reg_number;
-
+
/* Make the rest nice. */
expressionP->X_add_symbol = NULL;
expressionP->X_op_symbol = NULL;
case 'm':
if (arg != NULL && strcmp (arg, "regnames") == 0)
reg_names_p = true;
-
+
else if (arg != NULL && strcmp (arg, "no-regnames") == 0)
reg_names_p = false;
-
+
else
{
as_bad (_("invalid switch -m%s"), arg);
return 0;
}
break;
-
+
case 'A':
if (arg != NULL && strcmp (arg, "esa") == 0)
{
case 'V':
print_version_id ();
break;
-
+
/* -Qy, -Qn: SVR4 arguments controlling whether a .comment section
should be emitted or not. FIXME: Not implemented. */
case 'Q':
break;
-
+
default:
return 0;
}
-
+
return 1;
}
else
{
addressT min, max;
-
+
max = (((addressT) 1 << (operand->bits - 1))<<1) - 1;
min = (offsetT) 0;
uval = (addressT) val;
const char *err =
"operand out of range (%s not between %ld and %ld)";
char buf[100];
-
+
if (operand->flags & S390_OPERAND_LENGTH)
{
uval++;
return exp1->X_add_number == exp2->X_add_number;
case O_big:
- as_bad (_("Can't handle O_big in s390_exp_compare"));
+ as_bad (_("Can't handle O_big in s390_exp_compare"));
case O_symbol: /* X_add_symbol & X_add_number must be equal. */
case O_symbol_rva:
if (*str++ != ':')
return suffix; /* No modification. */
-
+
/* We look for a suffix of the form "@lit1", "@lit2", "@lit4" or "@lit8". */
ident = str;
while (isalnum (*str))
else
lpe_list = lpe_list_tail = lpe;
}
-
+
/* Now change exp_p to the offset into the literal pool.
Thats the expression: .L^Ax^By-.L^Ax */
exp_p->X_add_symbol = lpe->sym;
reloc_howto->name, nbytes);
where = frag_more (nbytes);
md_number_to_chars (where, 0, size);
- fix_new_exp (frag_now, where - frag_now->fr_literal,
- size, &exp, reloc_howto->pc_relative, reloc);
+ /* To make fixup_segment do the pc relative conversion the
+ pcrel parameter on the fix_new_exp call needs to be false. */
+ fix_new_exp (frag_now, where - frag_now->fr_literal,
+ size, &exp, false, reloc);
}
else
as_bad (_("relocation not applicable"));
char *hold;
operand = s390_operands + *opindex_ptr;
-
+
if (skip_optional && (operand->flags & S390_OPERAND_INDEX))
{
/* We do an early skip. For D(X,B) constructions the index
- register is skipped (X is optional). For D(L,B) the base
+ register is skipped (X is optional). For D(L,B) the base
register will be the skipped operand, because L is NOT
optional. */
skip_optional = 0;
continue;
}
-
+
/* Gather the operand. */
hold = input_line_pointer;
input_line_pointer = str;
if (! register_name (&ex)) /* parse the operand */
expression (&ex);
-
+
str = input_line_pointer;
input_line_pointer = hold;
-
+
/* Write the operand to the insn. */
if (ex.X_op == O_illegal)
as_bad (_("illegal operand"));
fixups[fc].reloc = reloc;
++fc;
}
-
+
/* Check the next character. The call to expression has advanced
str past any whitespace. */
if (operand->flags & S390_OPERAND_DISP)
/* Ok, skip all operands until S390_OPERAND_BASE. */
while (!(operand->flags & S390_OPERAND_BASE))
operand = s390_operands + *(++opindex_ptr);
-
+
/* If there is a next operand it must be seperated by a comma. */
if (opindex_ptr[1] != '\0')
{
reloc_howto_type *reloc_howto;
fixS *fixP;
int size;
-
+
reloc_howto = bfd_reloc_type_lookup (stdoutput, fixups[i].reloc);
if (!reloc_howto)
abort ();
-
+
size = bfd_get_reloc_size (reloc_howto);
if (size < 1 || size > 4)
abort ();
-
- fixP = fix_new_exp (frag_now,
- f - frag_now->fr_literal + (operand->shift/8),
+
+ fixP = fix_new_exp (frag_now,
+ f - frag_now->fr_literal + (operand->shift/8),
size, &fixups[i].exp, reloc_howto->pc_relative,
fixups[i].reloc);
/* Turn off overflow checking in fixup_segment. This is necessary
}
else if (exp.X_op == O_big)
{
- if (exp.X_add_number > 0 &&
+ if (exp.X_add_number > 0 &&
opformat->oplen == 6 &&
generic_bignum[3] == 0)
{
}
/* The .ltorg pseudo-op.This emits all literals defined since the last
- .ltorg or the invocation of gas. Literals are defined with the
+ .ltorg or the invocation of gas. Literals are defined with the
@lit suffix. */
static void
/* Emit literal pool entry. */
if (lpe->reloc != BFD_RELOC_UNUSED)
{
- reloc_howto_type *reloc_howto =
+ reloc_howto_type *reloc_howto =
bfd_reloc_type_lookup (stdoutput, lpe->reloc);
int size = bfd_get_reloc_size (reloc_howto);
char *where;
md_number_to_chars (litp, (valueT) words[i], 2);
litp += 2;
}
-
+
return NULL;
}
&& S_GET_SEGMENT (fixp->fx_addsy) != undefined_section
&& ! bfd_is_com_section (S_GET_SEGMENT (fixp->fx_addsy)))
value -= S_GET_VALUE (fixp->fx_addsy);
-
+
if (fixp->fx_pcrel)
value += fixp->fx_frag->fr_address + fixp->fx_where;
}
{
const struct s390_operand *operand;
int opindex;
-
+
opindex = (int) fixp->fx_r_type - (int) BFD_RELOC_UNUSED;
operand = &s390_operands[opindex];
-
+
if (fixp->fx_done)
{
/* Insert the fully resolved operand value. */
return 1;
}
-
+
/* Determine a BFD reloc value based on the operand information.
We are only prepared to turn a few of the operands into
relocs. */
{
char *sfile;
unsigned int sline;
-
+
/* Use expr_symbol_where to see if this is an expression
symbol. */
if (expr_symbol_where (fixp->fx_addsy, &sfile, &sline))
mop = bfd_getb16 ((unsigned char *) where);
mop |= (unsigned short) (value & 0xfff);
bfd_putb16 ((bfd_vma) mop, (unsigned char *) where);
- }
+ }
break;
-
+
case BFD_RELOC_16:
case BFD_RELOC_GPREL16:
case BFD_RELOC_16_GOT_PCREL:
default:
{
const char *reloc_name = bfd_get_reloc_code_name (fixp->fx_r_type);
-
+
if (reloc_name != NULL)
fprintf (stderr, "Gas failure, reloc type %s\n", reloc_name);
else