def METHOD_NAME(root: Path, file_list: Iterable[str]) -> List[ElfFile]:
    """Return a list of ELF files from file_list prepended with root.
    :param str root: the root directory from where the file_list is generated.
    :param file_list: a list of file in root.
    :returns: a list of ElfFile objects.
    """
    elf_files: Set[ElfFile] = set()
    for part_file in file_list:
        # Filter out object (*.o) files-- we only care about binaries.
        if part_file.endswith(".o"):
            continue
        # No need to crawl links-- the original should be here, too.
        path = Path(root, part_file)
        if os.path.islink(path):
            emit.debug(f"Skipped link {path!r} while finding dependencies")
            continue
        # Ignore if file does not have ELF header.
        if not ElfFile.is_elf(path):
            continue
        try:
            elf_file = ElfFile(path=path)
        except ELFError:
            # Ignore invalid ELF files.
            continue
        except errors.CorruptedElfFile as exception:
            # Log if the ELF file seems corrupted
            emit.message(str(exception))
            continue
        # If ELF has dynamic symbols, add it.
        if elf_file.needed:
            elf_files.add(elf_file)
    return sorted(elf_files, key=lambda x: x.path)