]> git.proxmox.com Git - mirror_edk2.git/blob - AppPkg/Applications/Python/Python-2.7.2/Tools/compiler/dumppyc.py
EmbeddedPkg: Extend NvVarStoreFormattedLib LIBRARY_CLASS
[mirror_edk2.git] / AppPkg / Applications / Python / Python-2.7.2 / Tools / compiler / dumppyc.py
1 #! /usr/bin/env python
2
3 import marshal
4 import dis
5 import types
6
7 def dump(obj):
8 print obj
9 for attr in dir(obj):
10 if attr.startswith('co_'):
11 val = getattr(obj, attr)
12 print "\t", attr, repr(val)
13
14 def loadCode(path):
15 f = open(path)
16 f.read(8)
17 co = marshal.load(f)
18 f.close()
19 return co
20
21 def walk(co, match=None):
22 if match is None or co.co_name == match:
23 dump(co)
24 print
25 dis.dis(co)
26 for obj in co.co_consts:
27 if type(obj) == types.CodeType:
28 walk(obj, match)
29
30 def load(filename, codename=None):
31 co = loadCode(filename)
32 walk(co, codename)
33
34 if __name__ == "__main__":
35 import sys
36 if len(sys.argv) == 3:
37 filename, codename = sys.argv[1:]
38 else:
39 filename = sys.argv[1]
40 codename = None
41 if filename.endswith('.py'):
42 buf = open(filename).read()
43 co = compile(buf, filename, "exec")
44 walk(co)
45 else:
46 load(filename, codename)