/usr/share/systemtap/runtime/dyninst
NameSizeModeActions
addr-map.c5650644editdlrm
alloc.c11880644editdlrm
arith.c22910644editdlrm
common_session_state.h69210644editdlrm
copy.c40950644editdlrm
debug.h4130644editdlrm
ilog2.h29430644editdlrm
io.c45410644editdlrm
linux_defs.h56020644editdlrm
linux_hash.h18770644editdlrm
linux_types.h6540644editdlrm
loc2c-runtime.h24940644editdlrm
map_list.h10590644editdlrm
map_runtime.h51600644editdlrm
namespaces.h00644editdlrm
offptr.h47880644editdlrm
offset_list.h44280644editdlrm
perf.c00644editdlrm
print.c27000644editdlrm
probe_lock.h18490644editdlrm
regs.c25570644editdlrm
runtime.h102920644editdlrm
runtime_context.h65560644editdlrm
runtime_defines.h2800644editdlrm
session_attributes.c17170644editdlrm
session_attributes.h7720644editdlrm
shm.c61710644editdlrm
stapdyn.h46170644editdlrm
stat_runtime.h18320644editdlrm
sym.c16210644editdlrm
task_finder.c00644editdlrm
timer.c27700644editdlrm
transport.c311280644editdlrm
transport.h39680644editdlrm
unwind.c00644editdlrm
uprobes-regs.c31630644editdlrm
uprobes.c17980644editdlrm
uprobes.h9530644editdlrm
Edit: /usr/share/systemtap/runtime/dyninst/sym.c (1621B)
struct task_struct; #include "../sym.h" #include #include typedef struct { char *fn; unsigned long offset; } module_args; static int module_callback (Dwfl_Module *mod, void **userdata __attribute__((unused)), const char *name, Dwarf_Addr start, void *arg) { module_args *modargs = (module_args*)arg; if (strcmp (modargs->fn, name) == 0) { modargs->offset += start; return DWARF_CB_ABORT; } return DWARF_CB_OK; } static unsigned long _stp_umodule_relocate(const char *path, unsigned long offset, struct task_struct *task) { static char *debuginfo_path; static const Dwfl_Callbacks proc_callbacks = { .find_debuginfo = dwfl_standard_find_debuginfo, .debuginfo_path = &debuginfo_path, .find_elf = dwfl_linux_proc_find_elf, }; Dwfl *dwfl = dwfl_begin (&proc_callbacks); if (dwfl == NULL) _stp_error ("dwfl_begin: %s", dwfl_errmsg (-1)); int result = dwfl_linux_proc_report (dwfl, getpid()); if (result < 0) _stp_error ("dwfl_linux_proc_report: %s", dwfl_errmsg (-1)); else if (result > 0) _stp_error ("dwfl_linux_proc_report"); if (dwfl_report_end (dwfl, NULL, NULL) != 0) _stp_error ("dwfl_report_end: %s", dwfl_errmsg (-1)); module_args modargs = { .fn = (char*)path, .offset = offset }; if (dwfl_getmodules (dwfl, module_callback, &modargs, 0) == -1) _stp_error ("dwfl_getmodules: %s", dwfl_errmsg (-1)); dwfl_end (dwfl); return modargs.offset; }