| Commit message (Collapse) | Author | Age | Files | Lines |
|\
| |
| |
| |
| | |
Conflicts:
runtime/transport/transport.c
|
| |\ |
|
| | |
| | |
| | |
| | | |
tapsets.cxx (dwarf_builder::build): Special case listing mode for kprobe and utrace.
|
| |/
| |
| |
| |
| | |
* runtime/runtime.h: Includes time.c.
* runtime/transport/transport.c: Removed time.c inclusion.
|
| |
| |
| |
| |
| | |
* tapsets.cxx (dwarf_builder) Add probes_handled.
(dwarf_builder::build): Use probes_handled to not emit duplicates.
|
| |
| |
| |
| |
| | |
* testsuite/lib/systemtap.exp (get_system_info): Remove possible newlines
from GCC_Version string.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Prints the gcc being used and full version. Also adds short version
number to systemtap.sum file (plus full version string). Will make
comparing failures based on compiler version being used easier.
* testsuite/lib/systemtap.exp (print_systemtap_version): Also print
location and full version of gcc being used.
(get_system_info): Get gcc version number and long version string.
* testsuite/lib/stap_run.exp (print_system_info): Output GCC version.
|
| |
| |
| |
| |
| |
| |
| |
| | |
* tapset/context.stp: Add pgrp() function.
* testsuite/buildok/context_test.stp: Add pgrp() call.
* stapfuncs.3stap.in: Describe pgrp() and sid().
Signed-off-by: Josh Stone <jistone@redhat.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* sdt.h (EXPERIMENTAL_UTRACE_SDT, EXPERIMENTAL_KPROBE_SDT): New probe
point macros.
* dtrace: Add support for creating type debug info, currently invoked
with --types.
* tapsets.cxx (probe_table::convert_probe): New.
(probe_table::convert_location): New.
(dwarf_builder::build): Use it to simplify probe point handling.
* sdt.exp (pbtype_flags, pbtype_mssgs): New to also test kprobe and utrace.
* static_uprobes.exp (pbtype_flags, pbtype_mssgs): New to also test kprobe and utrace.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The original logic was a little confused. It could end up searching the
separate debuginfo twice instead of falling back to the main elf file.
Now we explicitly search the main elf file first (where the .probes
section really should be) and only then fall back to the separate
debuginfo file.
* tapsets.cxx (dwarf_builder::probe_table::probe_table): Search main
elf file first, then fall back on separate debuginfo file if necessary.
* testsuite/systemtap.exelib/exelib.exp: Enable mark.tcl testcase.
main elf file or the debuginfo file, but would interpret
|
| |
| |
| |
| |
| |
| |
| |
| | |
* testsuite/systemtap.exelib/exelib.exp: Compile against sdt.h.
* testsuite/systemtap.exelib/uprobes_exe.c: Add main_count probe mark.
* testsuite/systemtap.exelib/uprobes_lib.c: Add func_count probe mark.
* testsuite/systemtap.exelib/mark.tcl: New test.
* testsuite/systemtap.exelib/mark.stp: New test tapset.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The testcase now uses noinline, an empty asm statement and a volatile
variable to prevent the function getting inlined, being totally unrolled
or the recursive call being replaced with an inner-iteration.
This does defeat part of the testcase though, which was testing unwinding
through an optimized recursive function. But it seems the best we can do.
* testsuite/systemtap.exelib/exelib.exp: Add -O3 to the mix.
* testsuite/systemtap.exelib/uprobes_exe.c: Use volatile bar and mark
main_func noinline.
* testsuite/systemtap.exelib/uprobes_lib.c: Use volatile foo and mark
lib_func noinline.
|
| |
| |
| |
| |
| |
| |
| | |
* tapsets.cxx (dwarf/kprobe_derived_...::emit_decl/init): Define
and use KRETPROBE instead of hard-coded max(...) values. Raise
the default 50%.
* testsuite/buildok/thirtytwo.stp: New test.
|
| |
| |
| |
| | |
* util.h (lex_cast_qstring): Use unsigned rather than signed chars.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Tests uprobes placed in executables and shared libraries on different
arches (32-on-64 currently disabled), gcc/g++, optimizations (currently
disabled), prelinked libs (currently disabled), seperate libs/exe debuginfo
and pie executables.
* testsuite/systemtap.base/uprobes_exe.c: Moved to...
* testsuite/systemtap.exelib/uprobes_exe.c: From systemtap.base.
* testsuite/systemtap.base/uprobes_lib.c: Moved to...
* testsuite/systemtap.exelib/uprobes_lib.c: From systemtap.base.
* testsuite/systemtap.base/uprobes_lib.exp: Rewritten as...
* testsuite/systemtap.exelib/lib.tcl: From uprobes_lib.exp.
* testsuite/systemtap.base/uprobes_lib.stp: Rewritten as...
* testsuite/systemtap.exelib/lib.stp: From uprobes_lib.stp.
* testsuite/systemtap.base/uprobes_uname.exp: Rewritten as...
* testsuite/systemtap.exelib/uname.tcl: From uprobes_uname.exp.
* testsuite/systemtap.base/uprobes_uname.stp: Rewritten as...
* testsuite/systemtap.exelib/uname.stp: From uprobes_uname.stp.
* testsuite/systemtap.base/uprobes_ustack.exp: Rewritten as...
* testsuite/systemtap.exelib/ustack.tcl: From uprobes_ustack.exp.
* testsuite/systemtap.base/uprobes_ustack.stp: Rewritten as...
* testsuite/systemtap.exelib/ustack.stp: From uprobes_ustack.stp.
* testsuite/systemtap.exelib/exelib.exp: New exelib uprobes framework.
* testsuite/systemtap.exelib/cleanup.tcl: New file.
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
* runtime/transport/relay_v2.c (__stp_relay_create_buf_file_callback): Set
the 'is_global' return parameter so that smp systems work correctly.
|
|\| |
|
| | |
|
| | |
|
| | |
|
| |\ |
|
| | | |
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When anything in systemtap_module_init fails, and we return non-zero,
then the module load is aborted. The normal module unload path
(systemtap_module_exit) is not even attempted, so we need to make sure
that all partially-allocated resources are returned.
Our timer callbacks for the gettimeofday subsystem are a classic example
of this error. If we don't unregister the timers before aborting init,
they will later be called and cause a kernel fault.
We also were neglecting to free the percpu context. A memory leak is
less harmful, but that's fixed now too.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When an instance of an alias has a condition, that condition gets
propagated to each of the locations that the alias defines. However,
the copy of the location list was not a deep copy, and so all other
instances of the alias would also incorrectly receive the condition.
This patch makes the location list copy a little deeper, and adds a
test case which demonstrates the issue.
|
| |
| |
| |
| | |
* translate.cxx (emit_symbol_data): Use ~0 instead of -1 for big unsigned constant
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
The result of sdt's private @cast expansion was not being used, and it's
not really needed anyway. The global cast visitor is registered to run
as a post-processing step on ALL functions and probes, and so it will
pick up and expand sdt's casts too.
|
| |
| |
| |
| |
| | |
This just makes it so the parameters only need to be checked and pulled
out once.
|
| | |
|
| |
| |
| |
| |
| |
| | |
(sdt_var_expanding_visitor::visit_target_symbol): Have @cast use
types from a dtrace built object instead of a dtrace supplied header.
(dwarf_builder::build): Use it.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
(redo commit 3d022fa9c6bdbca383dfc639d08d65287c708f56)
* tapsets.cxx (dwarf_builder::probe_table::probe_table): gcc 4.4
complains that shdr may be used uninitialized. I added returns to
ensure that it's ok, but gcc still complains. Set the thing to NULL
as well to silence the beast.
|
| |
| |
| |
| |
| |
| |
| | |
(probe_table::get_next_probe): Dissect using struct probe_table.
(sdt_var_expanding_visitor): Use lex_cast.
(dwarf_builder::build): Copy probe and location for TOK_MARK cases.
Call derive_probes for kprobe and utrace cases.
|
| |
| |
| |
| |
| |
| | |
It was just a basic NULL check, but creating its string temporaries was
causing a fair slowdown. Removing this function and adjusting the
callers shaves ~5% off the syscall.* elaboration time.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
query_module was already returning DW_CB_ABORT when a simple match was
found, but dwflpp::iterate_over_modules was ignoring that and instead
forcing the module loop to restart. The only way out of the loop was
with the pending_interrupts flag, which is only for signalled
interrupts.
Now iterate_over_modules will only attempt the dwfl_getmodules loop
once, since that loop will only abort if the CB returns DW_CB_ABORT.
Then query_module is also modified to return ABORT if pending_interrupts
is flagged.
My trusty test, stap -l syscall.*, is nearly 2x faster with this change.
Empirically, I found that the kernel object is always the first "module"
returned, so the syscall probepoints always gets to short-circuit the
loop right away.
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* configure.ac: Added --disable-translator feature, creates AM_CONDITIONAL BUILD_TRANSLATOR.
* Makefile.am: Only build runtime components (staprun, stapio) if BUILD_TRANSLATOR == FALSE.
* configure: Regenerated.
* Makefile.in: Likewise.
* aclocal.m4: Likewise.
* config.in: Likewise.
* doc/Makefile.in: Likewise.
* doc/SystemTap_Tapset_Reference/Makefile.in: Likewise.
* grapher/Makefile.in: Likewise.
|
| |
| |
| |
| |
| |
| |
| | |
* tapsets.cxx (dwarf_builder::probe_table::probe_table): gcc 4.4
complains that shdr may be used uninitialized. I added returns to
ensure that it's ok, but gcc still complains. Set the thing to NULL
as well to silence the beast.
|
| |
| |
| |
| |
| |
| | |
dwarf_builder::build to handle the .probes section
(sdt_var_expanding_visitor): New. Expand static probe $argN.
(dwarf_builder::build): Use probe_table. Add kprobe and utrace probe types.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* runtime/sym.h (_stp_kretprobe_trampoline): Document.
* translate.cxx (unwindsym_dump_context): Add stp_kretprobe_trampoline_addr.
(dump_unwindsyms): Detect kretprobe_trampoline_holder symbol address.
(emit_symbol_data): Initialize and emit _stp_kretprobe_trampoline.
* runtime/transport/symbols.c (_stp_do_relocation): Detect kernel load
address and adjust _stp_kretprobe_trampoline.
* runtime/stack-i386.c (__stp_stack_print): Always use fallback unwinder
when hitting kretprobe_trampoline_holder.
* runtime/stack-x86_64.c (__stp_stack_print): Likewise.
|
| |
| |
| |
| |
| | |
These are all the dwarfless analogs to $arch/syscalls.stp.
(Only i686 and x86_64 have been tested...)
|
| | |
|
| |
| |
| |
| | |
This adds renameat, unlinkat, unshare, and compat_sys_semctl.
|
| |
| |
| |
| |
| | |
* runtime/task_finder.c (__stp_call_mmap_callbacks_for_task): Fixed
cut-and-paste error.
|