aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Law <law@redhat.com>1999-07-15 02:06:03 +0000
committerJeff Law <law@redhat.com>1999-07-15 02:06:03 +0000
commit6e2bf930a090b0676148d9d908a672fbbf787edd (patch)
tree0cfdf21726f9f4c7b9bf3536f7bb9d489f5da272
parent1b83fcb388d6b2e26f24f51d91a4020acdcff5fe (diff)
downloadgdb-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.
-rw-r--r--bfd/elf-hppa.h21
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;