* powerpc.cc (Powerpc_relocate_functions::rel16_ha): Don't try to
read the value in the contents, since we don't use it. Use the template endianness when writing. (Relocate::relocate): Use it for R_PPC_REL16_HA.
This commit is contained in:
parent
5d277928c8
commit
83d22aa855
|
@ -1,3 +1,10 @@
|
|||
2009-01-20 Andreas Schwab <schwab@suse.de>
|
||||
|
||||
* powerpc.cc (Powerpc_relocate_functions::rel16_ha): Don't try to
|
||||
read the value in the contents, since we don't use it. Use the
|
||||
template endianness when writing.
|
||||
(Relocate::relocate): Use it for R_PPC_REL16_HA.
|
||||
|
||||
2009-01-19 Andreas Schwab <schwab@suse.de>
|
||||
|
||||
* configure.tgt (powerpc64-*): Fix targ_obj.
|
||||
|
|
|
@ -663,9 +663,6 @@ public:
|
|||
typename elfcpp::Elf_types<size>::Elf_Addr addend,
|
||||
typename elfcpp::Elf_types<size>::Elf_Addr address)
|
||||
{
|
||||
typedef typename elfcpp::Swap<16, true>::Valtype Valtype;
|
||||
Valtype* wv = reinterpret_cast<Valtype*>(view);
|
||||
Valtype val = elfcpp::Swap<16, true>::readval(wv);
|
||||
typename elfcpp::Elf_types<size>::Elf_Addr reloc;
|
||||
|
||||
reloc = (psymval->value(object, addend) - address);
|
||||
|
@ -673,10 +670,7 @@ public:
|
|||
reloc += 0x10000;
|
||||
reloc >>= 16;
|
||||
|
||||
val &= ~static_cast<Valtype>(0xffff);
|
||||
reloc &= static_cast<Valtype>(0xffff);
|
||||
|
||||
elfcpp::Swap<16, true>::writeval(wv, val | reloc);
|
||||
elfcpp::Swap<16, big_endian>::writeval(view, reloc);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -1681,7 +1675,7 @@ Target_powerpc<size, big_endian>::Relocate::relocate(
|
|||
break;
|
||||
|
||||
case elfcpp::R_PPC_REL16_HA:
|
||||
Reloc::rel16_lo(view, object, psymval, addend, address);
|
||||
Reloc::rel16_ha(view, object, psymval, addend, address);
|
||||
break;
|
||||
|
||||
case elfcpp::R_POWERPC_GOT16:
|
||||
|
|
Loading…
Reference in New Issue