mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-12-14 15:50:34 +00:00
gold/
2010-02-08 David S. Miller <davem@davemloft.net> * sparc.cc (Target_sparc::Relocate::relocate): If relocation offset is unaligned for R_SPARC_16, R_SPARC_32, or R_SPARC_64, use the unaligned relocation helper function.
This commit is contained in:
parent
4baec45cb0
commit
705b512121
@ -1,3 +1,9 @@
|
||||
2010-02-08 David S. Miller <davem@davemloft.net>
|
||||
|
||||
* sparc.cc (Target_sparc::Relocate::relocate): If relocation offset is
|
||||
unaligned for R_SPARC_16, R_SPARC_32, or R_SPARC_64, use the unaligned
|
||||
relocation helper function.
|
||||
|
||||
2010-02-06 Ian Lance Taylor <iant@google.com>
|
||||
|
||||
* configure.ac: Rewrite targetobjs duplicate removal code to use
|
||||
|
@ -2447,14 +2447,30 @@ Target_sparc<size, big_endian>::Relocate::relocate(
|
||||
break;
|
||||
|
||||
case elfcpp::R_SPARC_16:
|
||||
Relocate_functions<size, big_endian>::rela16(view, object,
|
||||
psymval, addend);
|
||||
if (rela.get_r_offset() & 0x1)
|
||||
{
|
||||
// The assembler can sometimes emit unaligned relocations
|
||||
// for dwarf2 cfi directives.
|
||||
Reloc::ua16(view, object, psymval, addend);
|
||||
}
|
||||
else
|
||||
Relocate_functions<size, big_endian>::rela16(view, object,
|
||||
psymval, addend);
|
||||
break;
|
||||
|
||||
case elfcpp::R_SPARC_32:
|
||||
if (!parameters->options().output_is_position_independent())
|
||||
Relocate_functions<size, big_endian>::rela32(view, object,
|
||||
psymval, addend);
|
||||
{
|
||||
if (rela.get_r_offset() & 0x3)
|
||||
{
|
||||
// The assembler can sometimes emit unaligned relocations
|
||||
// for dwarf2 cfi directives.
|
||||
Reloc::ua32(view, object, psymval, addend);
|
||||
}
|
||||
else
|
||||
Relocate_functions<size, big_endian>::rela32(view, object,
|
||||
psymval, addend);
|
||||
}
|
||||
break;
|
||||
|
||||
case elfcpp::R_SPARC_DISP8:
|
||||
@ -2563,8 +2579,17 @@ Target_sparc<size, big_endian>::Relocate::relocate(
|
||||
|
||||
case elfcpp::R_SPARC_64:
|
||||
if (!parameters->options().output_is_position_independent())
|
||||
Relocate_functions<size, big_endian>::rela64(view, object,
|
||||
psymval, addend);
|
||||
{
|
||||
if (rela.get_r_offset() & 0x7)
|
||||
{
|
||||
// The assembler can sometimes emit unaligned relocations
|
||||
// for dwarf2 cfi directives.
|
||||
Reloc::ua64(view, object, psymval, addend);
|
||||
}
|
||||
else
|
||||
Relocate_functions<size, big_endian>::rela64(view, object,
|
||||
psymval, addend);
|
||||
}
|
||||
break;
|
||||
|
||||
case elfcpp::R_SPARC_OLO10:
|
||||
|
Loading…
Reference in New Issue
Block a user