linker_file_t
elf_reloc_internal(linker_file_t lf, Elf_Addr relocbase, const void *data,
elf_reloc(linker_file_t lf, Elf_Addr relocbase, const void *data, int type,
elf_reloc_local(linker_file_t lf, Elf_Addr relocbase, const void *data,
elf_reloc_late(linker_file_t lf, Elf_Addr relocbase, const void *data,
elf_cpu_load_file(linker_file_t lf __unused)
elf_cpu_unload_file(linker_file_t lf __unused)
elf_reloc_internal(linker_file_t lf, Elf_Addr relocbase, const void *data,
elf_reloc(linker_file_t lf, Elf_Addr relocbase, const void *data, int type,
elf_reloc_local(linker_file_t lf, Elf_Addr relocbase, const void *data,
elf_cpu_load_file(linker_file_t lf)
elf_cpu_unload_file(linker_file_t lf)
populate_module_info(struct module_info *info, linker_file_t lf)
elf_reloc_internal(linker_file_t lf, Elf_Addr relocbase, const void *data,
elf_reloc_local(linker_file_t lf, Elf_Addr relocbase, const void *data,
elf_reloc(linker_file_t lf, Elf_Addr relocbase, const void *data, int type,
elf_reloc_late(linker_file_t lf, Elf_Addr relocbase, const void *data,
elf_cpu_load_file(linker_file_t lf)
elf_cpu_unload_file(linker_file_t lf __unused)
fbt_provide_module_function(linker_file_t lf, int symindx,
fbt_provide_module_function(linker_file_t lf, int symindx,
fbt_linker_file_cb(linker_file_t lf, void *arg)
fbt_provide_module_function(linker_file_t lf, int symindx,
fbt_provide_module_function(linker_file_t lf, int symindx,
fbt_provide_module_function(linker_file_t lf, int symindx,
kinst_make_probe(linker_file_t lf, int symindx, linker_symval_t *symval,
kinst_make_probe(linker_file_t lf, int symindx, linker_symval_t *symval,
kinst_probe_create(struct kinst_probe *kp, linker_file_t lf)
kinst_linker_file_cb(linker_file_t lf, void *arg)
kinst_make_probe(linker_file_t lf, int symindx, linker_symval_t *symval,
sdt_init_probe(struct sdt_probe *probe, linker_file_t lf)
sdt_load_providers_cb(linker_file_t lf, void *arg __unused)
sdt_load_probes_cb(linker_file_t lf, void *arg __unused)
static void sdt_init_probe(struct sdt_probe *, linker_file_t);
pmc_kld_load(void *arg __unused, linker_file_t lf)
ksyms_size_permod(linker_file_t lf, void *arg)
ksyms_add(linker_file_t lf, void *arg)
elf_reloc_internal(linker_file_t lf, Elf_Addr relocbase, const void *data,
elf_reloc(linker_file_t lf, Elf_Addr relocbase, const void *data, int type,
elf_reloc_local(linker_file_t lf, Elf_Addr relocbase, const void *data,
elf_cpu_load_file(linker_file_t lf __unused)
elf_cpu_unload_file(linker_file_t lf __unused)
link_elf_ctf_get_ddb(linker_file_t lf, linker_ctf_t *lc)
link_elf_ctf_lookup_typename(linker_file_t lf, linker_ctf_t *lc,
link_elf_ctf_get(linker_file_t lf, linker_ctf_t *lc)
linker_file_t lf;
linker_file_t lf;
linker_file_t lf;
linker_file_t linker_kernel_file;
linker_file_t lf;
linker_file_t lftmp; \
linker_file_t lf;
linker_file_t lf;
linker_file_t lf;
linker_file_t container;
linker_file_t lf;
linker_file_t lf;
static void linker_file_add_dependency(linker_file_t file,
linker_file_t lf;
linker_file_t dep);
static caddr_t linker_file_lookup_symbol_internal(linker_file_t file,
linker_file_t lf;
modlist_newmodule(const char *modname, int version, linker_file_t container)
linker_addmodules(linker_file_t lf, struct mod_metadata **start,
linker_file_t lf, nlf;
linker_file_t lf;
linker_file_t lf, nlf;
linker_file_sysinit(linker_file_t lf)
linker_file_t lf;
linker_file_t lfdep;
linker_load_dependencies(linker_file_t lf)
linker_file_t lfdep;
linker_file_t lf;
linker_file_sysuninit(linker_file_t lf)
linker_file_register_sysctls(linker_file_t lf, bool enable)
linker_ctf_load_file(linker_file_t file)
linker_file_enable_sysctls(linker_file_t lf)
linker_file_unregister_sysctls(linker_file_t lf)
linker_file_register_modules(linker_file_t lf)
linker_load_file(const char *filename, linker_file_t *result)
linker_file_t lf;
linker_file_t *result)
linker_file_t lf)
static linker_file_t
linker_file_t lf;
static linker_file_t
linker_file_t lf;
linker_file_t lf;
linker_file_t
linker_file_t lf;
lf = (linker_file_t)kobj_create((kobj_class_t)lc, M_LINKER, M_WAITOK);
linker_file_unload(linker_file_t file, int flags)
linker_ctf_get(linker_file_t file, linker_ctf_t *lc)
linker_file_t lf;
linker_file_t lf;
linker_file_add_dependency(linker_file_t file, linker_file_t dep)
linker_file_t *newdeps;
linker_file_lookup_set(linker_file_t file, const char *name,
linker_file_function_listall(linker_file_t lf,
linker_file_lookup_symbol(linker_file_t file, const char *name, int deps)
linker_file_lookup_symbol_internal(linker_file_t file, const char *name,
static linker_file_t linker_find_file_by_name(const char* _filename);
static linker_file_t linker_find_file_by_id(int _fileid);
module_register(const moduledata_t *data, linker_file_t container)
linker_file_t
linker_file_t lf;
elf_relocaddr(linker_file_t lf, Elf_Addr x)
static int link_elf_link_common_finish(linker_file_t);
link_elf_unload_file(linker_file_t file)
const char *, linker_file_t *);
static int link_elf_link_preload_finish(linker_file_t);
linker_file_t *);
static int link_elf_lookup_symbol(linker_file_t, const char *,
static int link_elf_lookup_debug_symbol(linker_file_t, const char *,
static int link_elf_lookup_debug_symbol_ctf(linker_file_t lf,
static int link_elf_symbol_values(linker_file_t, c_linker_sym_t,
static int link_elf_debug_symbol_values(linker_file_t, c_linker_sym_t,
link_elf_lookup_symbol1(linker_file_t lf, const char *name, c_linker_sym_t *sym,
static int link_elf_search_symbol(linker_file_t, caddr_t,
static void link_elf_unload_file(linker_file_t);
static int link_elf_lookup_set(linker_file_t, const char *,
link_elf_lookup_symbol(linker_file_t lf, const char *name, c_linker_sym_t *sym)
link_elf_lookup_debug_symbol(linker_file_t lf, const char *name,
static int link_elf_each_function_name(linker_file_t,
static int link_elf_each_function_nameval(linker_file_t,
link_elf_lookup_debug_symbol_ctf(linker_file_t lf, const char *name,
static void link_elf_reloc_local(linker_file_t);
link_elf_ifunc_symbol_value(linker_file_t lf, caddr_t *valp, size_t *sizep)
static long link_elf_symtab_get(linker_file_t, const Elf_Sym **);
static long link_elf_strtab_get(linker_file_t, caddr_t *);
link_elf_symbol_values1(linker_file_t lf, c_linker_sym_t sym,
static void link_elf_propagate_vnets(linker_file_t);
link_elf_symbol_values(linker_file_t lf, c_linker_sym_t sym,
static int elf_lookup(linker_file_t, Elf_Size, int, Elf_Addr *);
link_elf_debug_symbol_values(linker_file_t lf, c_linker_sym_t sym,
link_elf_search_symbol(linker_file_t lf, caddr_t value,
link_elf_lookup_set(linker_file_t lf, const char *name,
link_elf_each_function_name(linker_file_t file,
link_elf_each_function_nameval(linker_file_t file,
elf_get_sym(linker_file_t lf, Elf_Size symidx)
elf_get_symname(linker_file_t lf, Elf_Size symidx)
elf_lookup(linker_file_t lf, Elf_Size symidx, int deps, Elf_Addr *res)
link_elf_reloc_local(linker_file_t lf)
link_elf_symtab_get(linker_file_t lf, const Elf_Sym **symtab)
link_elf_strtab_get(linker_file_t lf, caddr_t *strtab)
link_elf_propagate_vnets(linker_file_t lf)
elf_lookup_ifunc(linker_file_t lf, Elf_Size symidx, int deps __unused,
typedef int (*elf_reloc_fn)(linker_file_t lf, Elf_Addr relocbase,
link_elf_invoke_ctors(linker_file_t lf)
link_elf_link_common_finish(linker_file_t lf)
link_elf_locate_exidx(linker_file_t lf, Elf_Shdr *shdr, int nhdr)
linker_file_t *result)
linker_file_t lf;
link_elf_link_preload_finish(linker_file_t lf)
linker_file_t* result)
const char *, linker_file_t *);
link_elf_unload_file(linker_file_t file)
static int link_elf_link_preload_finish(linker_file_t);
static int link_elf_load_file(linker_class_t, const char *, linker_file_t *);
static int link_elf_lookup_symbol(linker_file_t, const char *,
static int link_elf_lookup_debug_symbol(linker_file_t, const char *,
static int link_elf_lookup_debug_symbol_ctf(linker_file_t lf,
static int link_elf_symbol_values(linker_file_t, c_linker_sym_t,
static int link_elf_debug_symbol_values(linker_file_t, c_linker_sym_t,
static int link_elf_search_symbol(linker_file_t, caddr_t value,
static void link_elf_unload_file(linker_file_t);
static int link_elf_lookup_set(linker_file_t, const char *,
static int link_elf_each_function_name(linker_file_t,
link_elf_lookup_symbol1(linker_file_t lf, const char *name, c_linker_sym_t *sym,
static int link_elf_each_function_nameval(linker_file_t,
link_elf_lookup_symbol(linker_file_t lf, const char *name, c_linker_sym_t *sym)
link_elf_lookup_debug_symbol(linker_file_t lf, const char *name,
static int link_elf_reloc_local(linker_file_t, bool);
link_elf_lookup_debug_symbol_ctf(linker_file_t lf, const char *name,
static long link_elf_symtab_get(linker_file_t, const Elf_Sym **);
link_elf_ifunc_symbol_value(linker_file_t lf, caddr_t *valp, size_t *sizep)
static long link_elf_strtab_get(linker_file_t, caddr_t *);
link_elf_symbol_values1(linker_file_t lf, c_linker_sym_t sym,
static void link_elf_propagate_vnets(linker_file_t);
link_elf_symbol_values(linker_file_t lf, c_linker_sym_t sym,
static int elf_obj_lookup(linker_file_t lf, Elf_Size symidx, int deps,
link_elf_debug_symbol_values(linker_file_t lf, c_linker_sym_t sym,
link_elf_search_symbol(linker_file_t lf, caddr_t value,
link_elf_lookup_set(linker_file_t lf, const char *name,
link_elf_each_function_name(linker_file_t file,
link_elf_each_function_nameval(linker_file_t file,
elf_obj_lookup(linker_file_t lf, Elf_Size symidx, int deps, Elf_Addr *res)
link_elf_reloc_local(linker_file_t lf, bool ifuncs)
link_elf_symtab_get(linker_file_t lf, const Elf_Sym **symtab)
link_elf_strtab_get(linker_file_t lf, caddr_t *strtab)
link_elf_propagate_vnets(linker_file_t lf)
linker_file_t *result)
linker_file_t lf;
link_elf_invoke_ctors(linker_file_t lf)
link_elf_invoke_dtors(linker_file_t lf)
link_elf_link_preload_finish(linker_file_t lf)
linker_file_t *result)
linker_file_t lf;
linker_file_t file; /* module file, if autoloaded */
linker_file_t result;
elf_reloc_internal(linker_file_t lf, Elf_Addr relocbase, const void *data,
elf_reloc(linker_file_t lf, Elf_Addr relocbase, const void *data, int type,
elf_reloc_local(linker_file_t lf, Elf_Addr relocbase, const void *data,
elf_cpu_load_file(linker_file_t lf)
elf_cpu_unload_file(linker_file_t lf __unused)
elf_reloc_internal(linker_file_t lf, Elf_Addr relocbase, const void *data,
elf_reloc(linker_file_t lf, Elf_Addr relocbase, const void *data, int type,
elf_reloc_local(linker_file_t lf, Elf_Addr relocbase, const void *data,
elf_cpu_load_file(linker_file_t lf)
elf_cpu_unload_file(linker_file_t lf __unused)
elf_reloc_internal(linker_file_t lf, Elf_Addr relocbase, const void *data,
elf_reloc(linker_file_t lf, Elf_Addr relocbase, const void *data, int type,
elf_reloc_local(linker_file_t lf, Elf_Addr relocbase, const void *data,
elf_cpu_load_file(linker_file_t lf __unused)
elf_cpu_unload_file(linker_file_t lf __unused)
typedef int linker_predicate_t(linker_file_t, void *);
extern linker_file_t linker_kernel_file;
extern linker_file_t __this_linker_file;
linker_file_t* _result);
linker_file_t _file);
caddr_t linker_file_lookup_symbol(linker_file_t _file, const char* _name,
int linker_file_lookup_set(linker_file_t _file, const char *_name,
int linker_file_function_listall(linker_file_t,
int linker_file_unload(linker_file_t _file, int flags);
int linker_load_dependencies(linker_file_t _lf);
linker_file_t linker_make_file(const char* _filename, linker_class_t _cls);
typedef int elf_lookup_fn(linker_file_t, Elf_Size, int, Elf_Addr *);
int elf_reloc(linker_file_t _lf, Elf_Addr base, const void *_rel,
int elf_reloc_local(linker_file_t _lf, Elf_Addr base, const void *_rel,
Elf_Addr elf_relocaddr(linker_file_t _lf, Elf_Addr addr);
const Elf_Sym *elf_get_sym(linker_file_t _lf, Elf_Size _symidx);
const char *elf_get_symname(linker_file_t _lf, Elf_Size _symidx);
int elf_reloc_late(linker_file_t _lf, Elf_Addr base, const void *_rel,
int linker_ctf_get(linker_file_t, linker_ctf_t *);
int elf_cpu_load_file(linker_file_t);
int elf_cpu_unload_file(linker_file_t);
typedef int (*linker_function_nameval_callback_t)(linker_file_t, int, linker_symval_t *, void *);
linker_file_t* deps; /* list of dependencies */