| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
PR 3624.
* tapsets.cxx (struct be_derived_probe): Add a new priority parameter
for begin/end probes, and a comparison function for sorting.
(be_builder::build): Parse the priority & pass it to be_derived_probe.
(be_derived_probe_group::emit_module_init, emit_module_exit): Sort the
probe list by priority before emitting any code.
(register_standard_tapsets): Add new begin/end variants.
* parse.cxx (parser::parse_literal): Allow negative numeric literals,
by checking for a '-' unary operator right before a number.
testsuite/
* systemtap.base/be_order.exp, systemtap.base/be_order.stp,
semok/beginend.stp: New tests for begin/end priorities.
* lib/stap_run.exp: Anchor OUTPUT_CHECK_STRING to the end of output.
* systemtap.base/maxactive.exp: Fix to compare output to the end.
* systemtap.base/probefunc.exp: Ditto.
* systemtap.samples/ioblocktest.exp: Ditto.
* systemtap.samples/ioblocktest.stp: Ditto.
* systemtap.samples/tcptest.exp: Ditto.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
PR 3623.
* tapsets.cxx (timer_derived_probe_group::emit_module_decls): Restart
the timers if we are in STARTING or RUNNING state.
(hrtimer_derived_probe_group::emit_module_decls): Ditto.
(be_derived_probe_group::emit_module_init): indicate error to the rest
of the initialization if any begin probes fail.
* translate.cxx (c_unparser::emit_module_init): Set the global error
state on an initialization error so timers know to shut down.
runtime/
* time.c (stp_timer_reregister): Add a global to control whether the
gettimeofday timer should restart itself, for clean shutdown.
(__stp_time_timer_callback): Check the global.
(_stp_kill_time, _stp_init_time): Set the global.
(_stp_gettimeofday_ns): Switch to preempt_enable_no_resched.
* time.c (__stp_time_cpufreq_callback): Use the cpu# from the notifier.
(_stp_init_time): No need to disable preemption around cpufreq init.
|
|
|
|
| |
misunderstanding
|
|
|
|
|
| |
* tapsets.cxx (common_probe_entryfn_prologue): Tweak
insufficient stack detection logic.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* tapsets.cxx (struct dwarf_var_expanding_copy_visitor): Added
'add_block' member variable. Constructor sets it to NULL.
(dwarf_var_expanding_copy_visitor::visit_target_symbol): Fixes the
problem of accessing a cached target variable in a loop. Cached
target variable is assigned to a temporary variable, which can be
safely access multiple times. In addition, the cached value is
deleted after being read.
(dwarf_derived_probe::dwarf_derived_probe): Adds in the new block
of code created in visit_target_symbol() to the beginning of the
derived probe.
|
|
|
|
|
|
|
| |
* tapsets.cxx
(dwarf_var_expanding_copy_visitor::visit_target_symbol):
Improved handling target variables in return probes by having a
per-thread counter.
|
|
|
|
|
|
|
|
|
|
|
|
| |
PRs 2685, 3596, toward 2725.
* tapsets.cxx (common_probe_entryfn_prologue): Skip probe on
insufficient stack.
(build_blacklist): Add a slew of lock-related calls.
(query_module): Check for debuginfo architecture match.
* translate.cxx (translate_pass): Add default MINSTACKSPACE.
* configure.ac: Link stap with -lebl too.
* configure: Regenerated.
* stap.1.in: Document MINSTACKSPACE parameter.
|
|
|
|
|
|
|
|
| |
* tapsets.cxx
(dwarf_var_expanding_copy_visitor::visit_target_symbol): BZ
1382. Target variables can be accessed in return probes. A new
function entry probe is generated that saves the target variables
so that they can be accesssed in the return probe.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* tapsets.cxx (d_v_e_c_v::visit_target_symbol): Restore lost
exception-saving functionality that improves error messages
for incorrect $target expressions.
(translate_components): Systematize error messages somewhat.
* translate.cxx (emit_function, emit_probe): Clarify
"array locals" error message.
2006-11-17 Frank Ch. Eigler <fche@redhat.com>
* semko/thirtysix.stp, transko/three.stp: New tests.
|
|
|
|
|
|
|
| |
* tapsets.cxx
(dwarf_var_expanding_copy_visitor::visit_target_symbol): Minor
improvement to error handling by throwing exceptions before
allocations are done.
|
|
|
|
|
|
|
|
|
|
|
|
| |
* tapsets.cxx (dwarf_query::dwarf_query): Looks for "maxactive"
return probe variant.
(dwarf_derived_probe::dwarf_derived_probe): Initializes
has_maxactive and maxactive_val member variables.
(dwarf_derived_probe::register_function_variants): Matches
"maxactive" return probe variant.
(dwarf_derived_probe_group::emit_module_decls): Emits code to use
maxactive data.
(dwarf_derived_probe_group::emit_module_init): Ditto.
|
|
|
|
|
|
| |
* util.h (lex_cast_qstring): Move def'n here. Also quote \.
(stringify, lex_cast, lex_cast_hex): Move defn here.
* buildrun.cxx, elaborate.cxx, main.cxx, staptree.cxx: Adapt.
|
|
|
|
|
| |
* tapsets.cxx (profile_derived_probe_group::emit_module_decls):
Pass along incoming pt_regs to context of timer.profile handlers.
|
|
|
|
|
| |
* tapsets.cxx (emit_address): Emit calls to _stp_module_relocate
for $target-variable addresses in relocatable sections.
|
| |
|
| |
|
|
|
|
|
|
|
| |
* tapsets.cxx (timer_derived_probe_group::emit_interval): New -
Fixes randomization for jiffies timers in ms mode.
(timer_derived_probe_group::emit_module_decls): Use emit_interval.
(timer_derived_probe_group::emit_module_init): Ditto.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Probe registration rework. Offline dwarf processing for better
cross-instrumentation.
* elaborate.h (derived_probe): Remove registration-related code
generation API. Add new function sole_location().
(derived_probe_group): Reworked this and associated classes.
* session.h (systemntap_session): Create individual per-category
derived_probe_groups.
* elaborate.cxx (derived_probe_group): Reworked.
(alias_derived_probe): Switch to new derived_probe API.
(semantic_pass_symbols): Ditto.
* translate.cxx (mapvar init): Check for array initialization error.
(emit_module_init): Handle such failures, at least in theory.
(emit_module_exit): Switch to new derived_probe_group API. Call
cpu_relax() during shutdown busywait.
(emit_common_header): Elide context variables for elided handler fns.
(c_unparser::emit_probe): Implement new, improved duplicate
elimination technique for probe handlers. Leave two older ones
behind as compile options for education.
* tapsets.cxx (*): Reworked all probe registration code, moving
it from derived_probes into derived_probe_groups. Shrunk output
code. Temporarily disabled probe timing and perfmon/mark probes.
(dwflpp): Use offline reporting, so that module matching and
relocation is performed at run time.
(dwarf_query): Remove flavour logic, now supplanted by other
duplicate elimination code.
(dwarf_derived_probe): Reworked construction, centralized
module/section/offset computations.
* tapsets.h (all_session_groups): New little helper.
* main.cxx (main): For pass-2 message, print number of embeds too.
* systemtap.spec.in: Add a "BuildRequires: dejagnu" for make check.
* configure.ac: Bump version to 0.5.11.
* configure: Regenerated.
|
|
|
|
|
| |
* tapsets.cxx (build_blacklist): Added
"atomic_notifier_call_chain" to the blacklist (Bugzilla #3379).
|
|
|
|
|
|
|
|
|
|
|
| |
* translate.cxx (emit_common_header): Add a
kretprobe_instance pointer to struct context.
(emit_symbol_data): Include absolute symbols.
* tapsets.cxx (emit_common_header): Initialize
the kprobe instance pointer to 0;
(emit_probe_entries): Set kretprobe instance
pointer if appropriate.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* tapsets.cxx (in_kprobes_function): New function that looks up
the values of '__kprobes_text_start' and '__kprobes_text_end' in
the kernel to be able to automatically exclude functions marked as
'__kprobes' (BZ# 2639).
(blacklisted_p): Calls in_kprobes_function().
(query_kernel_module): Utility function that finds the kernel module.
* session.h (struct systemtap_session): Added kprobes_text
variables - kprobes_text_initialized, kprobes_text_start, and
kprobes_text_end.
* elaborate.cxx (systemtap_session::systemtap_session):
kprobes_text variables get initialized.
|
|
|
|
|
|
|
| |
PR 3278
* tapsets.cxx (hrtimer_derived_probe::emit_probe_entries): Only
restart timers when the session is still active and we updated the
expire time.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* session.h (struct systemtap_session): Add kernel_base_release
to store the kernel version without the -NNN suffix.
* main.cxx (main): Generate and use kernel_base_release.
* parse.cxx (eval_pp_conditional): Use kernel_base_release.
* tapsets.cxx (profile_derived_probe::profile_derived_probe):
Use kernel_base_release.
* tapsets.cxx (timer_builder::build): Support a wide variety of
timer varients -- jiffies, s/sec, ms/msec, us/usec, ns/nsec, and
hz. Use hrtimers automatically on kernels that have it.
(timer_builder::register_patterns): Bind all of the new timer
varients in one easy place.
(register_standard_tapsets): Call timer_builder::register_patterns.
(struct hrtimer_builder): Removed since timer_builder is generic.
* stapprobes.5.in: Document new timer.* functionality.
* tapsets.cxx (hrtimer_derived_probe_group::emit_probes): Add a
shared global for the actual hrtimer resolution, _stp_hrtimer_res.
(hrtimer_derived_probe_group::emit_module): Init _stp_hrtimer_res.
(hrtimer_derived_probe::emit_interval): Limit intervals at a
minimum to the hrtimer's actual resolution.
(hrtimer_derived_probe::emit_probe_entries): Forward timers
based on previous expiration instead of restarting relative.
testsuite/
* buildok/fourteen.stp: Test new timer functionality.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* elaborate.h (struct derived_probe): Replace emit_registrations()
function with emit_registrations_start() and
emit_registrations_end().
(struct derived_probe_group): Added emit_module_init().
(struct derived_probe_group_container): Added emit_module_init(),
emit_module_init_call(), and emit_module_exit().
* elaborate.cxx (struct alias_derived_probe): Updated
emit_regitrations calls.
* translate.cxx (emit_module_init): Instead of actually emitting
per-probe-point registrations/unregistrations, let the session's
derived_probe_group_container do it.
* tapsets.cxx (emit_probe_timing): New function that handles
probe timing code.
(be_derived_probe::emit_registrations_start): Renamed from
emit_registrations.
(be_derived_probe_group::emit_module_init): New function that
outputs probes create and destroy functions.
(dwarf_derived_probe::emit_registrations): Removed, but most code
moved to emit_registrations_start().
(dwarf_derived_probe::emit_registrations_start): Handles details
of multiple dwarf probe registrations.
(dwarf_derived_probe::emit_registrations_end): Handles cleanup
details of multiple dwarf probe registrations.
(dwarf_derived_probe_group::emit_module_init): New function that
outputs probes create and destroy functions.
(timer_derived_probe::emit_registrations_start): Renamed from
emit_registrations. Added mutiple probe handling.
(timer_derived_probe::emit_registrations_end): Handles cleanup
details of multiple probe registrations.
(timer_derived_probe_group::emit_module_init): New function that
outputs probes create and destroy functions.
(profile_derived_probe::emit_registrations_start): Renamed from
emit_registrations. Added mutiple probe handling.
(profile_derived_probe::emit_registrations_end): Handles cleanup
details of multiple probe registrations.
(profile_derived_probe_group::emit_module_init): New function that
outputs probes create and destroy functions.
(mark_derived_probe::emit_registrations_start): Renamed from
emit_registrations. Added mutiple probe handling.
(mark_derived_probe::emit_registrations_end): Handles cleanup
details of multiple probe registrations.
(mark_derived_probe_group::emit_module_init): New function that
outputs probes create and destroy functions.
(hrtimer_derived_probe::emit_registrations_start): Renamed from
emit_registrations. Added mutiple probe handling.
(hrtimer_derived_probe::emit_registrations_end): Dummy function.
(hrtimer_derived_probe_group::emit_module_init): New function that
outputs probes create and destroy functions.
(derived_probe_group_container::emit_module_init): Added function
to call all probe group's emit_module_int functions.
(derived_probe_group_container::emit_module_init_call): Added
function to handle probe group initialization cleanup.
(derived_probe_group_container::emit_module_exit): Added
function to handle probe group cleanup.
|
|
|
|
|
|
|
|
| |
Improve unresolved target-symbol error messages.
* staptree.h (target_symbol): Add new field saved_conversion_error.
* elaborate.cxx (typeresolution_info::visit_target_symbol): Throw
that if found instead of generic error.
* tapsets.cxx (t_v_f_c_v::visit_target_symbol): Set it.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* translate.cxx: Added inclusion of session.h.
(translate_pass): Instead of asking each probe to emit itself, we
ask the session's probes member variable to emit all the probes.
* tapsets.cxx: Added inclusion of session.h. Added a
register_probe member function to all derived_probe based
classes. Added a derived_probe_group derived class for all probe
types:
(be_derived_probe_group): New class.
(never_derived_probe_group): New class.
(dwarf_derived_probe_group): New class.
(timer_derived_probe_group): New class.
(profile_derived_probe_group): New class.
(mark_derived_probe_group): New class.
(hrtimer_derived_probe_group): New class
(derived_probe_group_container): New class.
* elaborate.h: Removed inclusion of session.h since session.h now
includes elaborate.h.
(derived_probe): Added register_probe member function.
(derived_probe_group): Added class definition. This is the base
class of all of the derived probe groups - dwarf, timer, etc.
(derived_probe_group_container): Added class definition. An
instance of this class will be stored in the session and contain
all the other probe groups.
* elaborate.cxx (derived_probe_group::register_probe): Added
derived_probe_group::register_probe stubs.
(alias_derived_probe::register_probe): Added register_probe member
function.
(semantic_pass_symbols): After deriving a probe, the probes now
register themselves with the session.
* session.h: Includes elaborate.h to get
derived_probe_group_container definition. systemtap_session class
'probes' member variable switched from a vector of derived probes
to a derived_probe_group_container.
* buildrun.cxx: Added inclusion of session.h since it was removed
from elaborate.h.
* main.cxx: Added inclusion of session.h since it was removed
from elaborate.h.
* parse.h: Added forward struct declarations.
* staptree.h: Removed inclusion of session.h.
|
|
|
|
|
|
|
|
|
|
| |
PR 3093
From Eugeniy Meshcheryakov <eugen@debian.org>:
* main.cxx (main): Use setenv instead of putenv, since gcc 4.2
doesn't like assigning string constants to char*. Also use
const char* for result from getenv.
* tapsets.cxx (dwflpp::setup): Copy string constant into a
local array, to fix gcc 4.2 warning.
|
| |
|
|
|
|
|
|
| |
* tapsets.cxx (hrtimer_builder::build): Enable hrtimers on >=2.6.17.
* tapsets.cxx (hrtimer_derived_probe::emit_probe_entries): Correct
compilation errors, fix return value.
|
|
|
|
|
|
|
|
|
|
|
|
| |
* tapsets.cxx (dwflpp::dwfl_assert): Added optional extra_msg
parameter to be able to print out extra error message.
(dwflpp::setup): Uses new 'extra_msg' parameter to dwfl_assert()
to ask user to install kernel-debuginfo when
dwfl_linux_kernel_report_kernel() or
dwfl_linux_kernel_report_modules() fails (Bugzilla #2669).
* buildrun.cxx (compile_pass): Checks to make sure module build
directory exists before trying to run make there (Bugzilla #2669).
|
|
|
|
|
|
| |
* tapsets.cxx (dwflpp::emit_address): New instance method. Get
relocation details from Dwfl to emit in comment after address constant.
(dwflpp::loc2c_emit_address): Just call that.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* tapsets.cxx (dwflpp::express_as_string): New function.
Extracted from dwflpp::literal_stmt_for_local() so that
dwflpp::literal_stmt_for_return() could also call it.
(dwflpp::literal_stmt_for_local): Portion extracted to create
dwflpp::express_as_string().
(dwflpp::literal_stmt_for_return): New function. Adds support for
new symbolic access ("$return") to return value in .return
probes. Fixes PR 1132.
(target_variable_flavour_calculating_visitor::visit_target_symbol):
Calls dwflpp::literal_stmt_for_return() when in a return probe and
the variable name is "$return".
(dwarf_var_expanding_copy_visitor::visit_target_symbol): Ditto.
* stapfuncs.5.in: Noted that the retval() function is deprecated.
* stapprobes.5.in: Corrected the name of the return value
variable.
* tapset/return.stp: Marked the retval() function as deprecated.
* testsuite/semko/return01.stp: Added new test.
* testsuite/semko/return02.stp: Ditto.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
PR 2645.
* stapprobes.5.in: Document "?" probe point suffix.
* parse.cxx (parse_probe_point): Recognize "?" optional suffix.
* elaborate.cxx (derive_probes): Observe probe_point->optional.
* staptree.h, staptree.cxx: Corresponding changes.
* tapsets.cxx (never_derived_probe, never_builder): New classes.
(register_standard_tapsets): Support "never" probe point.
* testsuite/buildok/six.stp, parseok/five.stp: Modifed tests.
* translate.cxx (emit_module_init): Format "-t" (benchmarking)
cycle-time reports similarly to "-v" (verbose) times.
|
|
|
|
|
|
|
| |
* tapsets.cxx (hrtimer_derived_probe::emit_interval): update
API usage of hrtimers in preparation of getting exports from
the kernel.
(hrtimer_derived_probe::emit_probe_entries): ditto
|
|
|
|
|
|
|
|
| |
* tapsets.cxx (build_blacklist): build the sets of blacklisted
functions and function returns. Manually added many __kprobes
functions that should not be probed.
(dwarf_query::dwarf_query): Call build_blacklist.
(dwarf_query::blacklisted_p): Use blacklist sets.
|
|
|
|
|
|
| |
* tapsets.cxx
(dwarf_var_expanding_copy_visitor::visit_target_symbol):
Free allocated memory when supressing target-variable errors
|
|
|
|
|
|
|
|
|
| |
Pass 4 speedup.
* tapsets.cxx (derived_probe::emit_common_header): New
function, to emit code formerly inlined by
emit_probe_prologue/epilogue.
* translate.cxx (emit_common_header): Call it.
* elaborate.h: Corresponding changes.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Organize "-t" output by script/parse level probes rather than
derived-probes.
* elaborate.cxx (derived_probe ctor): Remove name field setting.
(alias_derived_probe): New class.
(alias_expandion_builder::build): Create an instance of the above
instead of parse-tree-level plain probe.
* elaborate.h: Corresponding changes.
(derived_probe::basest): Define.
* staptree.cxx (probe ctor): Set new name field.
* staptree.h (probe): Corresponding changes.
(probe::basest): New field.
* tapsets.cxx (emit_probe_prologue, emit_probe_entries):
Switch to basest() probe name for Stat instance.
(dwarf_derived_probe ctor): Stash away base probe.
* translate.cxx (unparser::emit_probe): Remove index
operand, just use probe name to generate symbols.
(emit_module_init): Reorganize -t output in unregister functions.
(translate_pass): Remove unparser::current_probenum field and all
uses.
* translate.h: Corresponding changes.
|
|
|
|
|
|
|
|
|
| |
* tapsets.cxx, translator.cxx (*): Designate more emitted
functions as static.
* translator.cxx (visit_print_format): Correct regression
regression from two weeks ago.
* stapfuncs.5.in: Tweak wording. Deprecate returnval() in favour
of retval().
|
|
|
|
|
|
|
|
|
| |
PR 2433
* tapsets.cxx (dwarf_query::blacklisted_p): Extend the list of
blacklisted .return probes to include "do_exit". Correct funcname
typo for "sys_groupexit".
* tapset/syscalls.stp: Remove .return probe aliases of never-
returning syscall.exit and syscall.exit_group calls.
|
|
|
|
|
| |
PR 2506
* tapsets.cxx (dwarf_query::blacklisted_p): skip probes in .exit.*
|
|
|
|
| |
the average amount of time spent in the probe.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
PR 2427.
* staptree.cxx (varuse_collecting_visitor::visit_embeddedcode):
Support /* pure */ declaration. Stop using __tvar_ naming hack.
(v_c_u::visit_print_format): Mark sprint and sprintf as
side-effect-free.
(deep_copy_visitor::visit_print_format): Propagate raw_components.
* stap.1.in: Document declaration.
* elaborate.cxx (semantic_pass_opt2): Verbose message tweak.
(dead_stmtexpr_remover): Extend for more aggressive optimization.
* tapsets.cxx (dwarf,mark_var_expanding_copy_visotor): Add
/* pure */ declaration to rvalue expansions.
* tapset/*.stp: Added /* pure */ declarations to many functions.
* testsuite/parseok/unparsers.stp: Propagate guru mode flag.
* testsuite/buildok/twentyfour.stp: New test.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
PR 953
* elaborate.h (derived_probe): Add field "name". Stop passing
"probe index" to other emit_* calls.
(emit_probe_context_vars): New member function.
* elaborate.cxx (derived_probe ctor): Generate unique name.
* translate.cxx (*): Adapt to index->name.
(emit_probe): Realize that probe locals only occur at nesting=0.
* tapsets.cxx (*derived_probe::emit_*): Adapt to index->name.
(mark_var_expanding_copy_visitor): New class to process $argN.
(mark_derived_probe ctor): Call it.
(mark_derived_probe::emit_probe_context_vars): Do it.
* buildrun.cxx (compile_pass): Add more optional gcc verbosity.
Add CFLAGS += -freorder-blocks.
* testsuite/buildok/marker.stp: New test.
|
|
|
|
|
| |
* tapsets.cxx (mark_derived_probe::emit_{de}registrations):
Use cmpxchg to synchronize.
|
| |
|
| |
|
| |
|