summaryrefslogtreecommitdiffstats
path: root/tapsets.cxx
Commit message (Collapse)AuthorAgeFilesLines
* 2005-08-24 Graydon Hoare <graydon@redhat.com>graydon2005-08-251-8/+95
| | | | | * tapsets.cxx (dwflpp::literal_stmt_for_local): Fetch pointer types, array types, strings, from target.
* 2005-08-24 Frank Ch. Eigler <fche@elastic.org>fche2005-08-251-298/+466
| | | | | | * configure.ac: Require elfutils 0.114. * tapsets.cxx: Brought back graydon's changes. * configure: Regenerated.
* 2005-08-24 Frank Ch. Eigler <fche@elastic.org>fche2005-08-241-484/+308
| | | | | | | | | | | | | | | | | | | * 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.
* 2005-08-23 Graydon Hoare <graydon@redhat.com>graydon2005-08-231-298/+466
| | | | * tapsets.cxx: Re-implement dwarf probe-pattern resolution.
* 2005-08-22 Frank Ch. Eigler <fche@elastic.org>fche2005-08-221-0/+17
| | | | | | | 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.
* 2005-08-21 Frank Ch. Eigler <fche@redhat.com>fche2005-08-211-29/+18
| | | | | | | | | | | | | | | | | 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.
* 2005-08-19 Frank Ch. Eigler <fche@elastic.org>fche2005-08-191-37/+147
| | | | | | | | | | | | | | | | | 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.
* 2005-08-18 Roland McGrath <roland@redhat.com>roland2005-08-181-1/+14
| | | | | | | | | | | | | | | | * 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.
* 2005-08-17 Roland McGrath <roland@redhat.com>roland2005-08-181-2/+14
| | | | | | | | | | | | | 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.
* 2005-08-17 Roland McGrath <roland@redhat.com>roland2005-08-181-138/+158
| | | | | | | | | * 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.
* 2005-08-16 Frank Ch. Eigler <fche@elastic.org>fche2005-08-161-55/+113
| | | | | | | | | | 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.
* 2005-08-11 Frank Ch. Eigler <fche@elastic.org>fche2005-08-111-31/+37
| | | | | | * tapsets.cxx: Tweak hex/decimal printing for consistency. (emit_registrations): Remove module-specific code, anticipating that libelf gives us run-time addresses already.
* 2005-08-10 Graydon Hoare <graydon@redhat.com>graydon2005-08-111-4/+110
| | | | | * tapsets.cxx (dwflpp::literal_stmt_for_local): Copy code from loc2c-test to implement target member variable access.
* 2005-08-10 Graydon Hoare <graydon@redhat.com>graydon2005-08-111-24/+70
| | | | | | | * 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.
* 2005-08-10 Frank Ch. Eigler <fche@elastic.org>fche2005-08-101-28/+4
| | | | | | * tapsets.cxx: Correct hex/decimal misformatting of verbose messages. * main.cxx: Add formal "-h" and "-V" options. * stap.1.in: Document them.
* 2005-08-10 Frank Ch. Eigler <fche@elastic.org>fche2005-08-101-7/+32
| | | | | | | * 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.
* 2005-08-09 Graydon Hoare <graydon@redhat.com>graydon2005-08-101-76/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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.
* 2005-08-05 Frank Ch. Eigler <fche@elastic.org>fche2005-08-051-134/+163
| | | | | | * tapsets.cxx (query_statement|function|cu|module): Add explicit nested try/catch, since elfutils iteration seems to block exception catching.
* 2005-08-05 Frank Ch. Eigler <fche@elastic.org>fche2005-08-051-1/+1
| | | | | | | | | | | | | | | | 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
* 2005-08-03 Graydon Hoare <graydon@redhat.com>graydon2005-08-031-91/+198
| | | | | * tapsets.cxx (dwflpp): Fix address calculation logic a bit, and use prologue-end addresses for function probes.
* 2005-08-02 Frank Ch. Eigler <fche@elastic.org>fche2005-08-021-8/+10
| | | | | | | | | * 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.
* 2005-08-02 Frank Ch. Eigler <fche@elastic.org>fche2005-08-021-12/+6
| | | | | * tapsets.cxx (emit_registrations): Treat module_name="kernel" as if module_name="".
* nonefche2005-08-021-0/+1
|
* 2005-08-01 Graydon Hoare <graydon@redhat.com>graydon2005-08-021-46/+49
| | | | | | | | | | * 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().
* typofche2005-08-011-3/+6
|
* typosfche2005-08-011-1/+1
|
* 2005-08-01 Frank Ch. Eigler <fche@elastic.org>fche2005-08-011-25/+57
| | | | | * tapsets.cxx: Support ".return" option for function probe points. * testuite/buildok/five.stp: Try it.
* 2005-08-01 Frank Ch. Eigler <fche@elastic.org>fche2005-08-011-1/+1
| | | | | | | | | * 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.
* 2005-08-01 Frank Ch. Eigler <fche@elastic.org>fche2005-08-011-5/+9
| | | | | | | | | | | * 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.
* 2005-07-29 Frank Ch. Eigler <fche@redhat.com>fche2005-07-291-6/+9
| | | | | From Graydon Hoare <graydon@redhat.com: * tapsets.cxx (var_expanding_copy_visitor): Correct lvalue cases.
* 2005-07-29 Frank Ch. Eigler <fche@redhat.com>fche2005-07-291-8/+1
| | | | | | * 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.
* 2005-07-29 Roland McGrath <roland@redhat.com>roland2005-07-291-157/+157
| | | | | * tapsets.cxx: <libdw.h> -> <elfutils/libdw.h> * loc2c.c, loc2c.h: Likewise.
* 2005-07-28 Graydon Hoare <graydon@redhat.com>graydon2005-07-291-57/+281
| | | | | | | | | | | | | | | | | | | | | | | * 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.
* 2005-07-28 Frank Ch. Eigler <fche@redhat.com>fche2005-07-281-25/+24
| | | | | | | | | * 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.
* 2005-07-28 Frank Ch. Eigler <fche@redhat.com>fche2005-07-281-16/+16
| | | | | | | | | | | | | | | | | | | 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.
* 2005-07-28 Frank Ch. Eigler <fche@redhat.com>fche2005-07-281-8/+9
| | | | | | | | | | | | 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.
* 2005-07-26 Graydon Hoare <graydon@redhat.com>graydon2005-07-271-49/+0
| | | | | | * elaborate.cxx: Revert builtin-function code. * translate.cxx: Likewise. * tapsets.{h,cxx}: Likewise.
* 2005-07-20 Frank Ch. Eigler <fche@redhat.com>fche2005-07-201-20/+64
| | | | | | | * 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.
* 2005-07-12 Graydon Hoare <graydon@redhat.com>graydon2005-07-131-4/+53
| | | | | | | | | | | | | | | | | * 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.
* 2005-07-05 Graydon Hoare <graydon@redhat.com>graydon2005-07-061-36/+69
| | | | | | | | | * 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.
* 2005-07-05 Frank Ch. Eigler <fche@redhat.com>fche2005-07-051-4/+6
| | | | | | | | | | | | | | * 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.
* 2005-06-27 Graydon Hoare <graydon@redhat.com>graydon2005-06-291-644/+259
| | | | | | | | | | | | | | | * 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.
* 2005-06-23 Graydon Hoare <graydon@redhat.com>graydon2005-06-241-31/+323
| | | | | | | | | | | | | | | | | | | | | * 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.
* 2005-06-21 Frank Ch. Eigler <fche@redhat.com>fche2005-06-211-2/+7
| | | | | * config.in, configure: Regenerated. * tapsets.cxx: Make dwarf code conditional on new elfutils header.
* 2005-06-20 Graydon Hoare <graydon@redhat.com>graydon2005-06-211-33/+878
| | | | | | | | | | | | * 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.
* 2005-06-14 Graydon Hoare <graydon@redhat.com>fche2005-06-161-24/+299
| | | | | | | | | | | * 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.
* 2005-06-13 Frank Ch. Eigler <fche@redhat.com>fche2005-06-131-0/+117
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.