Index: tools/gdb/python/classic_printer.py
===================================================================
--- tools/gdb/python/classic_printer.py	(revision a785e254f2360e946baa14a11fbd3f403047b880)
+++ tools/gdb/python/classic_printer.py	(revision a785e254f2360e946baa14a11fbd3f403047b880)
@@ -0,0 +1,62 @@
+#
+# RTEMS Classic pretty printers for GDB
+#
+
+class attribute_printer:
+
+    def __init__(self, attribute):
+        ''' ToDo: Verify - usage of all '''
+        self.attr = classic.attribute(attribute,'all')
+
+    def to_string(self):
+        return gdb.Value(self.attr.to_string())
+
+class semaphore_printer:
+    """WIP: 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'
Index: tools/gdb/python/supercore.py
===================================================================
--- tools/gdb/python/supercore.py	(revision a785e254f2360e946baa14a11fbd3f403047b880)
+++ tools/gdb/python/supercore.py	(revision a785e254f2360e946baa14a11fbd3f403047b880)
@@ -0,0 +1,24 @@
+#
+# RTEMS Supercore Objects
+#
+
+import threads
+
+# ToDo: Move this to helper.
+def tasks_printer_rotuine(wait_queue):
+    tasks = wait_queue.tasks()
+    print '    Queue: len = %d, state = %s' % (len(tasks),wait_queue.state())
+    for t in range(0, len(tasks)):
+        print '      ', tasks[t].brief(), ' (%08x)' % (tasks[t].id())
+
+class CORE_message_queue:
+    '''Manage a Supercore message_queue'''
+
+    def __init__(self, message_queue):
+        self.queue = message_queue
+        self.wait_queue = threads.queue(self.queue['Wait_queue'])
+        # ToDo: self.attribute =''
+        # self.buffer
+
+    def show(self):
+        tasks_printer_rotuine(self.wait_queue)
Index: tools/gdb/python/supercore_printer.py
===================================================================
--- tools/gdb/python/supercore_printer.py	(revision a785e254f2360e946baa14a11fbd3f403047b880)
+++ tools/gdb/python/supercore_printer.py	(revision a785e254f2360e946baa14a11fbd3f403047b880)
@@ -0,0 +1,140 @@
+#
+# RTEMS Supercore pretty printers for GDB
+#
+import objects
+import itertools
+
+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 = objects.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 = objects.name(nameval)
+
+    def to_string(self):
+        return str(self.name)
+
+class control_printer:
+
+    class iterator:
+        """Use an iterator for each field expanded from the id so GDB output
+        is formatted correctly."""
+
+        def __init__(self, object):
+            self.object = object
+            self.count = 0
+
+        def __iter__(self):
+            return self
+
+        def next(self):
+            self.count += 1
+            if self.count == 1:
+                return self.object.node()
+            elif self.count == 2:
+                return self.object.id()
+            elif self.count == 3:
+                return self.object.name()
+            raise StopIteration
+
+    def to_string(self):
+        return ''
+
+    def __init__(self, object):
+        self.object = objects.control(object)
+
+    @staticmethod
+    def key(i):
+        if i == 0:
+            return 'Node'
+        elif i == 1:
+            return 'id'
+        elif i == 2:
+            return 'name'
+        return 'bad'
+
+    def children(self):
+        counter = itertools.imap (self.key, itertools.count())
+        return itertools.izip (counter, self.iterator(self.object))
+
+    def display_hint (self):
+        return 'struct'
+
+
+class state_printer:
+
+    def __init__(self, state):
+        self.state = threads.state(state)
+    def to_string(self):
+        return self.state.to_string()
+
+class chains_printer:
+
+    def __init__(self,chain):
+        self.chain = chains.control(chain)
+
+    def to_string(self):
+        return "First:"+str(self.chain.first())+"\n Last:"+str(self.chain.last())
+
+class node_printer:
+    def __init__(self, node):
+        self.node = chains.node(node)
+
+    def to_string(self):
+        return "Node: "+str(self.node)+" Next: "+str(self.node.next())+" Prev: "+str(self.node.previous())
