]> sourceware.org Git - systemtap.git/log
systemtap.git
14 years agoPR11684 cont'd
Frank Ch. Eigler [Tue, 15 Jun 2010 21:45:40 +0000 (17:45 -0400)]
PR11684 cont'd

* doc/langref.tex: remove all references to tapset-defined functions.
  Leave in just "formatted output" a la printf.  Correct explanation
  of $1 token-pasting.  Still several bits left to fix later.

14 years agodoc build: make clean should clean up dvi files too
Frank Ch. Eigler [Tue, 15 Jun 2010 20:09:48 +0000 (16:09 -0400)]
doc build: make clean should clean up dvi files too

14 years agoBanish the SyScall
Josh Stone [Mon, 14 Jun 2010 17:44:10 +0000 (10:44 -0700)]
Banish the SyScall

We don't need to deal with the SYSCALL_WRAPPERS-generated SyS_foo,
because since the dawn of that feature they have also provided a normal
sys_foo alias.  So as long as alias tracking is working, both in our
translator and in kallsyms for kprobe.function, we can be blissfully
ignorant.

http://sourceware.org/ml/systemtap/2010-q2/msg00551.html

14 years agoFixed PR11707 so that nd_syscall probes work on ppc64 systems.
David Smith [Tue, 15 Jun 2010 19:36:23 +0000 (14:36 -0500)]
Fixed PR11707 so that nd_syscall probes work on ppc64 systems.

* tapset/powerpc/registers.stp (_stp_get_register_by_offset): Fixed
  compile error.
  (_stp_arg): Fixed logic error.  The last case was missing an "if", which
  caused all _stp_arg() to only return the value of r10.

14 years agoAdded endian.stp/errno.stp build testcases.
David Smith [Tue, 15 Jun 2010 16:39:43 +0000 (11:39 -0500)]
Added endian.stp/errno.stp build testcases.

* testsuite/buildok/endian-embedded.stp: New endian.stp testcase.
* testsuite/buildok/errno-embedded.stp: New errno.stp testcase.
* testsuite/buildok/ioscheduler-all-probes.stp: Made executable.

14 years agoAdded new dev.stp and ctime.stp build testcases and updated dentry testcase.
David Smith [Tue, 15 Jun 2010 16:25:31 +0000 (11:25 -0500)]
Added new dev.stp and ctime.stp build testcases and updated dentry testcase.

* testsuite/buildok/conversions-guru-embedded.stp: Renamed from
  set_kernel.stp.
* testsuite/buildok/ctime-embedded.stp: New testcase.
* testsuite/buildok/dentry-embedded.stp: Renamed from dentry.stp and added
  the rest of the functions from dentry.stp.
* testsuite/buildok/dev-embedded.stp: New testcase.

14 years agoImproved aux_syscalls.stp build testcase.
David Smith [Tue, 15 Jun 2010 16:02:55 +0000 (11:02 -0500)]
Improved aux_syscalls.stp build testcase.

* testsuite/buildok/aux_syscalls-embedded.stp: Added the rest of the
  functions from aux_syscalls.stp.

14 years agoSmall updates to conversion tapset and testcases.
David Smith [Tue, 15 Jun 2010 15:27:33 +0000 (10:27 -0500)]
Small updates to conversion tapset and testcases.

* tapset/conversions.stp: Fixed documentation string.
* testsuite/buildok/conversions.stp: Added kernel_string_n() test.
* testsuite/buildok/conversions-embedded.stp: Ditto.

14 years agoMerge branch 'master' of ssh://sourceware.org/git/systemtap
Lukas Berk [Mon, 14 Jun 2010 23:44:36 +0000 (19:44 -0400)]
Merge branch 'master' of ssh://sourceware.org/git/systemtap

14 years agofixing the errors in langref.tex and reformatted the documentation in the tapset...
Lukas Berk [Mon, 14 Jun 2010 23:42:50 +0000 (19:42 -0400)]
fixing the errors in langref.tex and reformatted the documentation in the tapset/*.stp

14 years agouprobes_ppc: Don't emulate privileged MSR opcodes
Josh Stone [Thu, 10 Jun 2010 18:06:21 +0000 (11:06 -0700)]
uprobes_ppc: Don't emulate privileged MSR opcodes

14 years agoPR11698: Track aliases even with ppc function descriptors
Josh Stone [Sat, 12 Jun 2010 01:22:56 +0000 (18:22 -0700)]
PR11698: Track aliases even with ppc function descriptors

We can include function descriptors in the symbol table, and just make
sure that we don't try to probe them with query_module_symtab.  This
lets update_symtab do its thing resolving aliased names.

* dwflpp.h (func_info): Add a descriptor flag.
* tapsets.cxx (symbol_table::add_symbol): Set the descriptor flag.
  (symbol_table::read_symbols): Not descriptors.
  (symbol_table::get_from_elf): Functions from powerpc rejected sections
  are function descriptors.
  (dwarf_query::query_module_symtab): Don't probe descriptors.

14 years agoPR10327: Fix and test alias matching
Josh Stone [Sat, 12 Jun 2010 00:44:51 +0000 (17:44 -0700)]
PR10327: Fix and test alias matching

The optimization in commit 4df79aa broke alias matching for functions
without wildcards, but we didn't have any testing. :(

* dwflpp.cxx (dwflpp::iterate_single_function): Call update_symtab after
  building the module function cache, to enable alias matching.
* testsuite/systemtap.base/func_alias.{exp,c}: New test.

14 years agoFixed BZ598615 to avoid a crash when setting registers on ia64.
David Smith [Mon, 14 Jun 2010 18:23:16 +0000 (13:23 -0500)]
Fixed BZ598615 to avoid a crash when setting registers on ia64.

* runtime/regs-ia64.c (ia64_store_register): Added a missing "return"
  statement that caused a crash when changing registers on ia64.

14 years agoMake sure that the tapset documentation title descriptions are on a single line
William Cohen [Mon, 14 Jun 2010 14:30:06 +0000 (10:30 -0400)]
Make sure that the tapset documentation title descriptions are on a single line

The docproc program that extracts information information from the tapset
comments needs the title line to be a single line. Otherwise the second
line get counted as a description line and conflicts with the later
"Description:" section.

14 years agoAddressing bug #11684 and eliminating duplication from /doc/langref.tex and /tapset...
Lukas Berk [Mon, 14 Jun 2010 14:04:01 +0000 (10:04 -0400)]
Addressing bug #11684 and eliminating duplication from /doc/langref.tex and /tapset/*.stp

14 years agoPR11641: fix backtrace from uretprobe
Wenji Huang [Sat, 12 Jun 2010 03:03:59 +0000 (11:03 +0800)]
PR11641: fix backtrace from uretprobe

This will partly revert commit 23258335. When not called
from a uretprobe hander, to pass -1 not 0 ensures all the
cases can be covered.

14 years agoAdded testcase for queue_stats.stp.
David Smith [Fri, 11 Jun 2010 20:30:32 +0000 (15:30 -0500)]
Added testcase for queue_stats.stp.

* testsuite/buildok/queue_stats-embedded.stp: New testcase.

14 years agoGot tty.stp working everywhere.
David Smith [Fri, 11 Jun 2010 20:26:46 +0000 (15:26 -0500)]
Got tty.stp working everywhere.

* tapset/tty.stp: Large update to get working on RHEL4, RHEL5,
  RHEL6(beta), f12, f13, and rawhide.
* testsuite/buildok/tty-detailed.stp: Renamed from
  testsuite/buildok/tty.stp and added more functions.
* testsuite/buildok/tty-resize.stp: Separate probe testcase since it can
  fail because of PR 1155 (can't find inline function arguments).
* testsuite/buildok/tty-embedded.stp: New testcase.
* testsuite/systemtap.pass1-4/buildok.exp: Kfail the tty-resize.stp.

14 years agosdt.h: use /* c */ comments only
Frank Ch. Eigler [Fri, 11 Jun 2010 17:53:10 +0000 (13:53 -0400)]
sdt.h: use /* c */ comments only

... else -ansi / -pedantic tests fail

14 years agoauthors bump
Frank Ch. Eigler [Fri, 11 Jun 2010 17:21:02 +0000 (13:21 -0400)]
authors bump

14 years agomove #if 0 around STAPCONF_PROBE_KERNEL around loc2c
Frank Ch. Eigler [Fri, 11 Jun 2010 17:18:12 +0000 (13:18 -0400)]
move #if 0 around STAPCONF_PROBE_KERNEL around loc2c

* buildrun.cxx: Always run autotest-kernel-probe.c.
* runtime/loc2c-runtime.h: Disable use of these probe functions here.

14 years agouse probe_kernel_read for build-id verification if available
Tony Jones [Fri, 11 Jun 2010 17:15:50 +0000 (13:15 -0400)]
use probe_kernel_read for build-id verification if available

Post 1.1 I've been seeing the following on i686 (x86_64 is ok):

ERROR: Build-id mismatch: "kernel" vs. "vmlinux-2.6.34-8-default.debug" byte 0 (0x00 vs 0x00) rc -14 -14
Pass 5: run failed.  Try again with another '--vp 00001' option.

as per irc discussion, following test diff fixed the problem on i686, I've not
tested on any other archs.

14 years agoDefine the sdt probe type in one place.
Stan Cox [Fri, 11 Jun 2010 15:18:29 +0000 (11:18 -0400)]
Define the sdt probe type in one place.

tapsets.cxx (sdt_query): Move stap_sdt_probe_type from here...
sdt.h: ...to here.

14 years agoConsolidate task_finder/vma tracker initialization.
Mark Wielaard [Fri, 11 Jun 2010 12:57:13 +0000 (14:57 +0200)]
Consolidate task_finder/vma tracker initialization.

After the task_finder is started, no new targets can reliably be added.
So make sure that all registration/enabling of the task_finder and/or
the vma tracker is done in one place (task_finder_derived_probe_group).

* task_finder.h: Defined enable_vma_tracker and vma_tracker_enabled.
* task_finder.cxx: Implement enable_vma_tracker and vma_tracker_enabled.
  (task_finder_derived_probe_group::emit_module_init): Also handle
  vma_tracker.
* elaborate.cxx (visit_embeddedcode): Use enable_vma_tracker and
  vma_tracker_enabled.
* session.h (systemtap_session): Remove need_vma_tracker.
* session.cxx (initialize): Remove need_vma_tracker initialization.
  (parse_cmdline): Enable vma tracking early when -d user mode module found.
* translate.cxx (c_unparser::emit_module_init): Don't try to start
  task finder and vma tracker here.
  (c_unparser::emit_module_exit): Don't try to stop task finder here.
  (emit_symbol_data_done): Don't emit static _stp_need_vma_tracker.
* runtime/sym.h: Remove static _stp_need_vma_tracker.
* runtime/sym.c (_stp_sym_init): Return error when registration failed.
* runtime/task_finder.c (stap_register_task_finder_target): Add sanity
  checks to detect double registration or registration after task finder
  was already started.
  (stap_start_task_finder): Sanity check that task finder wasn't already
  started.

14 years agoDon't double print error message on bad stap command line option.
Mark Wielaard [Fri, 11 Jun 2010 12:20:08 +0000 (14:20 +0200)]
Don't double print error message on bad stap command line option.

Bug introduced in commit db1354. getopt_long will already have printed
an appropriate error message in case of an invalid/unrecognized option
or an option missing an required argument. So don't print another error
message in that case.

* session.cxx (parse_cmdline): Silently handle '?' case.

14 years agoPR11690: Remove a dtrace debug-print, and fix probe_perf
Josh Stone [Thu, 10 Jun 2010 23:05:29 +0000 (16:05 -0700)]
PR11690: Remove a dtrace debug-print, and fix probe_perf

Stan's commit 278c975 fixes the core issue; I'm just polishing...

* dtrace.in: Comment out the debug-print before calling gcc.
* scripts/probe_perf/bench.sh: Pass -DSTAP_SDT_V2 to dtrace.

14 years agoFix tests for -DSTAP_SDT_V2.
Stan Cox [Thu, 10 Jun 2010 21:40:29 +0000 (17:40 -0400)]
Fix tests for -DSTAP_SDT_V2.

dtrace -G -s foo.d builds foo.o so it must pass -DSTAP_SDT_V2 to gcc.  Add a -D
flag (sun dtrace also has a -D flag) and pass that to the gcc invocation.

* dtrace.in (semaphore_def_append): Make -DSTAP_SDT_V1 the default.
(generate): Likewise.
(main):  Add -D and pass to cpp and gcc.
* sdt_misc.exp: Run dtrace every iteration and pass it -DSTAP_SDT_V2.

14 years agoCorrect the hex-spelling of UPB2
Josh Stone [Thu, 10 Jun 2010 21:13:31 +0000 (14:13 -0700)]
Correct the hex-spelling of UPB2

14 years agoGet rid of probe_perf tmps, and use a single awk
Josh Stone [Thu, 10 Jun 2010 20:11:07 +0000 (16:11 -0400)]
Get rid of probe_perf tmps, and use a single awk

14 years agoFix 3-way merge result.
Stan Cox [Thu, 10 Jun 2010 13:49:05 +0000 (09:49 -0400)]
Fix 3-way merge result.

* sdt.h: Remove extra hunk from merge.

14 years agoMerge branch 'master' of git://sources.redhat.com/git/systemtap
Frank Ch. Eigler [Thu, 10 Jun 2010 13:40:01 +0000 (09:40 -0400)]
Merge branch 'master' of git://sources.redhat.com/git/systemtap

* 'master' of git://sources.redhat.com/git/systemtap:
  Tighten static user probe point operand contraints from "g" to "ro"

14 years agofix !CONFIG_FRAME_POINTER, !CONFIG_UTRACE case
Tony Jones [Thu, 10 Jun 2010 13:38:14 +0000 (09:38 -0400)]
fix !CONFIG_FRAME_POINTER, !CONFIG_UTRACE case

In a kernel without FRAME_POINTERS (using the DWARF UNWINDER) and without
UTRACE I see the following in latest git master:
[...]
In file included from /tmp/stap/share/systemtap/runtime/stack.c:56:0,
                 from /tmp/stapPHqTen/stap_12068.c:52:
/tmp/stap/share/systemtap/runtime/stack-i386.c: In function "__stp_stack_print":
/tmp/stap/share/systemtap/runtime/stack-i386.c:69:25: error: implicit declaration of function "uprobe_get_pc".

AFAICT the autoconf test should result in STAPCONF_UPROBE_GET_PC=0 for the
case where CONFIG_UTRACE is unset since UPROBES requires UTRACE.

Signed-off-by: Tony Jones <tonyj@suse.de>
14 years agoTighten static user probe point operand contraints from "g" to "ro"
Stan Cox [Thu, 10 Jun 2010 13:36:40 +0000 (09:36 -0400)]
Tighten static user probe point operand contraints from "g" to "ro"

14 years agoGive non-x86 a chance at uprobes SDT
Josh Stone [Thu, 10 Jun 2010 01:48:51 +0000 (21:48 -0400)]
Give non-x86 a chance at uprobes SDT

* tapsets.cxx (sdt_uprobe_var_expanding_visitor): No need to assert that
  we know dwarf_regs unless we actually encountered STAP_SDT_V2 with
  arg_count > 0.  V1 should continue to work on other architectures.

14 years agoLet probe_bench work on archs besides x86_64
Josh Stone [Thu, 10 Jun 2010 01:44:42 +0000 (21:44 -0400)]
Let probe_bench work on archs besides x86_64

The cycles code is too x86_64-centric, but for now at least it's been
neutered to let other archs report basic timing numbers.

* scripts/probe_bench/bench.stp: Use get_cycles() instead of rdtsc().
* scripts/probe_bench/bench.c (rdtsc): Return 0 unless on x86_64.  This
  needs more work and inline assembly to fit more architectures.

14 years agoIgnore probe_bench's generated files
Josh Stone [Thu, 10 Jun 2010 01:44:11 +0000 (21:44 -0400)]
Ignore probe_bench's generated files

14 years agoShort out errors in probe_bench
Josh Stone [Thu, 10 Jun 2010 01:41:06 +0000 (21:41 -0400)]
Short out errors in probe_bench

* scripts/probe_bench/bench.sh (setup_test, stap_test): Report when an
  error occurred and return.

14 years agoMake sure the probe_bench can find sdt.h
Josh Stone [Thu, 10 Jun 2010 01:38:56 +0000 (21:38 -0400)]
Make sure the probe_bench can find sdt.h

* scripts/probe_bench/bench.sh (setup_test): Give -I$STAP/include to gcc.

14 years agoPR11680: fix sdt.h STAP_SDT_V2 -> V1 auto-downgrading logic
Frank Ch. Eigler [Wed, 9 Jun 2010 16:11:57 +0000 (12:11 -0400)]
PR11680: fix sdt.h STAP_SDT_V2 -> V1 auto-downgrading logic

Previously, the STAP_SDT_V2 -> V1 downgrade logic was half way down in the
header file, by which time some STAP_SDT_V2 definitions had already taken
effect.

* includes/sys/sdt.h: Make work on PPC et al.

14 years agoSet vma_cache_p->dentry before use.
Mark Wielaard [Wed, 9 Jun 2010 12:49:27 +0000 (14:49 +0200)]
Set vma_cache_p->dentry before use.

Bug (on old kernels) introduced by typo in commit ebf779.

* runtime/task_finder.c (__stp_call_mmap_callbacks_for_task): Make sure to
  set vma_cache_p->dentry before usage.

14 years agoAdd more error messages when something goes wrong during task_finder detach.
Mark Wielaard [Wed, 9 Jun 2010 10:48:14 +0000 (12:48 +0200)]
Add more error messages when something goes wrong during task_finder detach.

* runtime/task_finder.c (stap_utrace_detach): Report when utrace_barrier
  fails.
  (stap_utrace_detach_ops): Report how stap_utrace_detach failed.

14 years agoFix task_finder.c f_dentry -> dentry typo.
Mark Wielaard [Wed, 9 Jun 2010 10:47:11 +0000 (12:47 +0200)]
Fix task_finder.c f_dentry -> dentry typo.

* runtime/task_finder.c (__stp_call_mmap_callbacks_for_task): Fix typo.

14 years agoLoop on utrace_barrier if utrace_control UTRACE_DETACH returns -EINPROGRESS.
Mark Wielaard [Wed, 9 Jun 2010 09:50:48 +0000 (11:50 +0200)]
Loop on utrace_barrier if utrace_control UTRACE_DETACH returns -EINPROGRESS.

When utrace_control(tsk, eng, UTRACE_DETACH) returns -EINPROGRESS that
means there are still handlers running. So loop on utrace_barrier(tsk, eng)
in that case, till it no longer returns -ERESTARTSYS. That makes sure that
no engine handler will be called afterwards, so we can safely unload the
stap module. Not doing this might have caused PR11672
(utrace_report_syscall_exit crash), although we don't yet have a simple
reproducer for that issue.

* runtime/itrace.c (remove_usr_itrace_info): Loop on utrace_barrier if
  utrace_control returned -EINPROGRESS.
* runtime/task_finder.c (stap_utrace_detach): Likewise.
  (stap_utrace_detach_ops): Likewise. And warn if stap_utrace_detach
  didn't return successfully.
  (__stp_utrace_attach): Loop on -ERESTARTSYS after utrace_barrier.
  (__stp_utrace_task_finder_target_quiesce): Likewise.

14 years agoFix typo in stap.1.in
Wenji Huang [Wed, 9 Jun 2010 01:11:58 +0000 (09:11 +0800)]
Fix typo in stap.1.in

14 years agoAUTHORS bump
Josh Stone [Tue, 8 Jun 2010 19:32:28 +0000 (12:32 -0700)]
AUTHORS bump

14 years agouprobes_ppc: define MSR_MASK and clean up error cases
Josh Stone [Fri, 4 Jun 2010 23:01:32 +0000 (16:01 -0700)]
uprobes_ppc: define MSR_MASK and clean up error cases

- The emulate_step code was copied from the kernel, but needs to have
  the #define MSR_MASK too.
- A case in emulate_step could fall through with an illegal instruction,
  just break and return 0 instead.
- A few privileged instructions can't be emulated and so return -1, but
  we don't want uprobe_emulate_insn to see that as non-zero -> TRUE.

At a minimum, this restores whatever SSOL-faulty behavior would have
existed before emulate_step was added.  We should also add checks in
arch_validate_probed_insn to avoid such instructions in the first place.

Signed-off-by: Josh Stone <jistone@redhat.com>
Acked-by: Jim Keniston <jkenisto@us.ibm.com>
14 years agoadded the XDG_DATA_DIRS to session.cxx and the corresponding man changes as specified...
Lukas Berk [Tue, 8 Jun 2010 19:10:19 +0000 (15:10 -0400)]
added the XDG_DATA_DIRS to session.cxx and the corresponding man changes as specified in bug #11455

14 years agoPR11678 Pick up ld.so (and other absolute shlibs) through stap --ldd.
Mark Wielaard [Tue, 8 Jun 2010 11:32:21 +0000 (13:32 +0200)]
PR11678 Pick up ld.so (and other absolute shlibs) through stap --ldd.

* translate.cxx (add_unwindsym_ldd): Make scan slightly stricter, require
  shlib to start as absolute path and address to be hex. Also allow direct
  absolute shlib paths without soname.

14 years agoTweak schedtime.stp example for 2.6.35
Wenji Huang [Tue, 8 Jun 2010 02:20:23 +0000 (10:20 +0800)]
Tweak schedtime.stp example for 2.6.35

$rq is removed from tracepoint in 2.6.35. Guard access using
@defined predicate.

14 years agoGuard embeddedcode_info_pass from failures
Josh Stone [Mon, 7 Jun 2010 20:28:58 +0000 (13:28 -0700)]
Guard embeddedcode_info_pass from failures

We should not run this pass if there were previous errors, as
functioncall_traversing_visitor require referents on all calls.  Fixes
a segfault in semko/five.stp after an arg-count mismatch, as well as the
new semko/nofunc.stp with a completely missing function.

* elaborate.cxx (semantic_pass): Only do embeddedcode_info_pass if !rc.
* testsuite/semko/nofunc.stp: New, as I couldn't find such a test.

14 years agoImprove identification of arity-mismatch errors
Josh Stone [Mon, 7 Jun 2010 20:14:37 +0000 (13:14 -0700)]
Improve identification of arity-mismatch errors

Instead of pointing at the declaration site, we now finger the use which
is trying to set a bad arity, and also mention who originally set the
arity if possible.  For example, semok/six.stp now says:

semantic error: inconsistent arity (1 vs. 2): identifier 'bar' at ../testsuite/semko/six.stp:6:3
        source:   bar[1, 2] = 3;  # inconsistent array dimensions
                  ^
semantic error: arity 1 first inferred here: identifier 'bar' at :5:3
        source:   bar[1] = 2;
                  ^

* staptree.cxx (vardecl::set_arity): Require a token from the caller,
  and report the original caller's token as well.
* elaborate.cxx (symresolution_info::visit_symbol): Pass the token.
  (symresolution_info::find_var): Ditto.
* parse.cxx (parser::parse_global): Ditto.
* tapset-mark.cxx (mark_derived_probe::mark_derived_probe): Ditto.
* tapset-utrace.cxx
  (utrace_var_expanding_visitor::visit_target_symbol_cached): Ditto.
* tapsets.cxx (tracepoint_derived_probe::tracepoint_derived_probe):
  Ditto.

14 years agoNever permit homonymous vars with different arity
Josh Stone [Mon, 7 Jun 2010 19:58:00 +0000 (12:58 -0700)]
Never permit homonymous vars with different arity

It was previously possible to generate a global array and local scalar
having the same name, because find_var was glossing over globals that
didn't have compatible_arity.

Fixes semko/nine, and improves semko/six to an arity-mismatch error
rather than a local-array error.

* elaborate.cxx (symresolution_info::find_var): Use set_arity without
  checking compatibile_arity, so that compatibility gets asserted.
  (symresolution_info::visit_foreach_loop): Add "missing global" hint.
  (symresolution_info::visit_arrayindex): Don't create local arrays.

14 years agoFork semko/two.stp into distinct errors
Josh Stone [Mon, 7 Jun 2010 19:02:43 +0000 (12:02 -0700)]
Fork semko/two.stp into distinct errors

Now two.stp checks the failure of integer+string, and twotwo.stp checks
that stats can't be a function arg.  Both need -u to defeat optimization.

14 years agoUse real probepoints in semko/two-ten
Josh Stone [Mon, 7 Jun 2010 18:53:12 +0000 (11:53 -0700)]
Use real probepoints in semko/two-ten

These tests were using non-existent probepoints (foo,p1,p2), leading to
an error that masks the real failure we're trying to test.

(A few were actually broken -- commits to follow...)

14 years agoDon't abuse uprobes for tracking symbols, use -d ./usymbols --ldd.
Mark Wielaard [Mon, 7 Jun 2010 19:24:24 +0000 (21:24 +0200)]
Don't abuse uprobes for tracking symbols, use -d ./usymbols --ldd.

* testsuite/systemtap.context/usymbols.exp: Remove fake process.function
  probe from script, add -d ./usymbols to stap invocation.

14 years agoPR11665 Add umodname(addr) tapset function.
Mark Wielaard [Mon, 7 Jun 2010 14:20:56 +0000 (16:20 +0200)]
PR11665 Add umodname(addr) tapset function.

* runtime/sym.c (_stp_tf_mmap_cb): Always register module name in vma_map.
  (_stp_module_name): New function.
* tapset/ucontext.stp: New tapset.
* testsuite/buildok/ucontext.stp: New pass 4 test.
* testsuite/systemtap.context/usymbols.exp: Extend pass 5 test to include
  umodname(handler).

14 years agoIncrease TASK_FINDER_VMA_ENTRY_ITEMS default.
Mark Wielaard [Mon, 7 Jun 2010 13:09:07 +0000 (15:09 +0200)]
Increase TASK_FINDER_VMA_ENTRY_ITEMS default.

Somewhat arbitrary default, this is often way too much for tracking
single process, but often too little when tracking whole system.
FIXME Would be nice to make this dynamic. PR11671

* runtime/task_finder_vma.c: Clean up some (bad) comments.
  #define TASK_FINDER_VMA_ENTRY_ITEMS 1536.

14 years agoActivate task finder vma tracker through tapset embedded-c /* pragma:vma */
Mark Wielaard [Mon, 7 Jun 2010 11:16:09 +0000 (13:16 +0200)]
Activate task finder vma tracker through tapset embedded-c /* pragma:vma */

The task finder vma tracker, _stp_sym_init(), was supposed to be activated
through defining STP_NEED_VMA_TRACKER in an included tapset. This didn't
actually work, since the define came too late. The _stp_sym_init() call
was however often triggered by the fact that any of these vma tracking
using tapset functions were used through task_finder_derived_probe_groups.
This patch makes it so that the vma tracker always gets activated when
they are used with any kind of probe.

* session.h (systemtap_session): New need_vma_tracker boolean.
* session.cxx (initialize): Initialize need_vma_tracker to false.
* elaborate.cxx (embeddedcode_info): New functioncall_traversing_visitor.
  (embeddedcode_info_pass): New semantic pass.
  (semantic_pass): Call embeddedcode_info_pass.
* translate.cxx (c_unparser::emit_module_init): Check whether
  session->need_vma_tracker is set to decide emitting _stp_sym_init.
  (c_unparser::emit_module_exit): Likewise for teardown.
* tapset/ucontext-symbols.stp: Remove STP_NEED_VMA_TRACKER define. Tag all
  embedded-c functions with /* pragma:vma */.
* tapset/ucontext-unwind.stp: Likewise.
* runtime/task_finder.c (__stp_task_finder_started): New static int.
  (stap_start_task_finder): Check and set __stp_task_finder_started.
  (stap_stop_task_finder): Likewise.

14 years agoRemove unused vm_pgoff tracking from task_finder_vma.
Mark Wielaard [Fri, 4 Jun 2010 19:22:55 +0000 (21:22 +0200)]
Remove unused vm_pgoff tracking from task_finder_vma.

* runtime/task_finder_vma.c (__stp_tf_vma_entry): Remove vm_pgoff field.
  (stap_add_vma_map_info): Remove vm_pgoff argument.
  (stap_remove_vma_map_info): Likewise.
  (stap_find_vma_map_info_user): Likewise.
* runtime/sym.c (_stp_tf_mmap_cb): Adjust vma_map callers.
  (_stp_module_relocate): Likewise.
  (_stp_mod_sec_lookup): Likewise.
* runtime/unwind.c (adjustStartLoc): Likewise.

14 years agoDon't try to be clever with dentry lifetime.
Mark Wielaard [Fri, 4 Jun 2010 18:16:50 +0000 (20:16 +0200)]
Don't try to be clever with dentry lifetime.

Make caller of task_finder_vma responsible for dentry lifetime.
Must call stap_remove_vma_map_info when dentry goes away. Which
is what always happens because that is when the vma is unmapped.

* runtime/task_finder.c (__stp_call_mmap_callbacks_with_addr): Don't dget
  and don't dput.
  (__stp_call_mmap_callbacks_for_task): Only dget/dput for non-d_path case.
* runtime/task_finder_vma.c (stap_add_vma_map_info): Don't dget dentry.
  (stap_remove_vma_map_info): Don't dput dentry.
  (stap_drop_vma_maps): Likewise.

14 years agoRemove unused arguments from stap_remove_vma_map_info.
Mark Wielaard [Fri, 4 Jun 2010 16:59:20 +0000 (18:59 +0200)]
Remove unused arguments from stap_remove_vma_map_info.

* runtime/task_finder_vma.c (stap_remove_vma_map_info): Drop vm_end and
  vm_pgoff arguments.
* runtime/sym.c (_stp_tf_munmap_cb): Don't pass addr + length and 0.

14 years agoRemove bogus (but wrongly used!) addr field from __stp_tf_vma_entry.
Mark Wielaard [Fri, 4 Jun 2010 16:51:21 +0000 (18:51 +0200)]
Remove bogus (but wrongly used!) addr field from __stp_tf_vma_entry.

* runtime/task_finder_vma.c (__stp_tf_vma_entry): Remove addr field.
  (__stp_tf_get_vma_map_entry_internal): Compare vm_start, not addr.
  (stap_find_vma_map_info): Rename vm_addr argument to addr.

14 years agoTrack dentry for file backed vma in task_finder.
Mark Wielaard [Fri, 4 Jun 2010 15:02:10 +0000 (17:02 +0200)]
Track dentry for file backed vma in task_finder.

* runtime/task_finder.c (stap_task_finder_mmap_callback): Provide dentry.
  (__stp_call_mmap_callbacks): Take dentry.
  (__stp_call_mmap_callbacks_with_addr): Collect dentry.
  (__stp_call_mmap_callbacks_for_task): Likewise.
* runtime/task_finder_vma.c (__stp_tf_vma_entry): Add dentry.
  (stap_add_vma_map_info): Take and store dentry.
  (stap_remove_vma_map_info): Remove dentry.
  (stap_find_vma_map_info): Provide dentry.
  (stap_find_vma_map_info_user): Likewise.
  (stap_drop_vma_maps): Remove dentries.
* runtime/sym.c (_stp_tf_mmap_cb): Accept dentry and store it in vma_map.
  (_stp_module_relocate): Call stap_find_vma_map_info_user with NULL dentry.
  (_stp_mod_sec_lookup): Call stap_find_vma_map_info with NULL dentry.
* runtime/unwind.c (adjustStartLoc): Provide NULL dentry.
* runtime/kprobes-common.c (stap_kprobe_mmap_found): Accept dentry.
* runtime/kprobes-common.h (stap_kprobe_mmap_found): Likewise.
* runtime/uprobes-common.c (stap_uprobe_mmap_found): Likewise.
* runtime/uprobes-common.h (stap_uprobe_mmap_found): Likewise.

14 years agoRename __stp_tf_vma_initialize to stap_initialize_vma_map.
Mark Wielaard [Fri, 4 Jun 2010 13:06:46 +0000 (15:06 +0200)]
Rename __stp_tf_vma_initialize to stap_initialize_vma_map.

Makes it clear this isn't one of the internal task_finder_vma functions.

* runtime/sym.c (_stp_sym_init): Call stap_initialize_vma_map.
* runtime/task_finder_vma.c (stap_initialize_vma_map): Renamed from
  __stp_tf_vma_initialize.

14 years agoRemoved unused task_finder_vma code.
Mark Wielaard [Fri, 4 Jun 2010 12:39:34 +0000 (14:39 +0200)]
Removed unused task_finder_vma code.

* runtime/task_finder_vma.c (__stp_tf_vma_table, __stp_tf_vma_hash,
  __stp_tf_get_vma_entry, __stp_tf_add_vma, __stp_tf_remove_vma_entry):
  Unused, so removed.

14 years agoTweak the ipmib update for 2.6.35
Josh Stone [Sat, 5 Jun 2010 01:23:24 +0000 (18:23 -0700)]
Tweak the ipmib update for 2.6.35

* tapset/ipmib.stp (ipmib.InNoRoutes, ipmib.InAddrErrors):
  Now using probe sufficiency instead of version checks.

14 years agoPR11095: support process(). **provider()** .mark()
Frank Ch. Eigler [Fri, 4 Jun 2010 21:01:52 +0000 (17:01 -0400)]
PR11095: support process(). **provider()** .mark()

For STAP_SDT_V2 only for now.

* NEWS, stapprobes.3stap.in: Mention it.
* Makefile.am (stap_CPPFLAGS): Use -DSTAP_SDT_V2.
* dtrace.in: Preserve provider name, though squash it for STAP_SDT_V1.
* includes/sys/sdt.h: Likewise.
* tapsets.cxx (register_patterns): Accept .provider() probe point piece.
  (sdt_*_var_expanding_visotor): Store it.
  (sdt_query::*): Extend for provider matching, new magic codes.
* testsuite/systemtap.base/sdt_misc.exp: Use more formal interfaces
  to semaphores.

14 years agoAdd configure check for xmlto pdf with chapters titles starting with L...
Mark Wielaard [Fri, 4 Jun 2010 09:34:23 +0000 (11:34 +0200)]
Add configure check for xmlto pdf with chapters titles starting with L...

There is a strange bug in older versions of xmlto when generating pdf.
https://bugzilla.redhat.com/show_bug.cgi?id=526273
So make sure to have a chapter title starting with L plus an refentry.
This will make sure the xmlto pdf support test fails on buggy versions.

configure.ac: Extend conftest.xml.
configure: Regenerated.

14 years agoMake rpc.stap and tcpmib.stp compatible with 2.6.35
Wenji Huang [Fri, 4 Jun 2010 03:05:38 +0000 (11:05 +0800)]
Make rpc.stap and tcpmib.stp compatible with 2.6.35

* tapset/rpc.stp: access structure member for om_{queue,rtt,execute}.
* tapset/tcpmib.stp: change _skb_dst to _skb_refdst.

14 years agoUpdate ipmib.stp for 2.6.35
Wenji Huang [Fri, 4 Jun 2010 01:50:07 +0000 (09:50 +0800)]
Update ipmib.stp for 2.6.35

* tapset/ipmib.stp: Select ip_route_input_common for 2.6.35.

14 years agoReplace walk_stack field version guard with autoconf test.
Mark Wielaard [Thu, 3 Jun 2010 09:26:17 +0000 (11:26 +0200)]
Replace walk_stack field version guard with autoconf test.

The test for whether or not to assign print_context_stack to the
walk_stack stacktrace_ops field depended on the kernel version.
Replace with a proper runtime/autoconf test to make sure the field
always gets assigned when available.

* buildrun.cxx (compile_pass): Add output for STAP_CONF_WALK_STACK.
* runtime/autoconf-walk-stack.c: New test.
* runtime/stack.c (print_stack_ops): Assign walk_stack field
  print_context_stack depending on STAP_CONF_WALK_STACK.

14 years agoAUTHORS bump
Josh Stone [Thu, 3 Jun 2010 02:18:26 +0000 (19:18 -0700)]
AUTHORS bump

14 years agoAdd environment variable fetching for current process
Lars R. Damerow [Thu, 3 Jun 2010 01:08:15 +0000 (18:08 -0700)]
Add environment variable fetching for current process

* tapset/context.stp: Add env_var.
* testsuite/buildok/context_test.stp: Add test for new function.

14 years agoPR3672 cont'd: Change pretty-print "depth" to mean substructures
Josh Stone [Thu, 3 Jun 2010 00:18:33 +0000 (17:18 -0700)]
PR3672 cont'd: Change pretty-print "depth" to mean substructures

We don't follow pointers anymore within a structure.  Now a single '$'
suffix means we print a shallow view of the structure, with {...} and
[...] in place of nested arrays/structs.  A double suffix '$$' means we
print everything contained in the struct.  Longer suffixes no longer
have meaning, and for now act the same as '$$'.

* tapsets.cxx (dwarf_pretty_print): Lose the "print_depth" field, and
  instead just check if this is a "full" print job.  Pass a bool
  indicating whether we're currently traversing the top-level, so we
  know which structs to expand.  Also wrap it all in try/catch so bad
  pointers don't kill us.

14 years agoPR11664: Let return/next break out of try/catch
Josh Stone [Thu, 3 Jun 2010 01:37:55 +0000 (18:37 -0700)]
PR11664: Let return/next break out of try/catch

Try-catch works by faking a local "out" label and running the catch
block.  In the case of return and next, we have a "goto out" without any
error, so it should be allowed to progress to the real out label.

* translate.cxx (c_unparser::visit_try_block): Reorganize the nested
  labels to allow normal-fallthrough, normal-out, and error-out.
* testsuite/systemtap.base/overcatcher.stp: New test.

14 years agoCorrect uninitialization warning for gcc 4.1
Wenji Huang [Wed, 2 Jun 2010 02:50:22 +0000 (10:50 +0800)]
Correct uninitialization warning for gcc 4.1

* translate.cxx: provide default value for variable data.

14 years agoPR11599: Support the new tracepoints API in 2.6.35
Josh Stone [Tue, 1 Jun 2010 22:23:48 +0000 (15:23 -0700)]
PR11599: Support the new tracepoints API in 2.6.35

* buildrun.cxx (make_tracequery): Support DECLARE_TRACE_NOARGS.
* tapsets.cxx (tracepoint_derived_probe_group::emit_module_decls): Add
  an unused void* parameter for the tracepoint callbacks on 2.6.35+.

14 years agoRemove the STAP_LABEL machinery, which was replaced by gas `Nb' 'Nf' labels.
Stan Cox [Tue, 1 Jun 2010 21:43:27 +0000 (17:43 -0400)]
Remove the STAP_LABEL machinery, which was replaced by gas `Nb' 'Nf' labels.

* sdt.h (STAP_CONCAT, STAP_LABEL_PREFIX,STAP_LABEL): Remove
(STAP_PROBEN_): Merge with STAP_PROBEN.

14 years agoTest with and without semaphores using STAP_SDT_IMPLICIT_ENABLED.
Stan Cox [Tue, 1 Jun 2010 16:26:29 +0000 (12:26 -0400)]
Test with and without semaphores using STAP_SDT_IMPLICIT_ENABLED.

* probe_perf/bench.sh: Use -DSTAP_SDT_IMPLICIT_ENABLED.

14 years agorhbz #596083 Account for dot and dotless kernel variant in stap-prep.
Mark Wielaard [Tue, 1 Jun 2010 09:37:59 +0000 (11:37 +0200)]
rhbz #596083 Account for dot and dotless kernel variant in stap-prep.

uname -r can produce different kinds of output:
2.6.32-30.el6.x86_64 (no variant, but including ".arch")
2.6.18-194.3.1.el5debug ("variant", without dot, no arch)
2.6.33.4-95.fc13.i686.PAE (".arch.variant", two dots)
We didn't handle the dot before the variant used in newer distros.

* stap-prep: Remove either ".variant" or "variant" from the end of release
  uname string.

14 years agoPR11649: workaround for incomplete include/linux/event/kvm_*.h
Frank Ch. Eigler [Mon, 31 May 2010 17:56:42 +0000 (13:56 -0400)]
PR11649: workaround for incomplete include/linux/event/kvm_*.h

* tapsets.cxx (tracepoint_extra_headers): Pass along systemtap_session.
  Add a kvm header if CONFIG_KVM.

14 years agoGuard create_debug_frame_hdr body with _ELFUTILS_PREREQ(0,142).
Mark Wielaard [Mon, 31 May 2010 07:27:29 +0000 (09:27 +0200)]
Guard create_debug_frame_hdr body with _ELFUTILS_PREREQ(0,142).

14 years agoloc2c: correct typo for i386 target register access on x86-64 kernel
Frank Ch. Eigler [Sun, 30 May 2010 02:55:50 +0000 (22:55 -0400)]
loc2c: correct typo for i386 target register access on x86-64 kernel

14 years agoPR3672 cont'd: Resolve declared structs
Josh Stone [Fri, 28 May 2010 23:14:57 +0000 (16:14 -0700)]
PR3672 cont'd: Resolve declared structs

* tapsets.cxx (dwarf_pretty_print::recurse_struct): Use dwflpp to
  resolve DW_AT_declaration types.

14 years agoMerge branch 'unwind_hdr'
Mark Wielaard [Fri, 28 May 2010 21:53:47 +0000 (23:53 +0200)]
Merge branch 'unwind_hdr'

14 years agoPR10665 Make unwinder recognized synthesized debug_frame_hdr.
Mark Wielaard [Fri, 28 May 2010 21:49:26 +0000 (23:49 +0200)]
PR10665 Make unwinder recognized synthesized debug_frame_hdr.

* runtime/unwind.c (_stp_search_unwind_hdr): Take is_ehframe argument.
  Recognize and use debug_hdr for binary searching the FDE.
  (unwind_frame): Always try binary hdr search.

14 years agoAccept CIE versions 3 and 4.
Mark Wielaard [Fri, 28 May 2010 21:46:38 +0000 (23:46 +0200)]
Accept CIE versions 3 and 4.

* runtime/unwind.c (fde_pointer_type): Accept version 3 and 4.
  (unwind_frame): Likewise.

14 years agoPR10665 Create a synthetic binary search table for a debug_frame section.
Mark Wielaard [Fri, 28 May 2010 21:32:05 +0000 (23:32 +0200)]
PR10665 Create a synthetic binary search table for a debug_frame section.

* runtime/sym.h (_stp_module): Add fields debug_hdr and debug_hdr_len.
* translate.cxx (create_debug_frame_hdr): New function.
  (get_unwind_data): Call new function when there is a debug_frame.
  (dump_unwindsyms): Output new debug_frame_hdr.

14 years agoAdd kprobes-common.{h,c}, which is analogous to uprobes-common.{h,c}
Stan Cox [Fri, 28 May 2010 20:42:45 +0000 (16:42 -0400)]
Add kprobes-common.{h,c}, which is analogous to uprobes-common.{h,c}

14 years agoAdd kprobes-common.{h,c}, which is analogous to uprobes-common.{h,c}
Stan Cox [Fri, 28 May 2010 20:35:49 +0000 (16:35 -0400)]
Add kprobes-common.{h,c}, which is analogous to uprobes-common.{h,c}

uprobes-common.h: New file.
uprobes-common.c: New file.

14 years agoImplicit *_ENABLED() is no longer the default for sdt.h probes.
Stan Cox [Fri, 28 May 2010 20:11:24 +0000 (16:11 -0400)]
Implicit *_ENABLED() is no longer the default for sdt.h probes.
Cast V2 probe args.

sdt.h (STAP_SDT_IMPLICIT_ENABLED): New.
(STAP_TYPE): New.
(STAP_CAST): New.
(STAP_PROBE*_): Use STAP_TYPE and STAP_CASE.
sdt_misc.exp:  Use -DSTAP_SDT_IMPLICIT_ENABLED

14 years agoAdd () to execname in stap man page example.
Przemyslaw Pawelczyk [Fri, 28 May 2010 14:05:39 +0000 (16:05 +0200)]
Add () to execname in stap man page example.

14 years agoHere is a patch implements a way for uprobes to skip single step
Srikar Dronamraju [Fri, 28 May 2010 10:45:02 +0000 (16:15 +0530)]
Here is a patch implements a way for uprobes to skip single step
when a probe in on a nop instruction.

Currently its implemented for nop on x86/x86_64 and s390.
For powerpc, its implemented on all instructions that can be emulated.
(For this emulation code is borrowed from arch/powerpc/lib/sstep.c)

I havent tested it on s390. Updated with comments from Jim.

Signed-off-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
Signed-off-by: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
Reported-by: Josh Stone <jistone@redhat.com>
14 years agoOnly build docproc when refdoc requested.
Mark Wielaard [Fri, 28 May 2010 10:11:11 +0000 (12:11 +0200)]
Only build docproc when refdoc requested.

* doc/SystemTap_Tapset_Reference/Makefile.am: Move docproc under BUILDREFDOC
  conditional.
* doc/SystemTap_Tapset_Reference/Makefile.in: Regenerated.

14 years agoPR3672: Add pretty-printing for compound types
Josh Stone [Thu, 27 May 2010 22:54:01 +0000 (15:54 -0700)]
PR3672: Add pretty-printing for compound types

This adds a new syntax for pretty-printing variables as strings:

  $var$         $var$$         $var->$            $var->$$
  $@cast(...)$  $@cast(...)$$  $@cast(...)->$     $@cast(...)->$$
  $var->foo->$  $var[1]->$     $@cast(...)->foo$  $@cast(...)[2]$

This is still a work in progress, but I deemed it now useful enough to
share.  See PR3672 for discussion of work remaining.

* parse.cxx (parser::parse_target_symbol_components): Parse the trailing
  $s as a new comp_pretty_print entry in the target_symbol.
* staptree.cxx (target_symbol::assert_no_components): Add a flag to
  assert whether pretty-printing is supported.
  (target_symbol::component::print): Support comp_pretty_print.
* dwflpp.cxx (dwflpp::translate_components): Skip the actual translation
  if the obstack "pool" is NULL.
  (dwflpp::type_die_for_local): Dig through a local and its components
  to get the type DIE that the pretty printing can start from.
  (dwflpp::type_die_for_return): Ditto for return values.
  (dwflpp::type_die_for_pointer): Ditto for pointers.
* tapsets.cxx (dwarf_pretty_print): New struct for recursing over a type
  DIE and producing a string representation.  (The real meat lies here!)
  (dwarf_var_expanding_visitor::visit_target_symbol): Determine when to
  use dwarf_pretty_print instead of the normal path.
  (dwarf_var_expanding_visitor::visit_target_symbol_context): Ditto.
  (tracepoint_var_expanding_visitor::visit_target_symbol_arg): Ditto.
  (tracepoint_var_expanding_visitor::visit_target_symbol_context): Ditto.
  (dwarf_cast_query, dwarf_cast_expanding_visitor): Move the function
  generation from the visitor to the query, and also support using
  dwarf_pretty_print as needed.

14 years agotracequery build fix
Josh Stone [Wed, 26 May 2010 19:39:31 +0000 (12:39 -0700)]
tracequery build fix

Similar to commit 392e08b7 -- we need to #undef TRACE_INCLUDE_FILE
before each header in the tracepoint query module, so they can be
queried all at once.

The side effect was that the all-inclusive tracequery build would fail,
so we'd fall back to building a separate tracequery for each header.
It's much faster when we can build them together.

* buildrun.cxx (make_tracequery): #undef TRACE_INCLUDE_FILE before each
  tracepoint header to prevent macro redefinition.

14 years agorhbz #596083 Make stap-prep resolve kernel-debuginfo-common package name.
Mark Wielaard [Wed, 26 May 2010 10:24:21 +0000 (12:24 +0200)]
rhbz #596083 Make stap-prep resolve kernel-debuginfo-common package name.

The kernel-debuginfo-common package name is slightly different on different
distros. But the correct name is always required by the kernel-debuginfo
package. So don't add it to the CANDIDATES list, but let the yumdowloader
--resolve it. Tested on f13, rhel5 and rhel6 beta.

* stap-prep: Remove kernel-debuginfo-common from CANDIDATES, add --resolve
  to yumdownloader.

14 years agoPR10245: allow "-" in sdt.h marker names
Frank Ch. Eigler [Wed, 26 May 2010 01:17:25 +0000 (21:17 -0400)]
PR10245: allow "-" in sdt.h marker names

* tapsets.cxx (sdt_query ctor): Map - to __ in incoming marker names.
* NEWS: Note it.
* testsuite/systemtap.base/sdt_types.c, sdt_misc.exp: Test it.

14 years agomake semok/thirtysix.stp test use stap -p2 instead of -p4
Frank Ch. Eigler [Wed, 26 May 2010 01:03:43 +0000 (21:03 -0400)]
make semok/thirtysix.stp test use stap -p2 instead of -p4

This page took 0.067804 seconds and 5 git commands to generate.