From: Jeff Law Date: Thu, 15 Jul 1999 02:06:03 +0000 (+0000) Subject: è X-Git-Tag: gdb-1999-07-19~34 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6e2bf930a090b0676148d9d908a672fbbf787edd;p=thirdparty%2Fbinutils-gdb.git è * elf-hppa.h (_bfd_elf_hppa_gen_reloc_type, case R_HPPA): Handle 64bit format. (_bfd_elf_hppa_gen_reloc_type, case R_GOTOFF): Use base reloc type to derive final type instead of hardwiring a selection. --- diff --git a/bfd/elf-hppa.h b/bfd/elf-hppa.h index e692c0f2e28..26c863b9840 100644 --- a/bfd/elf-hppa.h +++ b/bfd/elf-hppa.h @@ -292,6 +292,9 @@ static reloc_howto_type elf_hppa_howto_table[ELF_HOWTO_TABLE_SIZE] = {R_PARISC_LTOFF_TP16DF, 0, 0, 0, false, 0, complain_overflow_bitfield, bfd_elf_generic_reloc, "R_PARISC_LTOFF_TP16DF", false, 0, 0, false}, }; +#define OFFSET_14R_FROM_21L 4 +#define OFFSET_14F_FROM_21L 5 + /* Return one (or more) BFD relocations which implement the base relocation with modifications based on format and field. */ @@ -404,6 +407,18 @@ _bfd_elf_hppa_gen_reloc_type (abfd, base_type, format, field, ignore, sym) } break; + case 64: + switch (field) + { + case e_fsel: + final_type = R_PARISC_DIR64; + break; + case e_psel: + default: + return NULL; + } + break; + default: return NULL; } @@ -418,10 +433,10 @@ _bfd_elf_hppa_gen_reloc_type (abfd, base_type, format, field, ignore, sym) { case e_rsel: case e_rrsel: - final_type = R_PARISC_DPREL14R; + final_type = base_type + OFFSET_14R_FROM_21L; break; case e_fsel: - final_type = R_PARISC_DPREL14F; + final_type = base_type + OFFSET_14F_FROM_21L; break; default: return NULL; @@ -433,7 +448,7 @@ _bfd_elf_hppa_gen_reloc_type (abfd, base_type, format, field, ignore, sym) { case e_lrsel: case e_lsel: - final_type = R_PARISC_DPREL21L; + final_type = base_type; break; default: return NULL;