mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2025-02-12 20:58:48 +00:00
[gas]
* config/tc-mips.c (md_apply_fix): Prevent addend from becoming zero if it's expected to be non-zero. [gas/testsuite] * gas/mips/elf-rel3.s: Add zero word to end of file.
This commit is contained in:
parent
5e7079af51
commit
7461da6e23
@ -1,3 +1,8 @@
|
|||||||
|
2001-07-04 Richard Sandiford <rsandifo@redhat.com>
|
||||||
|
|
||||||
|
* config/tc-mips.c (md_apply_fix): Prevent addend from becoming zero
|
||||||
|
if it's expected to be non-zero.
|
||||||
|
|
||||||
2001-07-03 Nick Clifton <nickc@cambridge.redhat.com>
|
2001-07-03 Nick Clifton <nickc@cambridge.redhat.com>
|
||||||
|
|
||||||
* config/tc-sh.c (sh_frob_section): Replace symbol_get_frag() with
|
* config/tc-sh.c (sh_frob_section): Replace symbol_get_frag() with
|
||||||
|
@ -9612,9 +9612,44 @@ md_apply_fix (fixP, valueP)
|
|||||||
{
|
{
|
||||||
/* In this case, the bfd_install_relocation routine will
|
/* In this case, the bfd_install_relocation routine will
|
||||||
incorrectly add the symbol value back in. We just want
|
incorrectly add the symbol value back in. We just want
|
||||||
the addend to appear in the object file.
|
the addend to appear in the object file. */
|
||||||
FIXME: If this makes VALUE zero, we're toast. */
|
|
||||||
value -= symval;
|
value -= symval;
|
||||||
|
|
||||||
|
/* Make sure the addend is still non-zero. If it became zero
|
||||||
|
after the last operation, set it to a spurious value and
|
||||||
|
subtract the same value from the object file's contents. */
|
||||||
|
if (value == 0)
|
||||||
|
{
|
||||||
|
value = 8;
|
||||||
|
|
||||||
|
/* The in-place addends for LO16 relocations are signed;
|
||||||
|
leave the matching HI16 in-place addends as zero. */
|
||||||
|
if (fixP->fx_r_type != BFD_RELOC_HI16_S)
|
||||||
|
{
|
||||||
|
reloc_howto_type *howto;
|
||||||
|
bfd_vma contents, mask, field;
|
||||||
|
|
||||||
|
howto = bfd_reloc_type_lookup (stdoutput,
|
||||||
|
fixP->fx_r_type);
|
||||||
|
|
||||||
|
contents = bfd_get_bits (fixP->fx_frag->fr_literal
|
||||||
|
+ fixP->fx_where,
|
||||||
|
fixP->fx_size * 8,
|
||||||
|
target_big_endian);
|
||||||
|
|
||||||
|
/* MASK has bits set where the relocation should go.
|
||||||
|
FIELD is -value, shifted into the appropriate place
|
||||||
|
for this relocation. */
|
||||||
|
mask = 1 << (howto->bitsize - 1);
|
||||||
|
mask = (((mask - 1) << 1) | 1) << howto->bitpos;
|
||||||
|
field = (-value >> howto->rightshift) << howto->bitpos;
|
||||||
|
|
||||||
|
bfd_put_bits ((field & mask) | (contents & ~mask),
|
||||||
|
fixP->fx_frag->fr_literal + fixP->fx_where,
|
||||||
|
fixP->fx_size * 8,
|
||||||
|
target_big_endian);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
2001-07-04 Richard Sandiford <rsandifo@redhat.com>
|
||||||
|
|
||||||
|
* gas/mips/elf-rel3.s: Add zero word to end of file.
|
||||||
|
|
||||||
2001-07-03 H.J. Lu <hjl@gnu.org>
|
2001-07-03 H.J. Lu <hjl@gnu.org>
|
||||||
|
|
||||||
* gas/mips/lb-xgot-ilocks.d: Add -march=r3900.
|
* gas/mips/lb-xgot-ilocks.d: Add -march=r3900.
|
||||||
|
@ -9,3 +9,4 @@ x:
|
|||||||
b:
|
b:
|
||||||
.word b+4
|
.word b+4
|
||||||
.word x
|
.word x
|
||||||
|
.word 0
|
||||||
|
Loading…
x
Reference in New Issue
Block a user