def get_defined_symbols()

in analytics/duplicates_analyze.py [0:0]


def get_defined_symbols(fname: str, verbose: bool = False) -> Dict[str, int]:
    if verbose:
        print(f"Processing {fname}...", end='', flush=True)
    if sys.platform == 'darwin':
        lines = check_output(['nm', '--defined-only', '-n', fname]).decode('ascii').split("\n")[:-1]
        rc = {}
        for idx, line in enumerate(lines):
            addr, stype, name = line.split(' ')
            size = 4 if idx + 1 == len(lines) else (int(lines[idx + 1].split(' ')[0], 16) - int(addr, 16))
            rc[name] = size
    else:
        lines = check_output(['nm', '--print-size', '--defined-only', fname]).decode('ascii').split('\n')
        rc = {e[3]: int(e[1], 16) for e in [line.split() for line in lines] if len(e) == 4}
    if verbose:
        print("done")
    return rc