| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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.
|
|
|
|
|
| |
* tapset/nd_syscalls2.stp (nd_syscall.open.return): Add commas after
alternatives.
|
|
|
|
|
|
|
| |
- Fix a few more formatting issues
- Add SYSCALL_WRAPPERS analogous to 132c33 tapset/syscalls2.stp
Thanks to Przemysław Pawełczyk for the helpful translation scripts.
|
|\ |
|
| | |
|
| |
| |
| |
| | |
* testsuite/systemtap.base/sdt.exp: Better cleanup.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This one function accounted for ~30% of my callgrind profile of
"stap -l 'syscall.*'", even though it was only called ~1200 times. We
call dwarf_getscopes for each $target variable, with the same parameters
within a given probe. Since they're no nicely grouped, it's easy to
just cache the most recent call, and the next few calls will be a hit.
Overall this cuts the number of calls down to about 300, for an easy
speed gain.
|
|/
|
|
|
|
|
| |
For a call like "stap -l 'syscall.*'", I found that ~10% of the time was
spent compiling the blacklist regexps over again for each probe point.
By moving this functionality into the kernel dwflpp instance, we can
reuse the regexps and get an easy speed boost.
|
|
|
|
|
|
|
|
|
| |
* runtime/task_finder.c (__stp_call_mmap_callbacks_for_task): Grabs the
'mmap_sem' sempaphore. Caches vma information, releases the semaphore,
then makes mmap callbacks.
(__stp_utrace_task_finder_target_quiesce): Calls
__stp_call_mmap_callbacks_for_task() to make mmap callbacks on initial
attach to a task.
|
| |
|
|
|
|
| |
This applies some of the formatting rules specified in c0c1ccc.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
This contains an initial transformation of syscalls2.stp to start using
numbered parameter access instead of relying on dwarf.
Signed-off-by: Josh Stone <jistone@redhat.com>
|
|
|
|
|
| |
On powerpc, function descriptors are in the .opd section as NO_TYPE.
Include them in stap-symbols.h
|
|
|
|
|
|
|
|
|
|
| |
* runtime/task_finder.c (__stp_call_mmap_callbacks_with_addr): Renamed
from __stp_call_mmap_callbacks_with_vma(). Also added some code from
__stp_utrace_task_finder_target_syscall_exit() that locks the 'mmap_sem'
semaphore. This avoids holding the semaphore while the mmap callbacks
are made.
(__stp_utrace_task_finder_target_syscall_exit): Just calls
__stp_call_mmap_callbacks_with_addr() in the mmap case.
|
|
|
|
|
|
|
| |
* tapset/ucontext-unwind.stp (ubacktrace): Remove empty line before function
triggering parse errors for doc scanner.
* doc/SystemTap_Tapset_Reference/tapsets.tmpl (chapter context_stp): Add
tapset/ucontext-symbols.stp and tapset/ucontext-unwind.stp.
|
| |
|
|
|
|
|
|
|
|
|
| |
The patch makes use of the RPM libraries to determine which rpm supplied
the executable and from that information suggest a command to install the
appropriate debuginfo rpm.
This is enabled using the "--with-rpm" option for configure. Can be
explicitly disabled with "--without-rpm".
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add kprobe.function("SyS_*") probe points to nd_syscall.* probe aliases.
Analogue of commit 132c337c with two exceptions:
- remove sufficiency of these new probe points (use '?' instead of '!'),
because translator always considers them resolved,
- make non-SyS probe points optional in probe aliases affected by
syscall wrappers, because otherwise they will fail on such
architectures.
Signed-off-by: Josh Stone <jistone@redhat.com>
|
|
|
|
|
|
|
|
|
|
| |
Both kernel.function and kprobe.function were defining a global array
stap_unreg_kprobes to use in bulk kprobes unregistration. The compiler
allowed the duplicate definition as long as they were the same size, as
it was when exercised in buildok/thirtyone.
kprobe.function now uses a separate stap_unreg_kprobes2, and the
testcase is modified to produce an imbalanced number of probes.
|
|
|
|
|
|
| |
When a kernel.function or kprobe.function fails in registration, we
usually print a WARNING and move on. With this patch, kprobes that have
the optional '?' flag will not print any WARNING.
|
|
|
|
|
|
| |
The "/* pure */" tag has no effect unless it is within the embedded-C
body of a function. In this instance, they were accidentally moved out
during the syscall cleanups.
|
|
|
|
|
|
|
|
|
|
| |
The functions asmlinkage() and fastcall() are used to help access
syscall parameters on i686. All other archs don't need this, but they
still define empty functions to shield the callers from arch details.
However, stap issues warnings for empty script-level functions. This
patch changes them to "%{ /* pure */ %}" so there's no complaint, and
they will still get optimized away.
|
|
|
|
| |
Signed-off-by: Josh Stone <jistone@redhat.com>
|
|
|
|
|
|
|
|
| |
Add probe points for faccessat, fchmodat, fchownat, linkat and mknodat.
Analogue of commits: a3d153e5, 335972be, 46e2c2c1, c815c982, dac6e242
and bad69f1d.
Signed-off-by: Josh Stone <jistone@redhat.com>
|
|
|
|
|
|
| |
Analogue of commit 39a8b0bc.
Signed-off-by: Josh Stone <jistone@redhat.com>
|
|
|
|
|
|
| |
Rules were already specified in commit c0c1ccc6.
Signed-off-by: Josh Stone <jistone@redhat.com>
|
|
|
|
|
| |
This is needed for run-stap so that stapio and all child processes can
run as the originally invoking user instead of root.
|
| |
|
| |
|
|\ |
|
| |
| |
| |
| | |
* translate.cxx (dump_unwindsyms): Initialize eh_frame to 0, not NULL.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Previously, _stp_init_time and _stp_kill_time were being called from
begin/end/error probes, which will run with preemption disabled. The
BUG reported on RT kernels showed that cpufreq_unregister_notifier can
end up sleeping, which violates our preemption block.
This patch moves the init/kill into systemtap_module_init/exit, where it
is safe to sleep. The code maintains a new predicate with the define
STAP_NEED_GETTIMEOFDAY, so we don't still incur any timer overhead if
it's not used.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* runtime/unwind.c (adjustStartLoc): Add extra dbug_unwind.
(_stp_search_unwind_hdr): Always pass true for is_ehframe.
(unwind_frame): Properly pass through is_ehframe to adjustStartLoc().
(unwind): Add extra dbug_unwind.
* translate.cxx (dump_unwindsyms): Output and use correct eh_frame
and eh_len.
|
| |
| |
| |
| |
| |
| |
| | |
* runtime/unwind.c (unwind): Call new unwind_frame() first with debug_frame
data, then if that wasn't able to unwind again with eh_frame data.
(unwind_frame): Adapted version of old unwind() function that takes a
table, table length and whether it is an eh_frame table.
|
| |
| |
| |
| |
| |
| |
| | |
* runtime/unwind.c (adjustStartLoc): Add ptrType and is_ehframe as arguments.
Use these to adjust location when necessary.
(DEBUG_UNWIND): Move block before adjustStartLoc.
Pass false for is_ehframe throughout.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* runtime/sym.h (_stp_module): Remove unwind_data, unwind_data_len and
unwind_is_ehframe fields. Add debug_frame, eh_frame, debug_frame_len,
eh_frame_len and eh_frame_addr fields.
* runtime/unwind.c: Use debug_frame and debug_frame_len instead of
unwind_data and unwind_data_len throughout.
(cie_for_fde): Take unwind_data and is_ehframe as direct arguments.
* runtime/unwind/unwind.h (cie_for_fde): New function declaration.
* translate.cxx (get_unwind_data): Fetch and return both debug_frame
and eh_frame tables.
(dump_unwindsyms): Dump both debug_frame and eh_frame tables.
|
|/ |
|
|
|
|
|
|
| |
* includes/sys/sdt.h (STAP_NOP): __powerpc__ doesn't want an extra 0.
Tested-by: Mahesh Jagannath Salgaonkar <mahesh@linux.vnet.ibm.com>
|