From: Nick Clifton Date: Thu, 23 Aug 2018 12:34:14 +0000 (+0100) Subject: Replace unworkable code in HPPA relocs handelr with an assertion. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=38cf70ca4d7adaad7ef085ce34e24e1e0bbee945;p=binutils-gdb.git Replace unworkable code in HPPA relocs handelr with an assertion. * elf64-hppa.c (elf_hppa_final_link_relocate): Replace unworkable code with an assertion. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index ae37424bbde..66eb071f3ab 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2018-08-23 Nick Clifton + + * elf64-hppa.c (elf_hppa_final_link_relocate): Replace unworkable + code with an assertion. + 2018-08-23 Nick Clifton PR 23061 diff --git a/bfd/elf64-hppa.c b/bfd/elf64-hppa.c index 2e66c92bfb5..b4f047fa64a 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