Lines Matching refs:kallsyms
16 #include <linux/kallsyms.h>
2248 /* Unlink carefully: kallsyms could be walking list. */
2826 mod->kallsyms = mod->init_layout.base + info->mod_kallsyms_init_off;
2828 mod->kallsyms->symtab = (void *)symsec->sh_addr;
2829 mod->kallsyms->num_symtab = symsec->sh_size / sizeof(Elf_Sym);
2831 mod->kallsyms->strtab = (void *)info->sechdrs[info->index.str].sh_addr;
2832 mod->kallsyms->typetab = mod->init_layout.base + info->init_typeoffs;
2835 * Now populate the cut down core kallsyms for after init
2841 src = mod->kallsyms->symtab;
2842 for (ndst = i = 0; i < mod->kallsyms->num_symtab; i++) {
2843 mod->kallsyms->typetab[i] = elf_type(src + i, info);
2848 mod->kallsyms->typetab[i];
2851 s += strlcpy(s, &mod->kallsyms->strtab[src[i].st_name],
3659 /* Setup kallsyms-specific fields. */
3698 /* For freeing module_init on success, in case kallsyms traversing */
3779 /* Switch to core kallsyms now init is done: kallsyms may be walking! */
3780 rcu_assign_pointer(mod->kallsyms, &mod->core_kallsyms);
3791 * We want to free module_init, but be aware that kallsyms may be
3908 * but kallsyms etc. can see us. */
4168 /* Unlink carefully: kallsyms could be walking list. */
4249 static const char *kallsyms_symbol_name(struct mod_kallsyms *kallsyms, unsigned int symnum)
4251 return kallsyms->strtab + kallsyms->symtab[symnum].st_name;
4265 struct mod_kallsyms *kallsyms = rcu_dereference_sched(mod->kallsyms);
4273 bestval = kallsyms_symbol_value(&kallsyms->symtab[best]);
4277 for (i = 1; i < kallsyms->num_symtab; i++) {
4278 const Elf_Sym *sym = &kallsyms->symtab[i];
4286 if (*kallsyms_symbol_name(kallsyms, i) == '\0'
4287 || is_arm_mapping_symbol(kallsyms_symbol_name(kallsyms, i)))
4306 return kallsyms_symbol_name(kallsyms, best);
4315 /* For kallsyms to ask for address resolution. NULL means not found. Careful
4404 struct mod_kallsyms *kallsyms;
4408 kallsyms = rcu_dereference_sched(mod->kallsyms);
4409 if (symnum < kallsyms->num_symtab) {
4410 const Elf_Sym *sym = &kallsyms->symtab[symnum];
4413 *type = kallsyms->typetab[symnum];
4414 strlcpy(name, kallsyms_symbol_name(kallsyms, symnum), KSYM_NAME_LEN);
4420 symnum -= kallsyms->num_symtab;
4430 struct mod_kallsyms *kallsyms = rcu_dereference_sched(mod->kallsyms);
4432 for (i = 0; i < kallsyms->num_symtab; i++) {
4433 const Elf_Sym *sym = &kallsyms->symtab[i];
4435 if (strcmp(name, kallsyms_symbol_name(kallsyms, i)) == 0 &&
4478 struct mod_kallsyms *kallsyms = mod->kallsyms;
4482 for (i = 0; i < kallsyms->num_symtab; i++) {
4483 const Elf_Sym *sym = &kallsyms->symtab[i];
4488 ret = fn(data, kallsyms_symbol_name(kallsyms, i),
4625 * We use the same logic as for /proc/kallsyms.