* 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:
parent
018dafca8a
commit
9a6880571c
|
@ -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>
|
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
|
* bfd-in.h (NT_subsystem, NT_stack_heap): Declare but don't
|
||||||
|
|
|
@ -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
|
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
|
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
|
addil instructions, we change the source addend register from %dp to
|
||||||
%r0. */
|
%r0.
|
||||||
case R_PARISC_DPREL21L:
|
case R_PARISC_DPREL21L:
|
||||||
r_field = e_lrsel;
|
r_field = e_lrsel;
|
||||||
if (sym_sec->flags & SEC_CODE)
|
if (sym_sec->flags & SEC_CODE)
|
||||||
insn &= ~0x03e00000;
|
{
|
||||||
|
if ((insn & 0xfc) >> 26 == 0xa
|
||||||
|
&& (insn & 0x03e00000) >> 21 == 0x1b)
|
||||||
|
insn &= ~0x03e00000;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
value -= elf32_hppa_hash_table (info)->global_value;
|
value -= elf32_hppa_hash_table (info)->global_value;
|
||||||
goto do_basic_type_1;
|
goto do_basic_type_1;
|
||||||
|
|
Loading…
Reference in New Issue