equal
deleted
inserted
replaced
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); |
|