mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-28 07:08:01 +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>
|
2019-07-01 Jan Beulich <jbeulich@suse.com>
|
||||||
|
|
||||||
* tc-i386.c (encoding_length): New.
|
* tc-i386.c (encoding_length): New.
|
||||||
|
@ -8540,25 +8540,11 @@ output_disp (fragS *insn_start_frag, offsetT insn_start_off)
|
|||||||
== O_subtract))))
|
== O_subtract))))
|
||||||
|| reloc_type == BFD_RELOC_32_PCREL))
|
|| 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)
|
if (!object_64bit)
|
||||||
{
|
{
|
||||||
reloc_type = BFD_RELOC_386_GOTPC;
|
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)
|
else if (reloc_type == BFD_RELOC_64)
|
||||||
reloc_type = BFD_RELOC_X86_64_GOTPC64;
|
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)
|
(i.op[n].imms->X_op_symbol)->X_op)
|
||||||
== O_subtract))))
|
== 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)
|
if (!object_64bit)
|
||||||
reloc_type = BFD_RELOC_386_GOTPC;
|
reloc_type = BFD_RELOC_386_GOTPC;
|
||||||
else if (size == 4)
|
else if (size == 4)
|
||||||
reloc_type = BFD_RELOC_X86_64_GOTPC32;
|
reloc_type = BFD_RELOC_X86_64_GOTPC32;
|
||||||
else if (size == 8)
|
else if (size == 8)
|
||||||
reloc_type = BFD_RELOC_X86_64_GOTPC64;
|
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,
|
fix_new_exp (frag_now, p - frag_now->fr_literal, size,
|
||||||
i.op[n].imms, 0, reloc_type);
|
i.op[n].imms, 0, reloc_type);
|
||||||
|
Reference in New Issue
Block a user