master hovercats/oakiss / pkg / binutils / patch / 0003-x86-expand-non-standard-a.b-case-labels.patch
 1From 7ef6b16d688b3a7911e1cb41384630bb188635f8 Mon Sep 17 00:00:00 2001
 2From: Michael Forney <mforney@mforney.org>
 3Date: Sat, 25 Apr 2026 17:24:26 -0700
 4Subject: [PATCH] x86: expand non-standard a...b case labels
 5
 6---
 7 gas/config/tc-i386-ginsn.c | 17 ++++++++++++-----
 8 1 file changed, 12 insertions(+), 5 deletions(-)
 9
10diff --git a/gas/config/tc-i386-ginsn.c b/gas/config/tc-i386-ginsn.c
11index 89bd6f3a0da..951683dfdd0 100644
12--- a/gas/config/tc-i386-ginsn.c
13+++ b/gas/config/tc-i386-ginsn.c
14@@ -833,7 +833,8 @@ x86_ginsn_new (const symbolS *insn_end_sym, enum ginsn_gen_mode gmode)
15       gas_assert (!ginsn_link_next (ginsn, ginsn_next));
16       break;
17 
18-    case 0x50 ... 0x57:
19+    case 0x50: case 0x51: case 0x52: case 0x53:
20+    case 0x54: case 0x55: case 0x56: case 0x57:
21       if (i.tm.opcode_space != SPACE_BASE)
22 	break;
23       /* push reg.  */
24@@ -853,7 +854,8 @@ x86_ginsn_new (const symbolS *insn_end_sym, enum ginsn_gen_mode gmode)
25       gas_assert (!ginsn_link_next (ginsn, ginsn_next));
26       break;
27 
28-    case 0x58 ... 0x5f:
29+    case 0x58: case 0x59: case 0x5a: case 0x5b:
30+    case 0x5c: case 0x5d: case 0x5e: case 0x5f:
31       if (i.tm.opcode_space != SPACE_BASE)
32 	break;
33       /* pop reg.  */
34@@ -897,7 +899,10 @@ x86_ginsn_new (const symbolS *insn_end_sym, enum ginsn_gen_mode gmode)
35     /* PS: Opcodes 0x80 ... 0x8f with opcode_space SPACE_0F are present
36        only after relaxation.  They do not need to be handled for ginsn
37        creation.  */
38-    case 0x70 ... 0x7f:
39+    case 0x70: case 0x71: case 0x72: case 0x73:
40+    case 0x74: case 0x75: case 0x76: case 0x77:
41+    case 0x78: case 0x79: case 0x7a: case 0x7b:
42+    case 0x7c: case 0x7d: case 0x7e: case 0x7f:
43       if (i.tm.opcode_space != SPACE_BASE)
44 	break;
45       ginsn = x86_ginsn_jump (insn_end_sym, true);
46@@ -1061,8 +1066,10 @@ x86_ginsn_new (const symbolS *insn_end_sym, enum ginsn_gen_mode gmode)
47       ginsn = x86_ginsn_leave (insn_end_sym);
48       break;
49 
50-    case 0xe0 ... 0xe2: /* loop / loope / loopne.  */
51-    case 0xe3:          /* jecxz / jrcxz.  */
52+    case 0xe0: /* loop.  */
53+    case 0xe1: /* loope.  */
54+    case 0xe2: /* loopne.  */
55+    case 0xe3: /* jecxz / jrcxz.  */
56       if (i.tm.opcode_space != SPACE_BASE)
57 	break;
58       ginsn = x86_ginsn_jump (insn_end_sym, true);
59-- 
602.49.0
61