Stop if -march=XXX is invalid.
authorH.J. Lu <hjl.tools@gmail.com>
Thu, 10 Jun 2010 16:38:17 +0000 (16:38 +0000)
committerH.J. Lu <hjl.tools@gmail.com>
Thu, 10 Jun 2010 16:38:17 +0000 (16:38 +0000)
2010-06-10  H.J. Lu  <hongjiu.lu@intel.com>

* config/tc-i386.c (update_code_flag): New.
(set_code_flag): Use it.
(i386_target_format): Replace set_code_flag with update_code_flag.

gas/ChangeLog
gas/config/tc-i386.c

index 92baff2..4b2a357 100644 (file)
@@ -1,3 +1,9 @@
+2010-06-10  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * config/tc-i386.c (update_code_flag): New.
+       (set_code_flag): Use it.
+       (i386_target_format): Replace set_code_flag with update_code_flag.
+
 2010-06-10  Tristan Gingold  <gingold@adacore.com>
 
        * config/obj-som.h: Includes som/reloc.h
index 0f329a6..d62c3a1 100644 (file)
@@ -135,6 +135,7 @@ typedef struct
 }
 arch_entry;
 
+static void update_code_flag (int, int);
 static void set_code_flag (int);
 static void set_16bit_gcc_code_flag (int);
 static void set_intel_syntax (int);
@@ -1922,8 +1923,10 @@ add_prefix (unsigned int prefix)
 }
 
 static void
-set_code_flag (int value)
+update_code_flag (int value, int check)
 {
+  PRINTF_LIKE ((*as_error));
+
   flag_code = (enum flag_code) value;
   if (flag_code == CODE_64BIT)
     {
@@ -1937,16 +1940,32 @@ set_code_flag (int value)
     }
   if (value == CODE_64BIT && !cpu_arch_flags.bitfield.cpulm )
     {
-      as_bad (_("64bit mode not supported on this CPU."));
+      if (check)
+       as_error = as_fatal;
+      else
+       as_error = as_bad;
+      (*as_error) (_("64bit mode not supported on `%s'."),
+                  cpu_arch_name ? cpu_arch_name : default_arch);
     }
   if (value == CODE_32BIT && !cpu_arch_flags.bitfield.cpui386)
     {
-      as_bad (_("32bit mode not supported on this CPU."));
+      if (check)
+       as_error = as_fatal;
+      else
+       as_error = as_bad;
+      (*as_error) (_("32bit mode not supported on `%s'."),
+                  cpu_arch_name ? cpu_arch_name : default_arch);
     }
   stackop_size = '\0';
 }
 
 static void
+set_code_flag (int value)
+{
+  update_code_flag (value, 0);
+}
+
+static void
 set_16bit_gcc_code_flag (int new_code_flag)
 {
   flag_code = (enum flag_code) new_code_flag;
@@ -8437,9 +8456,9 @@ const char *
 i386_target_format (void)
 {
   if (!strcmp (default_arch, "x86_64"))
-    set_code_flag (CODE_64BIT);
+    update_code_flag (CODE_64BIT, 1);
   else if (!strcmp (default_arch, "i386"))
-    set_code_flag (CODE_32BIT);
+    update_code_flag (CODE_32BIT, 1);
   else
     as_fatal (_("Unknown architecture"));