From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1386) id D945038582AC; Fri, 31 Mar 2023 06:23:16 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D945038582AC Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Jan Beulich To: bfd-cvs@sourceware.org Subject: [binutils-gdb] x86: allow for multiple immediates in output_disp() X-Act-Checkin: binutils-gdb X-Git-Author: Jan Beulich X-Git-Refname: refs/heads/master X-Git-Oldrev: f7377a91b5183977d0702280d4aad90e1829e154 X-Git-Newrev: e3bf0aade2db023594211b463a156515559fe55f Message-Id: <20230331062316.D945038582AC@sourceware.org> Date: Fri, 31 Mar 2023 06:23:16 +0000 (GMT) X-BeenThere: binutils-cvs@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 31 Mar 2023 06:23:17 -0000 https://sourceware.org/git/gitweb.cgi?p=3Dbinutils-gdb.git;h=3De3bf0aade2db= 023594211b463a156515559fe55f commit e3bf0aade2db023594211b463a156515559fe55f Author: Jan Beulich Date: Fri Mar 31 08:21:56 2023 +0200 x86: allow for multiple immediates in output_disp() =20 .insn isn't going to have a constraint of only a single immediate when, in particular, RIP-relative addressing is used. Diff: --- gas/config/tc-i386.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index fe59bf3b540..c8e68d5bc5d 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -10050,13 +10050,13 @@ output_disp (fragS *insn_start_frag, offsetT insn= _start_off) if (operand_type_check (i.types[n1], imm)) { /* Only one immediate is allowed for PC - relative address. */ - gas_assert (sz =3D=3D 0); - sz =3D imm_size (n1); - i.op[n].disps->X_add_number -=3D sz; + relative address, except with .insn. */ + gas_assert (sz =3D=3D 0 || dot_insn ()); + sz +=3D imm_size (n1); } - /* We should find the immediate. */ + /* We should find at least one immediate. */ gas_assert (sz !=3D 0); + i.op[n].disps->X_add_number -=3D sz; } =20 p =3D frag_more (size);