/
usr
/
share
/
systemtap
/
runtime
/
dyninst
/
/usr/share/systemtap/runtime/dyninst
mkdir
upload
Name
Size
Mode
Actions
addr-map.c
565
0644
edit
dl
rm
alloc.c
1188
0644
edit
dl
rm
arith.c
2291
0644
edit
dl
rm
common_session_state.h
6921
0644
edit
dl
rm
copy.c
4095
0644
edit
dl
rm
debug.h
413
0644
edit
dl
rm
ilog2.h
2943
0644
edit
dl
rm
io.c
4541
0644
edit
dl
rm
linux_defs.h
5602
0644
edit
dl
rm
linux_hash.h
1877
0644
edit
dl
rm
linux_types.h
654
0644
edit
dl
rm
loc2c-runtime.h
2494
0644
edit
dl
rm
map_list.h
1059
0644
edit
dl
rm
map_runtime.h
5160
0644
edit
dl
rm
namespaces.h
0
0644
edit
dl
rm
offptr.h
4788
0644
edit
dl
rm
offset_list.h
4428
0644
edit
dl
rm
perf.c
0
0644
edit
dl
rm
print.c
2700
0644
edit
dl
rm
probe_lock.h
1849
0644
edit
dl
rm
regs.c
2557
0644
edit
dl
rm
runtime.h
10292
0644
edit
dl
rm
runtime_context.h
6556
0644
edit
dl
rm
runtime_defines.h
280
0644
edit
dl
rm
session_attributes.c
1717
0644
edit
dl
rm
session_attributes.h
772
0644
edit
dl
rm
shm.c
6171
0644
edit
dl
rm
stapdyn.h
4617
0644
edit
dl
rm
stat_runtime.h
1832
0644
edit
dl
rm
sym.c
1621
0644
edit
dl
rm
task_finder.c
0
0644
edit
dl
rm
timer.c
2770
0644
edit
dl
rm
transport.c
31128
0644
edit
dl
rm
transport.h
3968
0644
edit
dl
rm
unwind.c
0
0644
edit
dl
rm
uprobes-regs.c
3163
0644
edit
dl
rm
uprobes.c
1798
0644
edit
dl
rm
uprobes.h
953
0644
edit
dl
rm
Edit:
/usr/share/systemtap/runtime/dyninst/sym.c
(1621B)
struct task_struct; #include "../sym.h" #include <assert.h> #include <elfutils/libdwfl.h> 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; }
Save
cmd:
run