[PATCH] x86: reject architecture settings that are invalid to be set from the command line
Jan Beulich
JBeulich@novell.com
Thu Jun 10 14:25:00 GMT 2010
More information about the Binutils mailing list
Thu Jun 10 14:25:00 GMT 2010
- Previous message (by thread): [PATCH] x86: reject architecture settings that are invalid to be set from the command line
- Next message (by thread): [PATCH] x86: reject architecture settings that are invalid to be set from the command line
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
>>> On 10.06.10 at 16:19, "H.J. Lu" <hjl.tools@gmail.com> wrote: > On Thu, Jun 10, 2010 at 12:05 AM, Jan Beulich <JBeulich@novell.com> wrote: >>>>> On 09.06.10 at 18:02, "H.J. Lu" <hjl.tools@gmail.com> wrote: >>> On Wed, Jun 9, 2010 at 8:36 AM, Jan Beulich <JBeulich@novell.com> wrote: >>>> So far, options like -march=i8086 were accepted despite the assembler >>>> subsequently choking on other consistency checks, leading to reasonably >>>> cryptic error messages. This patch makes it so that impossible >>>> architecure settings are neither accepted nor displayed (i.e. it is now >>>> made sure that those settings can only be used via directives). >>>> >>>> gas/ >>>> 2010-06-09 Jan Beulich <jbeulich@novell.com> >>>> >>>> * config/tc-i386.c (md_parse_option): Ignore impossible processor >>>> types. >>>> (show_arch): New parameter 'check'. >>>> (md_show_usage): Adjust calls to show_arch(). >>>> >>>> --- 2010-06-09/gas/config/tc-i386.c 2010-06-09 17:04:12.000000000 +0200 >>>> +++ 2010-06-09/gas/config/tc-i386.c 2010-06-09 17:24:59.000000000 +0200 >>>> @@ -8166,6 +8166,11 @@ md_parse_option (int c, char *arg) >>>> if (strcmp (arch, cpu_arch [j].name) == 0) >>>> { >>>> /* Processor. */ >>>> + if (! (strcmp (default_arch, "i386") >>>> + ? cpu_arch[j].flags.bitfield.cpulm >>>> + : cpu_arch[j].flags.bitfield.cpui386)) >>>> + continue; >>>> + >>>> cpu_arch_name = cpu_arch[j].name; >>>> cpu_sub_arch_name = NULL; >>>> cpu_arch_flags = cpu_arch[j].flags; >>>> @@ -8297,7 +8302,7 @@ md_parse_option (int c, char *arg) >>>> " >>> " >>>> >>>> static void >>>> -show_arch (FILE *stream, int ext) >>>> +show_arch (FILE *stream, int ext, int check) >>>> { >>>> static char message[] = MESSAGE_TEMPLATE; >>>> char *start = message + 27; >>>> @@ -8334,6 +8339,13 @@ show_arch (FILE *stream, int ext) >>>> /* It is an processor. Skip if we show only extension. */ >>>> continue; >>>> } >>>> + else if (check && ! (strcmp (default_arch, "i386") >>>> + ? cpu_arch[j].flags.bitfield.cpulm >>>> + : cpu_arch[j].flags.bitfield.cpui386)) >>>> + { >>>> + /* It is an impossible processor - skip. */ >>>> + continue; >>>> + } >>>> >>>> >>> >>> Do we need to check cpu_arch[j].flags.bitfield.cpulm? Can we >>> just check cpu_arch[j].flags.bitfield.cpui386 like >>> >>> if (check && !cpu_arch[j].flags.bitfield.cpui386) >>> continue? >>> >> >> I'm of the opinion that when the assembler is in 64-bit mode it >> should reject those architectures that aren't 64-bit capable, >> otherwise specifying e.g. -march=i386 has the same ugly effect >> as has passing -march=i8086 in 32-bit mode. And if we reject >> them, we should also not display them as available. >> > > On Linux/x86-64, your patch gave me > > ../as-new --help > > --32/--64 generate 32bit/64bit code > --divide ignored > -march=CPU[,+EXTENSION...] > generate code for CPU and EXTENSION, CPU is one > of: > generic64, nocona, core2, corei7, l1om, opteron, > k8, > amdfam10, bdver1 > > I don't see how it can be correct since "--32 -march=i386" works fine. > Just try ../as-new --32 --help - it'll show the 32-bit possibilities as well. Jan
- Previous message (by thread): [PATCH] x86: reject architecture settings that are invalid to be set from the command line
- Next message (by thread): [PATCH] x86: reject architecture settings that are invalid to be set from the command line
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Binutils mailing list