diff options
author | Jeff Law <law@redhat.com> | 1999-07-15 02:06:03 +0000 |
---|---|---|
committer | Jeff Law <law@redhat.com> | 1999-07-15 02:06:03 +0000 |
commit | 6e2bf930a090b0676148d9d908a672fbbf787edd (patch) | |
tree | 0cfdf21726f9f4c7b9bf3536f7bb9d489f5da272 /bfd/elf-hppa.h | |
parent | 1b83fcb388d6b2e26f24f51d91a4020acdcff5fe (diff) | |
download | gdb-6e2bf930a090b0676148d9d908a672fbbf787edd.zip gdb-6e2bf930a090b0676148d9d908a672fbbf787edd.tar.gz gdb-6e2bf930a090b0676148d9d908a672fbbf787edd.tar.bz2 |
รจ
* 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.
Diffstat (limited to 'bfd/elf-hppa.h')
-rw-r--r-- | bfd/elf-hppa.h | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/bfd/elf-hppa.h b/bfd/elf-hppa.h index e692c0f..26c863b 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; |