/linux-master/arch/powerpc/kernel/ |
H A D | module_64.c | 208 const Elf64_Shdr *sechdrs) 216 if (sechdrs[i].sh_type == SHT_RELA) { 219 (void *)sechdrs[i].sh_addr, 220 sechdrs[i].sh_size / sizeof(Elf64_Rela)); 227 sort((void *)sechdrs[i].sh_addr, 228 sechdrs[i].sh_size / sizeof(Elf64_Rela), 231 relocs += count_relocs((void *)sechdrs[i].sh_addr, 232 sechdrs[i].sh_size 236 relocs += count_relocs((void *)sechdrs[i].sh_addr, 237 sechdrs[ 207 get_stubs_size(const Elf64_Ehdr *hdr, const Elf64_Shdr *sechdrs) argument 258 count_pcpu_relocs(const Elf64_Shdr *sechdrs, const Elf64_Rela *rela, unsigned int num, unsigned int symindex, unsigned int pcpu) argument 288 get_got_size(const Elf64_Ehdr *hdr, const Elf64_Shdr *sechdrs, struct module *me) argument 378 find_dot_toc(Elf64_Shdr *sechdrs, const char *strtab, unsigned int symindex) argument 403 module_frob_arch_sections(Elf64_Ehdr *hdr, Elf64_Shdr *sechdrs, char *secstrings, struct module *me) argument 580 my_r2(const Elf64_Shdr *sechdrs, struct module *me) argument 590 create_stub(const Elf64_Shdr *sechdrs, struct ppc64_stub_entry *entry, unsigned long addr, struct module *me, const char *name) argument 667 stub_for_addr(const Elf64_Shdr *sechdrs, unsigned long addr, struct module *me, const char *name) argument 695 got_for_addr(const Elf64_Shdr *sechdrs, unsigned long addr, struct module *me, const char *name) argument 764 apply_relocate_add(Elf64_Shdr *sechdrs, const char *strtab, unsigned int symindex, unsigned int relsec, struct module *me) argument 1089 module_finalize_ftrace(struct module *mod, const Elf_Shdr *sechdrs) argument [all...] |
/linux-master/arch/riscv/include/asm/ |
H A D | module.h | 116 const Elf_Shdr *sechdrs, 120 const char *secstrs = (void *)hdr + sechdrs[hdr->e_shstrndx].sh_offset; 122 for (s = sechdrs, se = sechdrs + hdr->e_shnum; s < se; s++) { 115 find_section(const Elf_Ehdr *hdr, const Elf_Shdr *sechdrs, const char *name) argument
|
/linux-master/arch/riscv/kernel/ |
H A D | elf_kexec.c | 378 const Elf_Shdr *sechdrs; local 383 sechdrs = (void *)pi->ehdr + pi->ehdr->e_shoff; 384 strtab = (char *)pi->ehdr + sechdrs[symtab->sh_link].sh_offset; 385 shstrtab = (char *)pi->ehdr + sechdrs[pi->ehdr->e_shstrndx].sh_offset; 402 name = shstrtab + sechdrs[sym->st_shndx].sh_name; 415 sec_base = pi->sechdrs[sym->st_shndx].sh_addr;
|
H A D | module-sections.c | 90 int module_frob_arch_sections(Elf_Ehdr *ehdr, Elf_Shdr *sechdrs, argument 101 if (!strcmp(secstrings + sechdrs[i].sh_name, ".plt")) 102 mod->arch.plt.shdr = sechdrs + i; 103 else if (!strcmp(secstrings + sechdrs[i].sh_name, ".got")) 104 mod->arch.got.shdr = sechdrs + i; 105 else if (!strcmp(secstrings + sechdrs[i].sh_name, ".got.plt")) 106 mod->arch.got_plt.shdr = sechdrs + i; 124 Elf_Rela *relas = (void *)ehdr + sechdrs[i].sh_offset; 125 int num_rela = sechdrs[i].sh_size / sizeof(Elf_Rela); 126 Elf_Shdr *dst_sec = sechdrs [all...] |
H A D | module.c | 776 int apply_relocate_add(Elf_Shdr *sechdrs, const char *strtab, argument 780 Elf_Rela *rel = (void *) sechdrs[relsec].sh_addr; 788 unsigned int num_relocations = sechdrs[relsec].sh_size / sizeof(*rel); 802 sechdrs[relsec].sh_info); 806 location = (void *)sechdrs[sechdrs[relsec].sh_info].sh_addr 809 sym = (Elf_Sym *)sechdrs[symindex].sh_addr 841 sechdrs[sechdrs[relsec].sh_info].sh_addr 851 (Elf_Sym *)sechdrs[syminde 907 module_finalize(const Elf_Ehdr *hdr, const Elf_Shdr *sechdrs, struct module *me) argument [all...] |
/linux-master/arch/s390/kernel/ |
H A D | machine_kexec_file.c | 315 const Elf_Shdr *sechdrs; local 321 sechdrs = (void *)pi->ehdr + pi->ehdr->e_shoff; 322 strtab = (char *)pi->ehdr + sechdrs[symtab->sh_link].sh_offset; 323 shstrtab = (char *)pi->ehdr + sechdrs[pi->ehdr->e_shstrndx].sh_offset; 339 name = shstrtab + sechdrs[sym->st_shndx].sh_name; 364 val += pi->sechdrs[sym->st_shndx].sh_addr;
|
H A D | module.c | 106 int module_frob_arch_sections(Elf_Ehdr *hdr, Elf_Shdr *sechdrs, argument 119 switch (sechdrs[i].sh_type) { 121 symtab = sechdrs + i; 136 strings = (void *) hdr + sechdrs[symtab->sh_link].sh_offset; 152 if (sechdrs[i].sh_type != SHT_RELA) 154 nrela = sechdrs[i].sh_size / sizeof(Elf_Rela); 155 rela = (void *) hdr + sechdrs[i].sh_offset; 427 static int __apply_relocate_add(Elf_Shdr *sechdrs, const char *strtab, argument 439 relsec, sechdrs[relsec].sh_info); 440 base = sechdrs[sechdr 453 apply_relocate_add(Elf_Shdr *sechdrs, const char *strtab, unsigned int symindex, unsigned int relsec, struct module *me) argument 491 module_finalize(const Elf_Ehdr *hdr, const Elf_Shdr *sechdrs, struct module *me) argument [all...] |
/linux-master/arch/sh/kernel/ |
H A D | dwarf.c | 1089 int module_dwarf_finalize(const Elf_Ehdr *hdr, const Elf_Shdr *sechdrs, argument 1094 char *secstrings = (void *)hdr + sechdrs[hdr->e_shstrndx].sh_offset; 1100 if ((sechdrs[i].sh_flags & SHF_ALLOC) 1101 && !strcmp(secstrings+sechdrs[i].sh_name, ".eh_frame")) { 1102 start = sechdrs[i].sh_addr; 1103 end = start + sechdrs[i].sh_size;
|
H A D | module.c | 24 int apply_relocate_add(Elf32_Shdr *sechdrs, argument 31 Elf32_Rela *rel = (void *)sechdrs[relsec].sh_addr; 38 sechdrs[relsec].sh_info); 39 for (i = 0; i < sechdrs[relsec].sh_size / sizeof(*rel); i++) { 41 location = (void *)sechdrs[sechdrs[relsec].sh_info].sh_addr 45 sym = (Elf32_Sym *)sechdrs[symindex].sh_addr 91 const Elf_Shdr *sechdrs, 96 ret |= module_dwarf_finalize(hdr, sechdrs, me); 90 module_finalize(const Elf_Ehdr *hdr, const Elf_Shdr *sechdrs, struct module *me) argument
|
/linux-master/arch/sparc/kernel/ |
H A D | module.c | 26 Elf_Shdr *sechdrs, 35 for (symidx = 0; sechdrs[symidx].sh_type != SHT_SYMTAB; symidx++) { 41 sym = (Elf_Sym *)sechdrs[symidx].sh_addr; 42 strtab = (char *)sechdrs[sechdrs[symidx].sh_link].sh_addr; 44 for (i = 1; i < sechdrs[symidx].sh_size / sizeof(Elf_Sym); i++) { 53 int apply_relocate_add(Elf_Shdr *sechdrs, argument 60 Elf_Rela *rel = (void *)sechdrs[relsec].sh_addr; 65 for (i = 0; i < sechdrs[relsec].sh_size / sizeof(*rel); i++) { 69 location = (u8 *)sechdrs[sechdr 25 module_frob_arch_sections(Elf_Ehdr *hdr, Elf_Shdr *sechdrs, char *secstrings, struct module *mod) argument 154 do_patch_sections(const Elf_Ehdr *hdr, const Elf_Shdr *sechdrs) argument 177 module_finalize(const Elf_Ehdr *hdr, const Elf_Shdr *sechdrs, struct module *me) argument [all...] |
/linux-master/arch/x86/kernel/ |
H A D | machine_kexec_64.c | 394 const Elf_Shdr *sechdrs; local 397 sechdrs = (void *)pi->ehdr + pi->ehdr->e_shoff; 398 strtab = (char *)pi->ehdr + sechdrs[symtabsec->sh_link].sh_offset; 399 shstrtab = (char *)pi->ehdr + sechdrs[pi->ehdr->e_shstrndx].sh_offset; 437 name = shstrtab + sechdrs[sym->st_shndx].sh_name; 460 sec_base = pi->sechdrs[sym->st_shndx].sh_addr;
|
H A D | module.c | 40 int apply_relocate(Elf32_Shdr *sechdrs, argument 47 Elf32_Rel *rel = (void *)sechdrs[relsec].sh_addr; 52 relsec, sechdrs[relsec].sh_info); 53 for (i = 0; i < sechdrs[relsec].sh_size / sizeof(*rel); i++) { 55 location = (void *)sechdrs[sechdrs[relsec].sh_info].sh_addr 59 sym = (Elf32_Sym *)sechdrs[symindex].sh_addr 81 static int __write_relocate_add(Elf64_Shdr *sechdrs, argument 90 Elf64_Rela *rel = (void *)sechdrs[relsec].sh_addr; 98 relsec, sechdrs[relse 174 write_relocate_add(Elf64_Shdr *sechdrs, const char *strtab, unsigned int symindex, unsigned int relsec, struct module *me, bool apply) argument 201 apply_relocate_add(Elf64_Shdr *sechdrs, const char *strtab, unsigned int symindex, unsigned int relsec, struct module *me) argument 211 clear_relocate_add(Elf64_Shdr *sechdrs, const char *strtab, unsigned int symindex, unsigned int relsec, struct module *me) argument 223 module_finalize(const Elf_Ehdr *hdr, const Elf_Shdr *sechdrs, struct module *me) argument [all...] |
/linux-master/include/linux/ |
H A D | cfi.h | 40 void module_cfi_finalize(const Elf_Ehdr *hdr, const Elf_Shdr *sechdrs, 44 const Elf_Shdr *sechdrs, 43 module_cfi_finalize(const Elf_Ehdr *hdr, const Elf_Shdr *sechdrs, struct module *mod) argument
|
H A D | kexec.h | 115 * Temporary, modifiable buffer for sechdrs used for relocation. 118 Elf_Shdr *sechdrs; member in struct:purgatory_info
|
H A D | livepatch.h | 233 int klp_apply_section_relocs(struct module *pmod, Elf_Shdr *sechdrs, 247 int klp_apply_section_relocs(struct module *pmod, Elf_Shdr *sechdrs, argument
|
H A D | module.h | 390 * @sechdrs: Section header table 396 Elf_Shdr *sechdrs; member in struct:klp_modinfo 890 const Elf_Shdr *sechdrs, 889 module_bug_finalize(const Elf_Ehdr *hdr, const Elf_Shdr *sechdrs, struct module *mod) argument
|
H A D | moduleloader.h | 21 Elf_Shdr *sechdrs, 48 int apply_relocate(Elf_Shdr *sechdrs, 54 static inline int apply_relocate(Elf_Shdr *sechdrs, argument 71 int apply_relocate_add(Elf_Shdr *sechdrs, 87 void clear_relocate_add(Elf_Shdr *sechdrs, 94 static inline int apply_relocate_add(Elf_Shdr *sechdrs, argument 108 const Elf_Shdr *sechdrs,
|
/linux-master/kernel/ |
H A D | cfi.c | 48 void module_cfi_finalize(const Elf_Ehdr *hdr, const Elf_Shdr *sechdrs, argument 57 secstrings = (char *)hdr + sechdrs[hdr->e_shstrndx].sh_offset; 60 if (strcmp(secstrings + sechdrs[i].sh_name, "__kcfi_traps")) 63 mod->kcfi_traps = (s32 *)sechdrs[i].sh_addr; 64 mod->kcfi_traps_end = (s32 *)(sechdrs[i].sh_addr + sechdrs[i].sh_size);
|
H A D | kexec_file.c | 108 vfree(pi->sechdrs); 109 pi->sechdrs = NULL; 837 const Elf_Shdr *sechdrs; local 843 sechdrs = (void *)pi->ehdr + pi->ehdr->e_shoff; 848 if (!(sechdrs[i].sh_flags & SHF_ALLOC)) 851 align = sechdrs[i].sh_addralign; 852 if (sechdrs[i].sh_type != SHT_NOBITS) { 856 kbuf->bufsz += sechdrs[i].sh_size; 861 bss_sz += sechdrs[i].sh_size; 886 * kexec_purgatory_setup_sechdrs - prepares the pi->sechdrs buffe 901 Elf_Shdr *sechdrs; local 971 const Elf_Shdr *sechdrs; local 1080 const Elf_Shdr *sechdrs; local [all...] |
/linux-master/kernel/livepatch/ |
H A D | core.c | 192 static int klp_resolve_symbols(Elf_Shdr *sechdrs, const char *strtab, argument 220 sym = (Elf_Sym *)sechdrs[symndx].sh_addr + ELF_R_SYM(relas[i].r_info); 263 void __weak clear_relocate_add(Elf_Shdr *sechdrs, argument 294 static int klp_write_section_relocs(struct module *pmod, Elf_Shdr *sechdrs, argument 301 Elf_Shdr *sec = sechdrs + secndx; 320 ret = klp_resolve_symbols(sechdrs, strtab, symndx, 325 return apply_relocate_add(sechdrs, strtab, symndx, secndx, pmod); 328 clear_relocate_add(sechdrs, strtab, symndx, secndx, pmod); 332 int klp_apply_section_relocs(struct module *pmod, Elf_Shdr *sechdrs, argument 337 return klp_write_section_relocs(pmod, sechdrs, shstrta [all...] |
/linux-master/kernel/module/ |
H A D | debug_kmemleak.c | 22 if (!(info->sechdrs[i].sh_flags & SHF_ALLOC) || 23 !(info->sechdrs[i].sh_flags & SHF_WRITE) || 24 (info->sechdrs[i].sh_flags & SHF_EXECINSTR)) 27 kmemleak_scan_area((void *)info->sechdrs[i].sh_addr, 28 info->sechdrs[i].sh_size, GFP_KERNEL);
|
H A D | internal.h | 67 Elf_Shdr *sechdrs; member in struct:load_info 328 int module_enforce_rwx_sections(Elf_Ehdr *hdr, Elf_Shdr *sechdrs,
|
H A D | kallsyms.c | 40 const Elf_Shdr *sechdrs = info->sechdrs; local 54 if (sechdrs[sym->st_shndx].sh_flags & SHF_EXECINSTR) 56 if (sechdrs[sym->st_shndx].sh_flags & SHF_ALLOC && 57 sechdrs[sym->st_shndx].sh_type != SHT_NOBITS) { 58 if (!(sechdrs[sym->st_shndx].sh_flags & SHF_WRITE)) 60 else if (sechdrs[sym->st_shndx].sh_flags & ARCH_SHF_SMALL) 65 if (sechdrs[sym->st_shndx].sh_type == SHT_NOBITS) { 66 if (sechdrs[sym->st_shndx].sh_flags & ARCH_SHF_SMALL) 71 if (strstarts(info->secstrings + sechdrs[sy 78 is_core_symbol(const Elf_Sym *src, const Elf_Shdr *sechdrs, unsigned int shnum, unsigned int pcpundx) argument [all...] |
H A D | livepatch.c | 33 size = sizeof(*info->sechdrs) * info->hdr->e_shnum; 34 mod->klp_info->sechdrs = kmemdup(info->sechdrs, size, GFP_KERNEL); 35 if (!mod->klp_info->sechdrs) { 41 size = info->sechdrs[info->hdr->e_shstrndx].sh_size; 58 mod->klp_info->sechdrs[symndx].sh_addr = (unsigned long)mod->core_kallsyms.symtab; 63 kfree(mod->klp_info->sechdrs); 71 kfree(mod->klp_info->sechdrs);
|
H A D | main.c | 189 Elf_Shdr *shdr = &info->sechdrs[i]; 202 return (void *)info->sechdrs[find_sec(info, name)].sh_addr; 214 *num = info->sechdrs[sec].sh_size / object_size; 215 return (void *)info->sechdrs[sec].sh_addr; 224 Elf_Shdr *shdr = &info->sechdrs[i]; 243 *num = info->sechdrs[sec].sh_size / object_size; 244 return (void *)info->sechdrs[sec].sh_addr; 379 Elf_Shdr *pcpusec = &info->sechdrs[info->index.pcpu]; 475 if (info->sechdrs[info->index.pcpu].sh_size != 0) 1038 Elf_Shdr *infosec = &info->sechdrs[inf 2340 module_frob_arch_sections(Elf_Ehdr *hdr, Elf_Shdr *sechdrs, char *secstrings, struct module *mod) argument 2435 module_finalize(const Elf_Ehdr *hdr, const Elf_Shdr *sechdrs, struct module *me) argument [all...] |