Index: tools/gdb/utils-gdb.py
===================================================================
--- tools/gdb/utils-gdb.py	(revision 9dad5b3feba0c3611bb872cfa45ac4965cb29968)
+++ tools/gdb/utils-gdb.py	(revision 160f1aac26e1a30b211a4a3ff5d2e52834ae3c0e)
@@ -159,5 +159,5 @@
 
 		# if we already saw the root, then go forward
-		my_next = self.curr['__anonymous_object2225']['_X4nextPY13__tE_generic__1']
+		my_next = self.curr['_X4link']['_X4nextPY13__tE_generic__1']
 		self.curr = my_next.cast(cfa_t.processor_ptr)
 
@@ -168,4 +168,12 @@
 		return self.curr
 
+def start_from_dlist(dlist):
+	fs = dlist.type.fields()
+	if len(fs) != 1:
+		print("Error, can't understand dlist type for", dlist, dlist.name, dlist.type)
+		return None
+
+	return dlist[fs[0]]
+
 def proc_list(cluster):
 	"""
@@ -174,6 +182,7 @@
 	cfa_t = get_cfa_types()
 	proclist = cluster['_X5procsS19__cluster_proc_list_1']
-	idle = proclist['_X5idlesS5dlist_S9processorS5dlink_S9processor___1']['__anonymous_object2167']['_X4nextPY13__tE_generic__1']
-	active = proclist['_X7activesS5dlist_S9processorS5dlink_S9processor___1']['__anonymous_object2167']['_X4nextPY13__tE_generic__1']
+
+	idle = start_from_dlist(proclist['_X5idlesS5dlist_S9processorS5dlink_S9processor___1'])
+	active = start_from_dlist(proclist['_X7activesS5dlist_S9processorS5dlink_S9processor___1'])
 	return ProcIter(active.cast(cfa_t.processor_ptr)), ProcIter(idle.cast(cfa_t.processor_ptr))
 
