* elf32-hppa.c (elf32_hppa_bfd_final_link_relocate): Don't mess

with the operands of an R_PARISC_DPREL21L relocation if the insn
        is not "addil <symbol>,%r27".
This commit is contained in:
Jeff Law 1995-06-17 15:43:06 +00:00
parent 018dafca8a
commit 9a6880571c
2 changed files with 12 additions and 2 deletions

View File

@ -1,3 +1,9 @@
Sat Jun 17 09:40:44 1995 Jeff Law (law@snake.cs.utah.edu)
* elf32-hppa.c (elf32_hppa_bfd_final_link_relocate): Don't mess
with the operands of an R_PARISC_DPREL21L relocation if the insn
is not "addil <symbol>,%r27".
Fri Jun 16 15:04:47 1995 Stan Shebs <shebs@andros.cygnus.com>
* bfd-in.h (NT_subsystem, NT_stack_heap): Declare but don't

View File

@ -1300,11 +1300,15 @@ elf32_hppa_bfd_final_link_relocate (howto, input_bfd, output_bfd,
section. If it's a code section, then "data pointer relative" makes
no sense. In that case we don't adjust the "value", and for 21 bit
addil instructions, we change the source addend register from %dp to
%r0. */
%r0.
case R_PARISC_DPREL21L:
r_field = e_lrsel;
if (sym_sec->flags & SEC_CODE)
insn &= ~0x03e00000;
{
if ((insn & 0xfc) >> 26 == 0xa
&& (insn & 0x03e00000) >> 21 == 0x1b)
insn &= ~0x03e00000;
}
else
value -= elf32_hppa_hash_table (info)->global_value;
goto do_basic_type_1;