From 6bba1048d63e0476b94b9934527defd81c590a13 Mon Sep 17 00:00:00 2001 From: Dave Anglin Date: Thu, 28 Aug 2008 02:33:45 +0000 Subject: * elf-hppa.h (elf_hppa_reloc_final_type): Handle R_PARISC_GPREL64, R_PARISC_SEGREL32 and R_PARISC_SEGREL64. * som.c (som_fixup_formats): Add R_DATA_GPREL fixup. (som_hppa_howto_table): Likewise. (hppa_som_gen_reloc_type): In case R_HPPA_GOTOFF, detect R_DATA_GPREL final type. (som_write_fixups): Handle R_DATA_GPREL. * config/tc-hppa.c (is_SB_relative): New macro. (fix_new_hppa): Remove $segrel$ marker. (cons_fix_new_hppa): Set reloc type R_PARISC_SEGREL32 if expression is segment relative. * config/tc-hppa.h (tc_frob_symbol): Check for $segrel$. --- bfd/elf-hppa.h | 42 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) (limited to 'bfd/elf-hppa.h') diff --git a/bfd/elf-hppa.h b/bfd/elf-hppa.h index d2b5dfd..0aff4cc 100644 --- a/bfd/elf-hppa.h +++ b/bfd/elf-hppa.h @@ -745,6 +745,17 @@ elf_hppa_reloc_final_type (bfd *abfd, } break; + case 64: + switch (field) + { + case e_fsel: + final_type = R_PARISC_GPREL64; + break; + default: + return R_PARISC_NONE; + } + break; + default: return R_PARISC_NONE; } @@ -930,9 +941,38 @@ elf_hppa_reloc_final_type (bfd *abfd, } break; + case R_PARISC_SEGREL32: + switch (format) + { + case 32: + switch (field) + { + case e_fsel: + final_type = R_PARISC_SEGREL32; + break; + default: + return R_PARISC_NONE; + } + break; + + case 64: + switch (field) + { + case e_fsel: + final_type = R_PARISC_SEGREL64; + break; + default: + return R_PARISC_NONE; + } + break; + + default: + return R_PARISC_NONE; + } + break; + case R_PARISC_GNU_VTENTRY: case R_PARISC_GNU_VTINHERIT: - case R_PARISC_SEGREL32: case R_PARISC_SEGBASE: /* The defaults are fine for these cases. */ break; -- cgit v1.1