components/binutils/patches/gas.write.c.patch
changeset 5057 ab1b43bf588f
parent 5056 7581a14240ad
child 5058 2d501f209a1a
equal deleted inserted replaced
5056:7581a14240ad 5057:ab1b43bf588f
     1 --- binutils-2.23.1/gas/write.c	2011-11-21 01:29:29.000000000 -0800
       
     2 +++ binutils-2.23.1/gas/write.c	2012-08-28 10:51:49.991653399 -0700
       
     3 @@ -808,6 +808,22 @@
       
     4  	    sym = newsym;
       
     5  	  }
       
     6  
       
     7 +	/* Also convert fx_subsy if present */
       
     8 +	if (fixp->fx_subsy != NULL)
       
     9 +	  {
       
    10 +	    symbolS *sub_sym = fixp->fx_subsy;
       
    11 +	    while (symbol_equated_reloc_p (sub_sym)
       
    12 +		    || S_IS_WEAKREFR (sub_sym))
       
    13 +	      {
       
    14 +		symbolS *newsym = symbol_get_value_expression (sub_sym)->X_add_symbol;
       
    15 +		if (sub_sym == newsym)
       
    16 +		    break;
       
    17 +		fixp->fx_offset -= symbol_get_value_expression (sub_sym)->X_add_number;
       
    18 +		fixp->fx_subsy = newsym;
       
    19 +		sub_sym = newsym;
       
    20 +	      }
       
    21 +	  }
       
    22 +
       
    23  	if (symbol_mri_common_p (sym))
       
    24  	  {
       
    25  	    fixp->fx_offset += S_GET_VALUE (sym);