Lines Matching +full:libelf +full:- +full:dev
23 * Copyright (c) 1997-1999 by Sun Microsystems, Inc.
42 #include <libelf.h>
91 sep->name = name; in add_symbol()
92 sep->addr = addr; in add_symbol()
93 sep->size = size; in add_symbol()
103 if (sep->addr == addr) in remove_symbol()
104 sep->addr = 0; in remove_symbol()
118 for (ksp = kc->kc_chain; ksp; ksp = ksp->ks_next) { in fake_up_certain_popular_kernel_symbols()
119 if (strcmp(ksp->ks_module, "cpu_info") == 0) { in fake_up_certain_popular_kernel_symbols()
126 if (ksp->ks_instance == 0) in fake_up_certain_popular_kernel_symbols()
127 remove_symbol((uintptr_t)ksp->ks_private); in fake_up_certain_popular_kernel_symbols()
128 (void) sprintf(name, "cpu[%d]", ksp->ks_instance); in fake_up_certain_popular_kernel_symbols()
129 add_symbol(name, (uintptr_t)ksp->ks_private, in fake_up_certain_popular_kernel_symbols()
157 uintptr_t a1 = ((syment_t *)p1)->addr; in symcmp()
158 uintptr_t a2 = ((syment_t *)p2)->addr; in symcmp()
161 return (-1); in symcmp()
177 int strindex = -1; in symtab_init()
180 if ((fd = open("/dev/ksyms", O_RDONLY)) == -1) { in symtab_init()
181 if (errno == ENOENT && modfind("ksyms") == -1) { in symtab_init()
183 fd = open("/dev/ksyms", O_RDONLY); in symtab_init()
185 if (fd == -1) in symtab_init()
186 return (-1); in symtab_init()
189 if ((fd = open("/dev/ksyms", O_RDONLY)) == -1) in symtab_init()
190 return (-1); in symtab_init()
200 symtab = (GElf_Sym *)elf_getdata(scn, NULL)->d_buf; in symtab_init()
208 strtab = (char *)elf_getdata(scn, NULL)->d_buf; in symtab_init()
214 if ((uint_t)ELF32_ST_TYPE(symp->st_info) <= STT_FUNC && in symtab_init()
215 symp->st_size != 0) in symtab_init()
216 add_symbol(symp->st_name + strtab, in symtab_init()
217 (uintptr_t)symp->st_value, (size_t)symp->st_size); in symtab_init()
228 for (i = 0; i < nsyms - 1; i++) in symtab_init()
236 nsyms--; in symtab_init()
250 int hi = nsyms - 1; in addr_to_sym()
254 while (hi - lo > 1) { in addr_to_sym()
263 *offset = addr - sep->addr; in addr_to_sym()
264 *sizep = sep->size; in addr_to_sym()
265 return (sep->name); in addr_to_sym()
275 if (strcmp(name, sep->name) == 0) in sym_to_addr()
276 return (sep->addr); in sym_to_addr()
289 if (strcmp(name, sep->name) == 0) in sym_size()
290 return (sep->size); in sym_size()