hunt [Mon, 1 Aug 2005 21:40:52 +0000 (21:40 +0000)]
2005-08-01 Martin Hunt <hunt@redhat.com>
* librelay.h: Get structs and enums from
../transport/transport_msgs.h to eliminate duplication.
* librelay.c (send_request): Retry if send fails.
(open_relayfs_files): Use fopen() instead of open() for the
percpu tmpfiles.
(request_last_buffers): Just send cpu number for STP_BUF_INFO request.
(reader_thread): Ditto.
(process_subbufs): Use fwrite_unlocked() instead of write().
(sigchld): Removed.
(init_stp): Go back to using system() instead of fork and exec
to load module. When done, send a TRANSPORT_INFO request.
(cleanup_and_exit): Change parameter to simple flag to
indicate if the module needs removing.
(sigproc): Remove complicated logic and just send STP_EXIT.
(stp_main_loop): When receiving STP_TRANSPORT_INFO, set
the local params and reply with a STP_START. When
receiving STP_START, there was an error, so cleanup and exit.
* stpd.c (main): Added new options to set number of
buffers and their size.
hunt [Mon, 1 Aug 2005 21:39:52 +0000 (21:39 +0000)]
2005-08-01 Martin Hunt <hunt@redhat.com>
* io.c (_stp_vlog): Use _stp_pid instead os _stp_tport->pid.
* print.c (_stp_print_flush): Don't need _stp_tport.
*runtime.h (probe_start): Just call _stp_transport_init().
(probe_exit): Just call _stp_transport_close().
hunt [Mon, 1 Aug 2005 21:39:14 +0000 (21:39 +0000)]
2005-08-01 Martin Hunt <hunt@redhat.com>
* control.h: Remove STP commands from here and put in
transport_msgs.
* transport_msgs.h: New file containing the structs and
values for the messages exchanged between stpd and transport.
* transport.h: Moved stuff shared with stpd to transport_msgs.h
* transport.c: Complete rewrite to better handle complicated
initialization involving exchanging data with stpd. Supports
buffer size negotiation and more.
roland [Fri, 29 Jul 2005 08:37:14 +0000 (08:37 +0000)]
2005-07-29 Roland McGrath <roland@redhat.com>
* configure.ac: Add AM_CONDITIONAL definition of HAVE_LIBDW.
* Makefile.am [HAVE_LIBDW] (stap_SOURCES_libdw): New variable.
(stap_SOURCES): Use it, moving loc2c.c there.
* configure, config.in: Regenerated.
* configure.ac: Don't check for libelf.h, not actually #include'd.
Update -ldw check for merged libdwfl+libdw.
(stap_LIBS): New substituted variable. Set only this, not LIBS,
with -ldw check.
* Makefile.am (stap_LDADD): New variable, use @stap_LIBS@.
roland [Fri, 29 Jul 2005 08:37:06 +0000 (08:37 +0000)]
2005-07-29 Roland McGrath <roland@redhat.com>
* systemtap.spec.in: Include %{_datadir}/systemtap/tapset directory.
(%check): Add section, run make check.
* Makefile.am (EXTRA_DIST): Add runtest.sh.
* Makefile.in: Regenerated.
* systemtap.spec.in: Include man pages.
* Makefile.am (man_MANS): Renamed to dist_man_MANS.
* configure.ac: Add AM_CONDITIONAL definition of HAVE_LIBDW.
* Makefile.am [HAVE_LIBDW] (stap_SOURCES_libdw): New variable.
(stap_SOURCES): Use it, moving loc2c.c there.
* configure, config.in: Regenerated.
* configure.ac: Don't check for libelf.h, not actually #include'd.
Update -ldw check for merged libdwfl+libdw.
(stap_LIBS): New substituted variable. Set only this, not LIBS,
with -ldw check.
* Makefile.am (stap_LDADD): New variable, use @stap_LIBS@.
* Makefile.am (AM_CPPFLAGS): Use ${pkgdatadir}.
(AM_CFLAGS): Use -W instead of -Wextra, for gcc 3 compatibility.
(stpd_LDFLAGS): Variable removed.
(AM_MAKEFLAGS): Variable removed.
roland [Fri, 29 Jul 2005 08:37:04 +0000 (08:37 +0000)]
2005-07-29 Roland McGrath <roland@redhat.com>
* systemtap.spec.in: Include %{_datadir}/systemtap/tapset directory.
(%check): Add section, run make check.
* Makefile.am (EXTRA_DIST): Add runtest.sh.
* Makefile.in: Regenerated.
* systemtap.spec.in: Include man pages.
* Makefile.am (man_MANS): Renamed to dist_man_MANS.
* systemtap.spec.in (LDFLAGS): Punt using $ORIGIN here, just hard-code
%{_libdir}.
(elfutils_version): Bump to 0.111.
[bundled_elfutils]: Don't massage libdwfl.h header any more.
roland [Fri, 29 Jul 2005 08:18:18 +0000 (08:18 +0000)]
2005-07-29 Roland McGrath <roland@redhat.com>
* librelay.c (process_subbufs): Use unsigned for I.
(sigproc): Add __attribute__((unused)) on parameter.
(sigchld): Likewise. Avoid shadowing global variable name.
(stp_main_loop): Add a cast.
* 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.
* stap.1: Beginnings of a man page.
* Makefile.am: Install it. Comment out stpd LDADD goodies.
* configure.ac: Futilely complain about non-stpd LIBS.
* Makefile.in, configure.in: Regenerated.
* main.cxx (usage): Remove ARGS from help text, as nothing is
done with these yet.
* 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.
* Makefile.am (stpd_LDFLAGS): Set rpath correclty because otherwise
automake doesn't seem to get it right when binaries are in libexec subdirs.
(AM_CPPFLAGS): revert.
* systemtap.spec.in (LDFLAGS): Set libexecdir here instead.
Support %{ embedded-c %}
* staptree.h (embeddedcode): New statement subtype. Stub support in
visitors.
* staptree.cxx: Ditto.
* parse.cxx: Parse %{ / %}. Accept "_" as identifier leading char.
(parse_probe): Simplify calling convention.
* elaborate.h: Store embedded code.
* elaborate.cxx: Pass it.
* translate.cxx: Transcribe it. Return some dropped module init/exit
code.
* Makefile.am: Add buildok/buildko tests.
* Makefile.in: Regenerated.
* main.cxx: Return EXIT_SUCCESS/FAILURE even for weird rc.
* testsuite/parseok/nine.stp: Test _identifiers.
* testsuite/transko/*.stp: Tweak to force -p3 rather than -p2 errors.
* testsuite/semok/transko.stp: ... and keep it that way in the future.
* testsuite/parse*/*: Some new tests for %{ %}.
* testsuite/build*/*: New tests for -p4.
* translate.cxx (itervar): New class.
(*::visit_foreach_loop): Implement.
Various bug fixes.
* staptree.cxx (deep_copy_visitor::*): Copy tok fields.
* elaborate.cxx (lvalue_aware_traversing_visitor):
(mutated_map_collector):
(no_map_mutation_during_iteration_check): New classes.
(semantic_pass_maps): New function to check map usage.
(semantic_pass): Call it.
* testsuite/transok/eight.stp: Test 'foreach' loop translation.
* testsuite/semko/{thirteen,fourteen,fifteen}.stp:
Test prohibited forms of foreach loops.
* buildrun.cxx (compile_pass, run_pass): Get closer to a working
test_mode.
* translate.cxx (emit_module_init, emit_common_header): Ditto.
(translate_pass): Ditto.
* bench/run_bench (do_time): Use ttest instead of "time".
Fix processor computation.
* bench/ttest.c: Like "time.c" except takes an argument
to adjust loop size. Also computes system time + user time
instead of real time. Added a warmup loop to get
consistent results from cpus which adjust speed based on load.
* 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.
* transport.c: Rename pid to _stp_pid.
Rename t to _stp_tport.
(_stp_cleanup_and_exit): New internal function.
(stp_exit_helper): Call _stp_cleanup_and_exit().
(_stp_transport_cleanup): New function.
(_stp_cmd_handler): Remove handler for STP_TRANSPORT_MODE.
The transport now notifies the daemon of the transport.
(_stp_transport_close): No longer calls _stp_exit_helper().
That is done by _stp_transport_cleanup().
(_stp_transport_open): When done, call _stp_handle_transport()
to notify the daemon what our transport is.
(_stp_transport_send): Put a retry limit on sends.
* transport.h: Rename pid to _stp_pid.
(_stp_transport_cleanup): Add prototype.
* librelay.c (sigchld): Signal handler to detect
completion of module loading.
(init_stp): Use fork/exec instead of system() so
we can get async signal of module load success/failure.
(cleanup_and_exit): New function.
(sigproc): If module is not loaded, don't send message to it.
(stp_main_loop): Call cleanup_and_exit() when STP_EXIT
is received. Don't send a request for the transport
mode. The module will send notification to the daemon
when it is ready.
* stpd.c (main): Don't print message until module
is loaded.
* staptree.{h,cxx} (deep_copy_visitor): New visitor.
* elaborate.cxx
(derived_probe::derived_probe):
(alias_expansion_builder::build): Use it.
* testsuite/semok/fifteen.stp: New test which relies on deep copy.
* Makefile.am (dist): Package up the source tree, including
testsuite and runtime.
* main.cxx: Use clog instead of cerr for logging messages.
* buildrun.cxx: Ditto.
(compile_pass): Add -Iruntime/user for test mode.
* translate.cxx (*): Commonalize test/real mode output.
* Makefile.in: Regenerated.
* 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.
* 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.
* elaborate.h (symresolution_info::current_derived_probe): New field.
(symresolution_info::current_probe): Change type.
* elaborate.cxx (semantic_pass_symbols): Add passes for resolving
locals in pre-derivation base probes and pre-expansion aliases.
(symresolution_info::visit_symbol):
(symresolution_info::find_scalar): Update to match new field.