This is the mail archive of the binutils-cvs@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Make fixup fx_where unsigned


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=90bd3c903fe76a8a3a5ced98c76e4366c5a0948f

commit 90bd3c903fe76a8a3a5ced98c76e4366c5a0948f
Author: Alan Modra <amodra@gmail.com>
Date:   Tue Apr 16 11:10:44 2019 +0930

    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.

Diff:
---
 gas/ChangeLog          | 12 ++++++++++++
 gas/config/tc-mips.c   |  2 +-
 gas/config/tc-score.c  |  4 ++--
 gas/config/tc-score7.c |  4 ++--
 gas/config/tc-sparc.c  |  2 +-
 gas/write.c            | 20 ++++++++++----------
 gas/write.h            | 19 ++++++++-----------
 7 files changed, 36 insertions(+), 27 deletions(-)

diff --git a/gas/ChangeLog b/gas/ChangeLog
index 2013c5d..4a08de1 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,5 +1,17 @@
 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.
 	* frags.c (frag_new): Assert that current size exceeds
 	old_frags_var_max_size.
diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c
index 70c6548..94141e9 100644
--- a/gas/config/tc-mips.c
+++ b/gas/config/tc-mips.c
@@ -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;
diff --git a/gas/config/tc-score.c b/gas/config/tc-score.c
index 3101dc8..4bbeeb0 100644
--- a/gas/config/tc-score.c
+++ b/gas/config/tc-score.c
@@ -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;
 
diff --git a/gas/config/tc-score7.c b/gas/config/tc-score7.c
index 13dd530..f60ab49 100644
--- a/gas/config/tc-score7.c
+++ b/gas/config/tc-score7.c
@@ -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;
 
diff --git a/gas/config/tc-sparc.c b/gas/config/tc-sparc.c
index 677a13f..347db08 100644
--- a/gas/config/tc-sparc.c
+++ b/gas/config/tc-sparc.c
@@ -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
diff --git a/gas/write.c b/gas/write.c
index 2c4305e..91767fb 100644
--- a/gas/write.c
+++ b/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,
diff --git a/gas/write.h b/gas/write.h
index e67fba0..a69ec3c 100644
--- a/gas/write.h
+++ b/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__ */


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]