summaryrefslogtreecommitdiff
path: root/bfd/elf-hppa.h
diff options
context:
space:
mode:
authorJeff Law <law@redhat.com>1999-09-09 13:55:46 +0000
committerJeff Law <law@redhat.com>1999-09-09 13:55:46 +0000
commit089c141cc3dd98865753fa5efc501acb1ed06010 (patch)
treeae78fff7a89aacd6fb7bcb80a244b54782616674 /bfd/elf-hppa.h
parent71a2587aec284a9e11a28ebf078edaced7363d6a (diff)
downloadgdb-089c141cc3dd98865753fa5efc501acb1ed06010.tar.gz
* elf-hppa.h (elf_hppa_link_final_relocate): Fix typos.
Handle LTOFF_TP* relocs. (elf_hppa_relocate_insn): Similarly.
Diffstat (limited to 'bfd/elf-hppa.h')
-rw-r--r--bfd/elf-hppa.h42
1 files changed, 31 insertions, 11 deletions
diff --git a/bfd/elf-hppa.h b/bfd/elf-hppa.h
index 657bf00e064..d0c507a9d52 100644
--- a/bfd/elf-hppa.h
+++ b/bfd/elf-hppa.h
@@ -1012,8 +1012,6 @@ elf_hppa_final_link_relocate (rel, input_bfd, output_bfd,
The list will be deleted eventually.
27210 R_PARISC_SEGREL32
- 1096 R_PARISC_LTOFF_TP14DR
- 982 R_PARISC_LTOFF_TP21L
791 R_PARISC_GPREL64
772 R_PARISC_PLTOFF14DR
386 R_PARISC_PLTOFF21L
@@ -1026,9 +1024,9 @@ elf_hppa_final_link_relocate (rel, input_bfd, output_bfd,
break;
/* Random PC relative relocs. */
- case R_PARISC_PCREL21L;
- case R_PARISC_PCREL14R;
- case R_PARISC_PCREL14F;
+ case R_PARISC_PCREL21L:
+ case R_PARISC_PCREL14R:
+ case R_PARISC_PCREL14F:
case R_PARISC_PCREL14WR:
case R_PARISC_PCREL14DR:
case R_PARISC_PCREL16F:
@@ -1113,6 +1111,14 @@ elf_hppa_final_link_relocate (rel, input_bfd, output_bfd,
case R_PARISC_LTOFF_FPTR16F:
case R_PARISC_LTOFF_FPTR16WF:
case R_PARISC_LTOFF_FPTR16DF:
+ case R_PARISC_LTOFF_TP21L:
+ case R_PARISC_LTOFF_TP14R:
+ case R_PARISC_LTOFF_TP14F:
+ case R_PARISC_LTOFF_TP14WR:
+ case R_PARISC_LTOFF_TP14DR:
+ case R_PARISC_LTOFF_TP16F:
+ case R_PARISC_LTOFF_TP16WF:
+ case R_PARISC_LTOFF_TP16DF:
{
/* We want the value of the DLT offset for this symbol, not
the symbol's actual address. */
@@ -1122,12 +1128,16 @@ elf_hppa_final_link_relocate (rel, input_bfd, output_bfd,
except that we need different field selectors for the 21bit
version vs the 14bit versions. */
if (r_type == R_PARISC_DLTIND21L
- || r_type == R_PARISC_LTOFF_FPTR21L)
+ || r_type == R_PARISC_LTOFF_FPTR21L
+ || r_type == R_PARISC_LTOFF_TP21L)
value = hppa_field_adjust (value, addend, e_lrsel);
else if (r_type == R_PARISC_DLTIND14F
|| r_type == R_PARISC_LTOFF_FPTR16F
|| r_type == R_PARISC_LTOFF_FPTR16WF
- || r_type == R_PARISC_LTOFF_FPTR16DF)
+ || r_type == R_PARISC_LTOFF_FPTR16DF
+ || r_type == R_PARISC_LTOFF_TP16F
+ || r_type == R_PARISC_LTOFF_TP16WF
+ || r_type == R_PARISC_LTOFF_TP16DF)
value = hppa_field_adjust (value, addend, e_fsel);
else
value = hppa_field_adjust (value, addend, e_rrsel);
@@ -1170,6 +1180,7 @@ elf_hppa_final_link_relocate (rel, input_bfd, output_bfd,
}
case R_PARISC_LTOFF_FPTR64:
+ case R_PARISC_LTOFF_TP64:
{
/* We want the value of the DLT offset for this symbol, not
the symbol's actual address. */
@@ -1198,7 +1209,7 @@ elf_hppa_final_link_relocate (rel, input_bfd, output_bfd,
value -= (offset + input_section->output_offset
+ input_section->output_section->vma);
- value += addend
+ value += addend;
value -= 8;
bfd_put_64 (input_bfd, value, hit_data);
return bfd_reloc_ok;
@@ -1216,7 +1227,7 @@ elf_hppa_final_link_relocate (rel, input_bfd, output_bfd,
value -= (offset + input_section->output_offset
+ input_section->output_section->vma);
- value += addend
+ value += addend;
value -= 8;
bfd_put_64 (input_bfd, value, hit_data);
return bfd_reloc_ok;
@@ -1313,7 +1324,8 @@ elf_hppa_relocate_insn (insn, sym_value, r_type)
case R_PARISC_DLTREL21L:
case R_PARISC_DLTIND21L:
case R_PARISC_LTOFF_FPTR21L:
- case R_PARISC_PCREL21L;
+ case R_PARISC_PCREL21L:
+ case R_PARISC_LTOFF_TP21L:
{
int w;
@@ -1334,9 +1346,12 @@ elf_hppa_relocate_insn (insn, sym_value, r_type)
case R_PARISC_DLTIND14F:
case R_PARISC_LTOFF_FPTR14R:
case R_PARISC_LTOFF_FPTR16F:
- case R_PARISC_PCREL14R;
+ case R_PARISC_PCREL14R:
case R_PARISC_PCREL14F:
case R_PARISC_PCREL16F:
+ case R_PARISC_LTOFF_TP14R:
+ case R_PARISC_LTOFF_TP14F:
+ case R_PARISC_LTOFF_TP16F:
{
int w;
@@ -1357,6 +1372,8 @@ elf_hppa_relocate_insn (insn, sym_value, r_type)
case R_PARISC_LTOFF_FPTR16DF:
case R_PARISC_PCREL14DR:
case R_PARISC_PCREL16DF:
+ case R_PARISC_LTOFF_TP14DR:
+ case R_PARISC_LTOFF_TP16DF:
{
int w;
@@ -1383,6 +1400,8 @@ elf_hppa_relocate_insn (insn, sym_value, r_type)
case R_PARISC_LTOFF_FPTR16WF:
case R_PARISC_PCREL14WR:
case R_PARISC_PCREL16WF:
+ case R_PARISC_LTOFF_TP14WR:
+ case R_PARISC_LTOFF_TP16WF:
{
int w;
@@ -1402,6 +1421,7 @@ elf_hppa_relocate_insn (insn, sym_value, r_type)
return insn | sym_value;
}
+
default:
return insn;
}