Index: tools/gdb/python/__init__.py
===================================================================
--- tools/gdb/python/__init__.py	(revision 6e75f4ebf5450154231a1f7c1c2ba97e60d2c074)
+++ tools/gdb/python/__init__.py	(revision b061a67742d58bedaa161970c5cae028aa440e1f)
@@ -4,4 +4,5 @@
     import os.path
     sys.path.append(os.path.dirname(__file__))
+    import supercore
     import chains
     import rtems
@@ -9,4 +10,10 @@
     import objects
     import threads
+
+    import supercore_printer
+    import classic_printer
+
+    # Needed to reload code inside gdb source command
+    reload(supercore)
     reload(chains)
     reload(rtems)
@@ -14,3 +21,5 @@
     reload(objects)
     reload(threads)
+    reload(supercore_printer)
+    reload(classic_printer)
     print 'RTEMS GDB Support loaded'
Index: tools/gdb/python/chains.py
===================================================================
--- tools/gdb/python/chains.py	(revision 6e75f4ebf5450154231a1f7c1c2ba97e60d2c074)
+++ tools/gdb/python/chains.py	(revision b061a67742d58bedaa161970c5cae028aa440e1f)
@@ -33,4 +33,6 @@
         return None
 
+    def to_string(self):
+        return self.node_val['next'] + "Prev: "+self.node_val['previous']
 
 class control:
@@ -45,3 +47,4 @@
 
     def last(self):
-        return node(self.ctrl['first'])
+        return node(self.ctrl['Tail']['Node'])
+
Index: tools/gdb/python/classic.py
===================================================================
--- tools/gdb/python/classic.py	(revision 6e75f4ebf5450154231a1f7c1c2ba97e60d2c074)
+++ tools/gdb/python/classic.py	(revision b061a67742d58bedaa161970c5cae028aa440e1f)
@@ -12,4 +12,5 @@
 import objects
 import threads
+import supercore
 
 class attribute:
@@ -99,61 +100,4 @@
         return False
 
-class attribute_printer:
-
-    def __init__(self, attr):
-        self.attr = attribute(attr,'all')
-
-    def to_string(self):
-        return gdb.Value(self.attr.to_string())
-
-class semaphore_printer:
-    """Print a Semaphore_Control object. Print using the struct display hint
-    and an iterator."""
-
-    class iterator:
-        """Use an iterator for each field expanded from the id so GDB output
-        is formatted correctly."""
-
-        def __init__(self, semaphore):
-            self.semaphore = semaphore
-            self.count = 0
-
-        def __iter__(self):
-            return self
-
-        def next(self):
-            self.count += 1
-            if self.count == 1:
-                return self.semaphore['Object']
-            elif self.count == 2:
-                attr = attribute(self.semaphore['attribute_set'],
-                                 'semaphore')
-                return attr.to_string()
-            elif self.count == 3:
-                return self.semaphore['Core_control']
-            raise StopIteration
-
-    def __init__(self, semaphore):
-        self.semaphore = semaphore
-
-    def to_string(self):
-        return ''
-
-    @staticmethod
-    def key(i):
-        if i == 0:
-            return 'Object'
-        elif i == 1:
-            return 'attribute_set'
-        elif i == 2:
-            return 'Core_control'
-        return 'bad'
-
-    def children(self):
-        counter = itertools.imap (self.key, itertools.count())
-        return itertools.izip (counter, self.iterator(self.semaphore))
-
-    def display_hint (self):
-        return 'struct'
 
 class semaphore:
@@ -226,4 +170,8 @@
         self.attr = attribute(self.object['attribute_set'], \
             'message_queue')
+        self.wait_queue = threads.queue( \
+            self.object['message_queue']['Wait_queue'])
+
+        self.core_control = supercore.CORE_message_queue(self.object['message_queue'])
 
     def show(self, from_tty):
@@ -231,3 +179,3 @@
         print '     Attr:', self.attr.to_string()
 
-
+        self.core_control.show()
Index: tools/gdb/python/objects.py
===================================================================
--- tools/gdb/python/objects.py	(revision 6e75f4ebf5450154231a1f7c1c2ba97e60d2c074)
+++ tools/gdb/python/objects.py	(revision b061a67742d58bedaa161970c5cae028aa440e1f)
@@ -248,69 +248,6 @@
         return str(name(self.object['name'], is_string))
 
-class id_printer:
-    """Print an object given the ID. Print using the struct display hint and an
-    iterator."""
-
-    class iterator:
-        """Use an iterator for each field expanded from the id so GDB output
-        is formatted correctly."""
-
-        def __init__(self, id):
-            self.id = id
-            self.count = 0
-
-        def __iter__(self):
-            return self
-
-        def next(self):
-            self.count += 1
-            if self.count == 1:
-                return int(self.id.value())
-            elif self.count == 2:
-                return self.id.node()
-            elif self.count == 3:
-                return self.id.api()
-            elif self.count == 4:
-                return self.id._class()
-            elif self.count == 5:
-                return self.id.index()
-            raise StopIteration
-
-    def __init__(self, id):
-        self.id = ident(id)
-
-    def to_string(self):
-        return ''
-
-    @staticmethod
-    def key(i):
-        if i == 0:
-            return 'id'
-        elif i == 1:
-            return 'node'
-        elif i == 2:
-            return 'api'
-        elif i == 3:
-            return 'class'
-        elif i == 4:
-            return 'index'
-        return 'bad'
-
-    def children(self):
-        counter = itertools.imap (self.key, itertools.count())
-        return itertools.izip (counter, self.iterator(self.id))
-
-    def display_hint (self):
-        return 'struct'
-
-class name_printer:
-    """Pretty printer for an object's name. It has to guess the type as no
-    information is available to help determine it."""
-
-    def __init__(self, nameval):
-        self.name = name(nameval)
-
-    def to_string(self):
-        return gdb.Value(str(self.name))
+
+
 
 class control_printer:
Index: tools/gdb/python/rtems.py
===================================================================
--- tools/gdb/python/rtems.py	(revision 6e75f4ebf5450154231a1f7c1c2ba97e60d2c074)
+++ tools/gdb/python/rtems.py	(revision b061a67742d58bedaa161970c5cae028aa440e1f)
@@ -12,4 +12,8 @@
 import threads
 import classic
+
+# ToDo: Move every printing out
+import supercore_printer
+import classic_printer
 
 nesting = 0
@@ -51,11 +55,11 @@
 
 def build_rtems_dict():
-    pp_dict[re.compile('^rtems_id$')]   = lambda val: objects.id_printer(val)
-    pp_dict[re.compile('^Objects_Id$')] = lambda val: objects.id_printer(val)
-    pp_dict[re.compile('^Objects_Name$')] = lambda val: objects.name_printer(val)
-    pp_dict[re.compile('^Objects_Control$')] = lambda val: objects.control_printer(val)
-    pp_dict[re.compile('^States_Control$')] = lambda val: threads.state_printer(val)
-    pp_dict[re.compile('^rtems_attribute$')] = lambda val: classic.attribute_printer(val)
-    pp_dict[re.compile('^Semaphore_Control$')] = lambda val: classic.semaphore_printer(val)
+    pp_dict[re.compile('^rtems_id$')]   = lambda val: supercore_printer.id_printer(val)
+    pp_dict[re.compile('^Objects_Id$')] = lambda val: supercore_printer.id_printer(val)
+    pp_dict[re.compile('^Objects_Name$')] = lambda val: supercore_printer.name_printer(val)
+    pp_dict[re.compile('^Objects_Control$')] = lambda val: supercore_printer.control_printer(val)
+    pp_dict[re.compile('^States_Control$')] = lambda val: supercore_printer.state_printer(val)
+    pp_dict[re.compile('^rtems_attribute$')] = lambda val: classic_printer.attribute_printer(val)
+    pp_dict[re.compile('^Semaphore_Control$')] = lambda val: classic_printer.semaphore_printer(val)
 
 class rtems(gdb.Command):
Index: tools/gdb/python/threads.py
===================================================================
--- tools/gdb/python/threads.py	(revision 6e75f4ebf5450154231a1f7c1c2ba97e60d2c074)
+++ tools/gdb/python/threads.py	(revision b061a67742d58bedaa161970c5cae028aa440e1f)
@@ -192,16 +192,4 @@
         return t
 
-    def to_string(self):
-        if self.fifo():
-            s = 'fifo'
-        else:
-            s = 'priority'
-        return
 
-class state_printer:
 
-    def __init__(self, s):
-        self.s = state(s)
-
-    def to_string(self):
-        return self.s.to_string()
