bug-gnu-utils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: bug in AS.EXE


From: Alan Modra
Subject: Re: bug in AS.EXE
Date: Fri, 5 Oct 2001 03:30:01 +0930
User-agent: Mutt/1.3.17i

On Thu, Oct 04, 2001 at 07:15:19PM +0200, address@hidden wrote:
> 
> movdqu %xmm8,112(%esi)
> 
> cc5rvcBh.s:172: Internal error, aborting at 
> /djgpp/gnu/binutl-2.112/gas/config/tc-i386.c line 617 in add_prefix

Here's a fix.

        * config/tc-i386.c (parse_register): If not producing code for
        x86_64, reject x86_64 register name matches.
        (md_assemble): Remove now redundant check for x86_64 regs.

-- 
Alan Modra

Index: gas/config/tc-i386.c
===================================================================
RCS file: /cvs/src/src/gas/config/tc-i386.c,v
retrieving revision 1.104
diff -u -p -r1.104 tc-i386.c
--- tc-i386.c   2001/09/19 05:33:24     1.104
+++ tc-i386.c   2001/10/04 17:54:35
@@ -1935,19 +1935,6 @@ md_assemble (line)
          }
       }
 
-    if (i.reg_operands && flag_code < CODE_64BIT)
-      {
-       int op;
-       for (op = i.operands; --op >= 0;)
-         if ((i.types[op] & Reg)
-             && (i.op[op].regs->reg_flags & (RegRex64|RegRex)))
-           {
-             as_bad (_("Extended register `%%%s' available only in 64bit 
mode."),
-                     i.op[op].regs->reg_name);
-             return;
-           }
-      }
-
     /* If matched instruction specifies an explicit instruction mnemonic
        suffix, use it.  */
     if (i.tm.opcode_modifier & (Size16 | Size32 | Size64))
@@ -4529,6 +4516,13 @@ parse_register (reg_string, end_op)
          /* We have "%st(" then garbage.  */
          return (const reg_entry *) NULL;
        }
+    }
+
+  if (r != NULL
+      && r->reg_flags & (RegRex64|RegRex)
+      && flag_code != CODE_64BIT)
+    {
+      return (const reg_entry *) NULL;
     }
 
   return r;



reply via email to

[Prev in Thread] Current Thread [Next in Thread]