mirror of
https://github.com/yuzu-emu/unicorn
synced 2024-11-24 16:48:30 +00:00
qom: cpu: fix parsed feature string length
since commit ( 9262685 cpu: Factor out cpu_generic_init() ) features parsed by it were truncated only to the 1st feature after CPU name due to fact that featurestr = strtok(NULL, ","); cc->parse_features(cpu, featurestr, &err); would extract exactly one feature and parse_features() callback would parse it and only it leaving the rest of features ignored. Reuse approach from x86 custom impl. i.e. replace strtok() token parsing with g_strsplit(), which would split feature string in 2 parts name and features list and pass the later to parse_features() callback. Backports commit 3e2cf187eb3954fc406f81247a3fa598437ce1de from qemu
This commit is contained in:
parent
9c5153270f
commit
cdc86cee50
1 changed files with 6 additions and 8 deletions
|
@ -43,28 +43,26 @@ bool cpu_exists(struct uc_struct *uc, int64_t id)
|
|||
|
||||
CPUState *cpu_generic_init(struct uc_struct *uc, const char *typename, const char *cpu_model)
|
||||
{
|
||||
char *str, *name, *featurestr;
|
||||
CPUState *cpu = NULL;
|
||||
ObjectClass *oc;
|
||||
CPUClass *cc;
|
||||
Error *err = NULL;
|
||||
gchar **model_pieces;
|
||||
|
||||
str = g_strdup(cpu_model);
|
||||
name = strtok(str, ",");
|
||||
model_pieces = g_strsplit(cpu_model, ",", 2);
|
||||
|
||||
oc = cpu_class_by_name(uc, typename, name);
|
||||
oc = cpu_class_by_name(uc, typename, model_pieces[0]);
|
||||
if (oc == NULL) {
|
||||
g_free(str);
|
||||
g_strfreev(model_pieces);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
cc = CPU_CLASS(uc, oc);
|
||||
featurestr = strtok(NULL, ",");
|
||||
/* TODO: all callers of cpu_generic_init() need to be converted to
|
||||
* call parse_features() only once, before calling cpu_generic_init().
|
||||
*/
|
||||
cc->parse_features(uc, object_class_get_name(oc), featurestr, &err);
|
||||
g_free(str);
|
||||
cc->parse_features(uc, object_class_get_name(oc), model_pieces[1], &err);
|
||||
g_strfreev(model_pieces);
|
||||
if (err != NULL) {
|
||||
goto out;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue