7#ifndef __LIBDRAGON_DLFCN_H
8#define __LIBDRAGON_DLFCN_H
15#define RTLD_GLOBAL 0x1
19#define RTLD_NODELETE 0x2
21#define RTLD_NOLOAD 0x4
24#define RTLD_DEFAULT ((void *)-1)
26#define RTLD_NEXT ((void *)-2)
48".pushsection \".debug_gdb_scripts\", \"MS\",@progbits,1\n"
50".ascii \"gdb.inlined-script-dso-autoload\\n\"\n"
51".ascii \"import gdb\\n\"\n"
52".ascii \"class BreakpointDsoLoad(gdb.Breakpoint):\\n\"\n"
53".ascii \" def stop(self):\\n\"\n"
54".ascii \" frame = gdb.selected_frame()\\n\"\n"
55".ascii \" src_elf = gdb.execute('printf \\\"%s\\\", module->src_elf', False, True)\\n\"\n"
56".ascii \" prog_base = int(gdb.execute('printf \\\"%x\\\", module->prog_base', False, True), 16)\\n\"\n"
57".ascii \" print(\\\"Loading overlay: \\\", src_elf, \\\"(text:\\\", hex(prog_base), \\\")\\\")\\n\"\n"
58".ascii \" gdb.execute(\\\"add-symbol-file -readnow \\\" + src_elf + \\\" \\\" + hex(prog_base), False, True)\\n\"\n"
59".ascii \" return False\\n\"\n"
60".ascii \"class BreakpointDsoFree(gdb.Breakpoint):\\n\"\n"
61".ascii \" def stop(self):\\n\"\n"
62".ascii \" frame = gdb.selected_frame()\\n\"\n"
63".ascii \" src_elf = gdb.execute('printf \\\"%s\\\", module->src_elf', False, True)\\n\"\n"
64".ascii \" prog_base = int(gdb.execute('printf \\\"%x\\\", module->prog_base', False, True), 16)\\n\"\n"
65".ascii \" print(\\\"Unloading overlay: \\\", src_elf, \\\"(text:\\\", hex(prog_base), \\\")\\\")\\n\"\n"
66".ascii \" gdb.execute(\\\"remove-symbol-file -a \\\" + hex(prog_base), False, True)\\n\"\n"
67".ascii \" return False\\n\"\n"
68".ascii \"bp_load = BreakpointDsoLoad(\\\"__dl_insert_module\\\")\\n\"\n"
69".ascii \"bp_load.silent = True\\n\"\n"
70".ascii \"bl_free = BreakpointDsoFree(\\\"__dl_remove_module\\\")\\n\"\n"
71".ascii \"bl_free.silent = True\\n\"\n"
85void *
dlopen(
const char *filename,
int mode);
94void *
dlsym(
void *handle,
const char *symbol);
void * dli_saddr
Exact address of symbol named in dli_sname.
Definition dlfcn.h:37
const char * dli_sname
Name of symbol whose definition overlaps addr.
Definition dlfcn.h:35
const char * dli_fname
Pathname of shared object that contains address.
Definition dlfcn.h:31
void * dli_fbase
Base address at which shared object is loaded.
Definition dlfcn.h:33
dl_addr info structure
Definition dlfcn.h:29
void * dlopen(const char *filename, int mode)
Open dynamic library.
Definition dlfcn.c:402
char * dlerror(void)
Return last error that occurred in dynamic linker.
Definition dlfcn.c:631
void * dlsym(void *handle, const char *symbol)
Grab symbol from loaded dynamic library.
Definition dlfcn.c:467
int dladdr(const void *addr, Dl_info *info)
Convert address to symbol.
Definition dlfcn.c:596
int dlclose(void *handle)
Close loaded dynamic library.
Definition dlfcn.c:570