Use frag_now_fix_octets in gas d10v, d30v

Alan Modra amodra@gmail.com
Tue Nov 4 12:12:00 GMT 2014


obstack_next_free is supposed to return a void* rather than the char*
it does currently, so expressions involving pointer arithmetic need
a cast.  Avoid the issue.

	* config/tc-d10v.c (find_opcode): Call frag_now_fix_octets rather
	than equivalent obstack_next_free expression.
	* config/tc-d30v.c (find_format): Likewise.

diff --git a/gas/config/tc-d10v.c b/gas/config/tc-d10v.c
index 8e3d171..dacfeb7 100644
--- a/gas/config/tc-d10v.c
+++ b/gas/config/tc-d10v.c
@@ -1226,9 +1226,7 @@ find_opcode (struct d10v_opcode *opcode, expressionS myops[])
 		  sym_frag = symbol_get_frag (myops[opnum].X_add_symbol);
 		  found_symbol = FALSE;
 
-		  current_position =
-		    obstack_next_free (&frchain_now->frch_obstack)
-		    - frag_now->fr_literal;
+		  current_position = frag_now_fix_octets ();
 		  symbol_position = S_GET_VALUE (myops[opnum].X_add_symbol);
 
 		  for (f = frchain_now->frch_root; f; f = f->fr_next)
diff --git a/gas/config/tc-d30v.c b/gas/config/tc-d30v.c
index 9076e41..a73f9b1 100644
--- a/gas/config/tc-d30v.c
+++ b/gas/config/tc-d30v.c
@@ -1242,12 +1242,10 @@ find_format (struct d30v_opcode *opcode,
 
 		      /* Calculate the current address by running through the
 			 previous frags and adding our current offset.  */
-		      value = 0;
+		      value = frag_now_fix_octets ();
 		      for (f = frchain_now->frch_root; f; f = f->fr_next)
 			value += f->fr_fix + f->fr_offset;
-		      value = (S_GET_VALUE (myops[j].X_add_symbol) - value
-			       - (obstack_next_free (&frchain_now->frch_obstack)
-				  - frag_now->fr_literal));
+		      value = S_GET_VALUE (myops[j].X_add_symbol) - value;
 		      if (check_range (value, bits, flags))
 			match = 0;
 		    }

-- 
Alan Modra
Australia Development Lab, IBM



More information about the Binutils mailing list