diff options
author | Nick Clifton <nickc@redhat.com> | 2018-08-23 13:34:14 +0100 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2018-08-23 13:34:14 +0100 |
commit | 38cf70ca4d7adaad7ef085ce34e24e1e0bbee945 (patch) | |
tree | 6ea78407807b2fa455cbf2300af7eb616e6087df /bfd/elf64-hppa.c | |
parent | 334d4ced42d3d54a70a19f1323ff41c5a5f4ff5e (diff) | |
download | fsf-binutils-gdb-38cf70ca4d7adaad7ef085ce34e24e1e0bbee945.zip fsf-binutils-gdb-38cf70ca4d7adaad7ef085ce34e24e1e0bbee945.tar.gz fsf-binutils-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.c | 33 |
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 |