'Match the symbol name to ad. If ad has already a symbol, it\'s
renamed. If name exists, a suffix \'_counter\' is added.
force could be set to True if the name starts with a
reserved prefix (sub_, loc_, ret_, loop_, ...). Use it if
you are sure.
returns True if ok'

def add_symbol(self, ad, name, force=False):

    if ((not force) and self.is_reserved_prefix(name)):
        return False
    n = name
    i = 0
    while (n in self.__db.symbols):
        n = ('%s_%d' % (name, i))
        i += 1
    name = n
    if (ad in self.__db.reverse_symbols):
        last = self.__db.reverse_symbols[ad]
        del self.__db.symbols[last]
    self.__db.symbols[name] = ad
    self.__db.reverse_symbols[ad] = name
    if (not self.mem.exists(ad)):
        self.mem.add(ad, 1, MEM_UNK)
    return True
