Make fixup fx_where unsigned
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.
This commit is contained in:
parent
871a6bd2d8
commit
90bd3c903f
@ -1,3 +1,15 @@
|
||||
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.
|
||||
|
@ -19099,7 +19099,7 @@ md_convert_frag (bfd *abfd ATTRIBUTE_UNUSED, segT asec, fragS *fragp)
|
||||
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;
|
||||
|
@ -7011,8 +7011,8 @@ s3_relax_frag (asection * sec ATTRIBUTE_UNUSED, fragS * fragp, long stretch ATTR
|
||||
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;
|
||||
|
||||
|
@ -6562,8 +6562,8 @@ s7_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;
|
||||
|
||||
|
@ -3566,7 +3566,7 @@ md_apply_fix (fixS *fixP, valueT *valP, segT segment ATTRIBUTE_UNUSED)
|
||||
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
|
||||
|
20
gas/write.c
20
gas/write.c
@ -143,8 +143,8 @@ static int n_fixups;
|
||||
|
||||
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. */
|
||||
@ -164,7 +164,7 @@ fix_new_internal (fragS *frag, /* Which frag? */
|
||||
/* 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;
|
||||
@ -228,10 +228,10 @@ fix_new_internal (fragS *frag, /* Which frag? */
|
||||
/* 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. */)
|
||||
@ -246,8 +246,8 @@ fix_new (fragS *frag, /* Which frag? */
|
||||
|
||||
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. */)
|
||||
@ -313,7 +313,7 @@ fix_new_exp (fragS *frag, /* Which frag? */
|
||||
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,
|
||||
|
19
gas/write.h
19
gas/write.h
@ -84,8 +84,8 @@ struct fix
|
||||
/* 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;
|
||||
@ -183,15 +183,12 @@ extern long relax_frag (segT, fragS *, long);
|
||||
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__ */
|
||||
|
Loading…
x
Reference in New Issue
Block a user