3 #include <sys/linker.h>
4 #include <sys/sysctl.h>
13 /* Things which get -E excluded by default. */
14 static char *excludes[] = { ".mcount", "_mcleanup", NULL };
17 kernel_getnfile(const char *unused __unused, char ***defaultEs)
23 if (sysctlbyname("kern.function_list", NULL, &len, NULL, 0) == -1)
24 err(1, "sysctlbyname: function_list size");
26 namelist = malloc(len);
29 if (sysctlbyname("kern.function_list", namelist, &len, NULL,
35 err(1, "sysctlbyname: function_list");
38 for (name = namelist; *name != '\0'; name += strlen(name) + 1)
40 /* Allocate memory for them, plus a terminating entry. */
41 if ((nl = (nltype *)calloc(nname + 1, sizeof(nltype))) == NULL)
42 errx(1, "Insufficient memory for symbol table");
44 for (name = namelist; *name != '\0'; name += strlen(name) + 1) {
45 struct kld_sym_lookup ksl;
47 ksl.version = sizeof(ksl);
49 if (kldsym(0, KLDSYM_LOOKUP, &ksl))
50 err(1, "kldsym(%s)", name);
51 /* aflag not supported */
52 if (uflag && strchr(name, '.') != NULL)
54 npe->value = ksl.symvalue;
60 *defaultEs = excludes;