Lines Matching refs:ehdr
120 arch_kexec_apply_relocations_add(const Elf_Ehdr *ehdr, Elf_Shdr *sechdrs, in arch_kexec_apply_relocations_add() argument
129 arch_kexec_apply_relocations(const Elf_Ehdr *ehdr, Elf_Shdr *sechdrs, in arch_kexec_apply_relocations() argument
678 sechdrs_c = (void *)pi->ehdr + pi->ehdr->e_shoff; in __kexec_load_purgatory()
687 sechdrs = vzalloc(pi->ehdr->e_shnum * sizeof(Elf_Shdr)); in __kexec_load_purgatory()
691 memcpy(sechdrs, sechdrs_c, pi->ehdr->e_shnum * sizeof(Elf_Shdr)); in __kexec_load_purgatory()
707 for (i = 0; i < pi->ehdr->e_shnum; i++) { in __kexec_load_purgatory()
711 sechdrs[i].sh_offset = (unsigned long)pi->ehdr + in __kexec_load_purgatory()
719 entry = pi->ehdr->e_entry; in __kexec_load_purgatory()
720 for (i = 0; i < pi->ehdr->e_shnum; i++) { in __kexec_load_purgatory()
728 if (sechdrs[i].sh_addr <= pi->ehdr->e_entry && in __kexec_load_purgatory()
730 pi->ehdr->e_entry)) { in __kexec_load_purgatory()
743 for (i = 0; i < pi->ehdr->e_shnum; i++) { in __kexec_load_purgatory()
791 for (i = 0; i < pi->ehdr->e_shnum; i++) { in __kexec_load_purgatory()
850 for (i = 0; i < pi->ehdr->e_shnum; i++) { in kexec_apply_relocations()
863 if (sechdrs[i].sh_info >= pi->ehdr->e_shnum || in kexec_apply_relocations()
864 sechdrs[i].sh_link >= pi->ehdr->e_shnum) in kexec_apply_relocations()
877 if (symtab->sh_link >= pi->ehdr->e_shnum) in kexec_apply_relocations()
886 ret = arch_kexec_apply_relocations_add(pi->ehdr, in kexec_apply_relocations()
889 ret = arch_kexec_apply_relocations(pi->ehdr, in kexec_apply_relocations()
912 pi->ehdr = (Elf_Ehdr *)kexec_purgatory; in kexec_load_purgatory()
914 if (memcmp(pi->ehdr->e_ident, ELFMAG, SELFMAG) != 0 in kexec_load_purgatory()
915 || pi->ehdr->e_type != ET_REL in kexec_load_purgatory()
916 || !elf_check_arch(pi->ehdr) in kexec_load_purgatory()
917 || pi->ehdr->e_shentsize != sizeof(Elf_Shdr)) in kexec_load_purgatory()
920 if (pi->ehdr->e_shoff >= kexec_purgatory_size in kexec_load_purgatory()
921 || (pi->ehdr->e_shnum * sizeof(Elf_Shdr) > in kexec_load_purgatory()
922 kexec_purgatory_size - pi->ehdr->e_shoff)) in kexec_load_purgatory()
946 Elf_Ehdr *ehdr; in kexec_purgatory_find_symbol() local
950 if (!pi->sechdrs || !pi->ehdr) in kexec_purgatory_find_symbol()
954 ehdr = pi->ehdr; in kexec_purgatory_find_symbol()
956 for (i = 0; i < ehdr->e_shnum; i++) { in kexec_purgatory_find_symbol()
960 if (sechdrs[i].sh_link >= ehdr->e_shnum) in kexec_purgatory_find_symbol()
975 syms[k].st_shndx >= ehdr->e_shnum) { in kexec_purgatory_find_symbol()