| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Added "limit EXP" support to foreach statements.
* translate.cxx (c_tmpcounter::visit_foreach_loop): Handles
"limit" member variable.
(c_unparser::visit_foreach_loop): Ditto.
* staptree.cxx (foreach_loop::print): Prints "limit EXP"
addition.
(traversing_visitor::visit_foreach_loop): Handles "limit" member
variable.
(deep_copy_visitor::visit_foreach_loop): Ditto.
* staptree.h (struct foreach_loop): Added "limit" member
variable.
* stap.1.in: Added documentation for the "limit EXP" addition to
foreach statement.
* parse.cxx (lexer::scan): Added "limit" keyword for foreach
statements.
(parser::parse_foreach_loop): Parses "limit" keyword for foreach
statements.
* elaborate.cxx (symresolution_info::visit_foreach_loop): Handles
"limit" member variable.
(typeresolution_info::visit_foreach_loop): Ditto.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* translate.cxx (delete_statement_operand_visitor::visit_symbol):
Added referent assert.
(delete_statement_operand_tmp_visitor::visit_arrayindex): Ditto.
(c_tmpcounter::visit_array_in): Ditto.
(c_unparser::visit_symbol): Ditto.
(c_unparser_assignment::visit_symbol): Ditto.
(c_unparser::load_map_indices): Ditto.
(c_tmpcounter::visit_arrayindex): Ditto.
(c_tmpcounter_assignment::visit_arrayindex): Ditto.
(c_tmpcounter::visit_functioncall): Ditto.
(c_unparser::visit_functioncall): 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.
|
|
|
|
|
|
|
|
|
|
|
| |
* 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.
|
|
|
|
|
|
| |
* buildrun.cxx (run_pass): Remove "-m" option to stpd.
* translate.cxx (translate_pass): #define STP_RELAYFS_MERGE
if appropriate.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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.
|
|
|
|
|
|
|
|
|
|
|
|
| |
* elaborate.cxx (duplicate_function_remover): Added class.
(get_functionsig): Added function.
(semantic_pass_opt5): New function merges duplicate identical
functions into one function.
(semantic_pass_optimize): Calls semantic_pass_opt5.
* translate.cxx (c_unparser::emit_probe): Changed to merge
duplicate probes bodies by making the duplicate probe just call
the original probe (BZ# 2421).
|
|
|
|
|
| |
a new way of allowing user add arbitrary trace data. And also provide
a way of letting user write the trace data format.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
| |
also changed.
lket_trace_extra() and lket_backtrace() are introduced for these two purpose.
I also modified lket.5.in for the backtrace changes
|
|
|
|
|
|
|
|
|
| |
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().
|
|
|
|
| |
in script associated with timing information.
|
|
|
|
|
| |
* translate.cxx (mapvar::exists): Added code for string array
handling. Otherwise, string array elements always exist.
|
| |
|
|
|
|
| |
the average amount of time spent in the probe.
|
|
|
|
|
| |
* translate.cxx (visit_print_format): Fix regression in
"printf" pseudo-result initialization.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
PR 2610.
* translate.cxx (c_unparser::visit_arrayindex, visit_stat_op):
Detect empty aggregates consistently.
(visit_print_format): Ditto. Also detect errors due to
argument evaluation.
(translator_output::*): Add a flush before a failing assert,
to produce more context when debugging.
2006-05-01 Frank Ch. Eigler <fche@elastic.org>
* systemtap.maps/absentstats.*: Rewrite.
* systemtap.maps/ix_clear*.exp: Update error message.
|
|
|
|
|
|
| |
PR 2149
* translate.cxx (mapvar::set): Test _stp_map_set_xx() for
array overflows.
|
|
|
|
|
|
| |
PR 1326
* translate.cxx (c_unparser::visit_binary_expression): Handle
negative left and right shift count.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
PR 2220
* translate.cxx (visit_statement): Tolerate 0 first argument.
(visit_for_loop, visit_foreach_loop): Call it thusly for condition
expression.
(visit_embededcode, visit_block, visit_null_statement): Don't
call visit_statement() at all.
2006-04-18 Frank Ch. Eigler <fche@elastic.org>
* conversions.stp (string, hex_string): Use snprintf for safety.
2006-04-18 Frank Ch. Eigler <fche@elastic.org>
* systemtap.samples/control_limits.stp: Adapt to new action counting.
|
|
|
|
|
|
|
| |
PR 2497
* translate.cxx (translate_pass): Don't
reset STP_STRING_SIZE if it was already defined.
Set it to 1024 by default.
|
|
|
|
|
| |
* translate.cxx (visit_print_format): Call
_stp_snprintf() instead of snprintf().
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add binary printf support.
* elaborate.cxx (visit_print_format): Don't include
conv_literal or conv_size in components vector.
Add conv_binary to switch statement.
* translate.cxx (visit_print_format): Eliminate
special cast to (long long) for pe_long because new
vsnprintf uses int64_t.
* staptree.h (struct print_format): Add conv_binary and conv_size.
* staptree.cxx (components_to_string): Add conv_binary case.
Add conv_size case.
(string_to_components): Add cases for 'b' and 'n'
|
|
|
|
|
|
|
|
|
|
|
| |
* tapsets.cxx (hrtimer_derived_probe::*): creates a probe point
based on the hrtimer APIs.
* tapsets.cxx (hrtimer_builder::*): parses the user's time-spec
into a 64-bit nanosecond value, and calls the appropriate
derived_probe.
* tapsets.cxx (register_standard_tapsets): add hrtimer bindings
* translate.cxx (translate_pass): add linux/random.h include,
used for generating 64-bit random numbers for hrtimers.
|
|
|
|
|
| |
* translate.cxx (emit_globals): Tag globals, especially the locks,
as __cacheline_aligned.
|
|
|
|
|
| |
* translate.cxx (emit_locks): Emit dummy references to unlock_ ...
(emit_module_init): ... and probe_point.
|
|
|
|
|
|
|
| |
* translate.cxx (var::init): Don't crush string module_params.
(emit_global_param): New function, forked out of emit_global,
to put module_param calls at the bottom of C file.
* translate.h: Corresponding changes.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
PR 1304
* parse.cxx (lexer): Take systemtap_session argument.
(lexer::scan): Support $1..$NNNN and @1...@NNNN expansion.
* stap.1.in: Document this.
* testsuite/semok/args.stp: New test.
* translate.cxx (var::init, emit_global): Emit code to allow
named module parameters to initialize global string/number scalars.
* stap.1.in: Don't document this yet.
PR 2334
* main.cxx (main): Clarify "-v" option repeatibility.
* stap.1.in: Ditto.
|
|
|
|
|
| |
* translate.cxx (varlock*): Removed now unnecessary class.
(aggregation_locks): Renamed field to aggregations_active.
|
|
|
|
|
|
| |
PR 2252
* translate.cxx (translate_pass): Fix legacy definition of
read_trylock.
|
|
|
|
|
|
|
|
| |
* main.cxx: Make "-v" (verbose) flag a counter.
* stap.1.in: Document this.
* session.h: Corresponding changes.
* {elaborate,buildrun,tapsets,translate}.cxx: Update all uses of
verbose flag to compare it to sensible level for value of message.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
PR 2060: lock elevation, mop-up
* staptree.cxx (functioncall_traversing_visitor): Store a
current_function pointer during traversal.
(visit_embeddedcode): Use it to handle $target-synthesized functions.
(varuse_collecting_visitor::visit_assignment): Correct l-lr typo.
(visit_foreach_loop): Note added write on sorted foreach.
(visit_delete_statement): Note as read+write.
* staptree.h: Corresponding changes.
* elaborate.cxx (dead_assignment_remover::visit_expr_statement):
Correct stmt token after possible expression rewriting.
* tapsets.cxx (visit_target_symbol): Create naming convention
to recognize $target-synthesized functions.
* translate.cxx (emit_locks, emit_unlocks): New functions to
emit lock/unlock sequences at the outermost level of a probe.
(emit_probe): Call them.
(varlock_*): #if-0 out the lock code generation. Later, these
classes should be removed.
(translate_pass): Emit read_trylock() kludge macro for old kernels.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
PR 2060 etc.
* tapsets.cxx (visit_target_symbol): Tolerate failed resolution by
letting target_symbol instance pass through to optimizer and
type checker.
* elaborate.cxx (semantic_pass_optimize): New family of functions and
associated visitor classes.
(visit_for_loop): Tolerate absent init/incr clauses.
(semantic_pass): Invoke unless unoptimized (-u) option given.
* main.cxx, session.h: Add support for flag.
* staptree.cxx (visit_for_loop): Tolerate absent init/incr clauses.
(traversing_visitor::visit_arrayindex): Visit the index expressions.
(functioncall_traversing_visitor): New class.
(varuse_tracking_visitor): New class.
* staptree.h: Corresponding changes.
* parse.cxx (parse_for_loop): Represent absent init/incr expressions
with null statement pointer instead of optimized-out dummy numbers.
* stap.1.in: Document optimization.
* testsuite/{semko,transko}/*.stp: Added "-u" or other code to many
tests to check bad code without optimizer elision.
* testsuite/semok/optimize.stp: New test.
* elaborate.cxx (unresolved, invalid, mismatch): Standardize error
message wording.
* stapfuncs.5.in: Tweak print/printf docs.
* tapset/logging.stp: Remove redundant "print" auxiliary function,
since it's a translator built-in.
* testsuite/transok/five.stp: Extend test.
* translate.cxx (emit_symbol_data): Put symbol table into a separate
temporary header file, to make "-p3" output easier on the eyes.
* buildrun.cxx (compile_pass): Eliminate test-mode support throughout.
* main.cxx, session.h, translate.cxx: Ditto.
* main.cxx (main): For last-pass=2 runs, print post-optimization ASTs.
|
|
|
|
|
| |
* translate.cxx (c_unparser::visit_foreach_loop): improved the error
message when _stp_pmap_agg fails.
|
|
|
|
|
| |
* translate.cxx (c_unparser_assignment::visit_arrayindex):
Eliminate dummy assignments for "<<<" code.
|
|
|
|
|
|
| |
PR 2156
* translate.cxx (c_unparser::visit_foreach_loop): Check the return
value of _stp_pmap_agg() for NULL.
|
|
|
|
|
|
|
|
|
|
|
| |
PR 2142
* translate.cxx (EXTRACTORS_PERMISSIVE): New experimental policy
parameter.
(c_unparser::visit_arrayindex, visit_print_format, visit_stat_op):
Tolerate absent index (= NULL runtime return) in pmap.
(*): Make semantic_error messages consistently lower case.
* testsuite/buildok/iterate_histogram_buckets.stp: Note some missing
functionality.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
PR 2140
* translate.cxx (mapvar::del): Add ability to delete an indexed stat
from (p)maps.
(delete_statement_operand_visitor::visit_symbol): Add ability to
delete entire pmaps and scalars.
(delete_statement_operand_tmp_visitor): Add a special tmpvar visitor
to parallel delete_statement_operand_visitor.
(c_tmpcounter::visit_delete_statement): Invoke the new visitor.
* testsuite/buildok/delete.stp: Also test scalar deletes.
* vim/syntax/stap.vim: Recognize 'delete' operator.
2006-01-16 Josh Stone <joshua.i.stone@intel.com>
* stat.c (_stp_stat_clear): add a function that just
clears a Stat, so we can use delete in the translator.
|
|
|
|
|
|
|
|
| |
PR 2148
* translate.cxx (MAXERRORS): Actually the max should be 0, so first
error aborts session.
* Revert last stp_exit change.
|
|
|
|
| |
* translate.cxx (c_unparser:getmap): Correct exception throwing typo.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
PR 2056
* translate.cxx (c_unparser::aggregation_locks): Keeps track of
foreach's locks on pmaps to avoid extra aggregation.
(c_unparser::visit_foreach_loop): Set aggregation_locks appropriately.
(c_unparser::load_aggregate, mapvar::call_prefix, mapvar::get):
Use a new parameter to indicate that we should read from the
already-aggregated map rather than the full pmap..
(c_unparser::visit_arrayindex c_unparser::visit_print_format,
c_unparser::visit_stat_op): Use aggregation_locks to avoid taking a
lock and aggregating the pmap.
(c_unparser::emit_map_type_instantiations): To read from a pmap's
aggregated map, we need to include map-gen.c for the _stp_map_*
functions.
(c_unparser::obtained_locks, varlock::varlock, varlock::~varlock):
Add simple static checking to detect incompatible nested locks during
translation, and flag it as an error.
|
|
|
|
| |
* translate.cxx (MAXERRORS): Oops, set back to intended default of 1.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
PR 2060.
* buildrun.cxx (compile_pass): Add "V=1" to kbuild if verbose.
* translate.cxx (translator_output): For output-file constructor,
set an explicit output buffer.
(emit_module_init, emit_module_exit): Reorganize output, to spit
each individual probe registration/deregistration blurb into a
separate function.
* translate.h: Corresponding changes; set default buffer size to 8K.
* translate.cxx, tapsets.cxx: Replace "endl" by buffer-friendly "\n"
throughout code generation routines.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
PR 2056
* translate.cxx (var::~var, var::hist, var::buckets): make these
methods virtual, so we can use polymorphism.
(mapvar::hist, mapvar::buckets): Override the corresponding var
methods to handle pmaps correctly.
(c_unparser::visit_arrayindex, c_unparser::visit_print_format): Make
use of the new polymorphic behavior of var & mapvar when dealing with
histogram data.
* testsuite/buildok/pmap_foreach.stp: Add tests to check histogram
accesses with for/foreach.
|