Changeset b117be8 in rtems-tools for tools/gdb/python/chains.py


Ignore:
Timestamp:
Mar 17, 2015, 2:11:57 AM (4 years ago)
Author:
Chris Johns <chrisj@…>
Branches:
4.10, 4.11, master
Children:
dfc5994
Parents:
a30ec56
git-author:
Chris Johns <chrisj@…> (03/17/15 02:11:57)
git-committer:
Chris Johns <chrisj@…> (03/17/15 02:12:15)
Message:

gdb/python: Update the support to a recent RTEMS.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tools/gdb/python/chains.py

    ra30ec56 rb117be8  
    3838
    3939    def __init__(self, node_val):
    40         self.node_val = node_val
     40        if node_val:
     41            if node_val.type.code == gdb.TYPE_CODE_PTR:
     42                self.reference = node_val
     43                self.node_val = node_val.dereference()
     44            else:
     45                self.node_val = node_val
     46                self.reference = node_val.address
     47        else:
     48            self.node_val = node_val
     49
     50    def __str__(self):
     51        return self.to_string()
    4152
    4253    def null(self):
     
    4758    def next(self):
    4859        if not self.null():
    49             self.node_val = self.node_val['next']
     60            return self.node_val['next']
    5061
    5162    def previous(self):
    5263        if not self.null():
    53             self.node_val = self.node_val['previous']
     64            return self.node_val['previous']
    5465
    5566    def cast(self, typename):
     
    6071
    6172    def to_string(self):
    62         return self.node_val['next'] + "Prev: "+self.node_val['previous']
     73        if self.null():
     74            return 'NULL'
     75        return 'Node:%s Next:%s Prev:%s' % (self.reference,
     76                                            self.node_val['next'],
     77                                            self.node_val['previous'])
    6378
    6479class control:
     
    6681
    6782    def __init__(self, ctrl):
    68         self.ctrl = ctrl
     83        if ctrl.type.code == gdb.TYPE_CODE_PTR:
     84            self.reference = ctrl
     85            self.ctrl = ctrl.dereference()
     86        else:
     87            self.ctrl = ctrl
     88            self.reference = ctrl.address
    6989
    7090    def first(self):
     
    7292        return t
    7393
    74     def last(self):
     94    def tail(self):
    7595        return node(self.ctrl['Tail']['Node'])
    7696
    7797    def empty(self):
    78         if self.last() == self.first().next():
     98        if self.tail().previous() == self.reference:
    7999            return True
     100        return False
Note: See TracChangeset for help on using the changeset viewer.