syms
int syms;
extern int syms;
if (syms)
syms = 1;
if (syms)
if (syms) {
syms = 1;
if (!syms) {
__sym_ntos(const struct res_sym *syms, int number, int *success)
for (; syms->name != 0; syms++) {
if (number == syms->number) {
return (syms->name);
struct syms *kelf;
struct syms;
struct syms *kelf_open_kernel(const char *);
void kelf_close(struct syms *);
int kelf_snprintsym_kernel(struct syms *, char *, size_t,
if ((syms = calloc(1, sizeof(*syms))) == NULL)
syms->table = calloc(symtab_size, sizeof *syms->table);
if (syms->table == NULL)
syms->table[syms->nsymb].sym_name = strdup(name);
if (syms->table[syms->nsymb].sym_name == NULL)
syms->table[syms->nsymb].sym_value = sym.st_value + base_addr;
syms->table[syms->nsymb].sym_size = sym.st_size;
syms->nsymb++;
tmp = reallocarray(syms->table, syms->nsymb, sizeof *syms->table);
syms->table = tmp;
qsort(syms->table, syms->nsymb, sizeof *syms->table, sym_compare_sort);
for (i = 0; i < syms->nsymb; i++) {
if (syms->table[i].sym_size != 0)
if (i + 1 == syms->nsymb)
diff = syms->table[i + 1].sym_value - syms->table[i].sym_value;
syms->table[i].sym_size = diff;
sls->sls_syms = syms;
free_syms(struct syms *syms)
if (syms != NULL) {
for (i = 0; i < syms->nsymb; i++)
free(syms->table[i].sym_name);
free(syms->table);
free(syms);
struct syms *
struct syms *syms;
syms = sls->sls_syms;
syms = NULL;
return syms;
kelf_close(struct syms *ksyms)
kelf_snprintsym_kernel(struct syms *syms, char *str, size_t size,
entry = bsearch(&key, syms->table, syms->nsymb, sizeof *syms->table,
struct syms *sls_syms;
struct syms *syms = NULL;