Files
oasis-linux-mirror/pkg/binutils/patch/0003-x86-expand-non-standard-a.b-case-labels.patch

62 lines
2.3 KiB
Diff

From 7ef6b16d688b3a7911e1cb41384630bb188635f8 Mon Sep 17 00:00:00 2001
From: Michael Forney <mforney@mforney.org>
Date: Sat, 25 Apr 2026 17:24:26 -0700
Subject: [PATCH] x86: expand non-standard a...b case labels
---
gas/config/tc-i386-ginsn.c | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
diff --git a/gas/config/tc-i386-ginsn.c b/gas/config/tc-i386-ginsn.c
index 89bd6f3a0da..951683dfdd0 100644
--- a/gas/config/tc-i386-ginsn.c
+++ b/gas/config/tc-i386-ginsn.c
@@ -833,7 +833,8 @@ x86_ginsn_new (const symbolS *insn_end_sym, enum ginsn_gen_mode gmode)
gas_assert (!ginsn_link_next (ginsn, ginsn_next));
break;
- case 0x50 ... 0x57:
+ case 0x50: case 0x51: case 0x52: case 0x53:
+ case 0x54: case 0x55: case 0x56: case 0x57:
if (i.tm.opcode_space != SPACE_BASE)
break;
/* push reg. */
@@ -853,7 +854,8 @@ x86_ginsn_new (const symbolS *insn_end_sym, enum ginsn_gen_mode gmode)
gas_assert (!ginsn_link_next (ginsn, ginsn_next));
break;
- case 0x58 ... 0x5f:
+ case 0x58: case 0x59: case 0x5a: case 0x5b:
+ case 0x5c: case 0x5d: case 0x5e: case 0x5f:
if (i.tm.opcode_space != SPACE_BASE)
break;
/* pop reg. */
@@ -897,7 +899,10 @@ x86_ginsn_new (const symbolS *insn_end_sym, enum ginsn_gen_mode gmode)
/* PS: Opcodes 0x80 ... 0x8f with opcode_space SPACE_0F are present
only after relaxation. They do not need to be handled for ginsn
creation. */
- case 0x70 ... 0x7f:
+ case 0x70: case 0x71: case 0x72: case 0x73:
+ case 0x74: case 0x75: case 0x76: case 0x77:
+ case 0x78: case 0x79: case 0x7a: case 0x7b:
+ case 0x7c: case 0x7d: case 0x7e: case 0x7f:
if (i.tm.opcode_space != SPACE_BASE)
break;
ginsn = x86_ginsn_jump (insn_end_sym, true);
@@ -1061,8 +1066,10 @@ x86_ginsn_new (const symbolS *insn_end_sym, enum ginsn_gen_mode gmode)
ginsn = x86_ginsn_leave (insn_end_sym);
break;
- case 0xe0 ... 0xe2: /* loop / loope / loopne. */
- case 0xe3: /* jecxz / jrcxz. */
+ case 0xe0: /* loop. */
+ case 0xe1: /* loope. */
+ case 0xe2: /* loopne. */
+ case 0xe3: /* jecxz / jrcxz. */
if (i.tm.opcode_space != SPACE_BASE)
break;
ginsn = x86_ginsn_jump (insn_end_sym, true);
--
2.49.0