[PATCH] x86: -mfence-as-lock-add=yes doesn't work for 16-bit mode

Jan Beulich jbeulich@suse.com
Fri Dec 17 13:55:45 GMT 2021


Rather than trying to fix this (which would require making an assumption
on the upper half of %esp being zero), simply issue an error. While at
it, since the generated code is in conflict with -momit-lock-prefix=yes,
issue an error in that case as well.

--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -9638,7 +9638,12 @@ output_insn (void)
 	{
 	  /* Encode lfence, mfence, and sfence as
 	     f0 83 04 24 00   lock addl $0x0, (%{re}sp).  */
-	  if (now_seg != absolute_section)
+	  if (flag_code == CODE_16BIT)
+	    as_bad (_("Cannot convert `%s' in 16-bit mode"), i.tm.name);
+	  else if (omit_lock_prefix)
+	    as_bad (_("Cannot convert `%s' with `-momit-lock-prefix=yes' in effect"),
+		    i.tm.name);
+	  else if (now_seg != absolute_section)
 	    {
 	      offsetT val = 0x240483f0ULL;
 



More information about the Binutils mailing list