fix_new_exp (fragS *frag, /* Which frag? */
unsigned long where, /* Where in that frag? */
unsigned long size, /* 1, 2, or 4 usually. */
- expressionS *exp, /* Expression. */
+ const expressionS *exp, /* Expression. */
int pcrel, /* TRUE if PC-relative relocation. */
RELOC_ENUM r_type /* Relocation type. */)
{
as_bad (_("register value used as expression"));
break;
- case O_add:
- /* This comes up when _GLOBAL_OFFSET_TABLE_+(.-L0) is read, if
- the difference expression cannot immediately be reduced. */
- {
- symbolS *stmp = make_expr_symbol (exp);
-
- exp->X_op = O_symbol;
- exp->X_op_symbol = 0;
- exp->X_add_symbol = stmp;
- exp->X_add_number = 0;
-
- return fix_new_exp (frag, where, size, exp, pcrel, r_type);
- }
-
case O_symbol_rva:
add = exp->X_add_symbol;
off = exp->X_add_number;
off = exp->X_add_number;
break;
+ case O_add: /* This comes up when _GLOBAL_OFFSET_TABLE_+(.-L0) is read, if
+ the difference expression cannot immediately be reduced. */
default:
add = make_expr_symbol (exp);
break;
extern fixS *fix_at_start (fragS *, unsigned long, symbolS *,
offsetT, int, bfd_reloc_code_real_type);
extern fixS *fix_new_exp (fragS *, unsigned long, unsigned long,
- expressionS *, int, bfd_reloc_code_real_type);
+ const expressionS *, int, bfd_reloc_code_real_type);
extern void write_print_statistics (FILE *);
extern void as_bad_subtract (fixS *);