components/binutils/patches/gas.write.c.patch
changeset 701 d5c86da1ed69
child 1123 cb43164c5dd1
equal deleted inserted replaced
700:25f37517d706 701:d5c86da1ed69
       
     1 --- binutils-2.21.1.orig/gas/write.c	Wed Mar 16 01:36:12 2011
       
     2 +++ binutils-2.21.1/gas/write.c	Mon Feb 13 23:58:24 2012
       
     3 @@ -782,6 +782,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);