On Thu, Mar 22, 2012 at 02:46:48PM +0100, Andreas Färber wrote: > Am 22.03.2012 14:28, schrieb Stefan Berger: > > On 03/21/2012 08:33 AM, Eduardo Habkost wrote: > >> Fix stupid copy&paste mistake at commit > >> ecf40beae7dcbb057d4f115207f9d8276832a774: I moved code around but kept > >> "optarg" on the cpu_list() call. > >> > >> Reported-by: Jiri Denemark<jdene...@redhat.com> > >> Signed-off-by: Eduardo Habkost<ehabk...@redhat.com> > >> --- > >> vl.c | 2 +- > >> 1 files changed, 1 insertions(+), 1 deletions(-) > >> > >> diff --git a/vl.c b/vl.c > >> index 112b0e0..0fccf50 100644 > >> --- a/vl.c > >> +++ b/vl.c > >> @@ -3196,7 +3196,7 @@ int main(int argc, char **argv, char **envp) > >> cpudef_init(); > >> > >> if (cpu_model&& *cpu_model == '?') { > >> - list_cpus(stdout,&fprintf, optarg); > >> + list_cpus(stdout,&fprintf, cpu_model); > >> exit(0); > >> } > >> > > Does -cpu ? actually work then? I only see the list of cpus when using > > -cpu ?_ for example. > > You're right, it should be cpu_model + 1 from what I recall, i.e. just > the optional argument, not the whole model string.
No, list_cpus() expects the whole argument string, including the leading "?": void list_cpus(FILE *f, fprintf_function cpu_fprintf, const char *optarg) { /* XXX: implement xxx_cpu_list for targets that still miss it */ #if defined(cpu_list_id) cpu_list_id(f, cpu_fprintf, optarg); #elif defined(cpu_list) cpu_list(f, cpu_fprintf); /* deprecated */ #endif } [...] #define cpu_list_id x86_cpu_list [...] void x86_cpu_list(FILE *f, fprintf_function cpu_fprintf, const char *optarg) { unsigned char model = !strcmp("?model", optarg); unsigned char dump = !strcmp("?dump", optarg); unsigned char cpuid = !strcmp("?cpuid", optarg); [...] -- Eduardo