GNU Binutils with patches for OS216
修订版 | ded49c3ea35a4068b5a78aee7487bf867fa42de8 (tree) |
---|---|
时间 | 2008-09-08 09:54:26 |
作者 | Dave Anglin <dave.anglin@nrc....> |
Commiter | Dave Anglin |
* config/tc-hppa.h (DIFF_EXPR_OK): Define for SOM target. Revise
comment regarding use of difference expressions.
(TC_FORCE_RELOCATION_SUB_LOCAL): Define to 1.
@@ -1,5 +1,9 @@ | ||
1 | 1 | 2008-09-07 John David Anglin <dave.anglin@nrc-cnrc.gc.ca> |
2 | 2 | |
3 | + * config/tc-hppa.h (DIFF_EXPR_OK): Define for SOM target. Revise | |
4 | + comment regarding use of difference expressions. | |
5 | + (TC_FORCE_RELOCATION_SUB_LOCAL): Define to 1. | |
6 | + | |
3 | 7 | * dw2gencfi.c (CFI_DIFF_EXPR_OK): Define if not defined. |
4 | 8 | (dot_cfi_personality): Use CFI_DIFF_EXPR_OK instead of DIFF_EXPR_OK. |
5 | 9 | (dot_cfi_lsda, output_cie, output_fde): Likewise. |
@@ -146,14 +146,23 @@ int hppa_fix_adjustable (struct fix *); | ||
146 | 146 | two symbols. This includes the difference of two symbols when |
147 | 147 | one of them is undefined (this comes up in PIC code generation). |
148 | 148 | |
149 | - We don't define DIFF_EXPR_OK because it does the wrong thing if | |
150 | - the add symbol is undefined and the sub symbol is a symbol in | |
151 | - the same section as the relocation. We also need some way to | |
152 | - specialize some code in adjust_reloc_syms. */ | |
149 | + We allow the difference of two symbols when the subtract symbol is | |
150 | + local to the relocation. This is implemented using R_HPPA_COMPLEX. | |
151 | + | |
152 | + This has some limitations. Difference expressions only work between | |
153 | + symbols in the same segment/quadrant of a module since the HP dynamic | |
154 | + loader relocates the text and data segments independently. Thus, a | |
155 | + difference expression can't be used between text and data symbols, | |
156 | + or between symbols in different executable modules. */ | |
157 | +#define DIFF_EXPR_OK 1 | |
158 | +#define TC_FORCE_RELOCATION_SUB_LOCAL(FIX) 1 | |
153 | 159 | #define UNDEFINED_DIFFERENCE_OK |
154 | 160 | #endif |
155 | 161 | |
156 | 162 | #ifdef OBJ_ELF |
163 | + | |
164 | +/* Difference expressions for the 64-bit HP-UX target have the same | |
165 | + limitations as those for the 32-bit SOM target. */ | |
157 | 166 | #define DIFF_EXPR_OK 1 |
158 | 167 | |
159 | 168 | /* Handle .type psuedo. Given a type string of `millicode', set the |