def load_symbol_from_console()

in ArmPlatformPkg/Scripts/Ds5/console_loader.py [0:0]


def load_symbol_from_console(ec, console_file, objdump, verbose):
    if objdump is None:
        print "Error: A path to objdump tool is not specified, but -i parameter is provided"
    elif not os.path.exists(objdump):
        print "Error: Provided path to objdump is invalid: %s" % objdump
    elif not os.path.exists(console_file):
        print "Error: UEFI console file is not found: %s" % console_file
    else:

        full_list = open(console_file).read().splitlines()

        efi_list = [i for i in full_list if "EntryPoint=" in i]

        full_list = dict.fromkeys(full_list)
        full_list = [i for i in full_list if "add-symbol-file" in i]

        module_dict = {}

        for line in full_list:
            name = get_module_name(line)
            module_dict[name] = (get_module_path(line), get_module_entrypoint(efi_list, name))

        for module in module_dict:
            entrypoint_addr = module_dict[module][1]

            if entrypoint_addr is not None:
                path = module_dict[module][0]
                if not os.path.exists(path):
                    print "Module not found: " + path + ". Skipping..."
                    continue

                sp = subprocess.Popen([objdump,'-S', path], stdout = subprocess.PIPE)

                objdump_out = sp.stdout.readlines()
                entrypoint_record = [i for i in objdump_out if "<_ModuleEntryPoint>" in i]

                entrypoint_offset = entrypoint_record[0].split(' ')[0]

                load_addr = int(entrypoint_addr, 16) - int(entrypoint_offset, 16)

                edk2_debugger.load_symbol_from_file(ec, path, load_addr, verbose)