Lines Matching refs:sechdrs
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
157 vfree(pi->sechdrs); in kimage_file_post_load_cleanup()
158 pi->sechdrs = NULL; in kimage_file_post_load_cleanup()
671 Elf_Shdr *sechdrs = NULL; in __kexec_load_purgatory() local
687 sechdrs = vzalloc(pi->ehdr->e_shnum * sizeof(Elf_Shdr)); in __kexec_load_purgatory()
688 if (!sechdrs) in __kexec_load_purgatory()
691 memcpy(sechdrs, sechdrs_c, pi->ehdr->e_shnum * sizeof(Elf_Shdr)); in __kexec_load_purgatory()
708 if (sechdrs[i].sh_type == SHT_NOBITS) in __kexec_load_purgatory()
711 sechdrs[i].sh_offset = (unsigned long)pi->ehdr + in __kexec_load_purgatory()
712 sechdrs[i].sh_offset; in __kexec_load_purgatory()
721 if (!(sechdrs[i].sh_flags & SHF_ALLOC)) in __kexec_load_purgatory()
724 if (!(sechdrs[i].sh_flags & SHF_EXECINSTR)) in __kexec_load_purgatory()
728 if (sechdrs[i].sh_addr <= pi->ehdr->e_entry && in __kexec_load_purgatory()
729 ((sechdrs[i].sh_addr + sechdrs[i].sh_size) > in __kexec_load_purgatory()
732 entry -= sechdrs[i].sh_addr; in __kexec_load_purgatory()
744 if (!(sechdrs[i].sh_flags & SHF_ALLOC)) in __kexec_load_purgatory()
747 align = sechdrs[i].sh_addralign; in __kexec_load_purgatory()
748 if (sechdrs[i].sh_type != SHT_NOBITS) { in __kexec_load_purgatory()
752 buf_sz += sechdrs[i].sh_size; in __kexec_load_purgatory()
758 bss_sz += sechdrs[i].sh_size; in __kexec_load_purgatory()
792 if (!(sechdrs[i].sh_flags & SHF_ALLOC)) in __kexec_load_purgatory()
795 align = sechdrs[i].sh_addralign; in __kexec_load_purgatory()
796 if (sechdrs[i].sh_type != SHT_NOBITS) { in __kexec_load_purgatory()
800 src = (char *) sechdrs[i].sh_offset; in __kexec_load_purgatory()
801 memcpy(buf_addr + offset, src, sechdrs[i].sh_size); in __kexec_load_purgatory()
804 sechdrs[i].sh_addr = curr_load_addr; in __kexec_load_purgatory()
810 sechdrs[i].sh_offset = (unsigned long)(buf_addr + offset); in __kexec_load_purgatory()
813 curr_load_addr += sechdrs[i].sh_size; in __kexec_load_purgatory()
816 sechdrs[i].sh_addr = bss_addr; in __kexec_load_purgatory()
817 bss_addr += sechdrs[i].sh_size; in __kexec_load_purgatory()
823 entry += sechdrs[entry_sidx].sh_addr; in __kexec_load_purgatory()
829 pi->sechdrs = sechdrs; in __kexec_load_purgatory()
838 vfree(sechdrs); in __kexec_load_purgatory()
847 Elf_Shdr *sechdrs = pi->sechdrs; in kexec_apply_relocations() local
853 if (sechdrs[i].sh_type != SHT_RELA && in kexec_apply_relocations()
854 sechdrs[i].sh_type != SHT_REL) 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()
867 section = &sechdrs[sechdrs[i].sh_info]; in kexec_apply_relocations()
868 symtab = &sechdrs[sechdrs[i].sh_link]; in kexec_apply_relocations()
885 if (sechdrs[i].sh_type == SHT_RELA) in kexec_apply_relocations()
887 sechdrs, i); in kexec_apply_relocations()
888 else if (sechdrs[i].sh_type == SHT_REL) in kexec_apply_relocations()
890 sechdrs, i); in kexec_apply_relocations()
936 vfree(pi->sechdrs); in kexec_load_purgatory()
945 Elf_Shdr *sechdrs; in kexec_purgatory_find_symbol() local
950 if (!pi->sechdrs || !pi->ehdr) in kexec_purgatory_find_symbol()
953 sechdrs = pi->sechdrs; in kexec_purgatory_find_symbol()
957 if (sechdrs[i].sh_type != SHT_SYMTAB) in kexec_purgatory_find_symbol()
960 if (sechdrs[i].sh_link >= ehdr->e_shnum) in kexec_purgatory_find_symbol()
963 strtab = (char *)sechdrs[sechdrs[i].sh_link].sh_offset; in kexec_purgatory_find_symbol()
964 syms = (Elf_Sym *)sechdrs[i].sh_offset; in kexec_purgatory_find_symbol()
967 for (k = 0; k < sechdrs[i].sh_size/sizeof(Elf_Sym); k++) { in kexec_purgatory_find_symbol()
999 sechdr = &pi->sechdrs[sym->st_shndx]; in kexec_purgatory_get_symbol_addr()
1016 Elf_Shdr *sechdrs; in kexec_purgatory_get_set_symbol() local
1030 sechdrs = pi->sechdrs; in kexec_purgatory_get_set_symbol()
1032 if (sechdrs[sym->st_shndx].sh_type == SHT_NOBITS) { in kexec_purgatory_get_set_symbol()
1038 sym_buf = (unsigned char *)sechdrs[sym->st_shndx].sh_offset + in kexec_purgatory_get_set_symbol()