# -*- Mode: Python -*-

import os
import re
import sys

# 08135174 00000041 T PyRun_SimpleString
fun_re = re.compile ('([0-9a-f]+) ([0-9a-f]+) [Tt] ([0-9A-Za-z_]+)\n')

def get_syms():
    pid = os.getpid()
    p = os.popen ('nm -C -S /proc/%d/file' % (pid,), 'r')
    d = {}
    while 1:
        line = p.readline()
        if not line:
            break
        else:
            probe = fun_re.match (line)
            if probe is not None:
                addr, size, name = probe.groups()
                d[int(addr,16)] = (name, int(size,16))
    return d

def get_range (d):
    max_addr = 0
    min_addr = sys.maxint
    for k in d.iterkeys():
        if k > max_addr:
            max_addr = k
        elif k < min_addr:
            min_addr = k
    return min_addr, max_addr

if __name__ == '__main__':
    pass
