aboutsummaryrefslogtreecommitdiff
path: root/bfd/elf64-hppa.c
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2018-08-23 13:34:14 +0100
committerNick Clifton <nickc@redhat.com>2018-08-23 13:34:14 +0100
commit38cf70ca4d7adaad7ef085ce34e24e1e0bbee945 (patch)
tree6ea78407807b2fa455cbf2300af7eb616e6087df /bfd/elf64-hppa.c
parent334d4ced42d3d54a70a19f1323ff41c5a5f4ff5e (diff)
downloadgdb-38cf70ca4d7adaad7ef085ce34e24e1e0bbee945.zip
gdb-38cf70ca4d7adaad7ef085ce34e24e1e0bbee945.tar.gz
gdb-38cf70ca4d7adaad7ef085ce34e24e1e0bbee945.tar.bz2
Replace unworkable code in HPPA relocs handelr with an assertion.
* elf64-hppa.c (elf_hppa_final_link_relocate): Replace unworkable code with an assertion.
Diffstat (limited to 'bfd/elf64-hppa.c')
-rw-r--r--bfd/elf64-hppa.c33
1 files changed, 6 insertions, 27 deletions
diff --git a/bfd/elf64-hppa.c b/bfd/elf64-hppa.c
index 2e66c92..b4f047f 100644
--- a/bfd/elf64-hppa.c
+++ b/bfd/elf64-hppa.c
@@ -3556,33 +3556,12 @@ elf_hppa_final_link_relocate (Elf_Internal_Rela *rel,
case R_PARISC_LTOFF_FPTR32:
{
- /* We may still need to create the FPTR itself if it was for
- a local symbol. */
- if (hh == NULL)
- {
- /* The first two words of an .opd entry are zero. */
- memset (hppa_info->opd_sec->contents + hh->opd_offset, 0, 16);
-
- /* The next word is the address of the function. */
- bfd_put_64 (hppa_info->opd_sec->owner, value + addend,
- (hppa_info->opd_sec->contents
- + hh->opd_offset + 16));
-
- /* The last word is our local __gp value. */
- value = _bfd_get_gp_value
- (hppa_info->opd_sec->output_section->owner);
- bfd_put_64 (hppa_info->opd_sec->owner, value,
- hppa_info->opd_sec->contents + hh->opd_offset + 24);
-
- /* The DLT value is the address of the .opd entry. */
- value = (hh->opd_offset
- + hppa_info->opd_sec->output_offset
- + hppa_info->opd_sec->output_section->vma);
-
- bfd_put_64 (hppa_info->dlt_sec->owner,
- value,
- hppa_info->dlt_sec->contents + hh->dlt_offset);
- }
+ /* FIXME: There used to be code here to create the FPTR itself if
+ the relocation was against a local symbol. But the code could
+ never have worked. If the assert below is ever triggered then
+ the code will need to be reinstated and fixed so that it does
+ what is needed. */
+ BFD_ASSERT (hh != NULL);
/* We want the value of the DLT offset for this symbol, not
the symbol's actual address. Note that __gp may not point