From 78f12dd3eb06021e88367087844a64d7aee6beab Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Thu, 10 Jun 2010 16:38:17 +0000 Subject: [PATCH] Stop if -march=XXX is invalid. 2010-06-10 H.J. Lu * 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 | 6 ++++++ gas/config/tc-i386.c | 29 ++++++++++++++++++++++++----- 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index 92baff2f768..4b2a357d0b9 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,9 @@ +2010-06-10 H.J. Lu + + * 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 * config/obj-som.h: Includes som/reloc.h diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index 0f329a6c4ce..d62c3a1f3ed 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -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,15 +1940,31 @@ 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) { @@ -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")); -- 2.30.2