'Builds a dict of \'functions\' (i.e. symbols of type \'STT_FUNC\')
by function name that map to a tuple consisting of the func address and size
in bytes.'

def _populate_functions(self):

    for sec in self.sections:
        if (not isinstance(sec, SymbolTableSection)):
            continue
        for sym in sec.iter_symbols():
            if self.functions.has_key(sym.name):
                continue
            if ((sym.entry.st_info['type'] == 'STT_FUNC') and (sym.entry.st_size != 0)):
                name = sym.name
                try:
                    name = codecs.encode(name, 'latin-1')
                except Exception:
                    pass
                if (name not in self.symbols):
                    continue
                addr = self.symbols[name]
                size = sym.entry.st_size
                self.functions[name] = Function(name, addr, size, self)
