x86: use encoding_length() also elsewhere

This commit is contained in:
Jan Beulich 2019-07-01 08:25:33 +02:00
parent 9c33702be7
commit d583596cc9
2 changed files with 8 additions and 32 deletions

View File

@ -1,3 +1,7 @@
2019-07-01 Jan Beulich <jbeulich@suse.com>
* tc-i386.c (output_disp, output_imm): Use encoding_length.
2019-07-01 Jan Beulich <jbeulich@suse.com>
* tc-i386.c (encoding_length): New.

View File

@ -8540,25 +8540,11 @@ output_disp (fragS *insn_start_frag, offsetT insn_start_off)
== O_subtract))))
|| reloc_type == BFD_RELOC_32_PCREL))
{
offsetT add;
if (insn_start_frag == frag_now)
add = (p - frag_now->fr_literal) - insn_start_off;
else
{
fragS *fr;
add = insn_start_frag->fr_fix - insn_start_off;
for (fr = insn_start_frag->fr_next;
fr && fr != frag_now; fr = fr->fr_next)
add += fr->fr_fix;
add += p - frag_now->fr_literal;
}
if (!object_64bit)
{
reloc_type = BFD_RELOC_386_GOTPC;
i.op[n].imms->X_add_number += add;
i.op[n].imms->X_add_number +=
encoding_length (insn_start_frag, insn_start_off, p);
}
else if (reloc_type == BFD_RELOC_64)
reloc_type = BFD_RELOC_X86_64_GOTPC64;
@ -8703,28 +8689,14 @@ output_imm (fragS *insn_start_frag, offsetT insn_start_off)
(i.op[n].imms->X_op_symbol)->X_op)
== O_subtract))))
{
offsetT add;
if (insn_start_frag == frag_now)
add = (p - frag_now->fr_literal) - insn_start_off;
else
{
fragS *fr;
add = insn_start_frag->fr_fix - insn_start_off;
for (fr = insn_start_frag->fr_next;
fr && fr != frag_now; fr = fr->fr_next)
add += fr->fr_fix;
add += p - frag_now->fr_literal;
}
if (!object_64bit)
reloc_type = BFD_RELOC_386_GOTPC;
else if (size == 4)
reloc_type = BFD_RELOC_X86_64_GOTPC32;
else if (size == 8)
reloc_type = BFD_RELOC_X86_64_GOTPC64;
i.op[n].imms->X_add_number += add;
i.op[n].imms->X_add_number +=
encoding_length (insn_start_frag, insn_start_off, p);
}
fix_new_exp (frag_now, p - frag_now->fr_literal, size,
i.op[n].imms, 0, reloc_type);