Another field that only stores unsigned values.
* write.h (struct fix <fx_where>): Make unsigned.
(fix_new, fix_at_start, fix_new_exp): Adjust prototypes.
* write.c (fix_new, fix_new_exp, fix_at_start): Make "where" and
"size" parameters unsigned long.
(fix_new_internal): Likewise. Adjust error format string to suit.
* config/tc-mips.c (md_convert_frag): Remove cast of fx_where.
* config/tc-sparc.c (md_apply_fix): Likewise.
* config/tc-score.c (s3_convert_frag): Adjust for unsigned fx_where.
* config/tc-score7.c (s7_convert_frag): Likewise.
+2019-04-16 Alan Modra <amodra@gmail.com>
+
+ * write.h (struct fix <fx_where>): Make unsigned.
+ (fix_new, fix_at_start, fix_new_exp): Adjust prototypes.
+ * write.c (fix_new, fix_new_exp, fix_at_start): Make "where" and
+ "size" parameters unsigned long.
+ (fix_new_internal): Likewise. Adjust error format string to suit.
+ * config/tc-mips.c (md_convert_frag): Remove cast of fx_where.
+ * config/tc-sparc.c (md_apply_fix): Likewise.
+ * config/tc-score.c (s3_convert_frag): Adjust for unsigned fx_where.
+ * config/tc-score7.c (s7_convert_frag): Likewise.
+
2019-04-16 Alan Modra <amodra@gmail.com>
* frags.h (struct frag <fr_fix>): Use unsigned type.
sequence instead. */
while (fixp
&& fixp->fx_frag == fragp
- && (valueT) fixp->fx_where + second < fragp->fr_fix)
+ && fixp->fx_where + second < fragp->fr_fix)
{
if (subtype & RELAX_USE_SECOND)
fixp->fx_done = 1;
static void
s3_convert_frag (bfd * abfd ATTRIBUTE_UNUSED, segT sec ATTRIBUTE_UNUSED, fragS * fragp)
{
- int r_old;
- int r_new;
+ unsigned int r_old;
+ unsigned int r_new;
char backup[20];
fixS *fixp;
segT sec ATTRIBUTE_UNUSED,
fragS * fragp)
{
- int r_old;
- int r_new;
+ unsigned int r_old;
+ unsigned int r_new;
char backup[20];
fixS *fixp;
can be completely resolved here, i.e. if no undefined
symbol is associated with it. */
if (sparc_relax && fixP->fx_addsy == NULL
- && (valueT) fixP->fx_where + 8 <= fixP->fx_frag->fr_fix)
+ && fixP->fx_where + 8 <= fixP->fx_frag->fr_fix)
{
#define G0 0
#define O7 15
static fixS *
fix_new_internal (fragS *frag, /* Which frag? */
- int where, /* Where in that frag? */
- int size, /* 1, 2, or 4 usually. */
+ unsigned long where, /* Where in that frag? */
+ unsigned long size, /* 1, 2, or 4 usually. */
symbolS *add_symbol, /* X_add_symbol. */
symbolS *sub_symbol, /* X_op_symbol. */
offsetT offset, /* X_add_number. */
/* We've made fx_size a narrow field; check that it's wide enough. */
if (fixP->fx_size != size)
{
- as_bad (_("field fx_size too small to hold %d"), size);
+ as_bad (_("field fx_size too small to hold %lu"), size);
abort ();
}
fixP->fx_addsy = add_symbol;
/* Create a fixup relative to a symbol (plus a constant). */
fixS *
-fix_new (fragS *frag, /* Which frag? */
- int where, /* Where in that frag? */
- int size, /* 1, 2, or 4 usually. */
- symbolS *add_symbol, /* X_add_symbol. */
+fix_new (fragS *frag, /* Which frag? */
+ unsigned long where, /* Where in that frag? */
+ unsigned long size, /* 1, 2, or 4 usually. */
+ symbolS *add_symbol, /* X_add_symbol. */
offsetT offset, /* X_add_number. */
int pcrel, /* TRUE if PC-relative relocation. */
RELOC_ENUM r_type /* Relocation type. */)
fixS *
fix_new_exp (fragS *frag, /* Which frag? */
- int where, /* Where in that frag? */
- int size, /* 1, 2, or 4 usually. */
+ unsigned long where, /* Where in that frag? */
+ unsigned long size, /* 1, 2, or 4 usually. */
expressionS *exp, /* Expression. */
int pcrel, /* TRUE if PC-relative relocation. */
RELOC_ENUM r_type /* Relocation type. */)
as for fix_new, except that WHERE is implicitly 0. */
fixS *
-fix_at_start (fragS *frag, int size, symbolS *add_symbol,
+fix_at_start (fragS *frag, unsigned long size, symbolS *add_symbol,
offsetT offset, int pcrel, RELOC_ENUM r_type)
{
return fix_new_internal (frag, 0, size, add_symbol,
/* Which frag does this fix apply to? */
fragS *fx_frag;
- /* Where is the first byte to fix up? */
- long fx_where;
+ /* The location within the frag where the fixup occurs. */
+ unsigned long fx_where;
/* NULL or Symbol whose value we add in. */
symbolS *fx_addsy;
extern int relax_segment (struct frag *, segT, int);
extern void number_to_chars_littleendian (char *, valueT, int);
extern void number_to_chars_bigendian (char *, valueT, int);
-extern fixS *fix_new
- (fragS * frag, int where, int size, symbolS * add_symbol,
- offsetT offset, int pcrel, bfd_reloc_code_real_type r_type);
-extern fixS *fix_at_start
- (fragS * frag, int size, symbolS * add_symbol,
- offsetT offset, int pcrel, bfd_reloc_code_real_type r_type);
-extern fixS *fix_new_exp
- (fragS * frag, int where, int size, expressionS *exp, int pcrel,
- bfd_reloc_code_real_type r_type);
+extern fixS *fix_new (fragS *, unsigned long, unsigned long, symbolS *,
+ offsetT, int, bfd_reloc_code_real_type);
+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);
extern void write_print_statistics (FILE *);
#endif /* __write_h__ */