diff options
author | Dave Anglin <dave.anglin@nrc.ca> | 2008-09-08 00:54:26 +0000 |
---|---|---|
committer | Dave Anglin <dave.anglin@nrc.ca> | 2008-09-08 00:54:26 +0000 |
commit | ded49c3ea35a4068b5a78aee7487bf867fa42de8 (patch) | |
tree | eff4fd06170ba9778b3a0363d64f82e65e8a45b7 | |
parent | 449373d9d07e2e4e55fa32898630f391b90dc507 (diff) | |
download | gdb-ded49c3ea35a4068b5a78aee7487bf867fa42de8.zip gdb-ded49c3ea35a4068b5a78aee7487bf867fa42de8.tar.gz gdb-ded49c3ea35a4068b5a78aee7487bf867fa42de8.tar.bz2 |
* 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.
-rw-r--r-- | gas/ChangeLog | 4 | ||||
-rw-r--r-- | gas/config/tc-hppa.h | 17 |
2 files changed, 17 insertions, 4 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 9237bed..d9610d3 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,5 +1,9 @@ 2008-09-07 John David Anglin <dave.anglin@nrc-cnrc.gc.ca> + * 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. + * dw2gencfi.c (CFI_DIFF_EXPR_OK): Define if not defined. (dot_cfi_personality): Use CFI_DIFF_EXPR_OK instead of DIFF_EXPR_OK. (dot_cfi_lsda, output_cie, output_fde): Likewise. diff --git a/gas/config/tc-hppa.h b/gas/config/tc-hppa.h index 3a45e08..498cb25 100644 --- a/gas/config/tc-hppa.h +++ b/gas/config/tc-hppa.h @@ -146,14 +146,23 @@ int hppa_fix_adjustable (struct fix *); two symbols. This includes the difference of two symbols when one of them is undefined (this comes up in PIC code generation). - We don't define DIFF_EXPR_OK because it does the wrong thing if - the add symbol is undefined and the sub symbol is a symbol in - the same section as the relocation. We also need some way to - specialize some code in adjust_reloc_syms. */ + We allow the difference of two symbols when the subtract symbol is + local to the relocation. This is implemented using R_HPPA_COMPLEX. + + This has some limitations. Difference expressions only work between + symbols in the same segment/quadrant of a module since the HP dynamic + loader relocates the text and data segments independently. Thus, a + difference expression can't be used between text and data symbols, + or between symbols in different executable modules. */ +#define DIFF_EXPR_OK 1 +#define TC_FORCE_RELOCATION_SUB_LOCAL(FIX) 1 #define UNDEFINED_DIFFERENCE_OK #endif #ifdef OBJ_ELF + +/* Difference expressions for the 64-bit HP-UX target have the same + limitations as those for the 32-bit SOM target. */ #define DIFF_EXPR_OK 1 /* Handle .type psuedo. Given a type string of `millicode', set the |