diff options
author | Richard Henderson <rth@redhat.com> | 2008-08-21 19:49:22 +0000 |
---|---|---|
committer | Richard Henderson <rth@redhat.com> | 2008-08-21 19:49:22 +0000 |
commit | 8c9b70b1a5d4a033ce38d16981b31a1e2f67485d (patch) | |
tree | fa25136b95953f8456338d2753f3e5f9313b9ebb /gas/config/tc-hppa.c | |
parent | aa8d5e4592d560eb7b1dd04ed8d9254b43d6f929 (diff) | |
download | ppe42-binutils-8c9b70b1a5d4a033ce38d16981b31a1e2f67485d.tar.gz ppe42-binutils-8c9b70b1a5d4a033ce38d16981b31a1e2f67485d.zip |
* dw2gencfi.c (DWARF2_FDE_RELOC_SIZE): New.
(output_cie, output_fde): Use it.
(DWARF2_EH_FRAME_READ_ONLY): New.
(cfi_finish): Use it.
* config/tc-hppa.h (DWARF2_FDE_RELOC_SIZE): Set to 8 for 64-bit.
(DWARF2_CIE_DATA_ALIGNMENT): Change sign.
(DWARF2_EH_FRAME_READ_ONLY): New.
* config/tc-hppa.c (tc_gen_reloc): Generate pc-relative relocations
from the results of DIFF_EXPR_OK manipulation.
Diffstat (limited to 'gas/config/tc-hppa.c')
-rw-r--r-- | gas/config/tc-hppa.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/gas/config/tc-hppa.c b/gas/config/tc-hppa.c index d31d527a68..f36ac2b72d 100644 --- a/gas/config/tc-hppa.c +++ b/gas/config/tc-hppa.c @@ -1375,6 +1375,18 @@ tc_gen_reloc (asection *section, fixS *fixp) reloc->sym_ptr_ptr = xmalloc (sizeof (asymbol *)); *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy); + + /* Allow fixup_segment to recognize hand-written pc-relative relocations. + When we went through cons_fix_new_hppa, we classified them as complex. */ + /* ??? It might be better to hide this +8 stuff in tc_cfi_emit_pcrel_expr, + undefine DIFF_EXPR_OK, and let these sorts of complex expressions fail + when R_HPPA_COMPLEX == R_PARISC_UNIMPLEMENTED. */ + if (fixp->fx_r_type == R_HPPA_COMPLEX && fixp->fx_pcrel) + { + fixp->fx_r_type = R_HPPA_PCREL_CALL; + fixp->fx_offset += 8; + } + codes = hppa_gen_reloc_type (stdoutput, fixp->fx_r_type, hppa_fixp->fx_r_format, |