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__ */