@@ -434,7 +434,8 @@ hwloc___xml_import_info(char **infonamep, char **infovaluep,
434
434
}
435
435
436
436
static int
437
- hwloc__xml_import_obj_info (hwloc_obj_t obj ,
437
+ hwloc__xml_import_obj_info (hwloc_topology_t topology ,
438
+ hwloc_obj_t obj ,
438
439
hwloc__xml_import_state_t state )
439
440
{
440
441
char * infoname = NULL ;
@@ -447,8 +448,25 @@ hwloc__xml_import_obj_info(hwloc_obj_t obj,
447
448
448
449
if (infoname ) {
449
450
/* empty strings are ignored by libxml */
450
- if (infovalue )
451
- hwloc_obj_add_info (obj , infoname , infovalue );
451
+ if (infovalue ) {
452
+ if (!obj -> parent && (
453
+ !strcmp (infoname , "Backend" )
454
+ || !strcmp (infoname , "SyntheticDescription" )
455
+ || !strcmp (infoname , "LinuxCgroup" )
456
+ || !strcmp (infoname , "WindowsBuildEnvironment" )
457
+ || !strcmp (infoname , "OSName" )
458
+ || !strcmp (infoname , "OSRelease" )
459
+ || !strcmp (infoname , "OSVersion" )
460
+ || !strcmp (infoname , "HostName" )
461
+ || !strcmp (infoname , "Architecture" )
462
+ || !strcmp (infoname , "hwlocVersion" )
463
+ || !strcmp (infoname , "ProcessName" ))) {
464
+ /* topo infos were in root in v2 */
465
+ hwloc__add_info (& topology -> infos , infoname , infovalue );
466
+ } else {
467
+ hwloc_obj_add_info (obj , infoname , infovalue );
468
+ }
469
+ }
452
470
}
453
471
454
472
return err ;
@@ -699,7 +717,7 @@ hwloc__xml_import_object(hwloc_topology_t topology,
699
717
}
700
718
701
719
} else if (!strcmp (tag , "info" )) {
702
- ret = hwloc__xml_import_obj_info (obj , & childstate );
720
+ ret = hwloc__xml_import_obj_info (topology , obj , & childstate );
703
721
} else if (!strcmp (tag , "userdata" )) {
704
722
ret = hwloc__xml_import_userdata (topology , obj , & childstate );
705
723
} else {
0 commit comments