| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
| |
* translate.cxx (visit_target): Make target variable exceptions
more informative.
(literal_stmt_for_local): Improve bad-type exception message.
* translate.cxx (emit_module_init): Include probe point in comments.
|
|
|
|
|
| |
* tapsets.cxx (dwflpp::literal_stmt_for_local): Fetch pointer types,
array types, strings, from target.
|
|
|
|
|
|
| |
* configure.ac: Require elfutils 0.114.
* tapsets.cxx: Brought back graydon's changes.
* configure: Regenerated.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* tapsets.cxx (*::emit_probe_entries): Treat NULL and "" last_errors
both as clean early returns, not errors.
* translate.cxx: Revamp last_error handling logic. Remove all
"goto out" paths from expression context.
(visit_statement): Handle last_error exit one nesting level at a time.
(visit_return_statement, visit_functioncall): Set/reset last_error="".
(c_tmpcounter::visit_for_loop): New routine.
(c_unparser::visit_foreach, visit_for_loop): Rewrite to properly
support continue/breaks, non-local exits, (foreach) locks.
(emit_global): Emit lock variable.
(varlock ctor, dtor): Lock/unlock global variable.
(varlock_w, varlock_r): New concrete subclasses. Update all users.
* tapset/builtin_logging.stp (exit): Don't set last_error.
* src/testsuite/buildok/sixteen.stp: New test.
* tapsets.cxx: Temporarily rolled back graydon's changes.
|
|
|
|
| |
* tapsets.cxx: Re-implement dwarf probe-pattern resolution.
|
|
|
|
|
|
|
| |
PR systemtap/1134
* elaborate.h (module_fds): New member in systemtap_session.
* tapsets.cxx (dwarf_derived_probe ctor): Open /sys/module/$MOD/.text
for the duration of a systemtap session, to lock module in memory.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
PR systemtap/1195, systemtap/1193
* elaborate.cxx (alias_expansion_builder): Set new block token.
* parse.cxx (parse_symbol): Set new target_symbol token.
* runtest.sh: Store more pertinent failure data.
* tapsets.cxx (emit_probe_entries): Rewrite error-handling path.
* translate.cxx (emit_common_header): Goodbye errorcount, hello
last_error & last_stmt.
(c_unparser::visit_statement): New "header" for all other stmts.
(c_assignop, visit_binary_expression): Adapt to last_error.
* tapset/builtin_logging.stp: Adapt to last_error.
2005-08-21 Frank Ch. Eigler <fche@redhat.com>
* arith.c (*): Adapt to last_error context variable.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
PR systemtap/1209
* tapsets.cxx
* elaborate.cxx (derived_probe_builder): Add get_param function.
* elaborate.h: Declare them.
* tapsets.cxx (dwarf_query::get_*_param): Call them.
(timer_derived_probe, timer_builder): New classes.
(register_standard_tapsets): Register timer.jiffies(N) and friend.
* translate.cxx (translate_pass): #include <linux/timers.h>.
* stap.1.in: Document timer.jiffies(N) probe points.
* testsuite/buildok/fourteen.stp: New test.
2005-08-19 Frank Ch. Eigler <fche@elastic.org>
* arith.c (_stp_random_pm): New function.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* loc2c.c (struct location): New member `emit_address'.
(alloc_location): Initialize new member from ORIGIN.
(location_from_address): New argument EMIT_ADDRESS.
Initialize new member.
(translate): Use LOC->emit_address hook to format DW_OP_addr constant.
(location_relative): Die if DW_OP_addr is used.
(default_emit_address): New function.
(c_translate_location): New argument EMIT_ADDRESS, pass it down.
Use default_emit_address if argument is null.
* loc2c.h: Update decl.
* loc2c-test.c (handle_variable): Update caller.
* tapsets.cxx (dwflpp::literal_stmt_for_local): Update caller.
(dwflpp::loc2c_emit_address): New static method.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
PR systemtap/1197
* loc2c.c (struct location): New members `fail', `fail_arg'.
(alloc_location): New function. Initialize those members.
(new_synthetic_loc, translate): Use that instead of obstack_alloc.
(location_from_address, location_relative): Likewise.
(FAIL): New macro. Use it everywhere in place of `error'.
* loc2c-test.c (fail): New function.
(handle_variable): Pass it to c_translate_location.
* tapsets.cxx (dwflpp::loc2c_error): New static method.
(dwflpp::literal_stmt_for_local): Pass it to to c_translate_location.
|
|
|
|
|
|
|
|
|
| |
* loc2c.c (c_translate_fetch): Take TYPEDIE instead of TYPEATTR.
(c_translate_store): Likewise.
* loc2c.h: Update decls.
* loc2c-test.c (handle_variable): Update callers.
Look up type, resolve typedefs, and check that it's DW_TAG_base_type.
* tapsets.cxx (dwflpp::literal_stmt_for_local): Likewise.
|
|
|
|
|
|
|
|
|
|
| |
PR systemtap/1180
* tapsets.cxx (*): Add more verbose-predicatation to informative
messages. Correct more hex/dec ostream mismatches.
(query_function): Use entry/querypc, not prologue-end, for
function().return and .statement() probe points.
(dwarf_derived_probe ctor): Reorganize function/statement
probe point regeneration.
|
|
|
|
|
|
| |
* tapsets.cxx: Tweak hex/decimal printing for consistency.
(emit_registrations): Remove module-specific code, anticipating
that libelf gives us run-time addresses already.
|
|
|
|
|
| |
* tapsets.cxx (dwflpp::literal_stmt_for_local): Copy code from
loc2c-test to implement target member variable access.
|
|
|
|
|
|
|
| |
* tapsets.cxx
(dwflpp::global_addr_of_line_in_cu): Implement next-line heuristic.
(dwarf_query::get_number_param): Dwarf_Addr variant.
(query_cu): Add line-selecting variant for function iteration.
|
|
|
|
|
|
| |
* tapsets.cxx: Correct hex/decimal misformatting of verbose messages.
* main.cxx: Add formal "-h" and "-V" options.
* stap.1.in: Document them.
|
|
|
|
|
|
|
| |
* tapsets.cxx: Move around "focusing on ..." messages to print
them only for matching functions/modules.
(dwflpp ctor): Also add cu (source file) name to derived
probe point.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* staptree.{cxx,h}
(target_symbol): New struct.
(*_visitor::visit_target_symbol): Support it.
(visitor::active_lvalues)
(visitor::is_active_lvalue)
(visitor::push_active_lvalue)
(visitor::pop_active_lvalue): Support lvalue-detection.
(delete_statement::visit)
(pre_crement::visit)
(post_crement::visit)
(assignment::visit): Push and pop lvalue expressions.
* elaborate.{cxx,h}
(lvalule_aware_traversing_visitor): Remove class.
(no_map_mutation_during_iteration_check)
(mutated_map_collector): Update lvalue logic.
(typeresolution_info::visit_target_symbol): Add, throw error.
* parse.{cxx,h}
(tt2str)
(tok_is)
(parser::expect_*)
(parser::peek_*): New helpers.
(parser::parse_symbol): Rewrite, support target_symbols.
* translate.cxx (c_unparser::visit_target_symbol): Implement.
* tapsets.cxx (var_expanding_copy_visitor): Update lvalue logic,
change visit_symbol to visit_target_symbol.
|
|
|
|
|
|
| |
* tapsets.cxx (query_statement|function|cu|module): Add explicit
nested try/catch, since elfutils iteration seems to block
exception catching.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
PR translator/1175
* translate.cxx (*): Added unlikely() markers to most emitted error
checks.
(mapvar::get,set): Handle NULL<->"" impedance mismatch.
(itervar::get_key): Ditto. Use base index=1 for keys.
* testsuite/buildok/one.stp: Extend. And it runs with -p5 too.
* stap.1: Document use of ";" statament as mechanism for grammar
ambiguity resolution.
* stp_check.in: Set $prefix.
* systemtap.spec.in: Prereq kernel-devel, kernel-debuginfo,
and not tcl.
* tapsets.cxx: Make slightly less verbose.
* translate.cxx
|
|
|
|
|
| |
* tapsets.cxx (dwflpp): Fix address calculation logic a bit,
and use prologue-end addresses for function probes.
|
|
|
|
|
|
|
|
|
| |
* loc2.c (emit_loc_address): Emit interleaved declaration into
its own nested { } block.
* tapsets.cxx (literal_stmt_for_local): Emit deref_fault block
unconditionally.
* tapset/builtin_hexstring.stp: New builtin.
* testsuite/buildok/six.stp: New test.
|
|
|
|
|
| |
* tapsets.cxx (emit_registrations): Treat module_name="kernel"
as if module_name="".
|
| |
|
|
|
|
|
|
|
|
|
|
| |
* staptree.{cxx,h} (probe_point::component): Add a ctor.
* tapsets.cxx (dwarf_derived_probe): Synthesize concrete
probe_point for matched pattern.
(dwarf_probe_type)
(dwarf_query::add_kernel_probe)
(dwarf_query::add_module_probe): Remove, they were noise.
(dwflpp::module_name_matches): Don't call get_module_dwarf().
|
| |
|
| |
|
|
|
|
|
| |
* tapsets.cxx: Support ".return" option for function probe points.
* testuite/buildok/five.stp: Try it.
|
|
|
|
|
|
|
|
|
| |
* elaborate.cxx (derive_probes, semantic_pass_symbols): Improve
error message specificity.
* translate.cxx (emit_module_init): Compact partial registration
recovery code.
(emit_module_exit): Invert deregistration sequence.
* testsuite/buildok/four.stp: Some module() test case.
|
|
|
|
|
|
|
|
|
|
|
| |
* elaborate.cxx (derive_probes): Print error if results empty.
* tapsets.cxx (dwflpp_assert): Handle positive RCs, which likely
came from errno.
(dwflpp::setup): Improve missing debug-info messages.
* testsuite/semko/sixteen,seventeen.stp: New tests.
* runtest.sh: Save stdout/stderr of FAIL/XPASS test cases.
* Makefile.am (clean-local): Clean up testsuite/.
* Makefile.in, aclocal.m4: Regenerated.
|
|
|
|
|
| |
From Graydon Hoare <graydon@redhat.com:
* tapsets.cxx (var_expanding_copy_visitor): Correct lvalue cases.
|
|
|
|
|
|
| |
* configure.ac: Fail configure stage if elfutils 0.111+ is not found.
* Makefile.am, elaborate.cxx, tapsets.cxx: Unconditionalize.
* configure, Makefile.in, config.in: Regenerated.
|
|
|
|
|
| |
* tapsets.cxx: <libdw.h> -> <elfutils/libdw.h>
* loc2c.c, loc2c.h: Likewise.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* elaborate.cxx (derived_probe::derived_probe): Accept NULL probe.
* staptree.cxx (provide, require): Move from here...
* staptree.h: to here, and virtualize deep-copy methods.
* translate.cxx
(c_unparser::emit_common_header): Include loc2c-runtime.h
* tapsets.cxx
(dwflpp::iterate_over_modules): Use new, faster getmodules loop.
(dwflpp::literal_stmt_for_local): New method, call loc2c.
(var_expanding_copy_visitor): New struct which expands $-vars.
(dwarf_derived_probe): Rebuild this->body using var expander.
(query_function): Refactor logic a bit for speed.
* loc2c.{c,h}: Copies (with minor changes) of Roland's work
from elfutils CVS.
* Makefile.am (AM_CFLAGS): Set to elfutils-style.
(stap_SOURCES): Add loc2c.c.
* Makefile.in: Regenerate.
2005-07-28 Graydon Hoare <graydon@redhat.com>
* loc2c-runtime.h: New file from elfutils CVS.
|
|
|
|
|
|
|
|
|
| |
* translate.cxx: Add "pt_regs*" field to context.
* tapsets.cxx (*): Correct kprobes API interface.
* testsuite/buildok/three.stp: New test, copied from semok.
* Makefile.am (install-data-local): Also install runtime/relayfs,
so scripts can build against headers located thereunder.
* Makefile.in: Regenerated.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
translator/1120
* main.cxx (main): Preset -R and -I options from environment
variables (if set). Pass guru mode flags to parser.
* parse.cxx (privileged): New parser operation flag. Update callers.
(parse_embeddedcode): Throw an error if !privileged.
(parse_functiondecl): Change signature. Prevent duplicates.
(parse_globals): Ditto.
* parse.h: Corresponding changes.
* tapset/*.stp: Beginnings of real tapset library, to replace
previous builtins.
* tapsets.cxx: Greatly reduce verbose mode output.
* Makefile.am: Install & dist it.
* runtest.sh: Refer to it.
* Makefile.in, aclocal.m4: Regenerated.
* testsuite/*/*.stp: Set guru mode via /bin/sh if needed.
* testusite/*/*ko.stp: Homogenize shell scripts.
|
|
|
|
|
|
|
|
|
|
|
|
| |
translator/1120
translator/1123
* elaborate.cxx (semantic_pass_symbols): Print a more helpful
error message around exceptions.
* elaborate.h (systemtap_session): Add guru_mode field.
* main.cxx (main): Initialize it to false. Add version-sensitive
script library searching. Add more failure messages.
* tapsets.cxx (dwflpp_assert): Add a decorative text parameter.
Update callers.
|
|
|
|
|
|
| |
* elaborate.cxx: Revert builtin-function code.
* translate.cxx: Likewise.
* tapsets.{h,cxx}: Likewise.
|
|
|
|
|
|
|
| |
* tapsets.cxx (*::emit_[de]registrations): Add logic for probe
lifecycle control (session_state).
* translate.cxx (emit_common_header,emit_module_{init,exit}): Ditto.
(visit_*): Use per-context errorcount.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* elaborate.cxx
(semantic_pass_symbols): Only enter body if non-null.
(semantic_pass_types): Likewise.
(semantic_pass): Pass session to register_standard_tapsets.
* translate.cxx
(builtin_collector): New struct.
(hookup_builtins): New function.
(translate_pass): Only translate functions with bodies.
(c_unparser::emit_common_header): Likewise, and call hookup_builtins.
* tapsets.hh (builtin_function): New class.
(register_standard_tapsets): Change parameter to session.
* tapsets.cc (bultin_function::*): Implement class.
(register_standard_tapsets): Register printk, log, warn.
* testsuite/transok/six.stp: New test.
|
|
|
|
|
|
|
|
|
| |
* elaborate.{h,cxx}: Revert previous changes.
* tapsets.{h,cxx}: Adapt to verbose as a member of session.
* elaborate.cxx (alias_expansion_builder::build): Avoid copying
locals between alias definition and use.
* testsuite/semok/{twelve,thirteen,fourteen}.stp: New tests.
* staptree.cxx (probe_alias::printsig): Print equals sign.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* elaborate.h (systemtap_session): Add more command-line arguments.
* staptree.h (verbose): Bad global, no donut.
* elaborate.cxx: Temporarily disable verbose variable access.
* main.cxx: Support more arguments, build/run passes. Revamp
temporary file generation and partial-pass output generation.
* tapsets.cxx, translate.cxx: Emit just enough extra punctuation
and fluff to make generated probe pass -Werror.
* buildrun.cxx, buildrun.h: New files for passes 4/5. Partial
support for build pass, nothing on probe execution yet.
* testsuite/transok/*.stp: Force just -p3, now that -p4/5 exist.
* Makefile.am, Makefile.in: Corresponding changes.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* staptree.{h,cxx} (probe_alias): New structure.
* parse.{h,cxx} (parser::parse): Parse probes or probe aliases.
(parser::parse_probe): Likewise.
* tapsets.{h,cxx}:
(derived_probe_builder):
(match_key):
(match_node):
(alias_derived_probe): Move from here,
* elaborate.{h,cxx}: to here.
* elaborate.h (systemtap_session::pattern_root): New member.
(register_library_aliases): New function.
* tapsets.cxx: Build one dwarf_derived_probe per target address.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* tapsets.cxx
(probe_type): New enum.
(probe_spec): New struct.
(dwarf_derived_probe): Reorganize a bit, interpret .return.
(query_statement): Translate addresses back to module space.
(probe_entry_function_name):
(probe_entry_struct_kprobe_name):
(foreach_dwarf_probe_entry):
(declare_dwarf_kernel_entry):
(deregister_dwarf_kernel_entry):
(register_dwarf_kernel_entry):
(register_dwarf_module):
(declare_dwarf_module_entry):
(deregister_dwarf_module_entry):
(register_dwarf_module_entry): New functions.
(dwarf_derived_probes::emit_probe_entries):
(dwarf_derived_probes::emit_registrations):
(dwarf_derived_probes::emit_deregistrations): Implement.
|
|
|
|
|
| |
* config.in, configure: Regenerated.
* tapsets.cxx: Make dwarf code conditional on new elfutils header.
|
|
|
|
|
|
|
|
|
|
|
|
| |
* configure.ac: Scan for libdwfl.
* staptree.h (verbose): New global.
* main.cxx (usage, main): Implement -v option.
* tapsets.cxx (dwflpp): New struct.
(query_statement): New function.
(query_function): New function.
(query_cu): New function.
(query_module): New function.
(dwarf_derived_probe): Implement primary forms.
|
|
|
|
|
|
|
|
|
|
|
| |
* tapsets.h: New file.
(derived_probe_builder): Callback for making derived probes.
(match_key): Component of pattern-matching tree.
(match_node): Other component of pattern-matching tree.
* tapsets.cxx: Add pattern-matching system for probes.
(alias_derived_probe): Skeleton for alias probes.
(dwarf_derived_probe): Skeleton for dwarf probes.
(register_standard_tapsets): Registry for standard tapsets.
|
|
Start separating out translator-side probe point recognition.
* tapsets.cxx: New file.
(be_derived_probe): Support for begin/end probes.
(derive_probe): Ditto. Reject anything unrecognized.
* translator.cxx: Move out old code.
* Makefile.am: Add new source file.
* testsuite/semok/*: Switch to begin/end probes only.
|