You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by ac...@apache.org on 2023/10/09 21:51:07 UTC
[nuttx] branch master updated: fix: TreeNode has same attribute with NodeMixin
This is an automated email from the ASF dual-hosted git repository.
acassis pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git
The following commit(s) were added to refs/heads/master by this push:
new e0e6e5c2c8 fix: TreeNode has same attribute with NodeMixin
e0e6e5c2c8 is described below
commit e0e6e5c2c80684977f226fdc9a11e9d37da104ee
Author: TaiJu Wu <tj...@gmail.com>
AuthorDate: Mon Oct 9 15:48:14 2023 +0000
fix: TreeNode has same attribute with NodeMixin
NodeMixin have attrubute called size and it is set property.
Overwrite this property by _size but it will make report incompatible.
Create a new class NuttxDictExporter to renaming _size into size.
---
tools/size_report.py | 35 ++++++++++++++++++++++++++++++++---
1 file changed, 32 insertions(+), 3 deletions(-)
diff --git a/tools/size_report.py b/tools/size_report.py
index 21e038fc9b..de2fcaa799 100755
--- a/tools/size_report.py
+++ b/tools/size_report.py
@@ -49,6 +49,28 @@ DT_LOCATION = re.compile(r"\(DW_OP_addr: ([0-9a-f]+)\)")
SRC_FILE_EXT = (".h", ".c", ".hpp", ".cpp", ".hxx", ".cxx", ".c++")
+class NuttxDictExporter(DictExporter):
+ def export(self, node):
+ """Export tree starting at `node`."""
+ attriter = self.attriter or (lambda attr_values: attr_values)
+ return self.__export(node, self.dictcls, attriter, self.childiter)
+
+ def __export(self, node, dictcls, attriter, childiter, level=1):
+ attr_values = attriter(self._iter_attr_values(node))
+ data = dictcls(attr_values)
+ data["size"] = data.pop("_size")
+
+ maxlevel = self.maxlevel
+ if maxlevel is None or level < maxlevel:
+ children = [
+ self.__export(child, dictcls, attriter, childiter, level=level + 1)
+ for child in childiter(node.children)
+ ]
+ if children:
+ data["children"] = children
+ return data
+
+
def get_symbol_addr(sym):
"""Get the address of a symbol"""
return sym["st_value"]
@@ -530,7 +552,7 @@ class TreeNode(NodeMixin):
def __init__(self, name, identifier, size=0, parent=None, children=None):
super().__init__()
self.name = name
- self.size = size
+ self._size = size
self.parent = parent
self.identifier = identifier
if children:
@@ -539,6 +561,14 @@ class TreeNode(NodeMixin):
def __repr__(self):
return self.name
+ @property
+ def size(self):
+ return self._size
+
+ @size.setter
+ def size(self, value):
+ self._size = value
+
def sum_node_children_size(node):
"""
@@ -756,7 +786,6 @@ def main():
targets = ["rom", "ram"]
for t in targets:
-
elf = ELFFile(open(args.kernel, "rb"))
assert elf.has_dwarf_info(), "ELF file has no DWARF information"
@@ -803,7 +832,7 @@ def main():
if not args.quiet:
print_any_tree(root, symsize, args.depth)
- exporter = DictExporter()
+ exporter = NuttxDictExporter()
data = dict()
data["symbols"] = exporter.export(root)
data["total_size"] = symsize