mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-27 14:39:09 +08:00
x86: use encoding_length() also elsewhere
This commit is contained in:
@ -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.
|
||||
|
@ -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);
|
||||
|
Reference in New Issue
Block a user