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