diff options
-rwxr-xr-x | Tools/scripts/objgraph.py | 18 | ||||
-rwxr-xr-x | Tools/scripts/pdeps.py | 34 |
2 files changed, 27 insertions, 25 deletions
diff --git a/Tools/scripts/objgraph.py b/Tools/scripts/objgraph.py index a21797d..c6bbe66 100755 --- a/Tools/scripts/objgraph.py +++ b/Tools/scripts/objgraph.py @@ -1,4 +1,4 @@ -#!/usr/local/python +#!/usr/local/bin/python # objgraph # @@ -21,9 +21,9 @@ import sys import string -import path +import os import getopt -import regexp +import regex # Types of symbols. # @@ -33,7 +33,7 @@ ignore = 'Nntrgdsbavuc' # Regular expression to parse "nm -o" output. # -matcher = regexp.compile('(.*):\t?........ (.) (.*)$') +matcher = regex.compile('\(.*\):\t?........ \(.\) \(.*\)$') # Store "item" in "dict" under "key". # The dictionary maps keys to lists of items. @@ -66,12 +66,13 @@ undef2file = {} # def readinput(file): while 1: - s = file.readline(200) # Arbitrary, but reasonable limit + s = file.readline() if not s: break - # If you get an exception on this line, + # If you get any output from this line, # it is probably caused by an unexpected input line: - (ra, rb), (r1a, r1b), (r2a, r2b), (r3a, r3b) = matcher.exec(s) + if matcher.search(s) < 0: s; continue # Shouldn't happen + (ra, rb), (r1a, r1b), (r2a, r2b), (r3a, r3b) = matcher.regs[:4] fn, name, type = s[r1a:r1b], s[r3a:r3b], s[r2a:r2b] if type in definitions: store(def2file, name, fn) @@ -160,7 +161,8 @@ def main(): optlist, args = getopt.getopt(sys.argv[1:], 'cdu') except getopt.error: sys.stdout = sys.stderr - print 'Usage:', path.basename(sys.argv[0]), '[-cdu] [file] ...' + print 'Usage:', os.path.basename(sys.argv[0]), + print '[-cdu] [file] ...' print '-c: print callers per objectfile' print '-d: print callees per objectfile' print '-u: print usage of undefined symbols' diff --git a/Tools/scripts/pdeps.py b/Tools/scripts/pdeps.py index df20894..8cf573f 100755 --- a/Tools/scripts/pdeps.py +++ b/Tools/scripts/pdeps.py @@ -1,4 +1,4 @@ -#! /usr/local/python +#! /usr/local/bin/python # pdeps # @@ -21,8 +21,8 @@ import sys -import regexp -import path +import regex +import os import string @@ -58,15 +58,15 @@ def main(): # Compiled regular expressions to search for import statements # -m_import = regexp.compile('^[ \t]*from[ \t]+([^ \t]+)[ \t]+') -m_from = regexp.compile('^[ \t]*import[ \t]+([^#]+)') +m_import = regex.compile('^[ \t]*from[ \t]+\([^ \t]+\)[ \t]+') +m_from = regex.compile('^[ \t]*import[ \t]+\([^#]+\)') # Collect data from one file # def process(filename, table): fp = open(filename, 'r') - mod = path.basename(filename) + mod = os.path.basename(filename) if mod[-3:] == '.py': mod = mod[:-3] table[mod] = list = [] @@ -77,17 +77,17 @@ def process(filename, table): nextline = fp.readline() if not nextline: break line = line[:-1] + nextline - result = m_import.exec(line) - if not result: - result = m_from.exec(line) - if result: - (a, b), (a1, b1) = result - words = string.splitfields(line[a1:b1], ',') - # print '#', line, words - for word in words: - word = string.strip(word) - if word not in list: - list.append(word) + if m_import.match(line) >= 0: + (a, b), (a1, b1) = m_import.regs[:2] + elif m_from.match(line) >= 0: + (a, b), (a1, b1) = m_from.regs[:2] + else: continue + words = string.splitfields(line[a1:b1], ',') + # print '#', line, words + for word in words: + word = string.strip(word) + if word not in list: + list.append(word) # Compute closure (this is in fact totally general) |