diff options
author | Jan Beulich <jbeulich@suse.com> | 2019-07-01 08:25:33 +0200 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2019-07-01 08:25:33 +0200 |
commit | d583596cc910249eff97e8f9b67c6524fb68af72 (patch) | |
tree | 38d8a479a4df2f0ece164248b5de812b13c41fb5 /gas/config | |
parent | 9c33702be70a7db648414775faa4850e7cf53034 (diff) | |
download | gdb-d583596cc910249eff97e8f9b67c6524fb68af72.zip gdb-d583596cc910249eff97e8f9b67c6524fb68af72.tar.gz gdb-d583596cc910249eff97e8f9b67c6524fb68af72.tar.bz2 |
x86: use encoding_length() also elsewhere
Diffstat (limited to 'gas/config')
-rw-r--r-- | gas/config/tc-i386.c | 36 |
1 files changed, 4 insertions, 32 deletions
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index 84c4bc5..f6c14c9 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -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); |