| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | |/
| | |
| | |
| | |
| | |
| | |
| | | |
* doc/langref.tex (section{Components of a SystemTap script}): Use
.call/.return for the example of tracing function entry/exit. Also
mention "-l" for listing probeable functions.
(subsection{Embedded C functions}): Close the examples with '%}'.
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | | |
* modsign.cxx: Remove including session.h.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The saved stdout should have the exact name of the generated module,
which is better than using a recursive find to locate it. Tracepoints
and @cast may generate additional .ko's which we don't want to confuse
with the real deal.
* stap-server (create_response): grep stdout for the module name.
|
| | | |
|
| | |\
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Conflicts:
aclocal.m4
configure
doc/SystemTap_Tapset_Reference/Makefile.in
testsuite/aclocal.m4
testsuite/configure
|
| | | |\ |
|
| | | | | |
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
* testsuite/systemtap.syscall/syscall.exp: Simplify logic things.
* testsuite/systemtap.syscall/test.tcl: Check compilation result.
* testsuite/systemtap.base/utrace_syscall_args.exp: Change fail to
untested.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
A lot of time during the installcheck was spend just sleeping. Reduce the
sleep time by at least one fifth.
* testsuite/systemtap.examples/*/*meta: Reduct -c "sleep" time.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
When there are lots of tracepoints in the kernel running a script
for each one individually can take several minutes. So run them all
in one giant script at the same time. Also increase timeout for
the stap -l collection step since with an empty cache that might
take more than the default 10 seconds.
* testsuite/systemtap.base/tracepoints.exp: Increase default timeout.
Collect all script fragments and run them as one.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
There is not much to gain from testing low and high optimized programs.
So only test highest optimization level. Half test time from 200 to 100 sec.
* testsuite/systemtap.exelib/exelib.exp: Set opt to list containing just -O3.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Merge lib, mark, uname and ustack stp and tcl scripts into one large
libmarkunamestack stp and tcl script. But keep the individual tests
in case the large test fails and one wants to debug the individual steps.
Takes test time for exelib.exp down from 700 seconds to 200 seconds.
* testsuite/systemtap.exelib/libmarkunamestack.stp: New large stp script.
* testsuite/systemtap.exelib/libmarkunamestack.tcl: New large tcl script.
* testsuite/systemtap.exelib/exelib.exp: Use libmarkunamestack.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Much of uprobe_derived_probe is a straight copy of dwarf_derived_probe,
and some of the comments even acknowledge this. I'm instead making this
an inheritance, so the duplication can be chopped away.
* tapsets.cxx (struct dwarf_derived_probe): Reorganize for inheritance.
(dwarf_derived_probe::dwarf_derived_probe): Adapt to handle process.
(struct uprobe_derived_probe): Inherit from dwarf_derived_probe and
remove duplicate members and methods.
(uprobe_derived_probe::emit_module_decls): Member name changes.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
dtrace.in (semaphore_def_append): New.
(generate): Call it.
(semaphore_def_write): New.
(main): Call it.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
* dwflpp.cxx (translate_location): Add hex pc address to semantic error
when dwarf_getlocation_addr() doesn't return expression.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
* testsuite/systemtap.examples/io/iostat-scsi.stp: Add pure function.
* testsuite/systemtap.examples/io/iostat-scsi.meta: Add -g option.
|
| | | | |\ |
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
Variable lookup is usually done through the scopes from dwarf_getscopes
at a particular pc. This requires an expensive traversal to find the
inner-most die containing the pc. For cases where that containing die
is known, e.g. at a particular function entry, we can do much better
with our die_parent_cache.
This may also help get more accurate variable scopes in cases where
multiple dies contain a pc and the innermost isn't what we're trying to
probe. For example, an inlined call chain of foo->bar->baz may all have
the same entry pc, but if the probe was on function("bar"), we would
want the variables in bar's scope, not baz's.
* dwflpp.h (struct dwflpp): Remove pc_cached_scopes, num_cached_scopes,
and cached_scopes, as they are now remembered by the caller.
* dwflpp.cxx (dwflpp::getscopes): New - the DIE version uses the parent
cache, and the pc version just defers to dwarf_getscopes.
(dwflpp::print_locals, literal_stmt_for_local): Take a scopes vector.
(dwflpp::find_variable_and_frame_base): Take a scopes vector from the
caller instead of computing it every time.
(dwflpp::dwarf_getscopes_cached): Removed.
* tapsets.cxx (dwarf_var_expanding_visitor::getscopes): New cached
lookup function which gets the scopes from the DIE if possible.
(dwarf_var_expanding_visitor::visit_target_symbol): Call getscopes.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
* util.h (delete_map): New templated map deleter.
* dwflpp.cxx (dwflpp::~dwflpp): Use it.
* tapsets.cxx (symbol_table::~symbol_table): Use it.
|
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
This avoids repeated DIE traversal by caching all parents on the first
call, so future calls are just a simple walk up parent links.
* dwflpp.cxx (dwflpp::getscopes_die): New cached function that mimics
libdw's dwarf_getscopes_die using cached parent links.
(dwflpp::cache_die_parents): New function to build the parent cache.
(dwflpp::~dwflpp): Clean up the parent caches.
(dwflpp::iterate_over_labels): Use the cached getscopes_die.
(dwflpp::find_variable_and_frame_base): Ditto.
* tapsets.cxx (dwarf_derived_probe::saveargs): Ditto.
(uprobe_derived_probe::saveargs): Ditto.
(dwarf_var_expanding_visitor::visit_target_symbol_context): Ditto.
|
| | | | | | |
|
| | | | | | |
|
| | | | | | |
|
| | | | | | |
|
| | | | | | |
|
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
* runtime/syscall.h (x86_64 MMAP2_SYSCALL_NO): Define.
|
| | | | |/ |
|
| | | | |
| | | | |
| | | | |
| | | | | |
Signed-off-by: Robb Romans <robb@linux.vnet.ibm.com>
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
signers.
Update NEWS with the latest usage infor for --unprivileged.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
* modsign.cxx (init_cert_db_path): Use 'system' call.
(sign_module): Renamed to 'main'. This is now an independant program.
Check for arguments. Return 1 on error.
* buildrun.cxx (modsign.h): Don't #include it.
(compile_pass): Don't sign the module.
* main.cxx (main): Don't copy the module signature.
* cache.cxx (add_to_cache): Don't cache the module signature.
* Makefile.am (bin_PROGRAMS): Add stap-sign-module.
(stap_SOURCES): Remove modsign.cxx and nsscommon.c.
(stap_sign_module_SOURCES): New variable.
(stap_sign_module_CPPFLAGS): New variable.
(stap_sign_module_LDFLAGS): New variable.
(stap_sign_module_LDADD): New variable.
* stap-server (initialization): Initialize unprivileged.
(parse_options): Handle --unprivileged.
(create_response): Call stap-sign-module if --unprivileged was
specified.
* systemtap.spec: Add stap-sign-module to stap-server.
* Makefile.in: Regenerated.
* doc/Makefile.in: Regenerated.
* doc/SystemTap_Tapset_Reference/Makefile.in: Regenerated.
* grapher/Makefile.in: Regenerated.
* testsuite/Makefile.in: Regenerated.
* aclocal.m4: Likewise.
* testsuite/aclocal.m4: Likewise.
* configure: Likewise.
* testsuite/configure: Likewise.
|
| | |_|/
| |/| |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
For $variables listed in .return probes, a synthetic probe is being
created, for saving the named variable values at function entry. However,
the probe point for this synthetic probe was copied naively, so that
several problems could occur:
- if the original probe point contained wildcards, then each synthetic one
also did, and was therefore multiply derived later
- if the probe point referred to a multiply instantiated function, the
synthetic one was not directly identified with it (at the dwarf_addr level)
Now the synthetic probe is created more carefully, bypassing any further
derivation/expansion processing steps.
* tapsets.cxx (dwarf_var_expanding_visitor): Change add_probe to
add_call_probe field.
(visit_target_symbol_saved_return): Store only the body of the
synthetic probe.
(dwarf_derived_probe ctor): Create intimately related dwarf_derived_probe
for synthetic probe.
(uprobe_derived_probe ctor): Ditto.
|
| | | |
| | | |
| | | |
| | | | |
* transport/symbols.c (_stp_do_relocation): Make msg static.
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
* runtime/regs.h (SET_REG_IP): Define.
(REG_IP_LVALUE): Undefine.
* tapsets.cxx (*::emit_module_decls): Use SET_REG_IP() instead
of old LVALUE? conditional.
Written by jkenisto & jistone.
|
| |\ \ \ |
|
| | | |/
| | |/|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
With old relayfs, out_fd is used only when non-bulk mode. However,
open_oldoutfile and open_relayfs_files open files with fopen and
set only percpu_tmpfile. This will cause a problem with -S option,
that out_fd will be closed when the file size reaches fsize_max
and new fd will be opened only on percpu_tmpfile.
So, out_fd should be synchronized with percpu_tmpfile.
* runtime/staprun/relay_old.c (open_oldoutfile): Set fd of output file
to out_fd[cpu].
(open_relayfs_files): Ditto.
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | | |
* runtime/transport/ring_buffer.c (_stp_event_to_user): Removed unneeded
cast.
(_stp_data_write_reserve): Ditto.
(_stp_data_write_commit): Ditto.
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* testsuite/systemtap.examples/check.exp: Handle with test_support.
* testsuite/systemtap.examples/io/iostat-scsi.meta: Add meta-tag test_support.
* testsuite/systemtap.examples/memory/mmanonpage.meta: Ditto.
* testsuite/systemtap.examples/memory/mmfilepage.meta: Ditto.
* testsuite/systemtap.examples/memory/mmreclaim.meta: Ditto.
* testsuite/systemtap.examples/memory/mmwriteback.meta: Ditto.
* testsuite/systemtap.examples/network/autofs4.meta: Ditto.
* testsuite/systemtap.examples/network/dropwatch.meta: Ditto.
* testsuite/systemtap.examples/process/schedtimes.meta: Ditto.
|
| | |
| | |
| | |
| | |
| | | |
* Makefile.am (uninstall-local): Don't rm libexecdir but remove doc/exmaples.
* Makefile.in: Regenerated.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The general approach is to rip out task_finder_tgt's from all over the
place (including the unwindsym vmcbs, and the stap_uprobe_specs), and
instead have a small handful of them: one for all unwindsyms, and one
per abstract probed process (PID or NAME). These are in turn shared
by all new stap_unwind_specs by index.
Before: probe process("./stap").function("*")
-rw-r--r--. 1 fche users 11775283 2009-09-08 20:26 /var/tmp/fche/systemtap/cache/96/stap_96c0479d674db55ec98d8a8750a790e7_7989596.ko
text data bss dec hex filename
445158 8351944 4306472 13103574 c7f1d6 /var/tmp/fche/systemtap/cache/96/stap_96c0479d674db55ec98d8a8750a790e7_7989596.ko
After: (Note how data shrank, though text gained a bit in const-init-data.)
-rw-r--r--. 1 fche users 4021569 2009-09-08 20:27 /var/tmp/fche/systemtap/cache/e4/stap_e46e88634efd850b1586e81c231c239a_8058419.ko
text data bss dec hex filename
1896511 2192 4324808 6223511 5ef697 /var/tmp/fche/systemtap/cache/e4/stap_e46e88634efd850b1586e81c231c239a_8058419.ko
* tapsets.cxx (uprobe_derived_probe_group): Rewrite emit_module_decls,
and adjust emit_module_init.
* runtime/sym.c (_stp_sym_init): Initialize unwindsyms-shared vmcb.
* runtime/sym.h (_stp_module): Remove *vmcb field.
* translate.cxx (emit_module_init, dump_unwindsyms): Adapt.
* translate.h (assert_0_indent): Flush output before possibly assert-failing.
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Suspecting that some kernel->user control messages may be getting
lost, let's more robustly log these occurrences.
* runtime/transport/control.c (_stp_ctl_send): printk(KERN_ERROR)
instead of ignoring errors.
|
| | |
| | |
| | |
| | | |
* io.c (DEBUG_TASK_FINDER_PRINTK): Remove conditional.
|