2009-02-20 ChangeLog * stap-client: Redirect stderr to /dev/null when using kill. 2009-02-19 Mark Wielaard * translate.cxx (dump_unwindsyms): Ignore symbols before module base address. 2009-02-18 Frank Ch. Eigler PR9719. * elaborate.cxx (typeresolution_info::mismatch): Initialize some locals so optimized code works too. 2009-02-18 Rajan Arora * testuite/semko/typemismatch.stp: New test. 2009-02-18 Rajan Arora * elaborate.cxx (typeresolution_info::mismatch): Generate semantic error for the token where type was resolved and add to chain * elaborate.h (struct typeresolution_info: public visitor): New members 'resolved_toks' and 'printed_toks' 2009-02-18 Stan Cox * tapsets.cxx (dwarf_builder::build): If not found in .probes, use .label * includes/sys/sdt.h (STAP_PROBE): Always create .probes section. * dtrace: Use basename of -s if no -o given. 2009-02-18 Josh Stone * loc2c.c (c_translate_argument): Create a dummy location to start the address computation from a function parameter. * translate.cxx (base_query, dwarf_query): Move some members from base_query to dwarf_query, so the former can be more generic. Also add a constructor using a module string instead of probe parameters. (dwflpp::query_modules, dwflpp::iterate_over_modules): Use a generic base_query instead of a dwarf_query. (dwarf_cast_query): New query to scan the modules and CUs for a matching type definition, and then produce a code fragment to deref each component. (dwarf_cast_expanding_visitor): Tries to replace @casts with a function call to the result of a dwarf_cast_query. (dwflpp::declaration_resolve): Search by name instead of by die. (dwflpp::translate_components): Use the incoming vardie as the first type die, so we don't assume that attr_mem has a DW_AT_type already. (dwflpp::literal_stmt_for_pointer): Construct a C fragment that starts with a pointer argument (THIS->pointer) and dereferences each member component from there. (*_derived_probe::register_patterns): Take a session parameter instead of a match_node, so we can manipulate session-wide data. (dwarf_derived_probe::register_patterns): Add a session code filter to expand @casts with a dwarf_cast_expanding_visitor. 2009-02-18 Josh Stone * session.h (systemtap_session): Add a vector of update_visitors that will act as filters for all probes and functions. * elaborate.cxx (semantic_pass_symbols): Run probes and functions through each registered code filter. 2009-02-18 Josh Stone * tapsets.cxx (dwarf_var_expanding_visitor::visit_cast_op): While expanding dwarf probes, provide the current module as a default to @casts without a module name. 2009-02-18 Josh Stone * staptree.h (struct cast_op, visitor::visit_cast_op): New. * staptree.cxx (cast_op::print/visit, various visitor::visit_cast_op's): Incorporate cast_op into the basic tree operations. * parse.cxx (parser::parse_symbol): Parse @cast operator with an expression operand, type string, and optional module string. * translate.cxx (c_unparser::visit_cast_op): Error out if a @cast survives to translation. * elaborate.cxx (typeresolution_info::visit_cast_op): Error out if a @cast survives to type resolution. (symbol_fetcher::visit_cast_op): treat @casts as a symbol target (void_statement_reducer::visit_cast_op): unused @casts can be discarded, but the operand should still be evaluated. 2009-02-17 Frank Ch. Eigler * AUTHORS: Regenerated with ... * AUTHORS.sh: New script. 2009-02-17 Frank Ch. Eigler * configury throughout: autoreconf -f -i'd. 2009-02-17 Frank Ch. Eigler * includes/sys/sdt.h: Change all parameter register constraints to "X" from "g". 2009-02-17 Mark Wielaard * Makefile.am (oldinclude_HEADERS): Set to includes/sys/sdt.h. (check): Explicitly set PWD and SYSTEMTAP_INCLUDES. * includes/sys/sdt.h: Moved from runtime dir. * Makefile.in: Regenerated. * aclocal.m4: Likewise. * configure: Likewise. 2009-02-17 Elliott Baron PR 9716 * configure.ac: Replace pkgconfig tests for NSS/NSPR includes/libs with AC macros. * Makefile.in: Regenerated. * aclocal.m4: Likewise. * configure: Likewise. * doc/Makefile.in: Likewise. * doc/SystemTap_Tapset_Reference/Makefile.in: Likewise. * testsuite/Makefile.in: Likewise. * testsuite/aclocal.m4: Likewise. * testsuite/configure: Likewise. 2009-02-16 Mark Wielaard PR 9850 * dtrace: Use a list of arguments for call. 2009-02-16 Mark Wielaard PR 9851 * dtrace: Use os.path.splitext instead of string.replace. 2009-02-16 Mark Wielaard PR 9849 * dtrace: Use mkstemp. 2009-02-15 Stan Cox * tapsets.cxx (dwflpp::iterate_over_cu_labels): Handle missing DW_AT_low_pc * (dwarf_builder::build): Handle c++ via .probe, c via .label. 2009-02-13 Frank Ch. Eigler * translate.cxx (dump_unwindsyms): Use \n instead of endl throughout for writing to the generated .c/.h files. 2009-02-12 David Smith * tapsets.cxx (procfs_derived_probe_group::emit_module_decls): Moved inclusion of procfs.c here from runtime/transport.c 2009-02-12 Mark Wielaard * translate.cxx (dump_unwindsyms): Use "\n" instead of endl in inner loops. 2009-02-11 Dave Brolley * stap-client: s/jar/zip/. (unpack_response): Server response is now a .zip file. No longer signed, so no longer needs verification. Move Contents of server response down one directory level. META-INF no longer required to be present in the server response. * stap-server: s/jar/zip/. (create_response): Don't sign the server response. Use zip instead. * stap-server-connect.c: s/jar/zip/. 2009-02-10 Josh Stone * staptree.h (update_visitor::require): Add a clearok parameter for optimizing traversers to signal that they're ready for NULL back. * elaborate.cxx (dead_assignment_remover): Convert into an update_visitor and remove its now-redundant traversal methods. * elaborate.cxx (dead_stmtexpr_remover): Convert to an update_visitor. * elaborate.cxx (void_statement_reducer): Convert to an update_visitor. 2009-02-10 Josh Stone * tapsets.cxx (var_expanding_copy_visitor): This struct becomes var_expanding_visitor and inherits from update_visitor instead of deep_copy_visitor. Each of the probe-type variants of this are also no longer copiers. 2009-02-10 Josh Stone * staptree.h (update_visitor): A new visitor to make it easier to rewrite parts of a probe or function without making a full copy. * staptree.cxx (update_visitor::*): Each child is recursed with a require() call, and then the parent returns itself with provide(). * staptree.h (deep_copy_visitor): Inherit from update_visitor to get the recursive descent while updating nodes. * staptree.cxx (deep_copy_visitor::*): Use the implicit copy constructors to copy all fields, then defer to update_visitor for the recursion. Referents are still cleared from the copies of symbols and function calls. 2009-02-10 Josh Stone * staptree.h (require, provide): Simplify stack operations with less pointer magic, and move to be deep_copy_visitor members. * staptree.h (deep_copy_visitor::deep_copy): Templatize * staptree.cxx, tapsets.cxx: Refactor require/provide callers 2009-02-10 Frank Ch. Eigler * tapsets.cxx (find_variable_and_frame_base): Tolerate -1 return value from dwarf_getscope_die. 2009-02-07 Josh Stone * buildrun.cxx (compile_pass): Pull in autoconf options in a header of #defines rather than -DXXX, and make that header a build dependency. * buildrun.cxx (output_autoconf): New function to consolidate the computation of each autoconf test. * cache.cxx (add_to_cache, get_from_cache, clean_cache): Start treating the stapconf header as a first-class cached item. * cache.h: Move definitions of things only needed in cache.cxx * hash.cxx (find_stapconf_hash): Generate stapconf_name as a .h now. * main.cxx (main): Default the stapconf_name based on getpid(). 2009-02-06 Josh Stone * hash.cxx (find_hash): Compute a separate script-independent hash for caching autoconf values, saved in session.stapconf_path. * buildrun.cxx (compile_pass): Tweak the Makefile to read/save the autoconf values in the cache directory 2009-02-06 Frank Ch. Eigler * buildrun.cxx: Add STAPCONF_PROCFS_OWNER test. 2009-02-05 Will Cohen PR9756. * scripts/kernel-doc: Correct productname tag. 2009-02-05 Frank Ch. Eigler PR9740/9816? * buildrun.cxx: Add STAPCONF_VM_AREA autoconf test. 2009-02-04 Mark Wielaard * NEWS: process().mark(), sys/sdt.h and dtrace compatibility script. 2009-02-04 Mark Wielaard * NEWS: Mention run-stap. 2009-02-04 Mark Wielaard * NEWS: Add Beginner Guide. 2009-02-04 Mark Wielaard * NEWS: Mention SystemTap Tapset Reference Manual. 2009-02-03 Frank Ch. Eigler PR6961/9810. * tapsets.cxx (common_probe_entryfn_prologue): Revert. * translate.cxx (emit_common_header): Revert. 2009-02-03 Dave Brolley * NEWS: Update status of client/server. * stap-server.8.in: Add description of client/server certificate management and tools. * stap-server (initialization): Ensure that all server response files are created. (check_request): Parse the client's command line here. (check_comnpatibility): Don't require client/server platform match for phases 1-4. (fatal,error): Correct quoting typos. stap-server.8.in: Add SSL information. * stap-stop-server: Use 'ps -e' to list processes. * stap-add-server-cert: The directory name now refers to the database directly, not the directory below it. * stap-serverd: Specify the full database directory name when calling stap-add-server-cert. 2009-02-03 Mark Wielaard * elaborate.cxx (match_node::find_and_build): Disambiguate error messages. 2009-02-02 Stan Cox * NEWS, stapprobes.5.in: Add process.label. 2009-02-01 Stan Cox * tapsets.cxx (dwflpp::iterate_over_cu_labels): New. (query_cu): Use it. (dwarf_derived_probe::register_patterns): Register .label. 2009-02-01 Mark Wielaard * translate.cxx (dump_unwindsyms): Process extra_offset with dwfl_module_relocate_address. 2009-01-30 Masami Hiramatsu PR6936 * configure.ac (AC_CONFIG_FILES): Add initscript/systemtap.in. * configure: Regenerated. * systemtap.spec: Add systemtap-initscript subpackage. 2009-01-30 Dave Brolley * Makefile.am (install-scripts): New target. Set exec_prefix and sysconfdir properly in installed scripts. * stap-find-or-start-server: Set exec_prefix and sysconfdir for use from the source tree by dejagnu. Leave a hook to modify them when installed. * stap-start-server: Likewise. * stap-client (configuration): Likewise. Check for the existence of the default certificate databases before checking their security. (parse_options): Issue fatal error if no usable certificate databases found or specified. (check_db,check_db_file): Check that the database and files are owned by the user running the client. (fatal): Print "ERROR:" tag here. Adjust all callers. * stap-server (initialization): Set exec_prefix and sysconfdir for use from the source tree by dejagnu. Leave a hook to modify them when installed. Check that all specified files and directories exist. (fatal): Print "ERROR:" tag here. Adjust all callers. (error): Likewise. * stap-serverd (initialization): Set exec_prefix and sysconfdir for use from the source tree by dejagnu. Leave a hook to modify them when installed. (check_db,check_db_file,check_db_cert): Check that the database and files are owned by the user running the server. (fatal): Print "ERROR:" tag here. Adjust all callers. * Makefile.in: Regenerated. * aclocal.m4: Regenerated. 2009-01-30 Frank Ch. Eigler * git_version.sh: Don't print GIT_BRANCH into GIT_MESSAGE, as it is local, and "(no branch)" confuses other stuff. The SHA1 commit ID is enough. 2009-01-29 Dave Brolley * stap-client (initialization): Set our_host_name and our_domain_name here. (find_and_connect_to_server): Correct the extraction of a host name looked up by ip address. Replace 'localhost' with the actual host name. (choose_server): Don't set our_host_name and our_domain_name here. Don't change the name of our host to 'localhost' here. Check that ahavi has provided the host name. Don't check that avahi has provided the ip address. Pass the host name to send_receive. (send_receive): Change the name of our host to 'localhost' here. (check_db): Add recommended (but not fatal) access permission checks. (check_db_file): Likewise. * stap-gen-server-cert: Create the certificate database and the certificate file with the recommended access permissions. * stap-server (initialization): Call check_db to check the security of the chosen certificate database. (check_db,check_db_file,check_cert_file,warning): New functions. 2009-01-28 Dave Brolley * stap-client (initialization): Call check_db to check the security of the default certificate databases. Initialize find_all. (parse_options): Handle the --server option. (process_server): New function. (process_ssl): Call check_db to check the security of the specified certificate database. (find_and_connect_to_server): Create the server's .jar file here. Create the connection log file here. Process $specified_servers if present. Use $find_all on stap-find-servers. Issue server connection error here ... (choose_server): ... not here. (send_receive): Don't create the server's .jar file here. Always check the local certificate databases. Echo the name of the database used to successfully authenticate the server. (check_db,check_db_file): New functions. (warning): New function. * stap-add-server-cert: Create the client database with 755 permissions. * stap-client-connect.c (sslerr.h): #include it. (errWarn): Handle SEC_ERROR_BAD_DATABASE and SSL_ERROR_BAD_CERT_DOMAIN. (do_connect): Don't call PR_GetHostByName or PR_EnumerateHostEnt. (client_main): No longer takes 'hostName' argument. Update all callers. 2009-01-26 Mark Wielaard * dtrace: Handle (absense of) -o argument correctly. 2009-01-26 Stan Cox * tapsets.cxx (find_variable_and_frame_base): Allow for disjoint pc and scope_die. * runtime/sdt.h: Change label prefix. 2009-01-26 Mark Wielaard * configure.ac: Check for version.h.in before installing. * configure: Regenerated. 2009-01-23 Frank Ch. Eigler PR9768. * tapsets.cxx (translate_location, translate_components, translate_final_fetch_or_store, literal_stmt_for_*): Don't pass superfluous module_bias down to loc2c code, since it's been subtracted out already. 2009-01-23 Mark Wielaard * configure.ac: Use install-pkgincludeHEADERS for elfutils to only get include-elfutils/elfutils/version.h. And explicitly exit if configuring elfutils fails. * configure: Regenerated. * .gitignore: Add build-elfutils, include-elfutils, lib-elfutils and stamp-elfutils. 2009-01-23 Mark Wielaard * configure.ac: Use make -k install-data for elfutils. * configure: Regenerated. 2009-01-22 David Smith * systemtap.spec: Added 'nss-devel' buildreq so that the 'client' subpackage could be built correctly. Added file-based buildreq for xmlto's pdf support, which works on f8, f9, f9, and rhel5. * configure.ac: Fixed typo. * configure: Regenerated. 2009-01-22 Stan Cox * dtrace: Rewritten to handle dtrace -h -G * runtime/sdt.h: New .probes layout. Make labels unique, args unused. * tapsets.cxx (dwarf_builder::build): New .probes layout. Don't reset location->components[0]. 2009-01-21 Mark Wielaard * configure.ac: Create PIECFLAGS and PIECXXFLAGS, like PIELDFLAGS. Don't duplicate -pie in PIELDFLAGS. * configure: Regenerated. * Makefile.am: Add @PIECFLAGS@ and @PIECXXFLAGS@ to executable flags. * Makefile.in: Regenerated. 2009-01-21 Mark Wielaard * Makefile.am (distclean-local): Remove build-elfutils, include-elfutils and lib-elfutils here, not in clean-local. * Makefile.in: Regenerated. * configure.ac: Only muck with CPPFLAGS and include-elfutils when actually building with bundled elfutils. * configure: Regenerated. 2009-01-21 Mark Wielaard * Makefile.am (clean-local): Remove build-elfutils, include-elfutils and lib-elfutils. * Makefile.in: Regenerated. * aclocal.m4: Regenerated. * configure: Regenerated. 2009-01-20 Frank Ch. Eigler * tapsets.cxx (dwarf..:visit_target_symbol): Print more data for failed $$vars fields to help explain printed "var=?". 2009-01-20 Frank Ch. Eigler * dwarf_wrappers.cxx (dwfl_assert): Tolerate rc==-1, for which dwfl_errmsg(-1)=>NULL. 2009-01-19 Dave Brolley * stap-serverd (initialization): Call stap-add-server-cert only if it has been installed. 2009-01-13 Stan Cox * systemtap.spec (sdt-devel): New subpackage. * Makefile.am (oldincludedir): New. (oldinclude_HEADERS): New. (bin_SCRIPTS): Add dtrace * Makefile.in: Regenerated. * runtime/sduprobes.h: Renamed to sdt.h 2009-01-13 Dave Brolley * stap-find-or-start-server,stap-start-server,stap-serverd,stap-server: Ensure we call other systemtap tools from the installed location. * stap-client: Likewise. Also, use SYSTEMTAP_STAPRUN if it is set. 2009-01-13 Dave Brolley * stap-add-server-cert: Failure to make the client database readable is now only a warning. Directory argument now refers to the location of the 'client' directory. * stap-gen-server-cert: Ensure that the certificate is readable by all. Warn if unsuccessful. Don't add the certificate to the local client-side database. * stap-serverd: Call stap-add-server-cert after stap-gen-server-cert. 2009-01-11 Wenji Huang * tapsets.cxx (dwarf_derived_probe_group::emit_module_decls): Fix too large number on 32-bits machines. (uprobe_derived_probe_group::emit_module_decls): Ditto. 2009-01-11 Mark Wielaard * configure.ac: Add prefix as STAP_PREFIX for config.h. * config.in: Regenerated. * configure: Regenerated. 2009-01-09 Elliott Baron * stap.1.in: Added %M info. 2009-01-09 Dave Brolley * Makefile.am (stamp-ssl): Removed. (ssl/server/stap-server.cert): Removed. (install-data-local): Don't install $(builddir)/ssl. (stap-add-server-cert): Create database directory if it does not exist. Ensure the database is readable by others. * stap-client (initialization): Initialize local_ssl_dbs and public_ssl_dbs. Don't initialize ssl_db. (parse_options): Concatenate additional_local_ssl_dbs with local_ssl_dbs. (process_ssl): Build up additional_local_ssl_dbs in the order specified on the command line. (choose_server): Set server for non-local domains. Print $tmpdir_client/connect to stderr if we can't connect. (send_receive): Try connecting to the given server using all of the databases in $local_ssl_dbs and $public_ssl_dbs. Keep log in $tmpdir_client/connect. (interrupt): Use SIGTERM to kill stap-client-connect. * stap-client-connect.c (prerror.h,secerror.h): #include them. (errWarn): Try to the the error text from NSPR. Handle specific errors manually otherwise. (handle_connection): Stop processing on write error of the local file. (do_connect): Cleanup on error. Call SSL_ForceHandshake to catch authentication errors here. * stap-gen-server-cert: Don't create the client's database directory. * stap-server: Redirect the output of signtool to /dev/null. * stap-server-connect.c (handle_connect): Call SSL_ForceHandshake to catch authentication errors here. Clean up temp files on error. (accept_connection): Don't close the socket on error. stap-serverd (initialization): Print a message if the given socket is busy. Search for a local certificate database. Create and initialize one if not found. (listen): Don't discard stderr fomr stap-server-connect. * stap-start-server: Check for existence of local certificate database as evidence that the server is listening. * Makefile.in: Regenerated. 2009-01-08 William Cohen * configure.ac: Check for xmlto that generates pdf. * configure: Regenerated. 2009-01-07 William Cohen * configure.ac: Add --enable-refdocs configure option and set check for xmlto * Makefile.in: Regenerated. * aclocal.m4: Likewise. * configure: Likewise. 2009-01-07 Mark Wielaard * configure.ac: Warn when not building docs because tools not found. * configure: Regenerated. 2009-01-07 Mark Wielaard * configure.ac: Add --enable-server configure option and set BUILD_SERVER appropriately. * Makefile.am (man_MANS, bin_PROGRAMS, bin_SCRIPTS): Only add stap-server and friends when BUILD_SERVER set.A * Makefile.in: Regenerated. * aclocal.m4: Likewise. * configure: Likewise. 2009-01-06 Frank Ch. Eigler PR9699. * buildrun.cxx (compile_pass): Add $(LINUXINCLUDES) to autoconf trial builds. Add new autoconf test for task_struct uid->cred switch. 2009-01-06 Dave Brolley * systemtap.spec (stap-client): Add stap-add-server-cert, stap-client-connect. (stap-server): Add stap-server-connect. 2009-01-05 Dave Brolley PR9702 * stap-gen-server-cert: Try mkpasswd, apg and then user_enter_password when generating the password for the server certificate/key database. (user_enter_password): New function. 2008-12-31 Frank Ch. Eigler * translate.cxx (dump_unwindsyms): Adapt to elfutils build-id bug that was fixed in 0.138. * configure.ac: Look for elfutils/version.h. * config.in, configure: Regenerated. 2008-12-30 Dave Brolley PR9692 From Eugeniy Meshcheryakov * Makefile.am (stap_client_connect_CFLAGS): Use $(nss_CFLAGS) and $(nspr_CFLAGS). (stap_server_connect_CFLAGS): Likewise. * configure.ac: Use PKG_CHECK_MODULES to configure nss and nspr. * Makefile.in: Regenerated. * aclocal.m4: Regenerated. * configure: Regenerated. 2008-12-30 Dave Brolley * Makefile.am (install-data-local): Test for existence of $(builddir)/ssl before installing it. * Makefile.in: Regenerated. 2008-12-29 Frank Ch. Eigler * Makefile.am (install-data, uninstall-data): Use $(DESTDIR)$(sysconfdir) instead of hard-coded /etc paths. 2008-12-26 Dave Brolley * Makefile.am (stamp-ssl): Disable automatic building of this target. * Makefile.in: Regenerated. 2008-12-24 Dave Brolley * stap-client (netcat): Removed. (initialization): Initialize ssl_db. (parse_options): Handle the --ssl option. (process_ssl): New function. (send_request): Removed. (receive_response): Removed. (unpack_response): Use signtool to verify the contents of the server's response against a local copy of the server's certificate. (find_and_connect_to_server): Make sure the server is referred to as localhost if it is running on the local host. Call send_receive in order to contact the server and perform the transaction. (connect_to_server): Removed. (disconnect_from_server): Removed. (send_receive): New function. (process_response): Work in $tmpdir_server. (terminate, interrupt): Kill any running stap-client-connect. * stap-find-or-start-server: Pass arguments to stap-start-server. * stap-start-server: Pass arguments to stap-serverd. * stap-server (port): Removed. (netcat): Removed. (receive_request): Removed. (unpack_request): Use unzip. (package_response): Use signtool to sign the response into a .jar archive. (send_response): Removed. * stap-serverd (netcat): Removed. (port1): Removed. (initialize): Don't call recursively. Use a loop to select a port. (listen): Call stap-server-connect. (process_request): Removed. (terminate): Kill any running stap-server-connect job. * systemtap.spec: client and server sub packages require nss and nss-tools, and no longer require nc or net-tools. * Makefile.am (bin_PROGRAMS): Add stap-client-connect and stap-server-connect. (bin_SCRIPTS): Add stap-gen-server-cert. (stap_client_connect_LDFLAGS, stap_server_connect_LDFLAGS): New. (stamp-ssl): New target. (ssl/server/stap-server.cert): New target. (stap_client_connect_*): New. (stap_server_connect_*): New. (install-data-local): Install /etc/systemtap/ssl. (uninstall-local): Remove /etc/systemtap. * Makefile.in: Regenerated. * aclocal.m4: Regenerated. 2008-12-22 Masami Hiramatsu PR7090 * buildrun.cxx (compile_pass): Use flags macro to expand KBUILD_CFLAGS for support kernels built with O= option. 2008-12-21 Will Cohen * systemtap.spec: Add generations of tapset reference manual material. 2008-12-21 Stan Cox * tapsets.cxx (dwflpp::die_has_pc): Don't abort if dwarf_ranges fails. (dwflpp::find_variable_and_frame_base): A pc requires dwarf_nscopes 2008-12-19 Elliott Baron PR3668 * elaborate.cxx: Handling for %M. * runtime/vsprintf.c: Likewise. * staptree.cxx: Likewise. * translate.cxx: Likewise. * staptree.h: Added %M converter, conv_memory_hex, to enum 2008-12-16 Roland McGrath * systemtap.spec (Requires): Add kernel-devel, is correct virtual provide in kernel-*-devel rpms. (with_sqlite): Typo fix in default defn check. [%{with_sqlite}] (Requires): Remove. BuildRequires causes the correct automatic dependency. 2008-12-16 Stan Cox * tapsets.cxx (dwarf_builder::build): Consider alignment when fetching .probes values. Convert .mark to .statement(0x) instead of .statement(foo.c:N) 2008-12-11 Dave Brolley PR7087 * stap-client: Don't use -d on netcat. Redirect from /dev/null instead. * stap-server: Likewise. * stap-serverd: Likewise. 2008-12-09 Frank Ch. Eigler PR6961 * tapsets.cxx (common_probe_entryfn_prologue): Add new "fakeregs" param. Set context regs_buffer with plausible dummy values if needed. Update callers. (mark_builder::build): Add kernel to unwindsyms_modules. * translate.cxx (emit_common_header): Add pt_regs regs_buffer field to context. 2008-12-09 Dave Brolley PR7087 * stap-client: Use netcat or nc, whichever is available. * stap-server: Likewise. * stap-serverd: Likewise. 2008-12-08 David Smith RHBZ 474390 * tapsets.cxx (dwflpp::cu_function_caching_callback): Handles NULL return from dwarf_diename(). (dwflpp::print_locals): Ditto. (dwflpp::find_variable_and_frame_base): Ditto. (dwflpp::literal_stmt_for_return): Ditto. (dwarf_builder::build): Ditto. 2008-12-08 Frank Ch. Eigler PR7062 * buildrun.cxx (uprobes_home): Make local, based on session.runtime_path. 2008-12-05 Frank Ch. Eigler * tapsets.cxx, translate.cxx: Set default elfutils debuginfo_path to start with "+", to enable debuginfo<->stripped checksum checking. * stap.1.in: Note this. 2008-12-05 Kent Sebastian PR7051 * doc/langref.tex, elaborate.cxx, runtime/vsprintf.c, stap.1.in, staptree.cxx, staptree.h, translate.cxx: Remove printf %n directive and references to it in documentation. 2008-12-03 Roland McGrath PR6925 * run-stap.in: New file. * configure.ac: Generate run-stap from it. * configure: Regenerated. PR7063 * buildrun.cxx (run_pass): Obey SYSTEMTAP_STAPRUN environment variable. 2008-12-03 Frank Ch. Eigler PR6925 * configure.ac: Suggest --prefix if configured without. * configure: Regenerated. 2008-12-03 Frank Ch. Eigler PR 5982: rename -B to -r * main.cxx (main): Treat -r REV and -r /PATH as complimentary. Imply -p4 if target mismatches host versions. (usage): Document -r more. * hash.cxx (find_hash): Add in the kernel_build_tree. * buildrun.cxx (compile_pass, kernel_built_uprobes): Simplify logic. * tapsets.cxx (setup_kernel, setup_user): Ditto. * translate.cxx (emit_symbol_data): Ditto. * stap.1.in: Document -r /PATH. 2008-12-01 Rajan Arora PR 5892: Add -B and parameterize all occurences of /lib/modules/... * buildrun.cxx (compile_pass, kernel_built_uprobes): Audit mentions of /lib/modules/... with path to kernel_build_tree provided by -B. * tapsets.cxx (setup_kernel, setup_user, mark_builder::build): Likewise. * translate.cxx (emit_symbol_data): Likewise. * session.h (struct systemtap_session): New member kernel_build_tree. * main.cxx (main): Add case for 'B' and attempt to fetch Version for the kernel build tree using include/config/kernel.release in build path, remove -r REV implies -p4 logic altogether. 2008-11-29 Frank Ch. Eigler Warnings cleanup. * buildrun.cxx (verify_uprobes_uptodate, make_uprobes): Simplify messages. * cache.cxx (add_to_cache, clean_cache): Reset s.use_cache upon failure. * hash.cxx (find_hash): Ditto. * main.cxx (main): Simplify/conditionalize warning messages. Save module to $cwd if last_pass==4 but cache encountered errors. 2008-11-28 Frank Ch. Eigler PR 6965. * translate.cxx (dump_unwindsyms): Tweak symbols for STP_NEED_{SYMBOL,UNWIND}_DATA 2008-11-28 Elliott Baron PR 6965. * translate.cxx (dump_unwindsyms): Output #ifdef for symbol table. 2008-11-28 Frank Ch. Eigler PR 5376. * parse.cxx (parse::parse_probe): Prevent alias names from being marked "?" or "!". 2008-11-28 Frank Ch. Eigler PR 6477. * elaborate.cxx (print_error_source, print_warning): Tolerate NULL token. 2008-11-27 Frank Ch. Eigler PR 7036 From Wenji Huang : * elaborate.cxx (print_error): Don't suppress if listings_mode. * main.cxx (main): Suppress "pass N failed" if listings_mode. 2008-11-26 Stan Cox * tapsets.cxx (dwarf_builder::build): Support debuginfo static uprobes. 2008-11-26 Frank Ch. Eigler * translate.cxx (emit_module_exit): Add another synchronize_sched. 2008-11-26 Frank Ch. Eigler * main.cxx (main): Advise users to try '--vp ...' after a pass error. 2008-11-26 Frank Ch. Eigler * translate.cxx (emit_module_exit): Call synchronize_sched during module shutdown if it's available. * buildrun.cxx (compile_pass): Test for it. 2008-11-25 Frank Ch. Eigler PR 7046. * tapsets.cxx (uprobe*emit_module_decls): Rewrite the generated stap_uprobe_change function, to hold mutex for a shorter period and to produce more meaningful KERN_INFO traces if -DDEBUG_UPROBES. (uprobe*emit_module_exit): Switch to KERN_INFO also. 2008-11-25 Will Cohen * scripts/kernel-doc: Clean up SystemTap function formatting. 2008-11-25 Will Cohen * scripts/kernel-doc: Make executable. 2008-11-25 Will Cohen * scripts/kernel-doc: New. * configure.ac: Add doc/SystemTap_Tapset_Reference/Makefile. * configure, doc/SystemTap_Tapset_Reference/Makefile.in: Regenerate. 2008-11-25 Mark Wielaard * tapsets.cxx (dwarf_derived_probe_group::emit_module_exit): struct stap_dwarf_probe field is called pp, not pp_name. 2008-11-24 Kent Sebastian PR 4978. * stap.1.in (PRINTING): printf directives, more examples. 2008-11-22 Frank Ch. Eigler * tapsets.cxx (MAXUPROBES): Tweak its definition. Use it consistently. * stap.1.in (MAXUPROBES): Document it. 2008-11-22 Frank Ch. Eigler PR 5689. * tapsets.cxx (dwarf_derived_probe_group::emit_module_exit,decls): Print kprobe missed stats if STP_TIMING. (uprobe_derived_probe_group::emit_module_exit,declx): Track uprobe missed stats if STP_TIMING> * translate.cxx (emit_module_exit): Print uprobe missed stats. 2008-11-21 Frank Ch. Eigler PR 5689. * tapsets.cxx (common_probe_entryfn_{pro,epi}logue): Track separate skip counts for low-stack and reentrancy conditions. * translate.cxx (emit_common_header): Declare counters. (emit_module_exit): Print them. (emit_unlocks): Don't bother redundantly testing skipped_count. 2008-11-21 Frank Ch. Eigler * translate.cxx (emit_module_exit): Perform shutdown probe synchronization after all unregistrations and end/error probe runs. 2008-11-20 Frank Ch. Eigler PR 5689 * translate.cxx (emit_global, emit_global_init, emit_module_exit, emit_locks): Track & print global.s_VAR_lock_skip_count. 2008-11-20 Frank Ch. Eigler * main.cxx (main): Correct thinko in --vp option with <5 arg chars. 2008-11-18 Jim Keniston PR 6879 * runtime/uprobes2/uprobes_x86.c: Allow probing of instructions with fs: and gs: prefixes. Apply fix from runtime/uprobes. 2008-11-18 Frank Ch. Eigler PR6925. * main.cxx (usage,main): Process new --vp option. * session.h (perpass_verbose): New field. 2008-11-11 Stan Cox * Makefile.am (pkglib_LIBRARIES): New. * Makefile.in: Regenerated * stapprobes.5.in (process.mark): New. * tapsets.cxx (register_patterns): Add process.mark. (dwarf_builder::build): Likewise. 2008-11-14 Frank Ch. Eigler * tapsets.cxx (common_probe_entryfn_{pro,epi}logue): Set "interruptible" to default true, thus disabling local_irq_* calls for all current probe point types. 2008-11-13 Wenji Huang PR 7000 * translate.cxx (c_unparser::visit_print_format): Add checking bound for actual parameters. 2008-11-13 Frank Ch. Eigler * systemtap.spec, configure.ac: Bump version to 0.8. * configure.in: Regenerated. 2008-11-11 Przemysław Pawełczyk Mark Wielaard * tapsets.cxx (find_variable_and_frame_base): Add scope name to semantic error messages if available. 2008-11-06 Wenji Huang PR 6998 * tapsets.cxx (profile_builder): Add default kernel symbols to profile. 2008-11-06 Stan Cox * tapsets.cxx (dwflpp::module_address_to_global): ET_EXEC needs no further relocation. 2008-11-04 Frank Ch. Eigler From Masami Hiramatsu , PR 6028. * tapsets.cxx (dwarf_derived_probe): New field access_vars, for tracking result from .. (dwarf_var_expanding_copy_visitor): Collect a flag about whether any $expressions appear within. (emit_probe_local_init): ... and run ia64 bspcache() on if true. 2008-11-03 Jim Keniston Add a version of uprobes that works with the 2.6.27 version of utrace. * runtime/uprobes2/uprobes.[ch]: uprobes2 * runtime/uprobes2/uprobes_x86.[ch]: Simplified to use post-2.6.24 unified pt_regs names ("ax" rather than "eax" or "rax"). * runtime/uprobes2/uprobes_arch.[ch]: Pull in the arch-specific file from the appropriate directory. * runtime/uprobes/uprobes.[ch]: #ifdef added to pull in file from ../uprobes2 if we're running the new utrace. * runtime/uprobes/Makefile: Updated * Makefile.am: Install runtime/uprobes2/*. * Makefile.in: Regenerated * buildrun.cxx: Always copy uprobes's Module.symvers into the directory where stap builds the script .ko. 2008-11-03 Mark Wielaard * tapsets.cxx (literal_stmt_for_return): Add function name and file to semantic error messages. 2008-10-29 Frank Ch. Eigler * translate.cxx (dump_unwindsyms): Work on CONFIG_RELOCATABLE=n kernels, or for whatever other scenarios dwfl_module_relocation_info might return NULL. 2008-10-27 Josh Stone * translate.cxx (c_unparser::visit_print_format): Fix the argument passed for printf %c formats. 2008-10-27 Rajan Arora * elaborate.cxx (add_global_var_display): Added check for globals from tapsets. 2008-10-24 Josh Stone * tapsets.cxx (hrtimer_derived_probe_group::emit_module_decls): Support the new abstractions around the hrtimer expires field. The field is renamed starting in 2.6.28-rc1, but accessor functions are provided for general access. * buildrun.cxx (compile_pass): Added autoconf-hrtimer-getset-expires.c 2008-10-24 Jim Keniston PR6946 * tapsets.cxx: Allow probing of 32-bit ppc apps with a ppc64 kernel. 2008-10-20 Elliott Baron PR6851 * elaborate.cxx (typeresolution_info::visit_print_format): add case for conv_char. * staptree.cxx (print_format::components_to_string): add case for conv_char. (print_format::string_to_components): add parsing for "c" conversion. * staptree.h (enum conversion_type): add conv_char member. 2008-10-17 Frank Ch. Eigler * stap-report: Add kernel config extracts. Generate to stdout. * Makefile.am (bin_SCRIPTS): Install it. * systemtap.spec: Package it. * Makefile.in: Regenerated. 2008-10-17 Jim Keniston PR6923 * runtime/autoconf-oneachcpu-retry.c: Compiles successfully on old kernels. 2008-10-14 Kent Sebastian * cache.cxx (cache_clean): Minor changes, mainly stylistic. * session.h: remove cache_max member var (used only in cache.cxx now) 2008-10-10 Frank Ch. Eigler PR6749 * tapsets.cxx (dwarf_derived_probe_group::emit_module_init): Tolerate failed register_*kprobe during initialization; warn instead. 2008-10-10 Kent Sebastian * cache.cxx (cache_clean): New group of functions implementing cache size limiting. 2008-10-09 Rajan Arora * elaborate.cxx (systemtap_session::print_error_source): New. (systemtap_session::print_error): Call it. (systemtap_session::print_warning): Likewise. * parse.cxx (parser::print_error): Likewise. * session.h (struct systemtap_session::print_error_source): Declare it. * parse.cxx (lexer::get_input_contents): New. (parser::parse): Call it. (lexer::set_current_file): New. (parser::parse): Call it. * parse.h (class lexer::get_input_contents): Declare it. (class lexer::set_current_file): Declare it. (class lexer): New member current_file. (class lexer): Update input_contents from vector to std::string. (struct source_loc): New member stap_file. * staptree.h (struct stapfile): New member file_contents. 2008-10-09 Stan Cox * tapsets.cxx (query_cu): Fix typo. 2008-10-06 Wenji Huang PR 4886 * translate.cxx (dump_unwindsyms): Extract build-id from debuginfo. (emit_module_init): Check build-id if able. 2008-10-03 Jim Keniston PR 6850 * runtime/uprobes/uprobes.c: When a probed process forks with uretprobe_instances outstanding, create a uprobe_process and uprobe_task for the child, and clone the uretprobe_instances. This requires us to allow the SSOL vma to be copied on fork. * testsuite/systemtap.base/bz6850.{exp,c,stp}: new test case 2008-09-30 Mark Wielaard * tapsets.cxx (literal_stmt_for_local): Check if alternatives can be provided after calling dwarf_formref_die. (literal_stmt_for_return): Likewise. 2008-09-26 Frank Ch. Eigler * elaborate.cxx (add_global_var_display): Implicitly sort arrays. 2008-09-26 Frank Ch. Eigler PR 6916 * elaborate.cxx (systemtap_session::print_error): Fix duplicate elimination in face of token compression. * tapsets.cxx (literal_stmt_for_local, literal_stmt_for_return): Change error message to fit old pattern. 2008-09-26 Frank Ch. Eigler BZ 6829: avoid calling unregister_uprobe() when responding to a task-finder exec/exit callback, as uprobes likes to clean such things up by itself. 2008-09-12 Prerna Saxena BZ 3016 : Handling members of anonymous structs/unions * tapsets.cxx (translate_components, print_members) : enable translator to identify members of anonymous structs / unions. * testsuite/semok/thirtythree.stp : New test-case. * NEWS : Modify translator code to identify members of anonymous structs/unions. 2008-09-24 Mark Wielaard * dwarf_wrappers.cxx (dwfl_assert(string,bool)): Call dwfl_assert(string,int), not dwarf_assert(). 2008-09-12 Dave Brolley * stap-client (staprun_PATH): Ensure that $first_stap is not empty. * stap-start-server: Use 'ps' to check that the server started. 2008-09-12 Masami Hiramatsu BZ 6028 * tapsets.cxx (dwarf_derived_probe::emit_probe_local_init): Use REG_IP instead of pp to check probe address. 2008-09-12 Frank Ch. Eigler GCC 4.4 (var-tracking) build-compatilibity. * parse.h: #include . * tapsets.cxx (utrace_...::visit_target_symbol_arg): Use lex_cast(foo) instead of atoi(foo.c_str()) for simpler c++ object lifetime. * Makefile.am (staprun_CFLAGS, stapio_CFLAGS): Add -fno-strict-aliasing, since that code is too casual with pointers. * Makefile.in: Regenerated. 2008-09-12 Dave Brolley PR6881. From Eugeniy Meshcheryakov eugen@debian.org: * stap-server.8.in: Correct formatting problems. 2008-09-12 Dave Brolley * stap-find-servers (match_server): Don't read past the start of the next server description. Don't use '^' at the start of the regexp on calls to 'expr'. * systemtap.spec: client and server sub packages require avahi. 2008-09-12 Wenji Huang * elaborate.cxx (add_global_var_display): Don't, in listing mode. 2008-09-11 Frank Ch. Eigler PR 6871. * tapsets.cxx (query_cu): Search for prologues for user-space probes. (query_func_info): Use prologue_end if available; silently back down to entrypc probing if needed. 2008-09-10 Josh Stone * main.cxx (printscript): Ensure no variables are printed in probe lists unless -L was specified. 2008-09-10 Frank Ch. Eigler * parse.cxx, parse.h: Rewrite scanner lookahead data structure to a simple ~fixed vector. 2008-09-10 Frank Ch. Eigler PR6876: translator speedup for many $vars * session.h (systemtap_session.functions): vector->map. * coveragedb.cxx, elaborate.cxx, main.cxx, tapsets.cxx, translate.cxx: Adapt all users. 2008-09-10 Mark Wielaard * configure.ac: Check for dwarf_getelf. elfutils 0.126+. Use AM_PROG_MKDIR_P instead of AC_PROG_MKDIR_P. * Makefile.in: Regenerated. * aclocal.m4: Likewise. * config.in: Likewise. * configure: Likewise. 2008-09-10 Dave Brolley * systemtap.spec: Remove avahi-tools and nc from dependencies for systemtap and systemtap-runtime packages. Remove stap-* scripts from %files of systemtap and systemtap-runtime packages. Make sure systemattap-runtime only picks up staprun.8* man pages. Create new systemtap-client and systemtap-server packages. * NEWS: Add network security warning for the systemtap client/server. 2008-09-10 Mark Wielaard * translate.cxx (dump_unwindsyms): Rename module_base output to dwarf_module_base. 2008-09-10 Mark Wielaard * translate.cxx (dump_unwindsyms): Output module_base. 2008-09-10 Mark Wielaard * translate.cxx (get_unwind_data): New function. (dump_unwindsyms): Output unwind data. 2008-09-09 Masami Hiramatsu * stapprobes.5.in: Added a description about $return. * NEWS: Ditto. * tapsets.cxx (utrace_var_expanding_copy_visitor): Change visit_target_symbol_syscall() to visit_target_symbol_context(). (utrace_var_expanding_copy_visitor::visit_target_symbol_context): Handle not only $syscall but also $return. (utrace_var_expanding_copy_visitor::visit_target_symbol): Ditto. 2008-09-09 Masami Hiramatsu * stapprobes.5.in: Added a description about $argN. * NEWS: Ditto. * tapsets.cxx (utrace_var_expanding_copy_visitor): Added visit_target_symbol_arg() and visit_target_symbol_syscall(). (visit_target_symbol_arg): New function for handling $argN. (visit_target_symbol_syscall): New function for handling $syscall. (visit_target_symbol): Use visit_target_symbol_arg() and visit_target_symbol_syscall(). 2008-09-09 Masami Hiramatsu * stapprobes.5.in : Added a line for $name context variable. * translate.cxx (c_unparser::emit_common_header): Add marker_name and marker_format fields to context. * tapsets.cxx (common_probe_entryfn_prologue) : Ditto. (mark_derived_probe_group::emit_module_decls) : Ditto. (mark_var_expanding_copy_visitor) : change visit_target_symbol_format to visit_target_symbol_context. (mark_var_expanding_copy_visitor::visit_target_symbol_context): handle not only $format but also $name. (mark_var_expanding_copy_visitor::visit_target_symbol): Ditto. 2008-09-07 Frank Ch. Eigler * tapsets.cxx (build_blacklist): Add some x86 raw port-io spots. 2008-09-06 Frank Ch. Eigler * tapsets.cxx (utrace_derived_probe ctor): Handle process.* probe point reverse engineering (pid- and path-less). 2008-09-05 Stan Cox * elaborate.cxx (add_global_var_display): Handle scalar statistics. 2008-09-05 Frank Ch. Eigler * configure.ac, Makefile.am, systemtap.spec: Don't look for libcap. * configure, Makefile.in: Regenerated. 2008-09-05 Wenji Huang PR 6731. * main.cxx (usage,main,printscript): Improve listing mode with "-L". * stap.1.in, stapex.5.in: Document it. 2008-09-04 Frank Ch. Eigler * main.cxx (usage): Remove some dwarfless items. 2008-09-02 Frank Ch. Eigler * tapsets.cxx (uprobe..emit_module_init): Leave dying-uprobe loop as early as possible. 2008-09-02 Stan Cox * elaborate.cxx (add_global_var_display): Simplify token use. 2008-09-02 Frank Ch. Eigler PR4225. * tapsets.cxx (generated stap_uprobe_change): Fix major thinko that falsely triggered a slew of uprobe_unregister's for each plain register. (uprobe_derived_probe_group::emit_module_init): Add code to generate printk's for uprobe activities, if -DDEBUG_UPROBES. 2008-09-02 Frank Ch. Eigler PR4225 merge. * tapsets.cxx: Add prototype user-space probing support. Collateral damage breaks symbol-table-only (dwarfless) probing, PR6864. (setup_user, setup_kernel): Split & reorganized. (class uprobe_derived_probe): Nearly all new code. (base_query): Add "has_module" and "has_process" flags. (dwarf_builder): Add "user_dw" map. (dwarf_query::add_probe_point): Use ".dynamic" pseudo-reloc-base for ET_DYN modules; ".absolute" for ET_EXEC. (register_patterns): Register process(...) uprobe-based probes. (task_finder_derived_probe_group::create_session_group): Let runtime code assert CONFIG_UTRACE. (base_query ctor, dwarf_builder::build, itrace_builder, utrace_derived_probe): Use find_executable() to resolve FOO path in process("FOO"). (utrace_derived_probe ctor): Reverse-engineer probe point. * main.cxx (main): Don't override $PATH etc. * util.cxx (find_executable): Reorganize, simplify, canonicalize. * util.h, hash.cxx: Corresponding changes. 2008-09-02 Wenji Huang * tapsets.cxx (query_func_info): Disable prologue searching in no-dwarf testing. 2008-09-01 Stan Cox * elaborate.cxx (add_global_var_display): Also handle statistics. 2008-08-29 Dave Brolley * stap-server.8.in: New man page. * NEWS: Announce the availability of the client/server. * Makefile.am (man_MANS): Add stap-server.8. * configure.ac (AC_CONFIG_FILE): Add stap-server.8. * Makefile.in: Regenerated. * configure: Regenerated. 2008-08-29 Stan Cox * elaborate.cxx (add_global_var_display): Repopulate symbol/type info. 2008-08-29 David Smith * tapsets.cxx (utrace_derived_probe_group::emit_probe_decl): Pushed quiesce logic down into the task_finder layer. (utrace_derived_probe_group::emit_module_decls): Removed quiesce handler routines. Syscall probe handler detaches if systemtap state isn't correct. 2008-08-29 Wenji Huang * main.cxx (printscript): Print variable name and type for listing mode. 2008-08-28 Frank Ch. Eigler * elaborate.cxx (add_global_var_display): Render array indexes in [key,key,key] vs. [key][key][key] form. 2008-08-27 Stan Cox * elaborate.cxx (add_global_var_display): New. (semantic_pass): Call it. (dead_assignment_remover::visit_assignment): Don't remove written but unread global variables. * NEWS, stap.1.in: Document 2008-08-26 David Smith * buildrun.cxx (compile_pass): Added autoconf-dpath-path.c. * Makefile.am: Simplified "rpm" target a bit. * Makefile.in: Regenerated. * Makefile.am: Moved tar archive creation step from "rpm" target into "dist-gzip" target. * Makefile.in: Regenerated. 2008-08-25 Frank Ch. Eigler * Makefile.am (AUTOMAKE_OPTIONS): Add "no-dist". Remove all "make dist"-oriented targets and macros. (rpm): Rewrite. Allow parametrization with RPMBUILDFLAGS=. * Makefile.in: Regenerated. * systemtap.spec: Make configuration macros at top overridable. 2008-08-25 David Smith * tapsets.cxx (utrace_derived_probe_group::emit_module_init): Make sure we count the number of utrace probes correctly. (utrace_derived_probe_group::emit_module_exit): Ditto. 2008-08-25 Dave Brolley * Makefile.am (installcheck): Remove $(EXTRA_SYSTEMTAP_PATH) from invocation of $(MAKE). * Makefile.in: Regenerated. * aclocal.m4: Regenerated. * stap-client (parse_options): Don't quote an argument if it is already quoted. (send_request): Timeout after 10 seconds. (receive_response): Timeout after 5 minutes. (choose_server): Add missing $ to variable reference. (connect_to_server): Timeout after 10 seconds. * stap-server (receive_request): Don't check for a "request:" message. Timeout after 10 seconds. (send_response): Timeout after 10 seconds. * stap-serverd (initialization): Remove tmpdir_prefix_serverd and port2. No need for a temp directory. (listen): Fifo no longer necessary. Call nc and pipe the output to process_request in the background. (process_request): New function. (fatal): Kill stap-server followed by nc. No tmpdir to remove. 2008-08-24 Frank Ch. Eigler * tapsets.cxx (query_statement): Leave empty string for unknown file name. (dwarf_derived_probe ctor): Don't synthesize "@filename:lineno" probe point pieces for unknown files/lines. 2008-08-21 David Smith * tapsets.cxx (itrace_derived_probe_group::emit_module_decls): Updated task finder callback function signature. (utrace_derived_probe_group::emit_module_decls): Ditto. 2008-08-20 David Smith * tapsets.cxx (utrace_derived_probe_group::emit_probe_decl): Supports original and new utrace interfaces. (utrace_derived_probe_group::emit_module_decls): Ditto. 2008-08-20 Dave Brolley * stap-client: Ignore SIGHUP and SIGPIPE. (initialization): Set b_specified.: (parse_options): Handle the -b option. Quote $stap_arg. Use process_m. (process_m): New function. (process_o): Set stdout_redirection to simply the filename. (process_response): Obtain the exit code from stap on the server side. Copy the module to the current directory if -m was specified. Call stream_output. (stream_output): It's back. (maybe_call_staprun): Print status messages for -v. Leave v_level unchanged. Pass -o option to staprun. Wait until the staprun job disappears. (terminate): Redirect message to stderr. (interrupt): Only kill staprun if it's still running. Call cleanup if exiting. (ignore_signal): New function. * stap-server (receive_request): Quote the job specifier. (send_response): Likewise. (read_data_file): Use read to check the first line. Use cat the read the entire file. * stap-serverd (listen): Quote job specifier. (terminate): Likewise. 2008-08-19 David Smith PR 6841 * tapsets.cxx (utrace_derived_probe_group::emit_probe_decl): Workaround utrace bug by quiescing threads before attaching a utrace syscall engine to them. (utrace_derived_probe_group::emit_module_decls): Emit quiesce handler. 2008-08-18 David Smith * tapsets.cxx (register_standard_tapsets): Add missing 'process.syscall' and 'process.syscall.return' bindings. 2008-08-16 Mark Wielaard * configure.ac (build_elfutils): Mention possible distro specific elfutils development sub-packages needed when not found. 2008-08-15 David Smith * tapsets.cxx (utrace_builder::build): Change system-wide probes from 'process("*").begin' to 'process.begin'. (register_standard_tapsets): Add new 'process' binding. * stapprobes.5.in: Change system-wide probes from 'process("*").begin' to 'process.begin'. 2008-08-15 Frank Ch. Eigler PR 6836 * tapsets.cxx (dwarf_var...visit_target_symbol): Emit "return=0xf00" instead of "$return=0xf00" for $$return, for consistency with other variables. * NEWS, stapprobes.5.in: Update. 2008-08-15 Frank Ch. Eigler PR 6836. * tapsets.cxx (dwarf_var...visit_target_symbol): Show "var=?" for unlocatable variables. Support $$return. Make sure $$parms/etc. work in .return probes too. * testsuite/semok/thirtytwo.stp: New test. * NEWS, stapprobes.5.in: Document them. 2008-08-15 Michael Meeks * configure.ac: suggest (SUSE) package name for dwfl. * buildrun.cxx (compile_pass): if extremely verbose, pass through output from stap checks - helps to debug generic test compile problems. 2008-08-14 Dave Brolley PR 6834 * stap-client (initialization): initialize staprun_running. (send_request): No server response message required. (receive_response): No server response message required. Simply receive the tar file. The tar file should contain a file called 'rc'. (connect_to_server): Use 'nc'. (disconnect_from_server): No action required. (process_response): Renamed from 'stream_output'. Obtain the exit code from the 'rc' file. (maybe_call_staprun): set 'staprun_running' while staprun is running. (check_server_error): Removed. (server_fatal): Removed. (cleanup): Redirect stderr of 'kill' to /dev/null. (interrupt): Pass SIGINT on to staprun, if it is running. Otherwise, exit. * stap-server (initialization): Create the server temp directory here... (unpack_request): ... not here. (receive_request): Don't send a ready message. (create_response): Write the exit code of 'stap' to the 'rc' file. (send_response): Don't send a status message. (fatal,error): Redirect to $tmpdir_server/stderr. 2008-08-13 Dave Brolley * stap-client: Trap SIGTERM and SIGINT. (unpack_response): chown of the systemtap temp directory before we move it and only if we didn't create it. (maybe_call_staprun): Check $e_script when determining whether a script was specified. Provide the -c option to staprun. Run staprun in the background and wait for it. (terminate,interupt): New functions. 2008-08-13 Frank Ch. Eigler * Makefile.am (stamp-elfutils): Override build-elfutils' bin_PROGRAMS to not bother build binaries we're not using. * Makefile.in: Regenerated. 2008-08-12 Frank Ch. Eigler * buildrun.cxx (compile_pass): Add ugly kbuild hack for hand-built x86 kernels that are made with O= (separate object/module-building directory). 2008-08-12 David Smith PR 6445 (partial) * tapsets.cxx (utrace_builder::build): Validates pid and allows probing of "*" to mean all threads. * stapprobes.5.in: Added note about a process path of "*" means to probe all threads. 2008-08-11 Wenji Huang * tapsets.cxx : Fixed compilation warning on gcc 3.x. 2008-08-11 Frank Ch. Eigler * tapsets.cxx (translate_final_fetch_or_store): Reject some unhandleable types such as floats. (dwarf_var...visit_target_symbol): Tweak logic of $$var expansion to quietly skip over any $context variables that cause exceptions. 2008-08-11 Frank Ch. Eigler * tapsets.cxx (translate_final_fetch_or_store): Reject some unhandleable types such as floats. (dwarf_var...visit_target_symbol): Tweak logic of $$var expansion to quietly skip over any $context variables that cause exceptions. 2008-08-11 Frank Ch. Eigler * tapsets.cxx (dwarf_var_expanding...visit_target_symbol): Don't add a \n at the end of $$vars/$$parms/$$locals. 2008-08-11 Frank Ch. Eigler PR5049 * tapsets.cxx (cu_name_matches, collect_srcfiles_matching): Implicitly but optionally prefix probe source filenames with "*/". * stapprobes.5.in: Document this. 2008-08-11 Dave Brolley * stap-client (disconnect_from_server): Call after receive_response. * stap-server (stap_rc): Renamed from 'rc'. Don't use it as an exit code. * stap-serverd (listen): Set pipefail so that we get the rc of nc if it fails. Make multiple attempts to establish a server. (fatal): Call 'terminate'. 2008-08-11 Frank Ch. Eigler PR5049 * tapsets.cxx (cu_name_matches, collect_srcfiles_matching): Implicitly prefix probe source filenames with "*". 2008-08-11 David Smith * tapsets.cxx (utrace_builder::build): Fixed indentation. 2008-08-11 Mark Wielaard * Makefile.am (install-data-local): Use INSTALL_PROGRAM for executable stp scripts. * Makefile.in: Regenerated. 2008-08-09 Frank Ch. Eigler * Makefile.am (example index): Only warn and instruct on index regeneration. Do not actually perform it as the source tree should be considered (and can really be) read-only. * Makefile.in: Regenerated. 2008-08-08 Dave Brolley * stap-client: Use quotes when echoing. Exit with $rc. (initialization): Initialize 'rc'. (parse_options): Manage the command line in three pieces: pre-script name, script name, post-script name. (process_*): Likewise. (send_request): Redirect stdout of 'nc' to /dev/null. (receive_response): Handle "failed:" response. Redirect stdin of 'nc' from /dev/zero. (maybe_call_staprun): Check $rc. Check the requested phase limit before looking for the module. * stap-server: Use quotes when echoing. Exit with $rc. (initialization): Initialize 'rc'. (receive_request): Start 'nc' in the background before sending the "ready:" message. Redirect stdin of 'nc' from /dev/zero. (read_data_file): Allow for multiple lines of data. (call_stap): Quoet $cmdline. Set 'rc'. (send_response): Send "failed:" if stap is unsuccessful. Start 'nc' in the background before sending the response. (cleanup): Kill any running 'nc' job. (terminate): Exit with $rc. * stap-serverd: Start the server before advertising our presence. * stap-find-or-start-server: Echo 0 if a server is already running. Echo -1 if no server is running and one can't be started. * stap-start-server: Wait until the server starts before exiting. Exit with 1 if the server does not start. * systemtap.spec: Move client side script to the runtime sub package. The main package and the runtime sub package both depend on avahi-tools and nc. * Makefile.am: Revert previous changes. Now done in testsuite/lib/systemtap.exp. * Makefile.in: Regenerated. 2008-08-08 David Smith * tapsets.cxx (utrace_derived_probe_group::emit_module_decls): Calls stap_utrace_detach() to perform detach. 2008-08-08 Mark Wielaard * Makefile.am (EXAMPLE_BUILD_DIR): Removed. Examples indexes are always in srcdir. (dist-hook): Always install examples from srcdir. * Makefile.in: Regenerated. 2008-08-08 Mark Wielaard * Makefile.am (rpm): Refer to srcdir spec file so make rpm works in builddir. * Makefile.in: Regenerated. 2008-08-08 Mark Wielaard * systemtap.spec: Disable chmodding of samples/kmalloc-top. It is currently not installed. 2008-08-08 Mark Wielaard * Makefile.am (all-local): Depend on example_index, which now doesn't generate anything in $srcdir anymore, only $builddir. (EXAMPLE_SOURCE_DIR): New var. (EXAMPLE_BUILD_DIR): New var. (EXAMPLE_META_FILES): New var. (EXAMPLE_INDEX_GEN): New var. (example_index): New target. ($EXAMPLE_BUILD_DIR/index.html): Likewise. (install-data-local): Install examples from $buildir. * Makefile.in: Regenerated. * aclocal.m4: Likewise. 2008-08-07 Frank Ch. Eigler * Makefile.am (all-local): Don't run indexing code, since $srcdir may be read-only. (install-data): Simplify sample script installation; limit sources to systemtap.examples directory only. * Makefile.in: Regenerated. 2008-08-07 Mark Wielaard * Makefile.am (all-local): Add example_index. (dist-hook): Likewise. (EXAMPLE_SRC): Add index and support files. (EXAMPLE_INDEXES): New file list. (example_index): New target. (clean-local): Remove generated indexes. * Makefile.in: Regenerated. 2008-08-07 Mark Wielaard * systemtap.spec: Add comment about versioned vs unversioned docs. 2008-08-06 Frank Ch. Eigler * stap-find-servers (match_server, client_sysinfo): Use "sysinfo=...." keyword in mdns TXT record. * stap-serverd (advertise_presence): Ditto. (initialization): Locate random usable server port if needed. (listen): Complain if port turns out to be unusable after all. 2008-08-06 Josh Stone PR 6820 From Eugeniy Meshcheryakov eugen@debian.org: * staprun.8.in: fix minor formatting problems 2008-08-05 Stan Cox * NEWS: Updated $$vars, $$parms, $$locals. * tapsets.cxx (visit_target_symbol): Missing break typo. 2008-08-04 Stan Cox * tapsets.cxx (dwarf_var_expanding_copy_visitor::visit_target_symbol): Add support for $$vars, $$parms, and $$locals. * stapprobes.5.in: Likewise. * doc/langref.tex: Likewise. 2008-08-02 Frank Ch. Eigler * translate.h (translator_output::assert_0_indent): New function. * translate.cxx (emit_*): Add a couple of calls to confirm newline(1)/(-1) nest matching. 2008-07-30 Dave Brolley * stap-client (create_request): No need for random suffix for cmdline and sysinfo files. * stap-server (read_data_file): File name is exactly as specified. Check that it exists. 2008-07-29 Dave Brolley * Makefile.am (bin_SCRIPTS): add stap-find-servers, stap-start-server, stap-find-or-start-server, stap-stop-server. (EXTRA_DIST): Likewise. (check): Ensure that a compatible systemtap server is running before running the tests, if requested. If we start a sterver, stop it after running the tests. (installcheck): Likewise. * stap-client (parse_options): Specify stdin as 'scripts/-' on the generated command line. (create_request): Use $script_file instead of '-'. (unpack_response): Existence of the systemtap temp directory is optional. (find_and_connect_to_server): Use stap-find-servers and choose_server. (choose_server): Rewritten from match_server. Examine multiple servers. (connect_to_server): New function. (maybe_call_staprun): Check for existence of a module. Use staprun_PATH. (staprun_PATH): New function. (fatal): Call disconnect_from_server. (server_fatal): Likewise. * stap-server: Catch SIGTERM and SIGINT. (create_response): Check for the existence of $tmpdir_stap. (terminate): New function. * stap-serverd: Catch SIGTERM and SIGINT. (listen): Run 'nc | stap-server' in the background and wait for them to finish. (terminate): Renamed from handle_sigint. Kill avahi-publish-service and nc. * systemtap.spec: Add stap-find-servers, stap-start-server, stap-find-or-start-server, stap-stop-server. * Makefile.in: Regenerated. 2008-07-28 Dave Nomura * session.h (struct systemtap_session): Added itrace_derived_probe group. * elaborate.cxx (systemtap_session::systemtap_session): Added initialization of itrace_derived_probes. * tapsets.cxx (struct itrace_derived_probe): Add derived_probe struct for holding info needed by itrace probes. (struct itrace_derived_probe_group): New derived_probe_group to handle itrace probes. (itrace_derived_probe::itrace_derived_probe): Needed for use with task_finder. (itrace_derived_probe_group::join_group): Ditto. (itrace_derived_probe_group::enroll): Ditto. (itrace_derived_probe_group::emit_probe_decl): Ditto. (itrace_derived_probe_group::emit_module_decls): Ditto. (itrace_derived_probe_group::emit_module_init): Ditto. (itrace_derived_probe_group::emit_module_exit): Ditto. * stapprobes.5.in : Added documentation of itrace probe. 2008-07-24 Josh Stone * buildrun.cxx (compile_pass): Remove STAPCONF_MODULE_NSECTIONS, and add STAPCONF_ONEACHCPU_RETRY 2008-07-23 Frank Ch. Eigler From James Bottomley : * tapsets.cxx (query_dwarf_func): Silently skip inlined function instances that have no entrypc. 2008-07-18 Masami Hiramatsu BZ 442528 (PR6028) * tapsets.cxx (emit_module_decls): Add dummy kprobe on ia64. (emit_module_init): register dummy kprobes for fixing bsp offset on ia64. (emit_module_exit): unregister dummy kprobes on ia64. 2008-07-18 Frank Ch. Eigler BZ 442528, From Masami Hiramatsu * elaborate.h (emit_probe_local_init): New derived_probe member. * tapsets.cxx (dwarf_derived_probe): Implement it, for ia64 register unwind caching. 2008-07-17 Stan Cox * tapsets.cxx (iterate_over_srcfile_lines): Avoid statement wildcard lines without a unique address. 2008-07-17 * main.cxx (handle_interrupt): Forward received signal to process group. 2008-07-17 Masami Hiramatsu * systemtap.spec (%files): Add stap-server and stap-serverd. (%files runtime): Add stap-client. 2008-07-17 David Smith * systemtap.spec: Moved comment that was on the same line as "Version", which rpmbuild didn't like. 2008-07-17 Frank Ch. Eigler * translate.cxx (dump_unwindsyms): Produce symbol tables and section lists for all text-like sections, useful for -ffunction-sections type kernel modules. (emit_symbol_data): Tolerate missing unwind/symbol data during elf processing. Subsequently warn about anything missing. 2008-07-16 Frank Ch. Eigler * configure.ac: Bumped version to 0.7.1. * systemtap.spec: Renamed from systemtap.spec.in; don't autoconf it just on account of @VERSION@. * Makefile.am (EXTRA_DIST): Distribute it. * Makefile.in, configure, testsuite/configure: Regenerated. 2008-07-16 Dave Brolley * Makefile.am (EXTRA_DIST): Add stap-client, stap-server, stap-serverd. * Makefile.in: Regenerated. 2008-07-14 David Smith * tapsets.cxx (utrace_var_expanding_copy_visitor::visit_target_symbol): Synthesize a function to get the value of $syscall. 2008-07-14 Dave Brolley * Makefile.am (bin_SCRIPTS): Add stap-client, stap-server, stap-serverd. * Makefile.in: Regenerated. * aclocal.m4: Regenerated. 2008-07-12 Frank Ch. Eigler PR 6738. * buildrun.cxx (compile_pass): Add autoconf-uaccess.c. * translate.cxx (translate_pass): #include for maximum version compatibility for UTS_RELEASE. 2008-07-12 Frank Ch. Eigler By Andy Fitzsimon : * smileytap.svg: New file. 2008-07-11 Frank Ch. Eigler PR 6739 * tapsets.cxx (global_alias_cache): Make this a per-module/cu cache, just like the function cache. (update_alias_cache): Removed. Instead ... (declaration_resolve): Compute the lookup table for this module/cu, but only once. 2008-07-11 Frank Ch. Eigler * translate.cxx (dump_unwindsyms): Start tolerating user-space programs, which may be unrelocatable. 2008-07-11 Frank Ch. Eigler * hash.cxx (find_hash): Mix in -d MODULE names. 2008-07-10 Frank Ch. Eigler * main.cxx (main): If "-k" (save temp directory) was supplied, disable caching. 2008-07-10 Frank Ch. Eigler PR 6703. * tapsets.cxx (mark_dwarf_redundancies): Tweak hashtable/iterator syntax for gcc 4.1 compatibility. 2008-07-10 Frank Ch. Eigler PR 6736. * main.cxx (main,usage): Support new "-d MODULE" option to populate comp-unwindsyms module list. * stap.1.in: Document it. * tapsets.cxx (dwarf_query::add_probe_point): Add probed module to comp-unwindsyms set. (utrace_builder::build): Ditto for probed user-space program. * translate.cxx (emit_symbol_data): Emit _stp_module[] entry for each comp-unwindsyms member, including relocation bases and symbols, but not yet unwind data. * NEWS: Remove mention of temporarily disabled unwinder. * session.h: Corresponding changes. 2008-07-09 Mark Wielaard PR 6732 * buildrun.cxx (compile_pass): Define STAPCONF_REAL_PARENT by calling autoconf-real-parent.c 2008-07-09 Frank Ch. Eigler From James Bottomley * tapsets.cxx: (dwflpp::global_alias_cache): New member. (declaration_resolve): Search it, called from translate_components. (update_alias_cache): Populate it, called from query_cu. 2008-07-09 * translate.cxx (visit_comparison): Remove unnecessary comparison. * translate.cxx (emit_symbol_data): Remove unused local variable. 2008-07-08 Dave Brolley * stap-client (client_sysinfo): Use `uname -rvm`. (receive_response): Wait for "done:" from the server. Clear server_ip when the server is incompatible. * stap-server (check_request): Quote "`server_sysinfo`". (server_sysinfo): Use `uname -rvm`. (send_response): Send "done:". * stap-serverd (advertise_presence): Use `uname -rvm`. Quote "$txt". 2008-07-07 Mark Wielaard * stapex.5.in: Add section on installed examples, samples and demos and how they are documented. 2008-07-07 Mark Wielaard * Makefile.am (install-data-hook): Install examples, demos and samples. (uninstall-local): Remove examples, demos and samples. * Makefile.in: Regenerated. * aclocal.m4: Likewise. * systemtap.spec.in (%install): Move examples. Don't copy over examples to src. (testsuite): Don't include src/examples. 2008-07-07 Mark Wielaard * systemtap.spec.in (%install): Move installed pdf files. (%files): Mark moved installed pdf as %doc files. 2008-07-03 Frank Ch. Eigler * translate.cxx (translate_pass): Don't #include . 2008-07-03 Dave Brolley * stap-serverd: New script. * stap-client (client_sysinfo): Client sysinfo is stripped down to the output of `uname -r` for now. (package_request): Don't create temporary server tar file here. (send_request): Communication protocol simplified. Use nc to send the tar file. (receive_response): Communication protocol eliminated. Simply wait for the file from the server using nc. (unpack_response): Create temporary server tar file here. Verify the contents of the server's response. (find_and_connect_to_server): Obtain server address and port from avahi-browse. (server_fatal): New function. (check_server_error): Call server_fatal. * stap-server (configuration): port is now provided as an argument. Default to port 65001. (initialization): Don't create temp work directory here. (receive_request): Communication protocol simplified. Receive the request file using nc. (unpack_request): Make temp work directory here. Verify the contents of the request. (server_sysinfo): New function. (check_compatibility): Exact match required. (package_response): Don't use -p on tar command. (send_response): Communication protocol eliminated. Simply send the file using nc. (main line): Pass "$@" to configuration. 2008-07-01 Frank Ch. Eigler * main.cxx (main): In -vv mode, also dump out session arch/release values right at the top. 2008-06-29 Tim Moore * Makefile.am (EXTRA_DIST): Add auto_free.h. * Makefile.in: Regenerated. * auto_free.h (auto_free_ref): New class to free references to pointers allocated with malloc / realloc. * tapsets.cxx (iterate_over_srcfile_lines): Use auto_free_ref at top level of function to free srcsp. 2008-06-27 David Smith * tapsets.cxx (utrace_derived_probe_group::emit_module_decls): Fix bug in handling process(PID) probes. 2008-06-24 K.Prasad * tapset/vfs.stp: Deprecate probe points on old functions, namely generic_file_readv(), generic_file_writev(), generic_file_read() and generic_file_write(). * tapset/vfs.stp: Enhance the tapset by providing more pure C functions, probes for newer VFS related functions * testsuite/buildok/vfs_testcase.stp: Created a testsuite for the new enhanced VFS Tapset which does a compile test i.e. with flags -up4 2008-06-25 Stan Cox * tapsets.cxx (iterate_over_srcfile_lines): Only probe a line once. 2008-06-24 Tim Moore * auto_free.h: New file. * tapsets.cxx (iterate_over_srcfile_lines, read_symbols): Use auto_free instead of explicit calls to ::free(). (Compare): Class for comparing func_info objects and their addresses. (get_index_for_address): Remove. (symbol_table::sort): new function. (query_module_symtab): Iterate over list_by_addr using iterator instead of index. (~symbol_table): Don't bother clearing list_by_addr and map_by_name. (add_symbol): Don't keep list_by_addr in order. (read_symbols, get_from_elf): Sort symbols after all are read. (get_func_containing_address): Use std::upper_bound. (purge_syscall_stubs): Don't iterate over whole list_by_addr vector; use std::equal_range to look for possible stub addresses. 2008-06-23 Frank Ch. Eigler * session.h (module_cache): Add field here. * tapsets.cxx (dwflpp): Remove static field from here. (pathname_caching_callback): Use hacky micro-static to get to it. (*): Update other users of module_cache. * elaborate.cxx (systemtap_session ctor): Corresponding changes. 2008-06-23 David Smith * tapsets.cxx (utrace_derived_probe_group::emit_probe_decl): Handles UDPF_NONE value. (utrace_derived_probe_group::emit_vm_callback_probe_decl): New function. (utrace_derived_probe_group::emit_module_decls): Calls emit_vm_callback_probe_decl() to set up vm_callbacks. 2008-06-23 Stan Cox * NEWS: Updated .statement line number wildcard and line number range. * stapprobes.5.in: Likewise. * doc/langref.tex: Likewise. * tapsets.cxx (enum line_t): Add RANGE and WILDCARD. (iterate_over_srcfile_lines): Change lineno parm to lines[]. Support RANGE and WILDCARD. (dwarf_query): Change line to line[] (dwarf_query::parse_function_spec): Parse RANGE and WILDCARD. 2008-06-20 wcohen * stapfuncs.5.in: Add documentation for tapset/dev.stp functions. 2008-06-18 Josh Stone PR 6644 * elaborate.cxx (dead_stmtexpr_remover::visit_block): Flatten nested block statements into a single block. (dead_stmtexpr_remover::visit_if_statement): Remove the possibility of if_statements with a null thenblock. When an if lacks both then and else, either remove it completely or reduce it to a simple statment evaluating the condition. With an else and no then, invert the condition and else becomes then. (void_statement_reducer): New optimization visitor that breaks statements in void context into smaller pieces, to expose more optimization opportunities. (semantic_pass_opt5, semantic_pass_opt6): Bump opt5 to opt6, and create a new opt5 that runs through void_statement_reducer. 2008-06-16 Frank Ch. Eigler * tapsets.cxx (print_locals): Produce nothing instead of "(alternatives: (none found))" if no alternatives were found. 2008-06-16 Frank Ch. Eigler * elaborate.cxx (session::print_warning): Change to take optional token as argument. (*): Adjust callers of print_warning() to pass a token. (print_token): New function, eliminate recent file name duplication. (print_error): Use it too. (semantic_pass_opt2): Tweak way read-only vars' alternatives are printed. Eliminate relaxation-loop duplicates by printing warnings only on first iteration. Print alternatives for globals too. * session.h: Corresponding changes. 2008-06-16 Stan Cox * elaborate.cxx (semantic_pass_opt2): Only create function alternatives if needed. Overload compare. 2008-06-13 Stan Cox * elaborate.cxx (print_warning): Add optional_str parameter. (semantic_pass_opt2): List variable alternatives for probes and functions. * session.h (print_warning): Add optional_str parameter. 2008-06-13 Josh Stone * translate.cxx: Jump out directly after setting last_error, rather than passively checking last_error everywhere. * translate.cxx: Only make actionremaining checks at control points, i.e. roughly at the end of basic blocks, or after executing a few statements in a row. 2008-06-13 Frank Ch. Eigler * main.cxx (main): Print generated module name for "-m FOO" runs also. Stop warning about this implying uncached operation. 2008-06-12 Stan Cox * elaborate.cxx (print_warning): Make parameter a const. 2008-06-11 Frank Ch. Eigler * Makefile.am (EXTRA_DIST): Add dwarf_wrappers.h. 2008-06-11 Mark Wielaard * elaborate.cxx (print_warning): Only output WARNING, don't put it in the message_str and seen_warnings. * session.h (print_warning): Reindent. 2008-06-11 Frank Ch. Eigler * elaborate.cxx (print_warning): Use session.seen_warnings[]. 2008-06-10 Stan Cox * elaborate.cxx (print_warning): New. * elaborate.cxx (semantic_pass_opt1): Use it. 2008-06-11 Tim Moore * dwarf_wrappers.h (dwfl_assert): Add overload with boolean value for assertion test. * dwarf_wrappers.cxx (dwfl_assert): Write boolean condition version. * tapsets.cxx (emit_address): Fix up dwfl_asserts that got negated in changes to dwfl_assert. PR 2608 * dwarf_wrappers.h, dwarf_wrappers.cxx: New files. * Makefile.in: Regenerated. * tapsets.cxx (dwarf_assert, dwfl_assert): Move to dwarf_wrappers.h. (iterate_over_srcfile_lines, has_single_line_record, query_srcfile_line): Use dwarf_line_t wrapper. (die_has_pc): Take a reference to a Dwarf_Die instead of a pointer. Clean up use of dwfl_assert. (query_cu): Check that statement raw address matches the beginning of a statement record. * elaborate.h: Include iosfwd instead of iostream. (literal_map_t, resolve_prologue_endings,): New typedef. 2008-06-10 Jim Keniston * testsuite/systemtap.context/num_args.tcl: Run twice -- once with dwarf (default) and once with --kelf --ignore-dwarf. * testsuite/systemtap.context/context.exp: Add num_args to testlist. :-} 2008-06-10 David Smith * tapsets.cxx (utrace_derived_probe_group::emit_probe_decl): Initializes .vm_callback. 2008-06-10 Frank Ch. Eigler PR 6470 * NEWS: Note argv[] tapset. * parse.cxx (scan_pp): Better handle premature EOF. * stapvars.5.in: New file. * stap.1.in: Mention it. * Makefile.am (dist_man_MANS): Add stapvars.5. * configure.ac (AC_CONFIG_FILES): Add stapvars.5.in. * Makefile.in, configure: Regenerated. 2008-06-10 Frank Ch. Eigler PR 6470 * parse.cxx (scan_pp): Eliminate expand_args argument to control nested preprocess evaluation. Rewrite to use a combination of exceptions and non-recursion. (lexer::scan): Ditto. Interpret "$#" as the argc value in all cases. * parse.h: Corresponding decl changes. 2008-06-10 Frank Ch. Eigler PR 6470 * parse.cxx (eval_comparison): New template function. (eval_pp_conditional): Call it separately for string/string and int64/int64 cases. (lexer::scan): Provide better error message for invalid $NNN. 2008-06-09 Jim Keniston PR 6601 * tapsets.cxx: For powerpc, reject symbols in .opd (function descriptor) section. 2008-06-09 Stan Cox * NEWS: Updated kernel.statement relative line number. * stapprobes.5.in: Likewise. 2008-06-09 David Smith * tapsets.cxx (utrace_var_expanding_copy_visitor::visit_target_symbol): Calls 'syscall_nr' to get the value of '$syscall'. * tapsets.cxx (utrace_derived_probe::join_group): Removed generated inclusion of tracehook.h. (utrace_var_expanding_copy_visitor::visit_target_symbol): Uses '_stp_arg(0)' to get value of '$syscall'. 2008-06-06 Stan Cox * tapsets.cxx (dwflpp::iterate_over_srcfile_lines): Add parameter line_type_relative. (enum line_t): New. (dwarf_query::line_type): New. (dwarf_query::parse_function_spec): Set line_type. 2008-06-06 David Smith * NEWS: Updated utrace probes descriptions. * stapprobes.5.in: Ditto. * tapsets.cxx (enum utrace_derived_probe_flags): Redefined in terms of probe types instead of utrace events. (utrace_var_expanding_copy_visitor::visit_target_symbol): Uses new utrace_derived_probes_flags values. (utrace_builder::build): Handles new probe types and new utrace_derived_probes_flags values. (utrace_derived_probe_group::emit_probe_decl): Updated to handle new utrace_derived_probe_flags values. (utrace_derived_probe_group::emit_module_decls): Ditto. Also correctly handles 'begin' events correctly by installing a quiesce handler (instead of running the probe directly). (register_standard_tapsets): Registers updated utrace probe types. 2008-06-05 Srinivasa DS *configure,configure.ac: -fpie option puts limit on GOT size and hence systemtap build fails on s390. So use -fPIE which doesn't put limit on GOT size. 2008-06-04 Jim Keniston * testsuite/systemtap.context/num_args.{stp,tcl}: Added. Same as args.{stp,tcl}, but refs args using *_arg(). 2008-06-04 Jim Keniston PR 6588 * tapset/syscalls.stp: Remove return aliases for exit and exit_group. * testsuite/semok/syscalls_return.stp: Regression test 2008-06-03 David Smith * tapsets.cxx: Added several string tokens that are used instead of hard-coded strings. (register_standard_tapsets): Uses new string tokens. 2008-06-03 Frank Ch. Eigler PR 6429. * Makefile.am: Don't link stapio with -ldw. * Makefile.in: Regenerated. 2008-05-29 Mark Wielaard * Makefile.am (installcheck): Check that make install was run. * Makefile.in: Regenerated. 2008-06-02 Frank Ch. Eigler PR6534 * translate.cxx (c_unparser::emit_module_init): Use UTS_RELEASE instead of uts_sem/utsname() as kernel version-checking hack. 2008-06-02 Dave Brolley * stap-client (initialization): port is no longer hard coded. Initialize avahi_service_tag to _stap._tcp. (find_and_connect_to_server): Handle server/port returned by match_server. (match_server): Obtain server ip address and port from output of the -r option to avahi-browse. Echo a server/port pair. 2008-06-02 Zhaolei * main.cxx (main): Fix the problem that kernel module compile failure when runtime directory is set to relative path(stap -R). 2008-05-30 Dave Brolley * stap-client, stap-server: New compile server and client scripts. 2008-05-30 Srinivasa DS PR 6562 * tapsets.cxx, translate.cxx: modified one argument for dwfl_linux_kernel_report_offline(). * testsuite/systemtap.base/debugpath.exp: Modified testsuite for new SYSTEMTAP_DEBUGINFO_PATH behaviour. * stap.1.in: Modified manpage for new SYSTEMTAP_DEBUGINFO_PATH behaviour. 2008-05-29 Jim Keniston PR 6582 * tapset/context.stp: Added registers_valid(). * stapfuncs.5.in: Ditto. * tapset/x86_64/registers.stp: Added registers_valid() check. * tapset/ppc64/registers.stp: Ditto. * tapset/i686/registers.stp: Ditto. Also fixed warnings due to sp_offset and ss_offset not being global. 2008-05-29 Ananth N Mavinakayanahalli PR 6563 * tapset/ppc64/registers.stp: Fix powerpc dwarfless argument access 2008-05-28 Josh Stone PR 6529 * translate.cxx (c_unparser::visit_return_statement): Make sure we notice errors from evaluating return values. 2008-05-28 David Smith * tapsets.cxx (utrace_derived_probe_group::emit_module_decls): Removed debug print. * tapsets.cxx (utrace_derived_probe_group::emit_probe_decl): Instead of adding clone handlers, just call the probes directly. (utrace_derived_probe_group::emit_module_decls): For syscall probes, on exec detach the parent's utrace engine from the child. 2008-05-27 Josh Stone PR 6432 * buildrun.cxx (compile_pass): Add the autoconf test for probe_kernel_* functions, but leave it #if-0'ed for now. 2008-05-23 Jim Keniston PR 4311, cont. Address powerpc dwarfless test failures. * tapsets.cxx: Convert .funcname to funcname when adding it to our symbol table. Accept all weak symbols except those that map to sys_ni_syscall. 2008-05-23 Srinivasa DS PR 6429: Inerim fix to avoid compilation error of systemtap module * runtime/transport/symbols.c: added definitions of struct module_sect_attr, struct module_sect_attrs for 2.6.25 above kernels. 2008-05-22 Wenji Huang * tapsets.cxx (iterate_over_functions): Fix .statement(NUM) regression. 2008-05-22 Ananth N Mavinakayanahalli * tapset/ppc64/registers.stp: Support powerpc register + arg lookup * stapfuncs.5.in: Add powerpc bits; indicate scope of uarg_* access 2008-05-21 David Smith * tapsets.cxx (utrace_derived_probe_group::emit_module_decls): Added new 'event_flag' parameter to task_finder callback. Only calls probe handlers if we received the correct event. 2008-05-20 Frank Ch. Eigler PR 6538 * elaborate.cxx (semantic_pass_opt2): Warn about read-only locals and globals. (visit_foreach_loop): Belatedly recognize index symbols as lvalues. 2008-05-21 Stan Cox * elaborate.cxx (dead_assignment_remover::visit_binary_expression): New. (dead_assignment_remover::visit_assignment): Allow rhs simplification. 2008-05-20 Tim Moore * configure.ac: Check for tr1/unordered_map header. * tapsets.cxx: Use tr1::unordered_map if available. * configure, config.in: Regenerated. 2008-05-19 Stan Cox * elaborate.cxx (dead_assignment_remover::visit_arrayindex): New method. (dead_assignment_remover::visit_functioncall): New method. (dead_assignment_remover::visit_if_statement): New method. (dead_assignment_remover::visit_for_loop): New method. 2008-05-19 William Cohen * main.cxx (setup_signals): Remove sa_restorer initialization. 2008-05-17 Frank Ch. Eigler * elaborate.cxx (semantic_pass): Error on #probes=0, but not in listing mode. (semantic_pass_optimize[12]): Remove inappropriate check from here. 2008-05-17 Frank Ch. Eigler * tapsets.cxx (cu_function_cache_t): Switch to s, since these tables tend to get pretty big. 2008-05-16 Frank Ch. Eigler PR 5643 * tapsets.cxx (cu_function_cache_t): Reorganize into mod:cu->function->DIE lookup table. Consider merging into symtab later. (mark_dwarf_redudancies): Adapt. (iterate_over_functions): Rewrite. (dwarf_builder::build): Cache kprobes etc. symbol addresses. * elaborate.cxx (systemtap_session ctor): Clear additional POD fields. 2008-05-15 David Smith * main.cxx (setup_signals): New function. (main): Calls setup_signals() to setup signal handling. When removing the temporary directory, ignore signals. 2008-05-13 Ananth N Mavinakayanahalli PR 5955. * parse.cxx (parser::parse_global): accept ";" terminated globals * NEWS - update documentation * testsuite/systemtap.base/global_vars.(stp/exp) - supporting tests * testsuite/parseko/twenty(four/five).stp - supporting tests 2008-05-12 Jim Keniston PR 4311 - Function boundary tracing without debuginfo: Phase II Merged dwarfless branch into mainline. But first... * runtime/regs.c: Removed register name:value lookup facility. Moved basically all register-lookup code to the i686 and x86_64 registers.stp tapsets. Args stuff shared between i386 and x86_64 remains in regs.c. * tapset/{i686,x86_64}/registers.stp: Moved register-lookup code from runtime/regs.c to here. 2008-05-12 Jim Keniston (2008-05-06 in dwarfless branch) PR 4311 - Function boundary tracing without debuginfo: Phase II * stapfuncs.5.in: Added sections on CPU REGISTERS and NUMBERED FUNCTION ARGUMENTS. 2008-05-12 Jim Keniston (2008-05-05 in dwarfless branch) PR 4311 - Function boundary tracing without debuginfo: Phase II * runtime/regs.c: Added register name:value lookup facility. Added support for register and arg lookup for i386 and x86_64. * tapset/{i686,x86_64}/registers.stp: New: support for register and arg lookup. * tapsets.cxx, translate.cxx: Added regparm field to struct context. * tapset/nd_syscall.stp: syscall.stp migrating toward numbered args rather than named args. 2008-05-12 Jim Keniston (2008-04-18 in dwarfless branch) PR 4311 - Function boundary tracing without debuginfo: Phase I * tapsets.cxx: Major rework of dwflpp, dwarf_query, and related code to make do with elf info if dwarf info is absent, or (in the case of vmlinux) make do with a System.map-style symbol table if even the elf file is absent. * main.cxx: Use getopt_long instead of getopt. Added --kelf, --kmap, --ignore-vmlinux, and --ignore-dwarf. * hash.cxx, session.h, stap.1.in: Added --kelf, --kmap, --ignore-vmlinux, and --ignore-dwarf. * testsuite/{semok,semko}/nodwf*.stp 2008-05-07 Frank Ch. Eigler PR 6492. * main.cxx (main): let -l imply -w. 2008-05-05 Frank Ch. Eigler PR 444886. From : * tapsets.cxx, translate.cxx: Add .../build/... to default debuginfo path, to ease search for hand-built kernels. 2008-05-01 Frank Ch. Eigler PR 6474 * configure.ac (--enable-pie): Add default option. * Makefile.am (stap* binaries): Use -fpie/-z relro/-z now as applicable. * configure, aclocal.m4, Makefile.in, doc/Makefile.in: Regenerated. 2008-04-30 Masami Hiramatsu PR 6008 * main.cxx (main): Increase the limitation of buffer size to 4095MB. * staprun.8.in: Ditto. 2008-04-29 Frank Ch. Eigler PR 6466 * elaborate.cxx (dead_stmtexpr_remover): Expand scope to kill far more side-effect-free statemnets, including if/for/foreach. (semantic_pass_opt4): Warn on elided function/probe bodies. (typeresolution_info::visit_target_symbol): Dump parse tree of resolution-challenged functions/probes. (*): Adapt to probe->body being a statement* rather than a block*. * tapsets.cxx (*): Ditto. * staptree.cxx (block::block ctor): New cons constructor. * staptree.h: Corresponding changes. 2008-04-29 David Smith * tapsets.cxx (utrace_derived_probe_group::emit_probe_decl): Added death event handlers to ensure that for every utrace_attach there is a corresponding utrace_detach. (utrace_derived_probe_group::emit_module_decls): Ditto. 2008-04-28 Frank Ch. Eigler * translate.cxx (translate_pass): Don't #define TEST_MODE. 2008-04-26 Frank Ch. Eigler * tapsets.cxx (common_probe_entryfn_prologue): Undo clear of overload-related context vars; add explanation why. 2008-04-25 Frank Ch. Eigler * systemtap.spec.in: Simplify configuration defaults. 2008-04-25 David Smith PR 6455. * tapsets.cxx (mark_builder::build): Handles markers with no format string. 2008-04-24 Frank Ch. Eigler PR 6454. * main.cxx (printscript): Avoid string truncation heuristics, and also avoid plain probe::printsig. Hold nose and dig down into raw location lists instead. 2008-04-24 Will Cohen * aclocal.m4: Regenerated. * Makefile.am (example/*): Moved to testsuite/systemtap.examples. * Makefile.in: Regenerated. 2008-04-23 Frank Ch. Eigler From: Srinivasa DS * tapsets.cxx (blacklisted_p): Blacklist more init/exit sections. 2008-04-23 Frank Ch. Eigler * tapsets.cxx (common_probe_entryfn_prologue): Clear overload-related context vars. 2008-04-22 hunt * staprun.8.in: Add documentation for -d option. 2008-04-22 David Smith * tapsets.cxx (utrace_derived_probe_group::emit_module_decls): Removed debug statements. 2008-04-18 David Smith * tapsets.cxx (struct utrace_builder): Added exec probes. (utrace_derived_probe_group::emit_probe_decl): Ditto. (utrace_derived_probe_group::emit_module_decls): Ditto. (register_standard_tapsets): Ditto. * stapprobes.5.in: Added information about exec probes. * NEWS: Added information about utrace probes. * stapprobes.5.in: Added information about utrace probes. 2008-04-17 Josh Stone * tapsets.cxx (build_blacklist): Fix regexps for atomics. * vim/syntax/stap.vim: Recognize the 'limit' keyword and script arguments, allow '$' in variable names, and highlight $target variables. 2008-04-17 David Smith * tapsets.cxx (utrace_builder::build): Make sure that the PATH of 'process("PATH")' probes is an absolute path. (utrace_derived_probe_group::emit_module_decls): Made calls to utrace probe handler functions conditional on which types of utrace probes are going to be output. 2008-04-16 Frank Ch. Eigler * tapsets.cxx (task_finder_derived_probe): Add dummy constructor for old (RHEL4) gcc compatibility. 2008-04-16 Frank Ch. Eigler PR 6417: From Srinivasa DS : * tapsets.cxx (build_blacklist): Extend. 2008-04-15 David Smith * session.h (struct systemtap_session): Added utrace_derived_probe group and task_finder_derived_probe_group members. * elaborate.cxx (systemtap_session::systemtap_session): Added initialization of utrace_derived_probes and task_finder_derived_probes. * tapsets.cxx (struct task_finder_derived_probe_group): New derived_probe_group to handle task_finder framework. (struct utrace_derived_probe_group): New derived_probe_group to handle utrace probes. 2008-04-15 Frank Ch. Eigler PR 6405 cont'd. * Makefile.am (AM_CFLAGS): Remove -Wshadow, as it triggers for new stapio (modname global vs. dwfl headers). 2008-04-15 Frank Ch. Eigler PR 6405 * buildrun.cxx (compile_pass): Add STAPCONF_MODULE_NSECTIONS. 2008-04-14 David Smith * elaborate.h (struct derived_probe_group): Removed emit_module_header virtual function. * translate.cxx (c_unparser::emit_common_header): Removed calls to emit_module_header function. * tapsets.cxx (be_derived_probe>): Removed emit_module_header function. (struct timer_derived_probe_group): Ditto. (struct profile_derived_probe_group): Ditto. (struct procfs_derived_probe_group): Ditto. (struct hrtimer_derived_probe_group): Ditto. (struct perfmon_derived_probe_group): Ditto. (dwarf_derived_probe_group::emit_module_decls): Moved kernel check back from deleted emit_module_header function. (uprobe_derived_probe_group::emit_module_decls): Ditto. (mark_derived_probe_group::join_group): Moved marker kernel check (to a new embedded code section) from deleted emit_module_header function. 2008-04-14 Frank Ch. Eigler * Makefile.am (stapio_*): Become able to link/compile against bundled elfutils. * Makefile.in: Regenerated. 2008-04-09 Martin Hunt * buildrun.cxx (run_pass): Remove unused "-d" option passed to staprun. * translate.cxx (emit_symbol_data): When available, grab symbols from debuginfo instead of /proc/kallsyms. 2008-04-11 David Smith * elaborate.h (struct derived_probe_group): Added emit_module_header virtual function. * translate.cxx (c_unparser::emit_common_header): Calls each probe group's emit_module_header function. (translate_pass): Moved inclusion of linux/marker.h to mark_derived_probe_group::emit_module_header(). * tapsets.cxx (struct be_derived_probe_group): Added empty emit_module_header function. (struct timer_derived_probe_group): Ditto. (struct profile_derived_probe_group): Ditto. (struct procfs_derived_probe_group): Ditto. (struct hrtimer_derived_probe_group): Ditto. (struct perfmon_derived_probe_group): Ditto. (dwarf_derived_probe_group::emit_module_header): Moved kprobes kernel check from emit_module_decls() to here. (uprobe_derived_probe_group::emit_module_header): Moved uprobe kernel check from emit_module_decls() to here. (uprobe_derived_probe_group::emit_module_decls): Moved uprobe kernel check to emit_module_header(). (mark_derived_probe_group::emit_module_header): Moved marker kernel check from emit_module_decls and translate_pass() to here. (uprobe_derived_probe_group::emit_module_decls): Moved marker kernel check to emit_module_header(). 2008-04-10 Frank Ch. Eigler PR 2949. * session.h (listing_mode): New field. * main.cxx (main): Test it. Enjoy it. (printscript): Do it. (usage): Document it. * stap.1.in, stapex.5.in: Ditto. * elaborate.cxx (print_error): Disable error messages in listing mode. 2008-04-10 Frank Ch. Eigler PR 6393 cont'd. * Makefile.am: Also copy RadeonHD.am fragment to force git_version.h regeneration at every make, and also special tagging for "make dist". Thanks . 2008-04-10 Frank Ch. Eigler PR 6393. * git_version.sh: New file, copied from radeonhd. * configure.ac: No longer generate $builddir/SNAPSHOT. * Makefile.am: Generate $builddir/git_version.h. (EXTRA_DIST): Add git_version.h and git_version.sh. * main.cxx (version): Print generated GIT_MESSAGE therefrom. * Makefile.in, configure: Regenerated. 2008-04-09 David Smith * .gitignore: Added more files to ignore. 2008-04-04 Masami Hiramatsu PR 6028 * translate.cxx (c_unparser::emit_common_header): Add unwaddr for caching unwound address. * tapsets.cxx (common_probe_entryfn_prologue): Clear unwaddr. 2008-04-01 Frank Ch. Eigler * safety/*: Removed subdirectory containing abandoned experiment. 2008-03-31 Frank Ch. Eigler * configure.ac: Bump version to 0.7. * configure: Regenerated. 2008-03-27 Frank Ch. Eigler * tapsets.cxx (common_probe_entryfn_prologue): Clear last_stmt. 2008-03-26 Frank Ch. Eigler * translate.cxx (emit_function): Set context last_stmt, in case an error occurs during the function. 2008-03-25 Frank Ch. Eigler * stap.1.in: Clarify utility of epilogue type probe aliases. 2008-03-21 Eugene Teo PR 5528 * tapset/conversions.stp (user_string_n, user_string_n2, user_string_n_warn, user_string_n_quoted, user_short, user_short_warn, user_int, user_int_warn, user_long, user_long_warn, user_char, user_char_warn): New user_* functions. * stapfuncs.5.in: Documented the new functions. * testsuite/systemtap.stress/conversions.stp: Test new functions. * testsuite/buildok/conversions.stp: Test new functions. * testsuite/buildok/conversions-embedded.stp: Test new functions. 2008-03-20 Frank Ch. Eigler PR 5975. * tapsets.cxx (*): Added a few (void) expressions for asserts that may be compiled out. 2008-03-14 Masami Hiramatsu PR 3542 * buildrun.cxx (compile_pass): Add an autoconf to check the kernel supports batch unregistration. * tapsets.cxx (dwarf_derived_probe_group::emit_module_decls): Add an array of probe pointers for batch unregistration. * tapsets.cxx (dwarf_derived_probe_group::emit_module_exit): Use unregister_k(ret)probes if it is supported. 2008-03-13 Frank Ch. Eigler PR 5928. * buildrun.cxx (compile_pass): Use EXTRA_CFLAGS for autoconf'd values instead of CFLAGS_.o. 2008-03-12 Frank Ch. Eigler * configure.ac, systemtap.spec.in: Bumped version to 0.6.2. * configure: Regenerated. 2008-03-12 Dave Brolley PR5897 * staptree.cxx (probe::printsig): If this probe was derived from an alias, call the printsig method of the alias. 2008-03-10 Dave Brolley PR5189 * translate.cxx (probe_or_function_needs_deref_fault_handler): New member of c_unparser. (c_unparser::emit_function): Initialize probe_or_function_needs_deref_fault_handler. Check it after the body is visited and generate a deref fault handler if necessary. (c_unparser::emit_probe): Likewise. (c_unparser::visit_print_format): Correct the compoenent type for an overridden string literal. Generate code to check that pointer arguments to %m can be dereferenced. Generate casts for printf arguments as necessary. * elaborate.cxx (typeresolution_info::visit_print_format): Desired type for conv_memory is pe_long. 2008-03-06 Frank Ch. Eigler * Makefile.am (AM_CXXFLAGS, AM_CFLAGS): Remove -Werror. * Makefile.in, doc/Makefile.in: Regenerated. 2008-03-03 Frank Ch. Eigler PR5516 * elaborate.cxx (symbol_fetcher, dead_assignment_remover): Support unresolved $target lvalues. Propagate pretty error messages. * staptree.cxx (varuse_collecting_visitor target_symbol): Ditto. * staptree.h: Corresponding decl. * loc2c.c: c_translate_pointer_store: New function. * loc2c.h: Corresponding decl. * tapsets.cxx (dwflpp::translate_final_fetch_or_store): Call it for $target pointer assignments. 2008-02-29 Will Cohen * main.cxx (handle_interrupts): Make compatible with GCC 4.3. 2008-02-28 Frank Ch. Eigler PR5045 * session.h (pending_interrupts): New global. * main.cxx (handle_interrupts): New fn to handle SIGINT* etc. * elaborate.cxx, translate.cxx, tapsets.cxx, main.cxx (*): Insert pending_interrupts escape hatches inside potentially timetaking loops. * buildrun.cxx: Don't deal with signals. 2008-02-27 Frank Ch. Eigler PR5697 * configure.ac (enable-docs): Implement. * systemtap.spec.in: Add optional docs build/install/prereqs. * Makefile.am (SUBDIRS): Add doc. * Makefile.in, configure: Regenerated. 2008-02-27 Dave Brolley PR5189 * staptree.h (print_format::conv_memory): New enumerator. (print_format::width_type): New enumeration. (print_format::precision_type): New enumeration. (format_component::widthtype): New member. (format_component::prectype): New member. (format_component::is_empty): Test widthtype and prectype. (format_component::clear): Clear widthtype and prectype. * staptree.cxx (print_format::components_to_string): Handle dynamic width and precision. Handle conv_memory. (print_format::string_to_components): Parse dynamic width and precision specifiers. Set widthtype and prectype. Parse %m format specifier. * elaborate.h (typeresolution_info::check_arg_type): New method. * elaborate.cxx (typeresolution_info::visit_print_format): Account for dynamic width and precision when computing the expected number of arguments. Check the types of arguments for dynamic width and precision. Use check_arg_type to check the types of all arguments. Handle print_format::conv_memory. (typeresolution_info::check_arg_type): New method. * NEWS: Describe the enhancements above. 2008-02-27 David Smith PR5729 * systemtap.spec.in: Adds examples to the testsuite rpm so that systemtap.samples/examples.exp works correctly. 2008-02-26 Dave Brolley PR5018 * staprun.8.in: Escape dashes ('-') as appropriate. 2008-02-26 Srinivasa DS PR5772 * tapset/syscall2.stp: Modify wait4,waitid argument list for kernel > 2.6.24. 2008-02-25 Frank Ch. Eigler PR5792. * parse.cxx (eval_pp_conditional): Support wildcards in %( kernel_v/kernel_vr/arch ==/!= "*foo?" %) operands. * NEWS, stap.1.in: Document this. 2008-02-22 Frank Ch. Eigler PR5787, PR2608, .statement() * tapsets.cxx (query_dwarf_func): Process .statement(NUM) probes too. (query_cu): Ditto. (query_func_info): Bypass prologue searching for .statement() probes. (query_cu): Ditto. (build_blacklist): Remove unsightly empty first alternative in "^(|foo)$" regexps. Show them for -vvv. * buildrun.cxx (compile_pass): Don't turn on "gcc -Q" on until -vvvv. 2008-02-20 David Smith * tapsets.cxx (struct mark_derived_probe): Renamed 'probe_sig' to 'probe_format'. (mark_derived_probe::mark_derived_probe): Added new "format" probe point component. (mark_derived_probe::parse_probe_format): Renamed from 'mark_derived_probe::parse_probe_sig'. (struct mark_builder): Added typedefs. Converted mark_cache from a map to a multimap to handle markers with the same name but different formats. (mark_builder::build): Added new 'format' probe parameter. (register_standard_tapsets): Added new 'format' marker probe optional parameter. * stapprobes.5.in (parts): Documented new "format" probe component. 2008-02-19 Roland McGrath * tapsets.cxx (query_module): Use dwfl_module_getdwarf rather than dwfl_module_getelf for e_machine check. (dwarf_query::get_blacklist_section): Likewise for section search. Ignore non-SHF_ALLOC sections. 2008-02-19 Frank Ch. Eigler * tapsets.cxx (query_module): Tweak elf-machine checking to better represent elfutils idioms. 2008-02-19 Frank Ch. Eigler PR 5766. * tapsets.cxx (build_blacklist): Switch (back) to regexp-based blacklist construction ... (blacklist_p): ... and querying. 2008-02-19 David Smith PR 5672. * tapsets.cxx (mark_derived_probe): Call probe_point copy ctor to shallow-copy incoming base probe location before recomputing/overwriting it. 2008-02-18 Frank Ch. Eigler * NEWS, stapprobes.5.in: Document basic (non-symbolic prototype) user-space probe points. 2008-02-15 Frank Ch. Eigler * tapsets.cxx (function_name_last_match): New function. (query_dwarf_func): Call it to stop unnecessary further iteration. 2008-02-13 Frank Ch. Eigler PR 5759 * tapsets.cxx (build_blacklist): Add some CONFIG_PREEMPT-related functions. 2008-02-13 Dave Brolley PR5609 * staptree.h (probe::collect_derivation_chain): Now takes vector. (probe::get_alias): New virtual method. * elaborate.h (derived_probe::collect_derivation_chain): Now takes vector. * staptree.cxx (probe::collect_derivation_chain): Now takes vector. Don't cast 'this' to (derived_probe*). * elaborate.cxx (derived_probe::collect_derivation_chain): Now takes vector. (alias_derived_probe::get_alias): New virtual method. (alias_derived_probe::alias): New member. (alias_expansion_builder::build): Call checkForRecursiveExpansion and emit a diagnostic if recursion is detected. Pass alias to constructor of alias_derived_probe. (alias_expansion_builder::checkForRecursiveExpansion): New method. * coveragedb.cxx: Pass vector on all calls to collect_derivation_chain. 2008-02-12 Frank Ch. Eigler PR 4393 * tapsets.cxx (emit_address): Support relocatable kernels. (dwarf_derived_probe ctor): Hack around for missing USHRT_MAX. * elaborate.cxx (semantic_pass): Increment rc if exception caught. 2008-02-12 Martin Hunt PR 5757 * tapsets.cxx, translate.cxx: Cleanup indentation a bit. 2008-02-11 Jim Keniston PR 5693 * runtime/uprobes/uprobes.c: Intercept handler-destined signals received while we're single-stepping, and re-queue them afterward. * runtime/uprobes/uprobes.h: Ditto 2008-02-09 Frank Ch. Eigler PR5750. From Eugeniy Meshcheryakov eugen@debian.org: * configure.ac (HAVE_LIBSQLITE3): Complete AC_DEFINE. * configure, INSTALL, missing, compile, depcomp, install-sh: autoreconf -fi'd. 2008-02-09 Frank Ch. Eigler PR 5751. * configure.ac: Add -Werror to trial compilation with -fstack-protector-all, for hosts that don't quite support it. * configure: Regenerated. 2008-02-08 David Smith PR 5650 * systemtap.spec.in: Further simplification. 2008-02-07 Frank Ch. Eigler * buildrun.cxx (run_make_cmd, compile_pass): Tweak kbuild parametrization to produce useful compile logs at -vv. 2008-02-04 David Smith PR 4446 (partial) * tapsets.cxx (mark_var_expanding_copy_visitor::visit_target_symbol_arg): New function. (mark_var_expanding_copy_visitor::visit_target_symbol_format): New function. (mark_var_expanding_copy_visitor::visit_target_symbol): Handles "$arg" or "$format". (mark_derived_probe_group::emit_module_decls): Sets up "$format" data. PR 5650 (parital) * systemtap.spec.in: Moved %pre section to the systemtap-runtime rpm. 2008-01-30 David Smith PR 5650 * systemtap.spec.in: Simplified and explicitly specifies configure options. 2008-01-30 Dave Brolley * coveragedb.cxx (print_coverage_info): Fix typo: s.probes -> s.unused_probes where appropriate. (sql_update_unused_probes): Likewise. 2008-01-29 Frank Ch. Eigler PR 5647 * configure.ac (--enable-ssp): Make default on compilers that support it. * configure: Regenerated. 2008-01-28 David Smith * configure.ac: Fixed a bug when "--disable-permon" was used. Added "--enable-crash" option. * configure: Regenerated. * Makefile.am: Improved staplog.so compile command. * Makefile.in: Regenerated. * tapsets.cxx (dwarf_derived_probe_group::emit_module_decls): Added 'const' to several members of stap_dwarf_probes. PR 5685. From Eugeniy Meshcheryakov * configure.ac: If "--enable-sqlite" is specified, define HAVE_LIBSQLITE3. * configure: Regenerated. 2008-01-26 Frank Ch. Eigler PR 5673. * tapsets.cxx (dwarf_derived_probe_group): Split stap_dwarf_probes[] into bss-carried kprobes structs. Tune embedded strings for minimizing relocation-vs-fixed-buffer wastage. * tapsets.cxx (dwarf_derived_probe): Impose .maxactive() limits. 2008-01-25 Jim Keniston * runtime/uprobes/uprobes.c: Within a probed process, serialize calls to access_process_vm() when populating instructions slots. Fixes an SMP bug on multithreaded apps with many active probepoints. * runtime/uprobes/uprobes.h: Ditto 2008-01-25 Frank Ch. Eigler PR 5672. * staptree.cxx (probe_point copy ctor): New function. * staptree.h: Declare it. * tapsets.cxx (dwarf_derived_probe ctor): Call it to shallow-copy incoming base probe location before recomputing/overwriting it. 2008-01-25 David Smith * configure.ac: Compressed the two perfmon options into one. Made other small fixes and whitespace changes. * configure: Regenerated. 2008-01-24 Frank Ch. Eigler * Makefile.am: Make another $(MKDIR) call visible. * Makefile.in: Regenerated. 2008-01-24 David Smith PR 5661 (reverted). * configure.ac: Removed elfutils version number check. * configure: Regenerated. * acsite.m4: Removed. * systemtap.spec.in: Minimum elfutils version number is no longer filled in by configure. PR 5650 (partial). * configure.ac: Handles sqlite optional functionality correctly. If enabled/disabled by the user, do the right thing. If not specified by the user, use it if present. * configure: Regenerated. * systemtap.spec.in: Always specify to configure whether to use sqlite or not. 2008-01-24 Dave Brolley PR 5017. * staptree.cxx (): #include it. (required ): Remove 'static' from instantiation and move instantiation to here from... * staptree.h: ...here. 2008-01-23 David Smith PR 5661. * configure.ac: Checks elfutils version number. * acsite.m4: New file containing macro to return elfutils version number. * configure: Regenerated. * systemtap.spec.in: Minimum elfutils version number is now filled in by configure. 2008-01-23 Dave Brolley PR 5613. * translate.cxx (var::fini): New method. (c_unparser::emit_module_init): Call var::fini when deregistering variables without indices. (c_unparser::emit_module_exit): Likewise. 2008-01-23 Frank Ch. Eigler PR 2151. * tapsets.cxx (dwflpp::setup): Parametrize debuginfo_path. * stap.1.in: Document this. 2008-01-22 Jim Keniston * runtime/uprobes/uprobes.c: Fix from Srinivasa: Recast rcu_dereferences of engine->data to resync with kernel.org builds. 2008-01-18 Srinivasa DS PR 5549 * buildrun.cxx : Verify whether kernel has register rename patch through autoconf files. * runtime/(loc2c-runtime.h, procfs.c, regs.c, regs.h, stack-i386.c, autoconf-x86-uniregs.c, autoconf-nameidata.c) : Use appropriate register name at runtime, based on whether kernel has register rename patch or not. 2008-01-18 Jim Keniston * runtime/uprobes/uprobes.c: Added static copy of access_process_vm(), for kernels that don't export it. 2008-01-18 Frank Ch. Eigler * configure.ac, systemtap.spec.in: Update version to 0.6.1 * configure: Regenerated. 2008-01-17 Srinivasa DS PR 5483 * tapsets.cxx : Possible fix for making systemtap compatible with the elfutils-0.131 2008-01-17 Frank Ch. Eigler PR 4935. Reorganize probe condition implementation. * elaborate.cxx (add_condition): New function. (derived_probe): Remove condition member. (derived_probe ctors): Assert non-null incoming probe/location ptrs. (insert_condition_statement): Remove; turn into ... (semantic_pass_conditions): New pass-2 subpass. (semantic_pass_symbols, visit_symbol, visit_functioncall, find_var): Detect some condition-related error cases. (match_key): Change type to exp_type from tok_type. Update callers. (alias_expansion_builder): Propagate probe conditions. * staptree.cxx (probe): Remove condition field and related functions. * tapsets.cxx (dwarf_derived_probe ctor): Compute replacement wildcard-expanded probe_point preserving more of the original location. (mark_derived_probe ctor): Make similar to others - take location rather than condition parameters. * translate.cxx (emit_common_header): Tweak ordering of tmpcounter traversal and hashkey expression generation. * elaborate.h: Corresponding changes. 2008-01-17 David Smith * tapsets.cxx (procfs_var_expanding_copy_visitor::visit_target_symbol): Print an error when trying to use the procfs target variable '$value' as an array or structure. (perfmon_var_expanding_copy_visitor::visit_target_symbol): Print an error when trying to use the perfmon target variable '$counter as an array or structure. 2008-01-17 Srinivasa DS PR 5483. * tapsets.cxx (emit_address): Tolerate dummy relocation entry added for kernel by recent elfutils. 2008-01-16 David Smith PR 5608. * tapsets.cxx (mark_var_expanding_copy_visitor::visit_target_symbol): Print an error when trying to use a marker argument as an array or structure. 2008-01-16 Eugene Teo * stapfuncs.5.in: Document signal.stp tapset functions. 2008-01-14 Martin Hunt * translate.cxx (emit_module_init): Call _stp_print_kernel_info() to print out version information and internal memory usage stats. 2008-01-14 Martin Hunt * translate.cxx (emit_module_exit): When using timing, delete timing stats when finished. 2008-01-12 Frank Ch. Eigler * configure.ac: Generate a build tree SNAPSHOT file from git-rev-list, if we suspect the source tree came from git. * configure: Regenerated. 2008-01-12 Frank Ch. Eigler PR 5603. * configure.ac: Add "--enable-ssp" to select -fstack-protector-all and similar runtime checking directives. * configure: Regenerated. 2008-01-09 David Smith * systemtap.spec.in: Since "make check" was removed from the rpm build step, we no longer need to require dejagnu at build time. 2008-01-09 Frank Ch. Eigler * tapsets.cxx (dwflpp::setup): Improve missing kernel-debuginfo message. 2008-01-02 Frank Ch. Eigler From Mark McLoughlin : * main.cxx (main): Set/restore umask around mkdtemp(). 2007-12-27 Jim Keniston * runtime/uprobes/uprobes_x86_64.c: Fix handling of indirect jmps and calls that use rip-relative addressing. Allow probing of opcode 0x63. 2007-12-13 Masami Hiramatsu * stap.1.in: Document about relay buffer sharing. * NEWS: Document about relay buffer sharing and staplog crash extension. 2007-12-12 Wenji Huang PR 5470 * parse.cxx (parser::parse_probe_point): Add checking pointer t. 2007-12-11 Frank Ch. Eigler * staptree.cxx, staptree.h: More GCC 4.3 build fixes from Eugeniy Meshcheryakov . 2007-12-05 William Cohen * systemtap.spec.in: Correct Source to point to location contain code. 2007-12-05 Masami Hiramatsu PR 4935 * tapsets.cxx (dwarf_derived_probe::dwarf_derived_probe): Allow user to access kernel variables in the condition of probe points. * stapprobes.5.in : Document the conditional probe point. * NEWS : Ditto. 2007-12-03 Masami Hiramatsu PR 5376 * parse.cxx (lexer::scan): Treat '*' as an alphabet if the wildcard flag is true. (parser::parse_probe_point): Call parser::next() with wildcard = true. (parser::scan_pp): Add wildcard flag and pass it to lexer::scan. (parser::next): Ditto. (parser::peek): Ditto. * parse.h : Ditto. 2007-12-01 Frank Ch. Eigler * gen-stapmark.h, stapmark.h: Retire. 2007-11-29 David Smith * tapsets.cxx (mark_derived_probe::initialize_probe_context_vars): Handles the case where one marker has more than one string argument. 2007-11-27 David Smith PR 5377. * elaborate.cxx (match_node::find_and_build): Handle wildcards in probe points correctly. 2007-11-26 Frank Ch. Eigler * elaborate.cxx (derived_probe ctor): Don't duplicate condition if it doesn't exist. * staptree.cxx (probe_point, probe ctors): Initialize to 0. 2007-11-20 Masami Hiramatsu PR 4935. * parse.cxx (parser::parse_probe_point): Parse "if" condition following probe point. * staptree.h (probe_point): Add "condition" field. (probe): Add "condition" field and "add_condition" method. (deep_copy_visitor): Add "deep_copy" method for the expression. * staptree.cxx (probe_point::probe_point): Initalize it. (probe::add_condition): Implement it. (probe::print): Output "condition" field. (probe::str): Ditto. (deep_copy_visitor::deep_copy): Implement it. * elaborate.h (derived_probe): Add "insert_condition_statement" method. * elaborate.cxx (derived_probe::derived_probe): Initialize "condition" field, and insert a condition check routine on the top of body. (derived_probe::insert_condition_statement): Implement it. (alias_expansion_builder::build): Pass the condition from the alias referer to new alias. * tapsets.cxx (be_derived_probe): Remove unused constructor. (dwarf_derived_probe::dwarf_derived_probe): Insert a condition check routine on the top of body. (mark_derived_probe::mark_derived_probe): Ditto. (mark_builder::build): Pass the base location to mark_derived_probe. 2007-11-19 Frank Ch. Eigler PR 3887. * staptree.h (probe_point): Add "sufficient" field. * staptree.cxx: Initialize it, print it. * parse.cxx (parse_probe_point): Parse it. * elaborate.cxx (derive_probes): Implement it. * stapprobes.5.in: Document it. * NEWS: Gloat about it. 2007-11-15 David Smith * tapsets.cxx (mark_derived_probe::initialize_probe_context_vars): Updated to work with latest LTTNG patch patch-2.6.24-rc2-lttng-0.10-pre23.tar.bz2. (mark_derived_probe_group::emit_module_decls): Ditto. (mark_derived_probe_group::emit_module_init): Ditto. (mark_derived_probe_group::emit_module_exit): Ditto. * translate.cxx (c_unparser::emit_common_header): Ditto. 2007-11-15 Mike Mason * systemtap.spec.in: Removed "make check" from rpm build steps 2007-11-15 David Smith * tapsets.cxx: Removed mark_query structure. (mark_derived_probe::mark_derived_probe): Just looks for "kernel" marker probes. (mark_builder::build_no_more): No longer kern_dw, instead clears the marker cache. (mark_builder::build): Now parses Module.markers file to find marker list and stores them in a cache. (register_standard_tapsets): Removed 'module("foo").mark("bar")'. All markers now go through 'kernel.mark("bar")'. * stapprobes.5.in (parts): Updated marker text. 2007-11-14 Jim Keniston PR 5324 * main.cxx: Restored initialization of need_uprobes flag, mistakenly backed out in PR 5270 fix. 2007-11-14 Zhaolei * stapfuncs.5.in (tokenize): Change NULL to blank to avoid misunderstanding. 2007-11-13 Jim Keniston PR 5270 * main.cxx: Restored pre-10-08 version: moved uprobes build to buildrun.cxx. * buildrun.cxx: Reworked uprobes build so that the resulting Module.symvers can be used in building the stap-generated module. If user isn't root, call verify_uprobes_uptodate() rather than trying (and failing) to rebuild uprobes.ko. * buildrun.h: uprobes_enabled() and make_uprobes() are no longer extern. * runtime/uprobes/Makefile: Added uprobes.ko target for use by verify_uprobes_uptodate(). 2007-11-12 Martin Hunt * stap.1.in: Replaced references to the log() function. * stapex.5.in: Ditto. * stapfuncs.5.in: Ditto. ALso remove print and printf. They are documented in stap.1.in. 2007-11-12 Martin Hunt * translate.cxx (visit_print_format): Strings without a format or formatted with "%s" or "%s\n" should be printed with calls to _stp_print(). Call _stp_print_char() if printing a char. * staptree.cxx (parse_print): Check for "print_char". * staptree.h (struct print_format): Add print_char. (parse_print): Update prototype. * parse.cxx (parse_symbol): Set print_char bool in print_format. 2007-11-12 Martin Hunt * tapsets.cxx (build_blacklist): Add __raw_spin_is_locked. 2007-10-25 Josh Stone PR 5219 * stap.1.in: Add a note about string literal limitations in printf and printd. 2007-10-22 Jim Keniston * runtime/uprobes/uprobes_x86_64.[ch]: Added x86_64 uprobes support 2007-10-19 Jim Keniston * runtime/uprobes/uprobes_ppc64.h,uprobes_s390.c: Fixed 10/16 update to arch_validate_probed_insn() decl. 2007-10-19 Masami Hiramatsu * staplog.c: Cleanup code and remove end-of-line spaces. (create_output_filename): Use snprintf instead of sprintf and remove malloc(). (print_rchan_info): Merge into output_cpu_logs(). (open_output_file): Use GETBUF() instead of malloc(). (output_cpu_logs): Simplify logic and remove unused code. (do_staplog): Merge into cmd_staplog(). (help_staplog): Fix typos. * Makefile.am (STAPLOG): Add -Wall option. * Makefile.in: Regenerated. 2007-10-19 Masami Hiramatsu From Satoru Moriya : * staplog.c (create_output_dir): New function for creating output directory. (create_output_filename): New function for making output filename. (print_rchan_info): New function for displaying relay channel status. (open_output_file): New function for opening output file. (output_cpu_logs): Cleanup code and fix bugs to retrieve buffer data even when the last buffer is full and even if the systemtap uses old(non-utt) format. Add a routine for '-a' option. (cmd_staplog): Add '-a' option. (help_staplog): Ditto. 2007-10-18 Mike Mason * stapprobes.5.in: Removed C label reference. Clarified source path requirements for probe definitions. Fixed some vertical spacing issues. 2007-10-18 Mike Mason * stapfuncs.5.in: Corrected tokenize description. Added task_* functions. 2007-10-16 Jim Keniston * runtime/uprobes/uprobes.[ch], uprobes_i386.[ch], uprobes_ppc64.h, uprobes_s390.h: Adjusted SLOT_IP and arch_validate_probed_insn to accept task pointer (needed by x86_64); added uprobe_probept_arch_info and uprobe_task_arch_info (ditto). * runtime/uprobes/uprobes_i386.c: Fixed a couple of glitches discovered when porting to x86_64 2007-10-15 Roland McGrath PR 5101 * loc2c.c (struct location): Replace regno union member with struct member reg, fields regno and offset. (translate): Update uses. (emit_base_fetch, emit_base_store, emit_loc_register): Likewise. Fail if reg.offset is not zero. (location_relative): Handle DW_OP_plus_uconst relative to loc_register. (c_translate_array): Handle array index into loc_register. 2007-10-15 David Smith * tapsets.cxx (mark_query::handle_query_module): Checks for marker to be in the proper section. (mark_derived_probe_group::emit_module_decls): Updated emitted marker C code for 10/2/2007 markers patch. Fixes PR 5178. From David Wilder * tapsets.cxx (mark_query::handle_query_module): Updated to handle 64-bit platforms correctly. 2007-10-15 Zhaolei From Cai Fei * conversions.stp: Add a function kernel_string_n for copy non-0-terminated string with fixed length from kernel space at given address. * stapfuncs.5.in: Add kernel_string_n. * nfsd.stp: Using kernel_string_n to copy non-0-terminated string with fixed length from kernel space at given address. * nfs_proc.stp: Ditto. 2007-10-12 David Smith * tapsets.cxx (dwflpp::setup): Added 'debuginfo_needed' parameter to not error if no debuginfo present. (hex_dump): New function. (mark_query::handle_query_module): Updated for 10/2/2007 markers patch. Currently only handles markers in the kernel image itself - not in modules. 2007-10-12 Martin Hunt * Makefile.am (staprun_LDADD): Add -lpthread. * Makefile.in: Rebuilt. 2007-10-11 Frank Ch. Eigler * systemtap.spec.in: Make -testsuite subrpm require dejagnu. 2007-10-10 Jim Keniston * runtime/uprobes/uprobes_ppc64.[ch]: Added * runtime/uprobes/uprobes_s390.[ch]: Added 2007-10-09 Jim Keniston PR 5083 * runtime/uprobes/uprobes.c: Adjust module ref-count when creating or removing uprobe_process, so "rmmod --wait uprobes" waits as needed until uretprobed functions return. 2007-10-08 Jim Keniston PR 5079 * main.cxx: Add pass 4.5: make uprobes.ko in runtime/uprobes * buildrun.cxx: Add uprobes_enabled() and make_uprobes(). Factor run_make_cmd() out of compile_pass(). * buildrun.h: Add uprobes_enabled and make_uprobes decls. * tapsets.cxx: Do correct #include for modprobed uprobes.ko; set need_uprobes in pass 2. * session.h: Add need_uprobes * runtime/staprun/common.c: Add -u option -> need_uprobes * runtime/staprun/staprun_funcs.c: Generalize insert_module() to support inserting uprobes.ko. * runtime/staprun/staprun.c: Add enable_uprobes(). insert_module call becomes insert_stap_module(). * runtime/staprun/staprun.h: Reflect insert_module() and need_uprobes changes * runtime/uprobes/*.[c,h]: uprobes is built as a module, rather than included into the source of the stap-generated module. * runtime/uprobes/Makefile: Added 2007-10-05 Frank Ch. Eigler PR 1119 * elaborate.cxx (semantic_pass_opt[12]): Warn on elided variables/functions in user script. * session.h (suppress_warnings): New field. Change "timing" to plain old bool. * main.cxx (main): Configure warnings on by default. * stap.1.in: Document this. 2007-10-05 Frank Ch. Eigler PR 5036 * systemtap.spec.in: Create new systemtap-testsuite sub-rpm. Install crash(8)'s staplog.so into -runtime sub-rpm if built. * Makefile.am (rpm): New target. * Makefile.in: Regenerated. 2007-10-04 Frank Ch. Eigler * stapfuncs.5.in: Document inet.stp tapset functions. 2007-10-04 David Smith * buildrun.cxx (compile_pass): Tweaked build system for the 2.6.23-rc8-mm2 kernel. 2007-10-03 Frank Ch. Eigler PR 5102 * translate.cxx (visit_statement): Add new parameter regarding whether c->last_stmt needs to be updated. Update callers, mostly passing "false". (visit_EXPRESSIONTYPE): Generally omit setting c->last_stmt, unless the construct can set c->last_error. 2007-10-03 Frank Ch. Eigler PR 5096 * translate.cxx (emit_function): Put nesting limit/control logic into function body ... (visit_functioncall): ... and not into each call site. 2007-10-02 Frank Ch. Eigler PR 3635 * translate.cxx (emit_global): Wrap all globals and locks into one top-level struct. Update references to former "global_VAR" prefix. * translate.h (emit_global_init): New function. 2007-10-02 Frank Ch. Eigler PR 5078 * tapsets.cxx (be_derived_probe): Rework to add error probe support. Emit probe description array in C for traversal by generated code. * register_standard_tapsets: Add error probes. * stapprobes.5.in: Document. * translate.cxx (emit_module_init): Handle errors that may occur during begin probes. (emit_module_exit): Use schedule() rather than cpu_relax() during shutdown synchronization wait loop. * staptree.cxx (probe::printsig): Put multiple probe points on same line. 2007-09-28 Frank Ch. Eigler * Makefile.in: Regenerated from Jim Keniston's uprobes Makefile.am changes. 2007-09-25 Josh Stone * tapsets.cxx (translator_output::~translator_output): Fix mismatched delete / delete []. 2007-09-25 David Smith * tapsets.cxx (mark_query::handle_query_module): Updated for 9/18/2007 markers patch. (mark_derived_probe::parse_probe_sig): Ditto. (mark_derived_probe_group::emit_module_decls): Ditto. (mark_derived_probe_group::emit_module_init): Ditto. (mark_derived_probe_group::emit_module_exit): Ditto. 2007-09-24 Masami Hiramatsu PR 3916 * buildrun.cxx (compile_pass): Add new autoconf options for checking time related APIs. 2007-09-21 Frank Ch. Eigler rhbz #300121 * elaborate.cxx (dead_stmtexpr_remover): Add visit_if_statement, visit_foreach_loop, visit_for_loop): Support elision for unbraced statement bodies. (visit_expr_statement): Assert absence of unexpected nesting. 2007-09-17 David Smith PR 1154 * stapprobes.5.in: Documented procfs probes. * tapsets.cxx (procfs_builder::build): Validate procfs path. 2007-09-14 David Smith PR 1154 * tapsets.cxx (procfs_var_expanding_copy_visitor::visit_target_symbol): Disallows reading from $value in a procfs read probe. 2007-09-14 David Smith PR 1154 * tapsets.cxx (procfs_derived_probe_group::emit_module_init): Fixed problem where if only one type (read/write) of procfs probe was defined, the generated code wouldn't compile. 2007-09-13 David Smith PR 1154 * tapsets.cxx (procfs_derived_probe::procfs_derived_probe): Removed debug print. (procfs_derived_probe_group::emit_module_decls): Improved error handling and added support for procfs.write probes. (procfs_var_expanding_copy_visitor::visit_target_symbol): Removed debug print. 2007-09-12 Frank Ch. Eigler * parse.cxx (parse_symbol): Accept println(@hist*()). 2007-09-12 Frank Ch. Eigler PR 5023 * translate.cxx (c_unparser::visit_literal_number): Support LLONG_MIN. (visit_unary_expression): Likewise. 2007-09-12 Martin Hunt PR 5019 * elaborate.cxx (visit_hist_op): Remove log histogram param. * translate.cxx (assert_hist_compatible): Ditto. * staptree.cxx (hist_op::print): Ditto. * session.h (statistic_decl): Ditto. * parse.cxx (expect_number): Allow negative numbers. Also validate that input is really numeric. This is used by histograms to get the parameters. (parse_hist_op_or_bare_name): Remove code to get parameter for log histograms. 2007-09-12 David Smith * translate.cxx (c_unparser::emit_common_header): Added 'data' variable to context structure to support procfs probes. * tapsets.cxx: Improved procfs probe handling. 2007-09-10 David Smith * tapsets.cxx (procfs_derived_probe_group::emit_module_init): Improved procfs probe handling (still non-working). (procfs_builder::build): Ditto. (register_standard_tapsets): Ditto. (all_session_groups): Ditto. 2007-09-10 Martin Hunt * tapsets.cxx, session.h, elaborate.cxx: Start of procfs interaction support. PR 1154. 2007-09-06 Masami Hiramatsu PR 4542 * tapsets.cxx (dwarf_query::build_blacklist): add __switch_to to blacklisted_return_probes on i686 2007-08-30 David Smith PR 4983 * translate.cxx (c_tmpcounter::visit_print_format): Don't declare temporaries for number and string constants. (c_unparser::visit_print_format): Use numeric and string constants directly instead of copying them into temporaries. 2007-08-27 Frank Ch. Eigler PR 4817 * NEWS: Mention retirement of LKET. * configure.ac: Remove mysql dependency. * systemtap.spec.in: Remove glib2 dependency. * configure, config.in: Regenerated. 2007-08-24 Frank Ch. Eigler * configure.ac: Check for proper $PROCFLAGS-dependent -lcap. * Makefile.am (staprun_LDADD): Use autoconf variable rather than -lcap literal. * configure, aclocal.m4, Makefile.in, config.in: Regenerated. 2007-08-24 Frank Ch. Eigler PR 4899 * tapsets.cxx (dwflpp::has_single_line_record): Extended, abstraction violated. (iterate_over_srcfile_lines): Remove exactly line number match logic. Improve error message to offered better-checked alternative line numbers. (query_srcfile_line): Whoops, pass scope_die down for statement("...") probes, to enable $target var processing. 2007-08-21 David Smith PR 2305 * translate.cxx (c_unparser::visit_foreach_loop): When the user requested sorting an array of aggregates by value, sort by @count. 2007-08-20 Martin Hunt PR 2424 From Lai Jiangshan From Satoru MORIYA * staplog.c: Updated. 2007-08-20 David Smith From Lai Jiangshan * main.cxx (main): Make sure the '-c' and '-x' options can't be specified together. 2007-08-17 Frank Ch. Eigler As suggested by "Zhaolei" : * elaborate.cxx (semantic_pass_optimize[12], unresolved, invalid, mismatch): Use stringstream and print_error(semantic_error) instead of ad-hoc cerr. 2007-08-16 Frank Ch. Eigler PR 1315. * stapfuncs.5.in: Document new target_set tapset. 2007-08-16 Frank Ch. Eigler * Makefile.am (install-exec-hook): Only make staprun setuid if "make install" is being run as root. * Makefile.in: Regenerated. 2007-08-16 Josh Stone PR 4591 * parse.cxx (parser::parse_symbol): Tweak 'print' matching to allow all the new variants with printd and println. * staptree.h (struct print_format): Add fields for the new print variants, and parse_print() to help matching. * staptree.cxx (print_format::parse_print): New static method to match the print variants and determine their properties. (print_format::print): Handle the new print types. (deep_copy_visitor::visit_print_format): Copy the new fields. * translate.cxx (c_unparser::visit_print_format): Insert delims and newlines where appropriate for new print functions. * stap1.in: Document the new print functions. 2007-08-15 David Smith * systemtap.spec.in: Updated %pre to latest Fedora group creation guidelines. * stap.1.in: Changed '/usr' to '@prefix@' so the values will be updated correctly. * stapfunc.5.in: Ditto. * README.security: Typo fix. 2007-08-15 Martin Hunt * Makefile.am: Removed stap_merge. * Makefile.in: Rebuilt. 2007-08-14 David Smith Merge from setuid-branch. Changes also by Martin Hunt . * Makefile.am: Added staprun_funcs.c and cap.c to staprun_SOURCES. Added -lcap to staprun_LDADD. Removed stp_check reference. Added stapio program. Staprun is now setuid. * Makefile.in: Rebuilt. * configure.ac: Version increase to 0.6 and checks for libcap availability. Removed stp_check reference. * configure: Regenerated. * stp_check.in: Removed. * systemtap.spec.in: Version increase to 0.6-1 and added BuildReq for libcap-devl (and removed sudo requirement). Added %pre script to create new groups. Staprun is now setuid. * NEWS: Added info on new security model. * INTERNALS: Removed sudo reference. * README.security: New file. * main.cxx (main): Make sure module name isn't too long. * hash.cxx: Moved MODULE_NAME_LEN define to hash.h. * hash.h: Moved MODULE_NAME_LEN define here from hash.cxx. * buildrun.cxx (run_pass): No longer runs staprun with "sudo". * stap.1.in: Removed sudo references and added information about the stapdev/stapusr groups. * staprun.8.in: Added information about module detaching and attaching. Removed sudo references and added information about the stapdev/stapusr groups. Removed reference to staprun needing to be run as root. Removed reference to removed '-u USERNAME' option. * .cvsignore: Removed stp_check and added stapio and stap_merge. 2007-08-10 Josh Stone PR 4593 * translate.cxx (c_unparser::emit_common_header): Add an error_buffer to the context to allow dynamic error messages. * tapsets.cxx (dwflpp::express_as_string): Let deref / store_deref fill in last_error with a detailed message. 2007-08-09 Frank Ch. Eigler From Lai Jiangshan : * translate.cxx (emit_module_exit): Use stp_warn for warning. 2007-08-07 Frank Ch. Eigler PR 4846 * parse.cxx (input_put): New function, sort of like stdio ungetc. (input_get): Skip cursor position changing for input_put strings. (scan): Rework $.../@... substitution into character pasting. * parse.h: Corresponding changes. * util.h (lex_cast_qstring): Octal-quote unprintable characters. * stap.1.in, NEWS: Document new behaviour. 2007-07-26 David Smith PR 4295 * main.cxx (main): If '-m MODNAME' is used, the generated module is saved in the current directory. * stap.1.in: Updated '-m' description. 2007-07-11 William Cohen * systemtap.spec.in: Make sqlite support selectable. 2007-07-11 Frank Ch. Eigler * configure.ac: Don't AC_MSG_ERROR if don't HAVE_LIBSQLITE3. * coveragedb.cxx: Compile to nothing unless HAVE_LIBSQLITE3. * main.cxx: Print no error message on -q if HAVE_LIBSQLITE3. * configure: Regenerated, looks rosier with HAVE_LIBSQLITE3. 2007-07-08 William Cohen PR 4529 * coveragedb.cxx (update_coverage_db): Make index "unique" to optimize. 2007-07-08 William Cohen PR 4529 * coveragedb.h (db_type): New enum for type column in coverage_element. (coverage_element): Remove removed column, change type to int. * coveragedb.cxx (has_table, has_index): New. (update_coverage_db): Use has_table, has_index. (enter_element): Change for new table format. (increment_element): Ditto. (sql_update_used_probes): Ditto. (sql_update_unused_probes): Ditto. (sql_update_used_functions): Ditto. (sql_update_unused_functions): Ditto. (sql_update_used_globals): Ditto. (sql_update_unused_globals): Ditto. (update_coverage_db): Ditto. (print_coverage_info(systemtap_session): Relocate vector. (sql_update_used_probes): Ditto. (sql_update_unused_probes): Ditto. 2007-07-03 Frank Ch. Eigler * configure.ac: Bumped version to 0.5.15 for development. * configure: Regenerated. 2007-07-03 Roland McGrath * Makefile.am (install-exec-local, install-elfutils): Use $(DESTDIR). (SRCDIR): Variable removed. (check): Use sh code in commands instead. * Makefile.in: Regenerated. 2007-07-02 William Cohen PR 4717 From Eugeniy Meshcheryakov * staptree.cxx: Add #include for gcc 4.3. 2007-07-02 Frank Ch. Eigler * staplog.c: New file from Satoru MORIYA , prototype crash(8) extension module. * configure.ac: Look for crash/defs.h. * Makefile.am: Build/install staplog.so shared library if found. * configure, Makefile, config.in, runtime/lket/b2a/Makefile.in: Regenerated. 2007-07-02 William Cohen PR 4720 * staptree.cxx (probe_point::print): Remove stray output. 2007-06-29 William Cohen PR 4529 * configure.ac: * Makefile.am: Limit where sqlite3 linked in. * configure: * Makefile.in: Regenerate. 2007-06-29 William Cohen PR 4529 * configure.ac: * Makefile.am: Limit where sqlite3 linked in. * configure: * Makefile.in: Regenerate. * coveragedb.cxx (update_coverage_db): Remove unneeded print. * coveragedb.cxx (increment_element): Correct formatting. 2007-06-26 William Cohen * staptree.cxx (probe_point::print): Remove stray "\n". 2007-06-26 William Cohen PR 4529 * coveragedb.cxx: New. * coveragedb.h: New. * Makefile.am: Add coveragedb.cxx and sqlite3 to build. * Makefile.in: Regenerated. * configure.ac: Add test for sqlite3 * configure: Regenerated. * systemtap.spec.in: Add dependencies for sqlite3/sqlite3-devel. * elaborate.h, elaborate.cxx (derived_probe::collect_derivation_chain): New. (alias_expansion_builder::build): Correct token location. (semantic_pass_opt[12): Track used and unused variables/functions. * session.h (tapset_compile_coverage, unused_globals, unused_probes, unused_functions): New fields. * staptree.h (unused_locals, probe_point::str): New member. * staptree.cxx: Ditto. * main.cxx: Add "-q" tapset coverage option and SYSTEMTAP_COVERAGE env. 2007-06-21 David Smith * Makefile.in: Regenerated with automake 1.10. * aclocal.m4: Regenerated with aclocal 1.10. * configure: Regenerated. 2007-06-20 Martin Hunt * Makefile.am (noinst_PROGRAMS): Add stap_merge. * Makefile.in: Rebuilt: * config.in: Rebuilt 2007-06-20 Frank Ch. Eigler * configure.ac: Added AM_PROG_CC_C_O for compatibility with automake 1.10. * configure, aclocal.m4: Regenerated. 2007-06-20 David Smith * buildrun.cxx (compile_pass): Unset environment variables that could interfere with building the kernel module. Fixes PR 4664. * main.cxx (main): Unsets a few standard environment variables for safety. 2007-06-18 David Smith * staprun.8.in: Fixed a couple of typos. 2007-06-15 Frank Ch. Eigler PR 3331 cont'd. * loc2c.c (base_encoding): Tolerate absenece of DW_AT_encoding. (c_translate_pointer): Don't even try to find signedness, assume unsigned. 2007-06-14 Frank Ch. Eigler * translate.cxx (emit_module_init): Emit translator/elfutils version numbers together. * main.cxx (version): Ditto. (main): Skip printing tapset directories where no sources were found. 2007-06-14 Frank Ch. Eigler PR 3331 cont'd. * loc2c.c (emit_base_fetch): Emit size/signedness cast slightly differently for every low-level fetch. (translate_base_fetch, c_translate_fetch, c_translate_store, c_translate_pointer): Fetch & pass the $target signedness. (base_encoding): Follow typedefs etc. 2007-06-09 Frank Ch. Eigler PR 4609 From Eugeniy Meshcheryakov * staptree.cxx: Add #include for gcc 4.3. 2007-06-08 David Smith PR 4553. * configure.ac: For x86 systems with gcc versions less than 4, automatically default to enabling prologue searching. * configure: Regenerated. 2007-06-05 Frank Ch. Eigler PR 3331. * loc2c.c (emit_base_fetch): Emit size/signedness cast for every low-level fetch. (translate_base_fetch, c_translate_fetch, c_translate_store, c_translate_pointer): Fetch & pass the $target signedness. 2007-05-31 Frank Ch. Eigler PR 3579 From Eugeniy Meshcheryakov * cache.cxx, parse.cxx: Add #include for gcc 4.3. 2007-05-30 Frank Ch. Eigler PR 4567. * staptree.cxx (varuse_collecting_visitor): Add side-effect result query functions. * elaborate.cxx (dead_stmtexpr_remover::visit_expr_statement): Switch to it. (dead_assignment_remover::visit_assignment): Skip elision of lvalues with side-effects in index exprs. * staptree.h: Corresponding changes. 2007-05-25 Frank Ch. Eigler PR 4255 teaser. * elaborate.cxx (has_null_param): New function. * elaborate.h: Declare it. * session.h: Include uprobe_derived_probes group. * tapsets.cxx (uprobe_*): New classes. (all_session_groups): List uprobes in list. (register_standard_tapset): Interpret process(#).statement(#).absolute and process(#).statement(#).absolute.return probe points. 2007-05-25 Martin Hunt Patch from Quentin Barnes. * tapsets.cxx (query_module): Add support for arm. 2007-05-21 David Smith PR 4446. * elaborate.h (derived_probe::initialize_probe_context_vars): New virtual function that will allow added context vars to be initialized. * translate.cxx (c_unparser::emit_common_header): Added 'mark_va_list'. (c_unparser::emit_probe): Calls new function initialize_probe_context_vars. (translate_pass): Includes linux/marker.h if CONFIG_MARKERS is defined. * tapsets.cxx (struct dwarf_query): Split into base_query (which contains most of the original code) and a much smaller dwarf_query class. (struct base_query): New class. (dwarf_query::handle_query_module): New function. (query_module): Moved code into dwarf_query::handle_query_module(). (mark_derived_probe): Adjusted for new kernel markers. (mark_derived_probe_group): Ditto. (mark_var_expanding_copy_visitor): Ditto. (mark_var_expanding_copy_visitor::visit_target_symbol): Generates code for new kernel markers. (struct mark_query): New class. (mark_query::handle_query_module): New function. (mark_derived_probe::mark_derived_probe): Adjusted for new kernel markers. (mark_derived_probe::join_group): Ditto. (mark_derived_probe::emit_probe_context_vars): Ditto. (mark_derived_probe::parse_probe_sig): New function. (mark_derived_probe::initialize_probe_context_vars): New function. (mark_derived_probe::emit_module_decls): Adjust for new kernel markers. (mark_derived_probe::emit_module_init): Ditto. (mark_derived_probe::emit_module_exit): Ditto. (struct mark_builder): Ditto. (mark_builder::build): Ditto. 2007-05-08 Martin Hunt * buildrun.cxx (run_pass): Send proper verbosity level to staprun 2007-05-06 Frank Ch. Eigler PR 1305. * tapsets.cxx (iterate_over_srcfile_lines): Exclude approximate file:lineno matches optimistically returned by dwarf_getsrc_file. (query_srcfile_line): Use Dwarf_Line line number for constructing derived_probe location string. 2007-05-02 David Smith * translate.cxx (c_tmpcounter::visit_functioncall): Updated temporary handling. (c_unparser::visit_functioncall): No longer copies numeric and string constants to temporary variables. 2007-05-01 David Smith * translate.cxx (c_tmpcounter::visit_binary_expression): Updated temporary handling. (c_unparser::visit_binary_expression): Improved handing of numeric constants when handling '%' and '/' operators. (c_tmpcounter::visit_print_format): Updated temporary handling. (c_unparser::visit_print_format): Removed the need for a result temporary when printing to a stream. 2007-04-30 David Smith PR 2339 * translate.cxx (c_unparser_assignment::c_assignop): Improved handling of numeric constants in the rest of the assignment operators. (c_tmpcounter_assignment::c_assignop): Updated temporary handling. 2007-04-29 Frank Ch. Eigler * configure.ac: Mention testsuite/configure.ac for version matching. 2007-04-27 Frank Ch. Eigler PR 4432. * buildrun.cxx (compile_pass): Tweak autoconf CFLAGS handling to avoid macro recursion but still get the needed -I directives. Add the inode-private autoconf test. 2007-04-26 Frank Ch. Eigler PR 4432. * buildrun.cxx (compile_pass): Add $(mflags-y) to stap_check_build. 2007-04-26 Frank Ch. Eigler * buildrun.cxx (compile_pass): Correct placement of commented-out "set -x" make-macro-debugging snippet. 2007-04-25 David Smith PR 2339 * translate.cxx: Renamed "qname" to "value" throughout, since there are times now when qname would refer to a constant value. (tmpvar::override): Added function to allow for overriding a temporary variable name with a string. (tmpvar::value): New function that returns either the overridden string or the temporary variable name. (c_unparser::c_expression): New function. (c_unparser_assignment::c_assignop): Speed up assignment when numeric or string constants are used. (c_tmpcounter::visit_block): Avoid empty structs inside the union of temporary variables. (c_tmpcounter_assignment::prepare_rvalue): New function. (c_tmpcounter_assignment::c_assignop): New function. (c_tmpcounter_assignment::visit_symbol): Update temporary declarations. (c_unparser_assignment::prepare_rvalue): Speed up use of rvalues by using numeric and string constants directly instead of copying them to temporaries first. (c_tmpcounter::load_map_indices): New function. (c_unparser::load_map_indices): Speed up use of numeric and string constants as map indices. (c_tmpcounter::visit_arrayindex): Updated temporary declarations. (c_tmpcounter_assignment::visit_arrayindex): Updated temporary declarations. * translate.h (class translator_output): Added tellp() and seekp() functions. 2007-04-24 Mike Mason * man/stapprobes.socket.5.in: Removed do_write and do_read probes, added aio_write, aio_read, writev and readv probes. 2007-04-24 David Smith * tapsets.cxx (common_probe_entryfn_epilogue): Increment error_count when overload processing kicks in. 2007-04-24 Martin Hunt * stp_check.in: More tweaking of mount statement. 2007-04-23 Frank Ch. Eigler * tapsets.cxx (die_entrypc): Expand search algorithm to check for "aranges", as sometimes occurs for inlined functions. 2007-04-20 Roland McGrath * systemtap.spec.in (elfutils_version): Bump to 0.127. 2007-04-18 Frank Ch. Eigler * Makefile.am (install-elfutils): Use $INSTALL_PROGRAM to copy elfutils shared libraries, as suggested by Perry Cheng . 2007-04-18 Frank Ch. Eigler * parse.cxx (scan_pp): Correct warnings from if/if/else nesting. 2007-04-10 Martin Hunt * stp_check.in: Fixes to make sure debugfs or relayfs are mounted exactly where we expect and other mounts are ignored. 2007-04-03 Pierre Peiffer * parse.cxx, parse.h (lexer::scan): Add $# and @# identifiers. (eval_pp_conditional, scan_pp): Allow the use of $x and @x identifiers. Produce more accurate error messages. * stap.1.in: Document $# and @# identifiers. 2007-04-04 Frank Ch. Eigler GCC 4.3 compatibility patches from Debian. * buildrun.cxx, hash.cxx, tapsets.cxx, translate.cxx: #include a few more C++ headers. 2007-04-03 Frank Ch. Eigler Improve error messages for underprivileged scripts. * parse.h (parse_error): Add skip_some member, true default. * parse.cxx (parse_embedded_code): Send false on missing -g. * parse.cxx (parser::parse): Respect flag during parse error recovery. 2007-04-02 Frank Ch. Eigler PR 3261. * tapsets.cxx (query_module): Reject elfutils module "kernel" unless kernel.* probe point used. 2007-04-02 Frank Ch. Eigler * tapsets.cxx (query_dwarf_func): Skip non-inlined functions for .function().inline case. 2007-03-30 Frank Ch. Eigler PR 1570 * NEWS: Document probe handler language change re. inline functions. * stapprobes.5.in: Likewise. * tapsets.cxx: Many changes to simplify caches and implement new handling of inline functions, removed of stubs for future probes. * elaborate.cxx (derived_probe printsig_nested): New function. * elaborate.h: Declare it. * main.cxx (usage): Clarify "-r" meaning. (main): Tweak related "-p 4" message. 2007-03-30 David Smith PR 2341 * translate.cxx (c_unparser::emit_locks): No longer emits a read lock for global variables that are only written to in begin/end probes. (c_unparser::emit_unlocks): Ditto. (translate_pass): Runs a varuse_collecting_visitor over probes that need global variable locks for use in emit_locks()/emit_unlocks(). * stap.1.in: Corrected probe overload processing text. 2007-03-29 David Smith PR 3545 * stap.1.in: Documented probe overload processing. 2007-03-29 Frank Ch. Eigler * tapsets.cxx (dwarf_derived_probe emit_module_init): Correct handling of kprobe registration errors in the middle of a sequence. 2007-03-29 David Smith PR 4281 * main.cxx (main): Validates '-m NAME' option. Chops off '.ko' if present. Makes sure name isn't empty. Makes sure name is only composed of characters [_a-zA-Z0-9]. 2007-03-28 David Smith PR 2341 (partial fix) * elaborate.h (struct derived_probe): Added needs_global_locks() member function. Unless overridden, will return true indicating that this probe needs locks around global variable references. * tapsets.cxx (struct be_derived_probe): Added override of default needs_global_locks() returning false. begin/end probes don't need locks around global variables, since they aren't run concurrently with any other probes. * translate.cxx (c_unparser::emit_common_header): Updated probe_contents logic to match the logic in emit_probe. (c_unparser::emit_probe): Added whether the probe needs global variable locks to the probe string (that helps eliminate duplicate probes). The generated C changes based on whether or not global variable locks are needed, but the pass 2 output doesn't differ between a probe that needs global variable locks and one that doesn't. If the probe doesn't need global variable locks, doesn't output them. 2007-03-26 Frank Ch. Eigler * configure.ac: Bumped version to 0.5.14. * configure: Regenerated. 2007-03-26 David Smith * tapsets.cxx (dwflpp::translate_final_fetch_or_store): Improved error messages for invalid types. * elaborate.cxx (typeresolution_info::invalid): Improved the error message for invalid operators. 2007-03-22 Frank Ch. Eigler PR 4224. * staptree.h (probe): Add privileged field. * elaborate.cxx, parse.cxx: Pass privileged flag to probes. * tapsets.cxx (dwarf_query): Add has_absolute field. (dwarf_derived_probe ctor): Tolerate it. (register_patterns): Expose it. (dwarf_builder::build): Implement it with no dwfl whatsoever. * NEWS: Document kernel.statement().absolute. * stapprobes.5.in: Ditto. 2007-03-21 Will Cohen * Makefile.am: * Makefile.in: Correct SAMPLE_SRC. 2007-03-21 David Smith PR 4146 * tapsets.cxx (common_probe_entryfn_prologue): Added 'interruptible' parameter. If a probe is interruptible, interrupts are not disabled while the probe executes. Preemption is disabled however. Interruptible parameter defaults to false. (common_probe_entryfn_epilogue): Ditto. (be_derived_probe_group::emit_module_decl): Uses new 'interruptible' parameter to mark begin/end probes as interruptible. (probe_derived_probe_group::emit_module): Initialize 'actionremaining' with MAXACTION instead of initializing 'actioncount' with 0. * translate.cxx (emit_common_header): Renamed 'actioncount' to 'actionremaining'. Turned logic around to initialize actionremaining to MAXACTION or MAXACTION_INTERRUPTIBLE then decrement it as actions occur. (translate_pass): Added MAXACTION_INTERRUPTIBLE initialization. * translate.h: Removed outdated comment portion. * stap.1.in: Documented MAXACTION_INTERRUPTIBLE. * NEWS: Added note about begin/end probes being run with interrupts enabled. 2007-03-20 Frank Ch. Eigler PR 4224. * tapsets.cxx (add_probe_point): Make kernel implicitly relocated relative to the _stext symbol. (dwarf_derived_probe ctor, emit_module_decls): Cooperate. (lookup_symbol_address): New function. (dwarf_builder::build): Call it thrice. (in_kprobes_function): Simplify. * session.h (systemtap_session): Rename cached symbol addresses. * translate.cxx, elaborate.cxx: Corresponding tweaks. 2007-03-19 David Smith PR 4146 (partial fix) * tapsets.cxx (all_session_groups): Added note about stating that begin probes should be registered (actually run) first and end probes should be unregistered (run) last. * translate.cxx (c_unparser::emit_module_exit): Process probe group vector in reverse order so that probe groups will get unregistered in the reverse order that they were registered. 2007-03-19 Frank Ch. Eigler * buildrun.cxx (compile_pass): Emit kbuild-time autoconf widgets to customize runtime or translator C code to actual kernel rather than kernel version string. Thanks to FC 2.6."20" for the nudge. * tapsets.cxx (hrtimer*emit_module): First client: HRTIMER_{MODE_}REL. 2007-03-17 Frank Ch. Eigler * configure.ac: Tweak missing elfutils error message. * configure: Regenerated. 2007-03-16 David Smith PR 3545. * tapsets.cxx (common_probe_entryfn_prologue): Added 'overload_processing' parameter, which defaults to true. If overload_processing is set to false, doesn't output the STP_OVERLOAD code. (common_probe_entryfn_epilogue): Ditto. (be_derived_probe_group::emit_module_decl): Set overload_processing to false in calls to common_probe_entryfn_prologue and common_probe_entryfn_epilogue since begin/end probes shouldn't overload the system. * translate.cxx (c_unparser::emit_common_header): Emit STP_OVERLOAD global variables. (translate_pass): Emit STP_OVERLOAD defines. 2007-03-14 Martin Hunt * main.cxx (usage): Remove "-M" and edit description of "-b". * stap.1.in: Remove "-M" option and edit description of "-b". Edit description of "-o". 2007-03-14 Martin Hunt * Makefile.am: Don't install old relayfs sources. * makefile.in: Rebuilt. 2007-03-14 Martin Hunt * Makefile.am (staprun_SOURCES): Sources now live in runtime/staprun. * makefile.in: Rebuilt. * staprun.8.in: Updated. * buildrun.cxx (run_pass): Use "-v" instead of not "-q" to be compatible with latest staprun. * translate.cxx (emit_module_exit): Print warning using _stp_printf so it shows up at the end of all output. (translate_pass): Replace STP_RELAYFS with STP_BULKMODE. Eliminate STP_RELAYFS_MERGE. 2007-03-13 Frank Ch. Eigler PR 4171. * Makefile.am (check, installcheck): Pass build-tree pointers in environment variables. * configure.ac: Run separate configury for testsuite/. * configure, Makefile.in: Regenerated. 2007-03-07 Frank Ch. Eigler PR 4166. * tapsets.cxx (translate_components): Throw an exception rather then suffer an assertion failure for $ptr[index] expressions. 2007-03-05 David Smith * systemtap.spec.in: Made example perl script non-executable so that the systemtap rpm won't require perl. 2007-03-04 Frank Ch. Eigler * stap.1.in, stapex.5.in, staprun.8.in: Tweak text to remove authors credits, update examples and pointers. 2007-02-28 David Smith * systemtap.spec.in: Fixed %{_libexecdir}/systemtap path in systemtap-runtime %files section. 2007-02-27 Frank Ch. Eigler * systemtap.spec.in (/var/cache/systemtap): Forget it. (stp_check): Pack this in with systemtap-runtime. * stp_check.in: Add LANG=C for speed. 2007-02-27 David Smith * staprun.8.in: Added a basic staprun man page. * Makefile.am: Added staprun.8. * Makefile.in: Regenerated. * configure.ac: Added staprun.8. * configure: Regenerated. * systemtap.spec.in: Added staprun.8 and other document files to staprun RPM. * .cvsignore: Ignores staprun.8. 2007-02-27 Frank Ch. Eigler * tapsets.cxx (dwflpp setup): Print "missing kernel debuginfo" message consistently for, er, missing kernel debuginfo. (dwarf_builder::build): Don't try to help. (query_kernel_exists): Zapped. 2007-02-27 David Smith * systemtap.spec.in: Fedora Packaging Guidelines updates. Updated BuildRoot macro value to Fedora Extras standard value. No longer uses %makeinstall macro. The rpm now owns the /usr/libexec/systemtap directory. 2007-02-26 David Smith * Makefile.am: Removed 'update-examples' target. Moved functionality to systemtap.spec.in. * Makefile.in: Regenerated from Makefile.am. * systemtap.spec.in: Fixes paths in the example scripts directly. * Makefile.am: Added 'update-examples' target that fixes paths in the example code we ship in the rpm. * Makefile.in: Regenerated from Makefile.am. * systemtap.spec.in: Calls "make update-examples" target to fix the path to systemtap in the example scripts. 2007-02-25 Frank Ch. Eigler * elaborate.h (match_node, derived_probe_builder): Add build_no_more member function. * elaborate.cxx (semantic_pass_symbols): Call it. * tapsets.cxx (dwarf_builder): Implement it by releasing dwflpp instance after pass 2, freeing mucho memory. 2007-02-23 Josh Stone PR 4096 * tapsets.cxx (hrtimer_derived_probe_group::emit_module_decls): Adapt the function signature for changes in 2.6.21. (hrtimer_derived_probe_group::emit_module_init): Fix the enum name for 2.6.21 as well. 2007-02-19 Frank Ch. Eigler PR 4078 and more, including patch from Eugeniy Meshcheryakov : * Makefile.am (AM_CXXFLAGS, AM_CFLAGS): Add -Wextra -Wall -Werror consistently. * Makefile.in: Regenerated. (*): Many minor warning fixes. 2007-02-17 Frank Ch. Eigler PR 4066. * translate.cxx (var::init): Check stat scalar initialization, just like is done for arrays. (emit_module_exit): Check unlikely but possible null timing stat. 2007-02-15 David Smith PR 3625. * tapsets.cxx (dwflpp::print_locals): New function to print all the variables/parameters of a function. (dwflpp::find_variable_and_frame_base): Calls print_locals() when target variable can't be found. (dwflpp::print_members): New function to print all the members of a union/structure. (dwflpp::translate_components) Calls print_members() when union/structure member target variable reference can't be found. 2007-02-14 Frank Ch. Eigler * tapsets.cxx (emit_module_decls): Assert CONFIG_KPROBES, as suggested by Andreas Kostyrka . 2007-02-12 Frank Ch. Eigler * tapsets.cxx (query_statement): Tolerate null file name string. 2007-02-09 Frank Ch. Eigler PR 3965 * configure.ac: Add --enable-prologue option. * configure, config.in: Regenerated. * session.h (prologue_searching): New field. * main.cxx (main): Parse new "-P" option. Initialize based on autoconf flag. * stap.1.in, NEWS: Document it. * hash.cxx (find_hash): Include it in computation. * tapsets.cxx (query_func_info, query_cu): Respect it. 2007-02-06 Frank Ch. Eigler * stapfuncs.5.in: Add docs for kernel_{long,int,short,char} and some user_string* variants. 2007-01-31 Martin Hunt * translate.cxx (translate_pass): Remove old string impedance mismatch stuff. Modify included files. 2007-01-29 Frank Ch. Eigler * configure.ac, configure: Bumped version to 0.5.13 for development. 2007-01-29 Frank Ch. Eigler * translate.cxx (emit_module_init): Add some more type casts to printk args. 2007-01-29 Martin Hunt * translate.cxx (emit_module_init): BZ3888. Add memory usage for the runtime to the printk. 2007-01-29 Frank Ch. Eigler * main.cxx (main): For successful last_pass=4, print compiled module name. * cache.cxx (get_from_cache): Ditto. 2007-01-23 Mike Mason * Makefile.am, configure.ac: Add support for stapprobes.socket man page. * configure, Makefile.in: Regenerate. * man/stapprobes.socket.5.in: Socket tapset man page. * stapprobes.5.in: Add stapprobes.socket(5) to "See Also" section. * stapfuncs.5.in: Add new string and sockets functions. 2007-01-23 Frank Ch. Eigler * tapsets.cxx (loc2c_error): Correct vasprintf ignored-rc warning. 2007-01-22 Martin Hunt * translate.cxx (mapvar::exists): Use new _stp_map_exists function. Testing for zero is no longer correct after changes from 2007-01-10 below. 2007-01-18 Frank Ch. Eigler * main.cxx (version): Add (C) 2007. * translate.cxx (emit_module_init): Add a KERN_DEBUG printk at module startup time to aid debugging and auditing. 2007-01-12 David Smith * tapsets.cxx (dwarf_var_expanding_copy_visitor::visit_target_symbol): Since array behavior has changed (setting to 0 no longer deletes the array element), we delete the internal counter array element when providing target variable access in return probes. 2007-01-11 Roland McGrath * systemtap.spec.in (elfutils_version): Bump to 0.125. Older libdw's have known bugs, though the ABI has not changed. 2007-01-10 Martin Hunt * translate.cxx (mapvar::del): Call the new _stp_map_del function instead of setting to zero. 2007-01-01 Frank Ch. Eigler * configure.ac: Bump version to 0.5.12 for release. * configure: Regenerated. * NEWS, AUTHORS: Populate & repopulate. 2006-12-29 Frank Ch. Eigler * tapsets.cxx (*group:emit_module_init): flush stdout less for timing mode. Also, Set probe_point variable ... * translate.cxx (emit_module_init): ... so on registration failure, a usable error message can be generated. 2006-12-29 Frank Ch. Eigler PR 3523. * tapsets.cxx (common_probe_entryfn_prologue,epilogue): Restore support for -t (benchmarking) mode. * translate.cxx (emit_common_header,emit_module_init):Ditto. (emit_module_exit,emit_probe): Ditto, with most meat here. 2006-12-22 Josh Stone * stap.1.in: Document how to specify the size of global arrays. 2006-12-21 Josh Stone PR 3671 * parse.cxx (parser::parse_global): Allow a maxsize on global arrays. * staptree.h (struct vardecl): Add the maxsize field. * staptree.cxx (vardecl::vardecl): Init. maxsize. (vardecl::set_arity): Don't allow arity 0 when there's a maxsize. (vardecl::compatible_arity): Ditto. (vardecl::print): Include maxsize in output. (target_symbol::print): Ditto. * translate.cxx (struct mapvar, mapvar::mapvar): Add maxsize. (mapvar::init): Init maps with the given maxsize if specified, else keep using MAXMAPENTRIES. (mapvar::set): Make the error message give the maxsize. (mapvar::add): Ditto, and check for overflow on pmap add. (c_unparser::getmap): Pass the maxsize from the vardecl to mapvar. 2006-12-21 David Smith * hash.cxx (find_hash): Added two more options into the hash that change the generated C file - '-M' (merge) and '-t' (benchmark timing). 2006-12-20 David Smith PR 3519. * Makefile.am: Added 'examples' directory to the 'EXTRA_DIST' variable so that the examples directory will be added to the distribution directory. Added variables 'SAMPLE_DEST_DIR' and 'SAMPLE_SRC' and target 'dist-add-samples' to copy some of the testsuite sample scripts to the examples directory when creating a distribution directory. * Makefile.in: Regenerated. * systemtap.spec.in: Added 'examples' directory to the %doc list so that the examples directory will be installed on a user's system. 2006-12-19 Frank Ch. Eigler PR 3522. * tapsets.cxx (dwflpp::emit_address): Call _stp_module_relocate only once per session. Error message cleanup: duplicate elimination etc. * session.h (saved_errors): Store a set of 'em. (num_errors): Return set size. Remove old numeric field. Update all callers. * elaborate.cxx (systemtap_session::print_errors): Print each encountered message just once. * staptree (semantic_error): Make msg2 writeable. Add a chain field. * tapsets.cxx (*var_expanding*:visit_target_symbol): Set saved semantic_error's chain field. * elaborate.cxx (register_library_aliases, visit_foreach_loop, visit_functioncall, derive_probes): Plop "while: ..." error message prefix/suffix right into the semantic_error message string. * parse.cxx (lexer::scan): Identify erroneous token better in error message for unresolvable $N/@M command line args. * util.h (lex_cast_hex): Use std::hex, not std::ios::hex. 2006-12-18 David Smith * Makefile.am (EXTRA_DIST): Added header files - cache.h, hash.h, mdfour.h, and util.h. * Makefile.in: Regenerated. 2006-12-16 Frank Ch. Eigler * main.cxx (main): Print version strings if verbose >=2 . * tapsets.cxx (common_probe_entryfn_prologue): Decorate an emitted local with __restrict__. 2006-12-14 David Smith * tapsets.cxx (struct dwarf_var_expanding_copy_visitor): Added 'return_ts_map' member variable. (dwarf_var_expanding_copy_visitor::visit_target_symbol): Optimization. If we've already seen this target variable in this return probe, return the last replacement (instead of creating a new replacement). 2006-12-13 David Smith * tapsets.cxx (struct dwarf_var_expanding_copy_visitor): Added 'add_probe' member variable. Initialized it in ctor. (dwarf_var_expanding_copy_visitor::visit_target_symbol): Optimization. Instead of generating one entry probe per target variable accessed in a return probe, now just generates one entry probe for all target variables accessed in a particular return probe. It does this by creating a new probe in the new 'add_probe' member variable. (dwarf_derived_probe::dwarf_derived_probe): If add_probe isn't NULL, make sure it gets derived later. 2006-12-11 Josh Stone * parse.cxx (parse::parse_literal): Enforce the lower bound on negative literals. 2006-12-11 David Smith * hash.cxx (find_hash): Fixed a caching bug. Bulk mode (relayfs) status should be figured into the hash since it changes the generated C code. 2006-12-08 Josh Stone PR 3681. * staptree.h (struct vardecl): Add a literal 'init' member for the initialization value of globals. * staptree.cxx (vardecl::vardecl): Initialize 'init' to NULL. (vardecl::print): Print global init value during pass-1 output. * main.cxx (printscript): Print global init values during verbose pass-2 output. * parse.cxx (parser::parse_global): Set the initialization literal of global vardecls. * translate.cxx (var::init): Don't unconditionally override the value of numeric globals when the module_param isn't used. (c_unparser::emit_global_param): Write numeric module_params directly into the global variable, as an int64_t instead of long. (c_unparser::emit_global): Add initialization to global declarations. Don't create a temp module_param long for numeric globals anymore. 2006-12-07 Josh Stone 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. * stapprobes.5.in: Document the new begin/end syntax. 2006-12-06 Josh Stone 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. 2006-12-05 Frank Ch. Eigler PR 3648. * main.cxx (main): Tweak error message for tapset script execution. Also catch those clever rogues who use stdin. 2006-11-30 Frank Ch. Eigler * tapsets.cxx (common_probe_entryfn_prologue): Tweak insufficient stack detection logic. 2006-11-30 David Smith * main.cxx (printscript): Prints global embedded code. Not printing the global embedded code was causing bad caching behavior. 2006-11-29 David Smith * 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. 2006-11-28 David Smith * tapsets.cxx (dwarf_var_expanding_copy_visitor::visit_target_symbol): Improved handling target variables in return probes by having a per-thread counter. 2006-11-26 Frank Ch. Eigler 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. 2006-11-21 Frank Ch. Eigler * translate.cxx (emit_module_init): Adapt to 2.6.19 utsname(). 2006-11-21 Frank Ch. Eigler PR 3556. * translate.cxx (emit_module_init): Emit code to check system_utsname against translate-time version/machine strings. 2006-11-20 David Smith * 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. 2006-11-19 Frank Ch. Eigler * main.cxx (main): Signal parse error if a tapset script is given as the user script. 2006-11-15 Frank Ch. Eigler * 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-10 David Smith * tapsets.cxx (dwarf_var_expanding_copy_visitor::visit_target_symbol): Minor improvement to error handling by throwing exceptions before allocations are done. 2006-11-10 Frank Ch. Eigler * stap.1.in: On urging of Adam Jackson, add blurbs on array syntax and default limits. 2006-11-09 Martin Hunt * Makefile.am (staprun_LDADD): Need PROCFLAGS here too. 2006-11-09 Martin Hunt * Makefile.am (staprun_CFLAGS): New. Use PROCFLAGS. * configure.ac: Add PROCFLAGS. Processor-dependent compilation flags. * configure: Rebuilt. * Makefile.in: Rebuilt. 2006-11-09 David Smith * 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. 2006-11-08 David Smith * cache.cxx (get_from_cache): To preserve semantics with non-cached use, if the last pass is 3, display the cached C source. 2006-11-08 Frank Ch. Eigler * staptree.cxx (print_format::components_to_string): Quote ". (c_unparser::visit_print_format): Don't use lex_cast_qstring as it overdoes \ quoting. Resemble ::visit_literal_string instead. 2006-11-08 Frank Ch. Eigler * 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. 2006-11-07 Frank Ch. Eigler * tapsets.cxx (profile_derived_probe_group::emit_module_decls): Pass along incoming pt_regs to context of timer.profile handlers. 2006-11-06 Martin Hunt * translate.cxx (var::init): Check for errors when allocating arrays of stats, as well as other arrays. 2006-11-06 David Smith 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. 2006-11-03 Frank Ch. Eigler * tapsets.cxx (emit_address): Emit calls to _stp_module_relocate for $target-variable addresses in relocatable sections. 2006-11-02 Martin Hunt * session.h (struct systemtap_session): Add symtab. This controls if a symbol table is generated and compiled into the module. * main.cxx (main): Set session.symtab to false. This could later enabled by a command-line option if necessary. * translate.cxx (emit_symbol_data): Don't write a symbol table if session.symtab is false. * tapsets.cxx (emit_module_decls): Remove stap_module array and module_relocate. (emit_module_init): Use "_stp_module_relocate". * Makefile.am (staprun_SOURCES): Add symbols.c * Makefile.in: Rebuilt. 2006-11-02 David Smith * main.cxx (main): Added '-r' check. If the user changes the kernel release to compile against, make sure pass 5 isn't performed (since the resulting module won't be installable). 2006-11-02 Frank Ch. Eigler * Makefile.am: Install tapset/README too. * Makefile.in: Regenerated. 2006-11-01 Josh Stone * 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. 2006-11-01 David Smith * 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. 2006-10-31 Frank Ch. Eigler 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. 2006-10-23 Li Guanglei * lket.5.in: Rearranged the sections, add more details. 2006-10-30 David Smith * stap.1.in: Added notes about new caching feature. 2006-10-24 David Smith * tapsets.cxx (build_blacklist): Added "atomic_notifier_call_chain" to the blacklist (Bugzilla #3379). 2006-10-23 David Smith * main.cxx (printscript): New function containing code moved from main(). (main): Added code to create cache directory, call function to generate hash, and see if we can use cached source/module. If pass 4 is actually run to produce a new module, we call add_to_cache() to cache the result. * session.h (struct systemtap_session): Added hash/cache session data. * cache.cxx: New file handling adding/getting files from the cache. * cache.h: New header file for cache.cxx. * hash.cxx: New file containing C++ wrapper for routines in mdfour.c and the find_hash function which computes the hash file name for an input script. * hash.h: New header file for hash.cxx. * mdfour.c: New file containing MD4 hash code. * mdfour.h: New header file for mdfour.c. * util.cxx: New file containing several utility functions used by the caching code. * util.h: New header file for util.cxx. * Makefile.am: Added new C/C++ files. * Makefile.in: Regenerated. 2006-10-23 Li Guanglei * configure.ac, Makefile.am: add lket-b2a.1.in * Makefile.in, configure: regenreated * ket-b2a.1.in: new man page for lket-b2a * lket.5.in: document signal trace hooks 2006-10-18 Roland McGrath PR 2727 * configure.ac (elfutils build): Pass --prefix and --exec-prefix options to elfutils configure. (elfutils_abs_srcdir): New substituted variable. * Makefile.am (DISTCHECK_CONFIGURE_FLAGS): New variable. * configure, config.in, Makefile.in: Regenerated. 2006-10-16 Li Guanglei * configure.ac: add the checking for mysql_config, mysqlclient library and header files * runtime/lket/b2a/Makefile.am: set compile flags according to the existance of mysql_config * Makefile.in, configure, testsuite/Makefile.in, runtime/lket/b2a/Makefile.in: regenerated 2006-10-12 Martin Hunt * 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. 2006-10-11 David Smith * 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. 2006-10-10 Roland McGrath * systemtap.spec.in (elfutils_version): Require 0.124 now. 2006-10-10 Frank Ch. Eigler * configure.ac: Override incomplete mysql checking for now. * configure: Regenerated. 2006-10-10 Li Guanglei * configure.ac: add the checking of mysql client library * Makefile.in, configure: regenerated 2006-09-29 Li Guanglei * man: newly created dir for stapprobes * man/stapprobes.iosched.5, man/stapprobes.netdev.5, man/stapprobes.nfs.5, man/stapprobes.nfsd.5, man/stapprobes.pagefault.5, man/stapprobes.process.5, man/stapprobes.rpc.5, man/stapprobes.scsi.5, man/stapprobes.signal.5, man/stapprobes.tcp.5, man/stapprobes.udp.5: Some of these man pages are from the old stapprobes.5.in. Some are newly created(rpc, nfs, nfsd) * man/.cvsignore: ignore the generated man page files 2006-09-29 Li Guanglei PR 3282 * Makefile.am: add -DPKGLIBDIR='"$(pkglibexecdir)"' to AM_CPPFLAGS 2006-09-28 Josh Stone 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. 2006-09-27 Josh Stone * 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. 2006-09-26 David Smith * .cvsignore: Changed 'stpd' reference to 'staprun'. * INTERNALS: Ditto. * buildrun.cxx (run_pass): Ditto. * lket.5.in: Ditto. * stap.1.in: Ditto. * stapruncs.5.in: Ditto. * examples/small_demos/demo_script.txt: Ditto. * examples/small_demos/sys.stp: Ditto. * systemtap.spec.in: Created a new subpackage, "systemtap-runtime", that contains staprun. * Makefile.am: Renamed 'stpd' to 'staprun' and moved it to $(bindir). * Makefile.in: Regenerated from Makefile.am. * configure.ac: Incremented version number. * configure: Regenerated from configure.ac. 2006-09-22 Tom Zanussi * stp_check.in: Add debugfs mounting. 2006-09-22 Li Guanglei From Gui Jian * lket.5.in: document RPC trace hooks 2006-09-20 Josh Stone PR 3233 * stapfuncs.5.in: Document new gettimeofday_ns. 2006-09-19 Tom Zanussi * README: Add CONFIG_DEBUG_FS to config options. 2006-09-18 Josh Stone PR 3219 From Eugeniy Meshcheryakov : * stapprobes.5.in: Correct misuse of '-' -> '\-' in manpage 2006-09-18 Martin Hunt * buildrun.cxx (run_pass): Remove "-m" option to stpd. * translate.cxx (translate_pass): #define STP_RELAYFS_MERGE if appropriate. 2006-09-13 Martin Hunt * buildrun.cxx (run_pass): Remove "-r" option to stpd. 2006-09-13 Will Cohen * tapsets.cxx (perfmon_derived_probe_group::emit_module_init): Do not throw sematic error unless probes actually used. 2006-09-12 Will Cohen PR 909 * configure.ac: Add perfmon support options. * configure: Regenerated. * stapfuncs.5.in: * stapprobes.5.in: Document the perfmon support. * session.h, main.cxx: Track number of perfmon probes. * translate.cxx: Gen STP_PERFMON when perfmon probes. * elaborate.h: * elaborate.cxx (derived_probe_group): Add register_probe() for perfmon probe. * tapsets.cxx (derived_probe::emit_common_header): Gen perfmon data. (perfmon_var_expanding_copy_visitor): New struct. (struct perfmon_derived_probe): (struct perfmon_derived_probe_group): (struct perfmon_builder): New Perfmon probe handling structures. (register_standard_tapsets): Add perfmon tapset binding. (derived_probe_group_container): (~derived_probe_group_container): (derived_probe_group_container::register_probe): (derived_probe_group_container::emit_probes): (derived_probe_group_container::emit_module_init): (derived_probe_group_container::emit_module_init_call): (derived_probe_group_container::emit_module_exit): Add perfmon tapset. * tapset/perfmon.stp: New. * runtime/perf.c: New. * runtime/perf.h: New. * runtime/runtime.h: Include perf.c. * testsuite/buildok/perfmon01.stp: Test to exercise perfmon probes. * testsuite/systemtap.pass1-4/buildok.exp: 2006-09-12 Li Guanglei From Li Xuepeng * lket.5.in: document nfs trace hooks 2006-09-08 David Smith * 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. 2006-09-06 Frank Ch. Eigler Add basic support for initialized globals. * parse.cxx (parse_global): Parse initialization clause, implement by rewriting to "probe begin { var = value }". * parse.h: Corresponding changes. * stap.1.in: Document optional initialization. 2006-09-04 Frank Ch. Eigler 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. 2006-08-30 Li Guanglei * stapprobes.5.in: document signal.* 2006-08-28 David Smith * 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. 2006-08-23 Josh Stone PR 3093 From Eugeniy Meshcheryakov : * 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. 2006-08-22 Josh Stone PR 3094 From Eugeniy Meshcheryakov : * stap.1.in: In groff, '-' produces a Unicode hyphen. Use '\-' where a plain-old minus sign is desired, e.g., code examples. * lket.5.in, stapex.5.in, stapfuncs.5.in, stapprobes.5.in: ditto 2006-08-15 Roland McGrath * systemtap.spec.in (elfutils_version): Require 0.123 now. 2006-08-14 David Smith * elaborate.cxx (semantic_pass): Calls semantic_pass_optimize1() and semantic_pass_optimize2(). (visit_functioncall): Removed setting relaxed_p since semantic_pass_opt5 does it. (semantic_pass_opt5): Goes ahead and removes duplicate functions since semantic_pass_opt1() won't be run again. (semantic_pass_optimize1): Renamed from semantic_pass_optimize(). Moved semantic_pass_opt5() to semantic_pass_optimize2(). (semantic_pass_optimize2): New function that contains optimization passes that need to be done after type inference. 2006-08-12 Frank Ch. Eigler * Makefile.am (dist-hook): Make "make dist" dist. * Makefile.in: Regenerated. 2006-08-12 Frank Ch. Eigler * configure.ac, Makefile.am: Descend into testsuite/ directory. Remove local test logic. * configure, Makefile.in: Regenerated. * runtest.sh: Not yet removed. * HACKING: Update for new testsuite layout. 2006-08-10 David Smith * 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). 2006-08-08 Li Guanglei * stapprobes.5.in: document process.*, tcp.*, udp.* 2006-08-09 Thang Nguyen * testsuite/buildok/iolock_test.stp: Updated for new ioblock.stp 2006-08-09 Josh Stone * examples/small_demos/proc_snoop.stp, testsuite/buildok/process_test.stp: Rename process.signal_* to new signal.* tapset. * stapprobes.5.in, testsuite/buildok/memory.stp: move pagefault to vm.* namespace 2006-08-08 Eugene Teo * tapset/context.stp (probemod): New function. * stapfuncs.5.in: Document it. * testsuite/buildok/probemod.stp: Test it. 2006-08-08 Li Guanglei * stapprobes.5.in: document scsi.*, ioscheduler.*, netdev.* and pagefault. 2006-08-01 Li Guanglei PR 2422 * tapsets.cxx: calling get_module_dwarf(false) to give a warning to those modules without debuginfo and skip them 2006-07-19 Roland McGrath * configure.ac, systemtap.spec.in: Bump version to 0.5.9. * configure: Regenerated. * systemtap.spec.in: Fix syntax in last change. 2006-07-19 David Smith * testsuite/buildok/scsi.stp: Only run the scsi test if the scsi kernel subsystem is running. 2006-07-17 David Smith * stapfuncs.5.in: Removed retval function description, since it has been removed. 2006-07-17 Roland McGrath * configure.ac, systemtap.spec.in: Require elfutils-0.122. * configure: Regenerated. * systemtap.spec.in (Release): Use %{?dist}. 2006-07-17 Li Guanglei * main.cxx: add LKET's tapsets into stap's default tapsets search path 2006-07-13 Frank Ch. Eigler * systemtap.spec.in: Add formerly missing admonitional verb. 2006-07-13 David Smith * parse.cxx (parser::expect_unknown2): New function that looks for 2 possible token types. * parse.cxx (parser::expect_ident_or_keyword): New function that calls parser::expect_unknown2. * parse.cxx (parser::parse_symbol): Calls parser::expect_ident_or_keyword to allow keywords to appear when expanding target symbols (Bugzilla #2913). * parse.h: Added prototypes for parser::expect_unknown2 and parser::expect_ident_or_keyword. * testsuite/parseok/seventeen.stp: New test to check for allowing keywords when expanding target symbols. 2006-06-30 Josh Stone * 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. 2006-06-30 David Smith * 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). 2006-06-27 Roland McGrath * runtest.sh: Don't use eval, use proper quoting. * 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. 2006-06-26 Li Guanglei * lket.in.5: update to AIO event hooks 2006-06-23 Thang P Nguyen * testsuite/buildok/tcp_test.stp: updated inet calls * testsuite/buildok/udp_test.stp: test udp tapset 2006-06-22 Thang P Nguyen * testsuite/buildok/tcp_test.stp: test tcp tapset 2006-06-16 Roland McGrath * configure.ac, systemtap.spec.in: Bump version to 0.5.8. * configure: Regenerated. * systemtap.spec.in: Fix bundled_elfutils setting so builds can possibly work. Add comment admonishing losers not to touch it. * aclocal.m4, Makefile.in: Regenerated with automake-1.9.6-2. 2006-06-16 Li Guanglei * lket.in.5: update to reflect the latest changes to LKET 2006-06-15 Roland McGrath * systemtap.spec.in: Require elfutils-0.121. 2006-06-14 Frank Ch. Eigler * README: Add kernel.org blurb based on text from Chuck Ebbert <76306.1226@compuserve.com>. 2006-06-09 Li Guanglei * parse.cxx, staptree.cxx, staptree.h, translate.cxx: delete lket_trace_extra * lket.5.in: delete the description of backtrace in LKET 2006-06-08 Thang P Nguyen * testsuite/buildok/ioblock_test.stp: test ioblock 2006-06-05 David Smith * 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. 2006-06-05 Frank Ch. Eigler PR 2645 cont'd. * elaborate.cxx (derive_probes): Pass down optional flag from alias reference to expansion. * testsuite/semok/twentytwo.stp: Test passing-down. * stapprobes.5.in: Specify passing-down property of optional flag. 2006-06-02 Frank Ch. Eigler PR 2645 cont'd. * elaborate.cxx (find_and_build): Support optional wildcards too. (derive_probes): Change last argument to indicate optionalness of parent probe point (alias reference). (alias_expansion_builder): Shrink epilogue-mode alias body copying. Pass along alias reference optionality. * elaborate.h: Corresponding changes. * testsuite/semko/thirtyfive.stp, semok/twentytwo.stp: New tests. 2006-06-02 Josh Stone * testsuite/buildok/process_test.stp: add signal_handle test * examples/small_demos/proc_snoop.stp: log signal_handle 2006-06-02 Frank Ch. Eigler 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. 2006-06-02 David Smith * .cvsignore: Added more files to ignore. * main.cxx (usage): Added exitcode parameter. (main): Improved a few error messages. Also, when an error is given, stap now always exits with a status of 1. * testsuite/buildok/cmdline01.stp: New test. * testsuite/parseko/cmdline01.stp: Ditto. * testsuite/parseko/cmdline02.stp: Ditto. * testsuite/parseko/cmdline03.stp: Ditto. * testsuite/parseko/cmdline04.stp: Ditto. * testsuite/parseko/cmdline05.stp: Ditto. * testsuite/parseko/cmdline06.stp: Ditto. * testsuite/parseok/cmdline01.stp: Ditto. * testsuite/parseok/cmdline02.stp: Ditto. 2006-06-01 Josh Stone * 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 2006-06-01 Li Guanglei * parse.cxx, staptree.cxx, staptree.h, translate.cxx: add new function lket_trace_extra at script level * lket.5.in: Modified the description of backtrace in LKET 2006-05-29 Li Guanglei * systemtap.spec.in: include lket-b2a in the rpm package 2006-05-27 Li Guanglei * configure.ac: add conditional build of lket-b2a if glib2-devel is not found, just skips and gives a warning * Makefile.am: add conditional build of lket-b2a * Makefile.in, configure: regenerated * runtime/lket/b2a/Makefile: deleted. Should be generated by configure 2006-05-26 Josh Stone * 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. 2006-05-25 Josh Stone * parse.cxx (parser::scan_pp): Free memory for tokens that are thrown away in the preprocessing stage. * tapsets.cxx (dwarf_var_expanding_copy_visitor::visit_target_symbol): Free allocated memory when supressing target-variable errors 2006-05-25 David Smith * testsuite/semok/twentyone.stp: New file. 2006-05-24 Frank Ch. Eigler 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. 2006-05-24 David Smith * elaborate.cxx (isglob): New function. (match_key::globmatch): New function. (match_node::find_and_build): Uses isglob() and match_key::globmatch() to provide support for wildcards such as "kernel.syscall.*read*" (Bugzilla #1928). * elaborate.h (match_key::globmatch): Added function declaration. * parse.cxx (parser::parse_probe_point): Collects one or more tokens into a single probe-point functor string. * testsuite/parseko/twentytwo.stp: New file. * testsuite/parseok/sixteen.stp: New file. 2006-05-24 David Smith * testsuite/parseko/cmdlinearg01.stp: New file. * testsuite/parseko/cmdlinearg02.stp: New file. * testsuite/parseko/eighteen.stp: New file. * testsuite/parseko/foreachstmt01.stp: New file. * testsuite/parseko/foreachstmt02.stp: New file. * testsuite/parseko/foreachstmt03.stp: New file. * testsuite/parseko/foreachstmt04.stp: New file. * testsuite/parseko/foreachstmt05.stp: New file. * testsuite/parseko/forstmt01.stp: New file. * testsuite/parseko/forstmt02.stp: New file. * testsuite/parseko/forstmt03.stp: New file. * testsuite/parseko/forstmt04.stp: New file. * testsuite/parseko/functiondecl01.stp: New file. * testsuite/parseko/functiondecl02.stp: New file. * testsuite/parseko/functiondecl03.stp: New file. * testsuite/parseko/functiondecl04.stp: New file. * testsuite/parseko/functiondecl05.stp: New file. * testsuite/parseko/functiondecl06.stp: New file. * testsuite/parseko/functiondecl07.stp: New file. * testsuite/parseko/ifstmt01.stp: New file. * testsuite/parseko/ifstmt02.stp: New file. * testsuite/parseko/nineteen.stp: New file. * testsuite/parseko/preprocess01.stp: New file. * testsuite/parseko/preprocess02.stp: New file. * testsuite/parseko/preprocess03.stp: New file. * testsuite/parseko/preprocess04.stp: New file. * testsuite/parseko/preprocess05.stp: New file. * testsuite/parseko/preprocess06.stp: New file. * testsuite/parseko/preprocess07.stp: New file. * testsuite/parseko/preprocess08.stp: New file. * testsuite/parseko/preprocess09.stp: New file. * testsuite/parseko/probepoint01.stp: New file. * testsuite/parseko/probepoint02.stp: New file. * testsuite/parseko/probepoint03.stp: New file. * testsuite/parseko/seventeen.stp: New file. * testsuite/parseko/ternarystmt01.stp: New file. * testsuite/parseko/twenty.stp: New file. * testsuite/parseko/twentyone.stp: New file. * testsuite/parseko/whilestmt01.stp: New file. * testsuite/parseko/whilestmt02.stp: New file. 2006-05-24 Li Guanglei * configure.ac: add lket.5 & runtime/lket/b2a * Makefile.am: add lket & runtime/lket/b2a * aclocal.m4, Makefile.in, configure: regenerated * runtime/lket/b2a/*: a binary to ascii converter used to convert LKET's default binary trace data. * lket.5.in: add intro of lket-b2a converter. 2006-05-23 David Smith * parse.cxx (parse_for_loop): Corrected error message. 2006-05-22 David Smith * elaborate.cxx (find_and_build): Fixed issue #2643. Wildcard code was being too optimistic. 2006-05-22 Li Guanglei * lket.in.5: draft version of manpage for LKET * Makefile.in, configure, stap.1.in: add lket.in.5 2006-05-18 Frank Ch. Eigler 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. 2006-05-18 Li Guanglei * tapset/LKET/*: tracing tapsets of LKET * tapset/context.stp: add stp_pid() func * tapset/ppc64/syscalls.stp: add conditional preprocessing since sys64_time is removed from kernel >= 2.6.16 2006-05-18 Li Guanglei * tapset/tskschedule.stp: deleted, merge into scheduler.stp * tapset/scheduler.stp: incorporate tskschedule.stp * testsuite/buildok/tskschedule.stp: deleted, merge into sched_test.stp * testsuite/buildok/sched_test.stp: incorporate tskschedule.stp 2006-05-17 Josh Stone * testsuite/buildok/sched_test.stp: test scheduler tapset * examples/small_demos/sched_snoop.stp: demo scheduler tapset 2006-05-18 Li Guanglei * testsuite/buildok/ioscheduler.stp: testcase for ioscheduler.stp * testsuite/buildok/memory.stp: testcase for memory.stp * testsuite/buildok/networking.stp: testcase for networking.stp * testsuite/buildok/scsi.stp: testcase for scsi.stp * testsuite/buildok/tskschedule.stp: testcase for tskschedule.stp 2006-05-18 Li Guanglei * tapset/ioscheduler.stp: generic IO scheduler tapsets from LKET * tapset/memory.stp: generic pagefault tapsets from LKET * tapset/networking.stp: generic networking tapsets from LKET * tapset/scsi.stp: generic scsi tapsets from LKET * tapset/tskschedule.stp: generic task scheduler tapsets from LKET * tapset/process.stp: changes to process.exec alias 2006-05-16 David Smith * parse.cxx (parser::parser): Added initializer for 'context' member variable. (tt2str): Added support for new tok_keyword type. (operator <<): Ignores keyword content when outputting error message. (lexer::scan): Recognizes keywords, such as 'probe', 'global', 'function', etc. and classifies them as type 'tok_keyword'. This causes keywords to become reserved so they cannot be used for function names, variable names, etc. (parser::parse): Changed tok_identifier to tok_keyword when looking for "probe", "global", or "function". Also sets context member variable which remembers if we're in probe, global, function, or embedded context. (parser::parse_probe, parser::parse_statement) (parser::parse_global, parser::parse_functiondecl) (parser::parse_if_statement, parser::parse_delete_statement) (parser::parse_break_statement, parser::parse_continue_statement) (parser::parse_for_loop, parser::parse_while_loop) (parser::parse_foreach_loop, parser::parse_array_in): Looks for tok_keyword instead of tok_identifier. (parser::parse_probe_point): Allows keywords as part of a probe name, since "return" and "function" are keywords. (parser::parse_return_statement): Looks for tok_keyword instead of tok_identifier. Make sure we're in function context. (parser::parse_next_statement): Looks for tok_keyword instead of tok_identifier. Make sure we're in probe context. * parse.h: Added parse_context enum. Added 'tok_keyword' to token_type enum. Added parse_context 'context' member variable to parser class. * stap.1.in: Because the string() function has been removed, the 'string()' function reference has been changed to a 'sprint()' function reference. * stapex.5.in: Ditto. * stapfuncs.5.in: The description of the string() and hexstring() functions has been removed. * testsuite/buildok/context_test.stp: Calls to the string() function were converted to sprint() function calls. * testsuite/buildok/fifteen.stp: Ditto. * testsuite/buildok/nineteen.stp: Ditto. * testsuite/buildok/process_test.stp: Ditto. * testsuite/buildok/task_test.stp: Ditto. * testsuite/buildok/timestamp.stp: Ditto. * testsuite/buildok/twentyone.stp: Ditto. * testsuite/semok/args.stp: Ditto. * testsuite/semok/seven.stp: Ditto. * testsuite/buildok/fourteen.stp: Calls to log()/string() were converted to a call to printf(). * testsuite/buildok/sixteen.stp: Ditto. * testsuite/buildok/thirteen.stp: Ditto. * testsuite/buildok/twentythree.stp: Ditto. * testsuite/buildok/twentytwo.stp: Ditto. * testsuite/buildok/seven.stp: Calls to the string() function were converted to sprint() calls. Calls to the hexstring() function were converted to sprintf() calls. * testsuite/semok/eleven.stp: Ditto. * testsuite/buildok/seventeen.stp: Calls to log()/hexstring() were converted to a call to printf(). * testsuite/semko/nineteen.stp: Ditto. * testsuite/parseok/three.stp: Because keywords are reserved, a variable named 'string' was renamed to 'str'. * testsuite/parseok/two.stp: Because keywords are reserved, a variable named 'global' was renamed to 'gbl'. * testsuite/transko/two.stp: Because the parser now checks for 'next' and 'return' statement context, a 'next' statement was removed from a function and a 'return' statement was removed from a probe. 2006-05-15 Frank Ch. Eigler * 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(). 2006-05-12 Thang P Nguyen * testsuite/buildok/probefunc.stp: test probefunc() 2006-05-12 Frank Ch. Eigler * stapfuncs.5.in: Clarify backtrace-related functions. 2006-05-11 David Smith * tapset/ctime.stp: New file. 2006-05-09 Josh Stone * examples/small_demos/proc_snoop.stp: monitor all process events. * testsuite/buildok/task_test.stp: test compilation of all task functions. * testsuite/buildok/process_test.stp: test all process events and associated variables. 2006-05-09 Will Cohen PR 2228 * parse.h: * parse.cxx: Add << operator for struct source_loc. * translate.cxx (emit_module_init): Print location of probe in script. 2006-05-09 Li Guanglei PR 2520 * main.cxx: add -M option to stop merge per-cpu files in bulk mode * session.h: add merge member into systemtap_session * buildrun.cxx: generate stpd_cmd to stop merge per-cpu files if -M option is turned on by stap. 2006-05-08 Li Guanglei PR 2627 * elaborate.cxx: epilogue style alias expansion * parse.cxx: parse += alias definition * staptree.h: add epilogue_style member to probe_alias * stap.1.in: add the description of epilogue style alias * testsuite/parseok/fifteen.stp: testcase for epilogue style alias 2006-05-05 Roland McGrath * configure.ac (build_elfutils): Pass CFLAGS to elfutils configure, editting out -Wall. * configure: Regenerated. 2006-05-05 Frank Ch. Eigler PR 2643 * testsuite/buildok/syscalls.stp: Take "-u" away again. * configure.ac, systemtap.spec.in: Bump version to 0.5.7. * configure: Regenerated. 2006-05-05 Frank Ch. Eigler * configure.ac, systemtap.spec.in: Bump version to 0.5.6. * configure: Regenerated. 2006-05-05 Will Cohen * small_demos/fileopen.stp: Shows use of target() to look at pid. * small_demos/rwtiming.stp: Shows per executable histograms of time spent in read and write system calls. 2006-05-05 Eugene Teo 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. 2006-05-05 David Smith * translate.cxx (mapvar::exists): Added code for string array handling. Otherwise, string array elements always exist. 2006-05-03 Josh Stone PR 2506 * tapsets.cxx (dwarf_query::blacklisted_p): skip probes in .exit.* 2006-05-02 Will Cohen * translate.cxx (emit_module_init): Move closing '}' inside #ifdef. 2006-05-02 Will Cohen PR 2228 * stap.1.in: Document "-t" option. * main.cxx (main): Add "-t" option for collecting timing information. * session.h (systemtap_session): Corresponding changes. * tapsets.cxx (emit_probe_prologue, emit_probe_epilogue, emit_probe_entries): * translate.cxx: (emit_common_header, emit_module_init, translate_pass): Add time collection of timing information. 2006-05-01 Frank Ch. Eigler * translate.cxx (visit_print_format): Fix regression in "printf" pseudo-result initialization. 2006-04-30 Frank Ch. Eigler 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-04-25 Frank Ch. Eigler * Makefile.am: Removed "rpm" target. * Makefile.in, aclocal.m4: Regenerated. 2006-04-25 Frank Ch. Eigler * elaborate.cxx (typeresolution_info::unresolved,invalid, mismatch): Print current function/probe name in error message. (semantic_pass_types): Pass sufficient information. * elaborate.h: Corresponding changes. 2006-04-25 Frank Ch. Eigler 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. 2006-04-24 Frank Ch. Eigler PR 2599. * elaborate.cxx (visit_assignment): Tolerate null current_expr. * testsuite/semok/optimize.stp: Add relevant tests. 2006-04-23 Eugene Teo PR 2149 * translate.cxx (mapvar::set): Test _stp_map_set_xx() for array overflows. 2006-04-23 Eugene Teo * small_demos/ansi_colors.stp: Add an example of using octal escape sequences to display all possible ansi colors. 2006-04-21 Eugene Teo PR 1326 * translate.cxx (c_unparser::visit_binary_expression): Handle negative left and right shift count. 2006-04-21 Frank Ch. Eigler 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. 2006-04-19 Eugene Teo PR 2014 * parse.cxx (lexer::scan): Added \[0-7]* case to preserve octal escape sequences. 2006-04-18 Martin Hunt * Makefile.am (install-data-local): Another try. 2006-04-18 Frank Ch. Eigler 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 Martin Hunt * Makefile.am (install-data-local): Tweak previous fix. (install-data-local): 2006-04-18 Martin Hunt * Makefile.am (install-data-local): Rewrite. Set ownership and permissions for all files and directories under runtime and tapset. Restrict files to source code. * Makefile.in: Rebuilt. 2006-04-18 Eugene Teo PR 1341 * main.cxx (main): Use TMPDIR instead of hard-coded /tmp. 2006-04-17 Frank Ch. Eigler * tapsets.cxx (mark_derived_probe::emit_{de}registrations): Use cmpxchg to synchronize. 2006-04-12 Tom Zanussi PR 2538 * buildrun.cxx (compile_pass): Remove space between -I and runtime path. 2006-04-12 Martin Hunt PR 2497 * translate.cxx (translate_pass): Don't reset STP_STRING_SIZE if it was already defined. Set it to 1024 by default. 2006-04-10 Martin Hunt * translate.cxx (visit_print_format): Call _stp_snprintf() instead of snprintf(). 2006-04-09 Martin Hunt 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' 2006-04-08 Frank Ch. Eigler * tapsets.cxx (resolve_prologue_endings): Rewrote. (resolve_prologue_endings2): Removed. * gen-stapmark.h: Emit a 0-arity marker. * stapmark.h: Regenerated for arities 0..6. 2006-04-04 Roland McGrath * configure.ac: Bump version to 0.5.5. Require elfutils-0.120. * configure: Regenerated. * systemtap.spec.in: Likewise. * main.cxx (version): Use dwfl_version. * loc2c.c (array_stride): stride_size -> byte_stride 2006-04-04 Tom Zanussi * stp_check: Change test for relay vs relayfs 2006-03-30 Martin Hunt * tapsets.cxx (dwarf_derived_probe::emit_registrations): Change maxactive so single-processor kernels using kretprobes don't get lots of dropped probes. 2006-03-30 Frank Ch. Eigler PR 953, part 1 * tapsets.cxx: (mark_derived_probe*): New classes. (register_standard_tapsets): Register kernel/module.mark() family. * stapmark.h: New header for static instrumentation markers. * gen-stapmark.h: New perl script to generate it. * elaborate.cxx (derived_probe ctor): Ignore null location*. 2006-03-29 Josh Stone * 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. 2006-03-28 Martin Hunt * testsuite/buildok/syscall.stp: Update so it works again. 2006-03-16 Tom Zanussi * configure.ac: Revert relayfs version check. * configure: Reverted. * translate.cxx (compile_pass): Remove relayfs include path. 2006-03-15 Tom Zanussi * configure.ac: Add check for relayfs version. * configure: Regenerated. * stp_check.in: Remove bundled relayfs loading/compilation, add check for relay (vs relayfs). 2006-03-13 Josh Stone * safety/safety.py: Support IA64 disassembly matching. * safety/data/opcodes-ia64: new opcode rules for IA64. * safety/data/references: Add references used by example scripts when compiled for IA64. 2006-03-13 Frank Ch. Eigler * translate.cxx (emit_globals): Tag globals, especially the locks, as __cacheline_aligned. 2006-03-09 Frank Ch. Eigler * translate.cxx (emit_locks): Emit dummy references to unlock_ ... (emit_module_init): ... and probe_point. 2006-03-06 Frank Ch. Eigler PR 2425 * staptree.cxx (varuse_collecting_visitor::visit_embeddedcode): Realize that $var-setter functions have side-effects. * testsuite/transok/tval-opt.stp: New test. 2006-03-06 Martin Hunt * buildrun.cxx (run_pass): Add "-u username". * stapfuncs.5.in: Document system(). 2006-03-06 Frank Ch. Eigler * stapex.5.in: Use \[aq] for plain single quotes for encoding variation tolerance. 2006-03-03 Josh Stone * main.cxx (main): search forward for dashes in the kernel release, to work properly with release names with more than one dash. Also * parse.cxx (eval_pp_conditional): ditto * tapsets.cxx (profile_derived_probe::profile_derived_probe): ditto * safety/safety.py (StaticSafety::__build_search_suffixes): ditto, and add copyright & GPL tag PR 2390 * main.cxx (main): expand search path so that revision w.x.y.z searches w.x.y.z, w.x.y, and w.x. 2006-03-03 Frank Ch. Eigler * tapset/indent.stp, indent-default.stp: New little tapset. * stapfuncs.5.in: Document it. * testsuite/buildok/indent.stp: Build it. 2006-02-27 Josh Stone * safety/*: Add a static safety checker. 2006-02-25 Frank Ch. Eigler * 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. 2006-02-23 Frank Ch. Eigler 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. 2006-02-23 Roland McGrath * Makefile.am (AUTOMAKE_OPTIONS): New variable, set dist-bzip2. * Makefile.in: Regenerated. 2006-02-23 Martin Hunt PR 1989. Adds support for %p in printf * staptree.h (struct print_format): Add conv_unsigned_ptr. * staptree.cxx (components_to_string): Output 'p' for conv_unsigned_ptr. * elaborate.cxx (visit_print_format): Add case for conv_unsigned_ptr. 2006-02-23 Martin Hunt * Makefile.am (install-data-local): Create tapset/i686 and tapset/x86_64 directories. This fixes a problem where they were included, but had bad permissions. * Makefile.in: Rebuilt. 2006-02-22 Frank Ch. Eigler * stapfuncs.5.in: Document get_cycles(). * testsuite/buildok/timestamp.stp: Build it and its friends. 2006-02-22 Frank Ch. Eigler PR 2293. * tapsets.cxx (emit_probe_epilogue): Emit early local_irq_save(). (emit_probe_epilogue): ... and matching _restore(). * main.cxx (main): Emit a "hello, I'm starting" message before pass 5 in verbose mode. 2006-02-17 Frank Ch. Eigler * stapfuncs.5.in (cpu): Document contextinfo function. 2006-02-15 Frank Ch. Eigler * translate.cxx (varlock*): Removed now unnecessary class. (aggregation_locks): Renamed field to aggregations_active. 2006-02-14 Frank Ch. Eigler * stapfuncs.5.in: Document new queue_stats tapset. * elaborate.cxx (*): Put "while:" clarification messages before a thrown semantic error. * staptree.cxx (print_format::string_to_components): Correct parse of "%%" formatting element. 2006-02-07 Frank Ch. Eigler * src/testsuite/buildok/syscalls.stp: Build with "-u" to build-test all auxiliary functions. * tapsets.cxx (dwarf_query::add_probe_point): Add some "-vv" output. 2006-02-07 Josh Stone PR 2068 * tapsets.cxx (dwarf_query::blacklisted_p): add __switch_to to the blacklist for x86_64 architecture only. 2006-02-06 Will Cohen * tapset/syscall2.stp: Correct opening comment typo. 2006-02-06 Will Cohen * tapset/syscall2.stp: Correct closing comment typos. 2006-02-01 Frank Ch. Eigler * testsuite/semko/one.stp: Make sure test case stays broken. 2006-02-01 Martin Hunt * stapfuncs.5.in: Document is_return(), returnval() and probefunc(). * testsuite/buildok/syscall.stp: Basic syscall test. 2006-02-01 Frank Ch. Eigler * configure.ac, systemtap.spec.in: Version 0.5.4. * configure: Regenerated. 2006-01-31 Josh Stone PR 2252 * translate.cxx (translate_pass): Fix legacy definition of read_trylock. 2006-01-30 Frank Ch. Eigler * main.cxx (main): Also print elapsed real time for each pass. 2006-01-27 Frank Ch. Eigler * 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. 2006-01-27 Frank Ch. Eigler * main.cxx (main): In verbose mode, print user+sys times after each pass. * buildrun.cxx (compile_pass): Move success message back to main(). 2006-01-26 Frank Ch. Eigler 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. 2006-01-25 Frank Ch. Eigler PR 2205, patch from : * parse.cxx (scan): Correct EOF detection for %{ %} case. 2006-01-24 Frank Ch. Eigler 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. 2006-01-18 Josh Stone * tapsets.cxx (profile_derived_probe::emit_probe_entries): Setup c->regs properly in light of the emit_probe_prologue change. 2006-01-18 Josh Stone * translate.cxx (c_unparser::visit_foreach_loop): improved the error message when _stp_pmap_agg fails. 2006-01-18 Frank Ch. Eigler * translate.cxx (c_unparser_assignment::visit_arrayindex): Eliminate dummy assignments for "<<<" code. 2006-01-17 Josh Stone PR 2156 * testsuite/buildok/pmap_foreach.stp: Add test with sorting 2006-01-17 Josh Stone PR 2156 * translate.cxx (c_unparser::visit_foreach_loop): Check the return value of _stp_pmap_agg() for NULL. 2006-01-17 Frank Ch. Eigler * systemtap.spec.in: Remove explicit kernel-devel dependency, since some old kernel rpm builds don't virtual-provide it for e.g. smp, hugemem. 2006-01-17 Frank Ch. Eigler 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. 2006-01-17 Josh Stone * stap.1.in: Document the 'delete' operator. 2006-01-16 Roland McGrath * systemtap.spec.in (elfutils_version): Require 0.119 now. * configure.ac, systemtap.spec.in: Version 0.5.3. * configure: Regenerated. 2006-01-16 Josh Stone 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-15 Frank Ch. Eigler PR 2148 * translate.cxx (MAXERRORS): Actually the max should be 0, so first error aborts session. 2006-01-13 Frank Ch. Eigler * main.cxx (main): Suppress "Try again with -v" message if already verbose. 2006-01-13 Frank Ch. Eigler * translate.cxx (c_unparser:getmap): Correct exception throwing typo. 2006-01-12 Josh Stone 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. 2006-01-11 Josh Stone PR 2140 * testsuite/buildok/delete.stp: Test correct compilation of the 'delete' operator for all "legal" variations. 2006-01-11 Frank Ch. Eigler * translate.cxx (MAXERRORS): Oops, set back to intended default of 1. 2006-01-10 Frank Ch. Eigler PR 1972. * tapsets.cxx (var_expanding_copy_visitor::visit_target_symbol): Produce error message for $var access within .return probes. * testsuite/semko/thirtyfour.stp: New test. 2006-01-10 Frank Ch. Eigler 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. 2006-01-09 Frank Ch. Eigler * HACKING: Extend guidelines for tapset testing. 2006-01-06 Will Cohen * Makefile.am (gcov,lcov): Don't remove .gcno .gcda files. * Makefile.am (gcov): Fix to report data when tests fail. * Makefile.am (lcov): New rule to generate html coverage data. * Makefile.in: Regenerated. 2006-01-05 Josh Stone 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. 2006-01-04 Frank Ch. Eigler PR 2057. * translate.cxx (c_unparser_assignment::visit_arrayindex): Don't take write lock around pmap accumulation. 2006-01-04 Will Cohen * testsuite/buildok/printf.stp: Improve test coverage. 2006-01-03 Frank Ch. Eigler * tapsets.cxx (emit_deregistration): Fix bad thinko on loop nesting. 2006-01-03 Frank Ch. Eigler PR 1144, 1379 * tapsets.cxx (emit_probe_prologue, _epilogue): New routines. Call from existing derived_probe spots. Implement soft errors in epilogue code. Implement reentrancy detection in prologue code. (dwarf_derived_probe::emit_deregistration): Add kprobes layer "nmissed" to skipped_count. * translate.cxx (varlock): Use nsleep(TRYLOCKDELAY) in lock contention loop. (emit_module_exit): Report number of soft errors and skipped probes. (emit_function, _probe): Add __restrict__ marker to context pointer. (translate_pass): Define new MAXTRYLOCK, TRYLOCKDELAY, MAXERRORS, MAXSKIPPED parameters. * tapset/logging.stp (error): Don't stp_error, just set context state. * stap.1.in, stapfuncs.5.in: Document soft errors. * elaborate.h: Corresponding changes. 2005-12-23 Kevin Stafford * tapset/2.6.9-20.ELsmp/syscalls.stp: added kernel version tapset * tapset/2.6.9-20.ELsmp/i686/syscalls.stp: added kernel version arch specific tapset * tapset/doc/discrepancies.txt: log of kernel version discrepancies. 2005-12-22 Roland McGrath * configure.ac: Pass LDFLAGS to elfutils configure to force DT_RUNPATH. * configure: Regeneraed. 2005-12-21 Josh Stone PR 2056 * translate.cxx (itervar::next): emit different code for pmaps 2005-12-21 Frank Ch. Eigler * loc2c.h: Add __attribute__ defeating code for g++ 3.3 compatibility. 2005-12-20 Josh Stone * vim/filetype.vim: defines *.stp files as SystemTap scripts * vim/ftplugin/stap.vim: sets the comment styles * vim/indent/stap.vim: enables simple auto-indenting * vim/syntax/stap.vim: defines syntax highlighting 2005-12-19 Roland McGrath * configure.ac, systemtap.spec.in: Version 0.5.2. * configure: Regenerated. 2005-12-17 Roland McGrath * staptree.h: #include here. 2005-12-14 Kevin Stafford * tapset/2.6.14/syscalls.stp: Added 2.6.14 syscalls to tapset. * 2.tapset/6.14/i686/syscalls.stp: Added i386 arch specific syscalls to tapset for kernel 2.6.14. * tapset/2.6.9-24.ELsmp/syscalls.stp: Added 2.6.9-24.ELsmp syscalls. * tapset/2.6.9-24.ELsmp/x86_64/syscalls.stp: Added x86_64 arch specific syscalls to tapset for kernel 2.6.9-24.ELsmp. * tapset/system_calls.stp: File removed. 2005-12-14 Martin Hunt * tapset/system_calls.stp (epoll.ctl): Temporarily remove references to $op and $event because gcc 4.0.2 can't find them. (epoll.wait): Ditto for $maxevents. 2005-12-13 Frank Ch. Eigler * tapsets.cxx (var_expanding_copy_visitor::visit_target): Transcribe token pointer to synthesized functiondecl. 2005-12-12 Josh Stone * tapset/context.stp (execname,pid,tid,ppid,pexecname,gid,egid,uid,euid): Removed in_interrupt checks and other pointer checks. We now operate on the assumption that "current" and its related data are always valid. * tapsets.cxx (profile_derived_probe::*,profile_builder::build): Do kernel version checks at translation time, using the same internal mechanisms as the preprocessor - a la %( kernel_v < "2.6.10" %? ... %: ... %) 2005-12-12 Kevin Stafford * main.cxx (main): Added arch directory to the existing kernel-version-sensitive search path. 2005-12-12 Frank Ch. Eigler * translate.cxx (translate_pass): Emit #include . 2005-12-12 Will Cohen * tapset/logging.stp (function_exit): Make sure systemtap probes stop collection additional data. 2005-12-12 Frank Ch. Eigler Fix parse tree pretty-printer. * staptree.h (print_format): Add raw_components field. * parse.cxx (parse_symbol): Set it. * staptree.cxx (lex_cast_qstring): Copy it here too. (binary_expression::print): Add a space around operator, due to lexical ambiguity (expr % paren-expr) vs %( preprocessor op. (array_in:: foreach_loop:: arrayindex::print): Print base as indexable. (print_format::string_to_components): Use parse_error, not semantic. (print_format::print): Properly quote formatting string. Print histogram argument. * translate.cxx (visit_print_format): Properly quote formatting string. (varlock): Reword lock timeout error message. * testsuite/buildok/printf.stp: Add some quoting troublemakers. * testsuite/parseok/unparser.stp: New file. 2005-12-11 Roland McGrath * configure.ac: Bump version to 0.5.1 for test builds. * systemtap.spec.in: Remove ExclusiveArch. * configure: Regenerated. PR 1916 * configure.ac: Grok --with-elfutils. * Makefile.am [BUILD_ELFUTILS] (install-elfutils, stamp-elfutils): New targets. [BUILD_ELFUTILS] (stap_LDFLAGS, stap_LDFLAGS): Add flags to point at local elfutils build. [BUILD_ELFUTILS] (BUILT_SOURCES): Add stamp-elfutils. [BUILD_ELFUTILS] (stap_DEPENDENCIES): New variable. [BUILD_ELFUTILS] (lib-elfutils/libdw.so): New target. [BUILD_ELFUTILS] (install-exec-local): Depend on install-elfutils. (loc2c_test_LDADD): Set this to $(stap_LDADD). (loc2c_test_CPPFLAGS, loc2c_test_LDFLAGS): New variables. * Makefile.in: Regenerated. * compile: New file from automakeland. * systemtap.spec.in (elfutils_version): Require 0.118 or later. [bundled_elfutils]: Remove old hacks for building elfutils, and rely on configure --with-elfutils instead. * Makefile.am (pkglibexecdir): New variable. (AM_CPPFLAGS): Use it. (pkglibexec_PROGRAMS): Set this instead of noinst_PROGRAMS with stpd. (pkglibexec_SCRIPTS, CLEANFILES): New variables. (install-exec-local): Target removed. * runtest.sh: Set LD_LIBRARY_PATH when lib-elfutils is in use. * loc2c-test.c (get_location): Fix function name in error message. 2005-12-09 Graydon Hoare * elaborate.cxx (alias_expansion_builder::build): Fix comment typo. * tapsets.cxx (symbol_cache): New class. (dwflpp::cache): Add cache. (dwflpp::pattern_limited_cus): New member. (dwflpp::pattern_limited_funcs): New member. (dwflpp::limit_search_to_function_pattern): New method. (dwflpp::iterate_over_cus): Modify to use cached, limited sets. (dwflpp::iterate_over_functions): Likewise. (dwarf_builder::user_dw): New member. (dwarf_builder::kern_dw): New member. (dwarf_builder::~dwarf_builder): Add dtor. (query_module): Call dwflpp::limit_search_to_function_pattern. (dwarf_builder::build): Initialize persistent dwflpp members on demand. 2005-12-08 Graydon Hoare * translate.cxx (delete_statement_operand_visitor::visit_arrayindex): Prohibit deleting histogram buckets. (c_tmpcounter::visit_array_in): Direct to visit_arrayindex. (c_unparser::visit_array_in): Likewise. * testsuite/buildok/histogram_operator_in.stp: New test. 2005-12-08 Frank Ch. Eigler PR 1937 * buildrun.cxx (run_pass): Pass new "-d PID" option to stpd. Set SIGHUP to SIG_IGN too. 2005-12-07 Graydon Hoare * staptree.cxx (traversing_visitor::visit_foreach_loop): Visit the base indexable of the foreach loop. * translate.cxx (c_tmpcounter::visit_foreach_loop): Implement histogram bucket iteration arm. (c_unparser::visit_foreach_loop): Likewise. (c_tmpcounter::visit_arrayindex): Fix typo. * testsuite/buildok/iterate_histogram_buckets.stp: New test. 2005-12-07 Martin Hunt * translate.cxx (mapvar::fini): Use _stp_pmap_del() on pmaps. (emit_global): For pmaps, use "PMAP" instead of "MAP". 2005-12-06 Frank Ch. Eigler PR 1934. * tapsets.cxx (resolve_prologue_endings2): Add new heuristic for tail-call optimized functions. (query_func_info): Make somewhat less verbose. 2005-12-06 Graydon Hoare * translate.cxx (visit_print_format): Explicitly Cast int64_t (pe_long) args to (long long) in generated code, for portability. 2005-12-05 Frank Ch. Eigler * *.cxx: Add #include as needed. 2005-12-02 Graydon Hoare * elaborate.cxx (mutated_var_collector): Forward traversal portion of calls to base class. (mutated_var_collector::visit_arrayindex): Resolve arrayindex-into-histogram expression as pe_long. (typeresolution_info::visit_print_format): Traverse into histogram if present. * parse.cxx (parse_symbol): Handle parse ambiguity surrounding print(@hist_op(...)[...]). * staptree.cxx (traversing_visitor::visit_arrayindex): Visit base member of arrayindex. * translate.cxx (c_unparser::histogram_index_check): New method. (var::hist): Fix bug. (var::buckets): New method. (stmt_expr::stmt_expr): Print with newline. (c_unparser::load_map_indices): Handle indexing-histogram case. (c_tmpcounter::visit_arrayindex): Likewise. (c_unparser::visit_arrayindex): Likewise. (c_tmpcounter_assignment::visit_arrayindex): Throw error when user attempts to write to histogram bucket. (c_unparser_assignment::visit_arrayindex): Likewise. * testsuite/buildok/print_histogram_entry.stp: New test. 2005-12-02 Frank Ch. Eigler * configure.ac: Bump version number. * stap.1.in: Document some of the new print/stats stuff. * configure: Regenerated. * systemtap.spec.in: Enable ia64 and ppc builds. 2005-12-01 Frank Ch. Eigler PR 1944 improved hack. * translator.cxx (c_tmpcounter::visit_block): New routine, allows overlay of sequential statements' temporaries within context. 2005-12-01 Frank Ch. Eigler PR 1944 quick hack. * translator.cxx (translate_pass): Reduce default MAXNESTING to 10. (emit_module_init): Add a paranoid check against oversize contexts. * stap.1.in: Document MAXNESTING change. 2005-11-30 Frank Ch. Eigler PR 1276 From Josh Stone : * tapsets.cxx (profile_derived_probe, profile_builder, register_standard_tapsets): Support timer.profile variety. * stapprobes.5.in: Document it. * testsuite/builok/fourteen.stp: Test its buildability. 2005-11-28 Graydon Hoare * translate.cxx (var::assert_hist_compatible): New method. (var::hist): New method. (c_unparser::load_aggregate): New method. (hist_op_downcaster): Remove, it was a mistake. (expression_is_hist_op): Likewise. (c_tmpcounter::visit_print_format): Implement print(@hist(...)). (c_unparser::visit_print_format): Likewise. * staptree.h (struct print_format): Add optional hist_op* member. * staptree.cxx (traversing_visitor::visit_functioncall): Visit hist_op if present in print_format. (deep_copy_visitor::visit_print_format): Likewise. * parse.cxx (parse_symbol): Special case to consume print(@hist(...)). * elaborate.cxx (typeresolution_info::visit_arrayindex): Fix type inference bug. (typeresolution_info::visit_foreach_loop): Likewise. * testsuite/buildok/print_histograms.stp: New test. 2005-11-28 Frank Ch. Eigler * translate.cxx (c_tmpcounter_assignment::visit_symbol): Don't emit unused temporary into context. Saves mucho space with strings. 2005-11-27 Roland McGrath * loc2c.c (location_from_address): Diagnose null FB_ATTR specially. * loc2c.c (location_from_address): Fix function name in error message. 2005-11-27 Frank Ch. Eigler * loc2c.c (location_from_address): Tolerate errors with NULL *input. 2005-11-26 Roland McGrath PR 1868. * loc2c.c (struct location): Move frame_base member out of the union. (alloc_location): Initialize it. (new_synthetic_loc, translate, location_from_address): Update uses. (emit_loc_value): Don't handle frame_base here. (c_emit_location): Do it here instead. (translate): Track USED_DEREF separately for each piece. Use a temporary struct when allocating a new piece, letting a pending loc_address piece finish up first. * loc2c-test.c (main): Free SCOPES at end. (handle_variable): Free POOL at end. * loc2c.c (translate): Initialize LOC->address.used_deref at start. 2005-11-25 Frank Ch. Eigler PR 1336. * tapsets.cxx (translate_final_fetch_or_store): Remove apparently unnecessary check. * testsuite/transok/ten.stp: New test for void* integerification. 2005-11-24 Frank Ch. Eigler PR 1903 * parse.cxx (eval_pp_conditional): Support %( arch == "i686" %) form. * stap.1.in: Document it. * testsuite/parseok/fourteen.stp: Test it. * session.h (architecture): New field. * main.cxx (main): Initialize it. 2005-11-24 Frank Ch. Eigler PR 1917 * translate.cxx (emit_common_header, emit_module_init, emit_module_exit): Switch context array to per-cpu kmalloc variant. * tapsets (*::emit_probe_entires): Use per_cpu_ptr() for my context. 2005-11-23 Graydon Hoare * elaborate.h (get_symbol_within_expression): Make visible. * elaborate.cxx (get_symbol_within_expression): Make non-static. (stat_decl_collector): New struct. (semantic_pass_stats): New semantic pass. (semantic_pass): Call it. (semantic_pass_symbols): Remove collection of statistic_decls from files. (visit_stat_op): Only fail if inferred type is not pe_long. * parse.cxx (parser::parse): Don't pass per-file statistic_decl into parse_global. (parser::parse_global): Don't parse global statistic_decls, they're obsolete. * parse.hh (parser::parse_global): Adjust signature to match. * session.h (statistic_decl::operator==): New method. * staptree.h (print_format::is_empty): New method. (stapfile::stat_decls): Remove field. * staptree.cxx (string_to_components): Fix bugs in format-string parser. * translate.cxx (var): Make private fields protected. (var::init): Support HIST_NONE stats. (aggvar): New struct. (mapvar::is_parallel): New method. (mapvar::call_prefix): Use it. (mapvar::calculate_aggregate): New method. (mapvar::fetch_existing_aggregate): New method. (mapvar::get): Support pe_stats. (mapvar::init): Use is_parallel(), and support HIST_NONE. (itervar::itervar): Only fault on pe_unknown. (itervar::start): Use mapvar::is_parallel and mapvar::fetch_existing_aggregate. (emit_map_type_instantiations): Include alloc.c before pmap-gen.c. Include pmap-gen.c for pe_stats maps. (c_unparser::gensym_aggregate): New method. (c_unparser::visit_foreach_loop): Handle mapvar::is_parallel case. (arrayindex_downcaster): New struct. (expression_is_arrayindex): New function. (c_tmpcounter::visit_stat_op): New method. (c_unparser::visit_stat_op): Implement. (c_unparser::visit_hist_op): Add commentary, still not implemented. * testsuite/buildok/stat_{insert,extract}.stp: New tests. * testsuite/semok/ten.stp: Correct for changes to global declarations. * testsuite/semko/*.stp: Likewise. 2005-11-21 Roland McGrath * loc2c.c (c_translate_location): Take Dwarf_Op vector as argument directly, not Dwarf_Attribute. * loc2c.h: Update decl. * loc2c-test.c (get_location): New function. (handle_variable): Use it. * tapsets.cxx (dwflpp::translate_location): New method. (dwflpp::translate_components, dwflpp::literal_stmt_for_local): Use it. 2005-11-21 Frank Ch. Eigler PR 1276 From Josh Stone : * tapsets.cxx (timer_derived_probe, timer_builder, register_standard_tapsets): Support timer.ms() variety. * stapprobes.5.in: Document it. * testsuite/builok/fourteen.stp: Test its buildability. 2005-11-18 Martin Hunt PR 1837 * testsuite/buildko/one.stp: Replace printk. * testsuite/buildok/one.stp: Ditto. * testsuite/buildok/two.stp: Ditto. * testsuite/semko/fifteen.stp: Ditto. * testsuite/semko/fourteen.stp: Ditto. * testsuite/semko/thirteen.stp: Ditto. * testsuite/transok/eight.stp: Ditto. * testsuite/transok/seven.stp: Ditto. * testsuite/transok/six.stp: Ditto. * tapsets.cxx (*::emit_probe_entries): Replace printk() calls with _stp_warn(). * stap.1.in: Replace printk with printf in example. * stapfuncs.5.in: Remove docs for printk and add for print and printf. * tapset/logging.stp (printk): Deleted. 2005-11-13 Graydon Hoare * staptree.h (struct indexable): New struct. (classify_indexable): New function. (classify_const_indexable): New function. (struct symbol): Implement indexable. (struct arrayindex): Take indexable as base. (struct foreach_loop): Take indexable as base. (struct print_format): New struct. (enum stat_component_type): New enum. (struct stat_op): New struct. (enum historgram_type): New enum. (struct hist_op): New struct. (struct visitor) (struct traversing_visitor) (struct throwing_visitor) (struct deep_copy_visitor): Add new visitor methods. (require): Specialize for indexable*. * staptree.cxx (print_format::*) (stat_op::*) (hist_op::*) (indexable::*) (traversing_visitor::*) (throwing_visitor::*) (deep_copy_visitor::*) (classify_indexable) (classify_const_indexable): Implement (deep_copy_visitor::*): Update to use indexables. * parse.h (parser::parse_indexable): New method. (parser::parse_hist_op_or_bare_name): New method. * parse.cxx (lexer::scan): Accept @ in identifiers. (parser::parse_array_in) (parser::parse_foreach_loop): Call parse_indexable. (parser::parse_hist_op_or_bare_name): Implement. (parser::parse_indexable): Implement. (parser::parse_symbol): Accept printf, stat_ops, hist_ops. * elaborate.h (struct typeresolution_info): Add methods for visiting print_format, stat_op, hist_op. * elaborate.cxx (symbol_fetcher): New class. (get_symbol_within_expression): New function. (get_symbol_within_indexable): New function. (mutated_var_collector): Replace mutated_map_collector. (no_var_mutation_during_iteration_check): Replace no_map_mutation_during_iteration_check. (semantic_pass_vars): Replace semantic_pass_maps. (semantic_pass): Update call accordingly. (symresolution_info::*) Add new visitors, teach about indexables (typeresolution_info::*) Likewise. * translate.cxx (c_unparser::getiter): Take symbol, not foreach_loop. (c_unparser::*) Add new visitors, teach about indexables. (c_tmpcounter::*) (delete_statement_operand_visitor::visit_arrayindex) (c_tmpcounter_assignment::*) (c_unparser_assignment::*): Likewise. (hist_op_downcaster): New struct. (expression_is_hist_op): New function. * testsuite/buildok/printf.stp: New test for print_format. 2005-11-10 Frank Ch. Eigler * translate.cxx (c_unparser::visit_array_in, visit_arrayindex): Finish adapting to PR 1275 by switching back to read locks. 2005-11-09 Martin Hunt * translate.cxx: New API uses HIST_LOG and HIST_LINEAR instead of HSTAT_LOG and HSTAT_LINEAR. 2005-11-09 Frank Ch. Eigler Reported by Guang Lei Li : * tapset/context.stp (pid,ppid,tid): Correctly pick tgid vs pid. * testsuite/buildok/context_test.stp: Print out tid() too. 2005-11-08 Frank Ch. Eigler * tapsets.cxx (blacklisted_p): Tolerate NULL filename parameter. * src/testsuite/semok/twenty.stp: New test to enumerate everything dwarfly probeable. 2005-11-08 Frank Ch. Eigler * translate.cxx (c_unparser::visit_foreach_loop): With PR 1275 done, add back read lock around foreach loop. Add a write lock around preceding sort operation. Leave a race condition window. :-( 2005-11-08 Frank Ch. Eigler * translate.cxx (mapvar::exists): Correct some more. 2005-11-08 Frank Ch. Eigler Patch from "Mao, Bibo" * translate.cxx (mapvar::exists): Correct 64-bit type mismatch. 2005-11-08 Frank Ch. Eigler * tapsets.cxx (blacklisted_p): Add blacklist for some .return probes to kludge around bug #1345. * tapset/system_calls.stp: Add some %( %? %) conditionals to get closer to using tapset on 2.6.9 kernel. 2005-11-07 Frank Ch. Eigler PR 1828. * tapsets.cxx (blacklisted_p): New function. Add a few blacklist entries. * testsuite/semko/thirtythree.stp: New test. 2005-11-07 Frank Ch. Eigler * testsuite/buildok/twentytwo.stp: Add another test for PR 1271. 2005-11-04 Frank Ch. Eigler * tapsets.cxx (dwarf_derived_probe::emit_registrations): Add possible kprobe address prechecking logic. Set kretprobes maxactive to zero. * translate.cxx (emit_module_init): Set a more helpful default probe_point value for use in registration errors. Exit properly after registration failure of probe #0. 2005-11-04 Roland McGrath * tapsets.cxx (add_probe_point): Use dwfl_module_relocation_info to get symbol name when dwfl_module_relocations has the info. 2005-11-03 Roland McGrath * tapsets.cxx (add_probe_point): Use explicit test with assignment in while condition. 2005-11-03 Frank Ch. Eigler PR 1329. * tapsets.cxx (dwarf_query::add_probe_point): Look up section name containing given address. Skip request if it came from .init.*. * testsuite/semko/thirtytwo.stp: New test. 2005-11-02 Martin Hunt * Makefile.am (EXTRA_DIST): Add session.h. * Makefile.in: Regenerated. 2005-11-01 Frank Ch. Eigler Sound advice from : * configure.ac: Undo last change. * configure.ac: Unregenerated. * parse.cxx: Use glibc strverscmp function instead of rpmlib. * stap.1.in: Update correspondingly. 2005-11-01 Graydon Hoare * translate.cxx (c_unparser::collect_map_index_types) (c_unparser::emit_map_type_instantiations) (c_unparser::visit_arrayindex) (c_unparser::visit_array_in) (delete_statement_operand_visitor::visit_arrayindex) (c_unparser_assignment::visit_arrayindex) (mapvar::*): Update to new runtime map API. 2005-11-01 Frank Ch. Eigler PR 1425. * configure.ac: Look for rpm-devel headers and libs. * configure: Regenerated. * session.h: New file to contain systemtap_session decl. * staptree.h: Likewise evict statistics_decl. * elaborate.h: Corresponding changes. * main.cxx (usage): Elaborate. Re-enable "-r RELEASE" option. * parse.cxx (parser): Add systemtap_session& field. Update users. (scan_pp, eval_pp_conditional): New routines for preprocessing. (peek, next): Call it. (lexer::scan): Lex the preprocessor operators. (parser::parse): Include an extra level of exception catching for parse errors that occur during recovery. * parse.h: Corresponding changes. (parse_error): Allow explicit token parameter. * stap.1.in: Document preprocessing. * testsuite/parseok/fourteen.stp: New test. 2005-10-31 Roland McGrath * systemtap.spec.in, configure.ac: Version 0.4.2 cooked. * configure: Regenerated. * configure.ac: Update libdw test to require 0.116 with dwarf_diecu. * configure: Regenerated. * systemtap.spec.in: Update elfutils requirement to 0.116. * loc2c.c: Dwarf_Loc -> Dwarf_Op. (location_from_address): dwarf_addrloclists -> dwarf_getlocation_addr. (c_translate_location): Likewise. (max_fetch_size): Remove fakeo dwarf_diecu macro. * tapsets.cxx (dwflpp): Dwarf_Func -> Dwarf_Die; dwarf_func_name -> dwarf_diename; dwarf_func_entrypc -> dwarf_entrypc; dwarf_func_file, dwarf_func_line -> dwarf_decl_file, dwarf_decl_line. 2005-10-26 Roland McGrath * loc2c.c (max_fetch_size): Default to host pointer size, while still waiting for new libdw entrypoint. 2005-10-25 Roland McGrath PR 1271 cont'd. * testsuite/buildok/twentytwo.stp: New file. * testsuite/buildok/twentythree.stp: New file. * loc2c.c (discontiguify): Add missing ; in output. 2005-10-20 Graydon Hoare PR 917 (incomplete) * staptree.h (struct statistic_decl): New struct. (stapfile::stat_decls): New member. * parse.h, parse.cxx (parser::expect_known): Fix typo. (parser::expect_number): New method. (parser::parse_global): Parse global statistic_decls. * elaborate.h (systemtap_session::stat_decls): New member. * elaborate.cxx (semantic_pass_symbols): Copy per-file stat_decls to session-wide. (typeresolution_info::visit_assignment): Detect some semantic stats errors in type resolution pass. * translate.cxx (var::sd): New private member. (var::var): Initialize it. (var::sdecl): New accessor. (var::init): Handle stats values. (mapvar::mapvar): Pass through statistic_decl to var ctor. (mapvar::get): Test for long explicitly. (mapvar::set): Likewise. (mapvar::init): Handle stats values. (c_unparser::emit_common_header): Remove typedef of stats_t, include stat.c when necessary. (mapvar::key_typename): Typo. (c_unparser::emit_map_type_instantiations): Thinko: value_typename not key_typename. (c_unparser::c_typename): Implementation typename is "Stat", not "stats_t". (c_unparser::c_assign): Fix bad error message. (c_unparser_assignment::c_assignop): Handle operator <<<. (c_unparser::getvar): Feed session statistic_decl into var. (c_unparser::getmap): Likewise. (c_unparser::visit_assignment): Handle operator <<<. (c_tmpcounter_assignment::visit_symbol): Derive type from rvalue when present. (c_unparser_assignment::visit_symbol) (c_tmpcounter_assignment::visit_arrayindex) (c_unparser_assignment::load_map_indices): Likewise. (c_unparser::visit_arrayindex): Likewise, and Prohibit statistic rvalues. (c_unparser_assignment::visit_arrayindex): Handle operator <<<. * testsuite/semko/twentyfour.stp: * testsuite/semko/twentyfive.stp: * testsuite/semko/twentysix.stp: * testsuite/semko/twentyseven.stp: * testsuite/semko/twentyeight.stp: * testsuite/semko/twentynine.stp: * testsuite/semko/thirty.stp: * testsuite/semko/thirtyone.stp: New tests for prohibited statistic contexts. * testsuite/buildok/twentytwo.stp: New test for legal statistic contexts. 2005-10-19 Tom Zanussi PR 1194. * elaborate.h: Move output_file variable into systemtap_session. * buildrun.cxx (run_pass): Pass output file to stpd if applicable. * main.cxx (main): Set output_file if -o option specified. 2005-10-18 Frank Ch. Eigler PR 1477. * main.cxx (main): Set PATH and LC_ALL, so * buildrun.cxx (compile_pass, run_pass): ... and ... * translate.cxx (emit_symbol_data): ... don't have to. 2005-10-18 Frank Ch. Eigler PR 1482 cont'd. * translator.cxx (emit_module_init): Set aside a variable for detailed probe point id. * tapsets.cxx (emit_registrations): Use it. (add_probe_point): Correct synthesized probe-point typo. 2005-10-17 Martin Hunt PR 1482 * tapsets.cxx (emit_registrations): On failure, don't forget to unregister probe 0; 2005-10-17 Frank Ch. Eigler PR 1338. * parse.cx (parse_probe): Unconditionally visit parse_probe_point. (parse_probe_point): Accept "*" as component name. * stapprobes.5.in: Document this. * elaborate.cxx (derive_probes): Rewrite. Make top-level function. (match_node::find_and_build): New function to replace (find_builder): Removed. (match_key operator <): Correct one nasty typo. (match_node::bind): Refuse to bind "*" component names. (derived_probe_builder::build): Remove recursion output param. (alias_expandion_builder::build): Recurse to derive_probes instead. * elaborate.h: Corresponding changes. * tapsets.cxx: Ditto. (query_cu): Elide prologue finding for uninteresting CUs. * testsuite/semok/nineteen.stp: New test. * testsuite/semko/twentythree.stp: New test. * testsuite/semko/twentyone/two.stp: Fix -p2. 2005-10-17 Graydon Hoare * testsuite/semko/twentyone.stp: Check function doesn't match inline. * testsuite/semko/twentytwo.stp: Check inline doesn't match function. * testsuite/buildok/six.stp: Change "function" to "inline". * stapprobes.5.in: Describe "inline" probes. * tapsets.cxx (TOK_INLINE): New token "inline". (dwarf_query::has_inline_str) (dwarf_query::has_inline_num) (dwarf_query::inline_str_val) (dwarf_query::inline_num_val): New members. (dwarf_query::dwarf_query): Load new members. (query_dwarf_inline_instance) (query_dwarf_func) (query_cu) (query_module) (dwarf_derived_probe::add_probe_point) (dwarf_builder::build): Use inline-related members where appropriate. (dwarf_derived_probe::register_inline_variants): New method. (dwarf_derived_probe::register_function_and_statement_variants): Call it. 2005-10-14 Roland McGrath PR 1271. * loc2c.c (translate): Set LOC->byte_size in loc_noncontiguous result. (struct location.address): New member `declare'. (new_synthetic_loc, translate): Initialize it. (struct location.type): Add loc_fragment, loc_decl to enum. (c_emit_location): Emit unadorned code for loc_fragment. (discontiguify): New function. (c_translate_fetch, c_translate_store): Call it. (get_bitfield): New function, broken out of .... (emit_bitfield): ... here. Function removed. (declare_noncontig_union): New function. (max_fetch_size): New function. (translate_base_fetch): New function, broken out of ... (c_translate_fetch): ... here. Call it. Use get_bitfield here, not emit_bitfield. (c_translate_store): Likewise. (c_emit_location): Emit declarations first. * loc2c.c (dwarf_diename_integrate): Function removed. Change all callers to use dwarf_diename. * loc2c-test.c (handle_variable): Check for "=" before fetching DIE from ATTR_MEM. 2005-10-13 Roland McGrath * loc2c.c (c_emit_location): Use final location's used_deref flag too. * loc2c.c (translate): Pass LOC to alloc_location, not INPUT. * loc2c-test.c (fail): Print a newline after the error message. 2005-10-10 Frank Ch. Eigler * elaborate.cxx (match_node::bind): Improve error message. (register_library_aliases): Catch and verbosify error message. (semantic_pass): Provide a back-up exception catcher. 2005-10-10 Frank Ch. Eigler PR 1456. * translate.cxx (c_unparser_assignment): Rename "pre" field to "post", add blurb to clarify polarity. (visit_pre/post_crement): Flip passed flag value. 2005-10-07 Frank Ch. Eigler PR 1366. * staptree.h (foreach_loop): Add sort_column, sort_direction fields. * parse.cxx (parse_foreach_loop): Parse "+"/"-" suffix operators. * stap.1.in, stapex.5.in: Document them. * staptree.cxx (foreach_loop print, copy): Propagate them. * translate.cxx (visit_foreach_loop): Support them. * testsuite/parseok/fifteen.stp, parseko/thirteen.stp, buildok/twentyone.stp: Test them. 2005-10-07 Kevin Stafford * tapset/system_calls.stp: All 281 syscalls *prototyped*. They are still untested. Many of the aliases useability are contin- gent upon resolution of namely: bz #1295 & bz #1382. 2005-10-06 Frank Ch. Eigler * stap.1.in: Document -b/-s options. * main.cxx (usage): Clarify -b/-s blurbs. * translator.cxx (translate_pass): Handle bulk_mode here instead. 2005-10-06 Frank Ch. Eigler PR 1332. * translate.cxx (emit_symbol_data): New function to transcribe a processed address->symbol lookup table, based upon /proc/kallsyms. 2005-10-05 Tom Zanussi * buildrun.cxx (run_pass): Add bulk/buffer_size flags to flags passed to stpd. * elaborate.h (systemtap_session): Add bulk/buffer_size flags. * main.cxx (usage,main): Add -b (bulk), -s (buffer_size) options. processing. 2005-10-04 Graydon Hoare PR 1131. * tapsets.cxx (target_variable_flavour_calculating_visitor::visit_target_symbol) (var_expanding_copy_visitor::visit_target_symbol): Require guru mode for writing to target vars. * testsuite/buildok/twenty.stp: Test writing to target vars. 2005-10-01 Frank Ch. Eigler * tapsets.cxx (get_module_dwarf): Add "required" parameter, which throws an exception if debuginfo is not found. (focus_on_module_containing_global_address): Tolerate miss. (query_kernel_exists): New function to test for "kernel" module in dwfl_getmodules() result set. (dwarf_builder::build): Call it if appropriate. 2005-09-30 Graydon Hoare PR 1131. * tapsets.cxx (dwflpp::find_variable_and_frame_base) (dwflpp::translate_components) (dwflpp::resolve_unqualified_inner_typedie) (dwflpp::translate_final_fetch_or_store): New functions. (dwflpp::literal_stmt_for_local): Factor a bit. (variable_flavour_calculating_visitor::visit_target_symbol): Don't fault on lvalue, just collect an extra char. (var_expanding_copy_visitor::target_symbol_setter_functioncalls): New member. (var_expanding_copy_visitor::visit_assignment): New method. (var_expanding_copy_visitor::visit_target_symbol): Permit lvalues. 2005-09-30 Frank Ch. Eigler * tapset/system_calls.stp (*_str): Simplified boolean test logic throughout, fixed some typos. 2005-09-28 Frank Ch. Eigler PR 1182. * main.cxx (main): Support -D macro-setting option. * stap.1.in: Document it and related macros. * buildrun.cxx (compile_pass): Emit macro definitions. * translate.cxx (translate_pass): Guard limit macros with #ifdef. Eliminate MAXCONCURRENCY macro. * elaborate.h (systemtap_session): Add "macros" field. * parse.cxx (parse_if_statement): Clear "elseblock" if needed. 2005-09-27 Frank Ch. Eigler * tapsets.cxx (query_cu_containing_global_address): Tolerate way out of range addresses that result in null cudie pointers. 2005-09-27 Frank Ch. Eigler PR 1368. * translate.cxx (emit_common_header): Move some MAX* definitions out ... (translate_pass): ... to here. Fix probe_start API impedance mismatch. (emit_module_init, exit): Tolerate registration errors, such as absence of kretprobes support. 2005-09-27 Frank Ch. Eigler PR 1311. * tapsets.cxx (target_variable_flavour_calculating_visitor:: visit_target_symbol): Print verbose error. (var_expanding_copy_visitor::visit_target_symbol): Throw simple error. 2005-09-26 Frank Ch. Eigler * stapfuncs.5.in: Extend errno_str verbiage. * tapset/errno.stp: Canonicalize script code slightly. 2005-09-26 Frank Ch. Eigler PR 1295. * tapsets.cxx (resolve_prologue_endings2): Try another heuristic for end-of-prologue. 2005-09-22 Graydon Hoare , Frank Ch. Eigler PR 1330. * tapsets.cxx (dwarf_derived_probe): Allow multiple probe_point locations per derived_probe. (dwarf_query): Add probe "flavour" concept, to reuse probe bodies for identical flavours across wildcards. (dwarf::emit_registrations, emit_deregistrations, emit_probe_entries): Reorganize. * staptree (probe::printsig): Put multiple locations on separate lines. 2005-09-22 Will Cohen * stap.1.in: Correct sys_read alias example. 2005-09-19 Frank Ch. Eigler * tapsets.cxx (*::emit_probe_entries): Handle busy-count correctly upon contention. 2005-09-14 Graydon Hoare PR 1260 * tapsets.cxx (dwflpp::resolve_prologue_endings): Correct logic error triggered by consecutive function-beginning line records. 2005-09-14 Frank Ch. Eigler PR 1344 * translate.cxx: Call _stp_map_clear for "delete ARRAY" statement. 2005-09-14 Roland McGrath * systemtap.spec.in: Version 0.4.1 cooked. Build runpath into elfutils libs too. 2005-09-14 Frank Ch. Eigler PR 1257 * Makefile.am (AM_CFLAGS): Add -fexceptions. * loc2c.c (c_translate_location): Invoke *fail properly. * Makefile.in: Regenerated. 2005-09-13 Graydon Hoare PR 1260 * tapsets.cxx (func_info::func_info): Initialize fields. (inline_instance_info::inline_instance_info): Likewise. (query_inline_instance_info): Add try-catch block. (query_func_info): Likewise, and fault when missing prologue-end. (query_dwarf_func): Fault when missing entrypc. 2005-09-12 Frank Ch. Eigler PR 1335 * translate.cxx (c_tmpcounter::visit_functioncall): Correct recursion sequence. * testsuite/buildok/nineteen.stp: New test case. 2005-09-12 Graydon Hoare PR 1306 * tapsets.cxx (dwflpp::iterate_over_srcfile_lines): Fix two off-by-one errors in previous change. 2005-09-12 Graydon Hoare PR 1306 * tapsets.cxx (dwflpp::has_single_line_record): New function. (dwflpp::iterate_over_srcfile_lines): Throw when user requests single statement line with multiple records (and provide advice). (query_cu): Adjust call to match. (query_srcfile_line): Fix indentation. 2005-09-10 Frank Ch. Eigler * Makefile.am, runtest.sh: Use a "testresuilt/" directory in build tree rather than overloading "testsuite/". * TODO: Removed obsoleted file. * Makefile.in: Regenerated. 2005-09-07 Martin Hunt * stap.1.in: Document current "-c" and "-x" options. 2005-09-07 Frank Ch. Eigler * systemtap.spec.in: Remove kernel-debuginfo dependency. 2005-09-07 Frank Ch. Eigler * main.cxx (main): Choose getpid()-based module names. * tapsets.cxx: Make timer.jiffies' use of task_pt_regs __i386__-only. 2005-09-07 Frank Ch. Eigler * stap.1.in: Oops, && and || do short-circuit. 2005-09-06 Frank Ch. Eigler * stap.1.in: Clarify absence of short-circuiting in && and ||. * translate.cxx (emit_function): Improve "array locals" message. * tapset/timestamp.stp: Add gettimeofday_us function. Correct arithmetic typing in other functions. * stapfuncs.5.in: Document new function. 2005-09-06 Martin Hunt * systemtap.spec.in: Bump elfutils_version to .115. 2005-09-05 Roland McGrath * loc2c.h: Comment fix. 2005-09-06 Frank Ch. Eigler * configure.ac: Require elfutils 0.115+. * tapsets.cxx: Restore graydon's PR 1244 code. * testsuite/buildok/eighteen.stp: Correct typing. * configure: Regenerated. 2005-09-06 Martin Hunt * tapset/context.stp: Add function target(). * stapfuncs.5.in (target): Document it. * elaborate.h (struct systemtap_session): Add cmd and target_pid to the struct. * main.cxx (usage): Add descriptions of "-c" and "-x" options. (main): Set s.cmd and s.target_pid. * buildrun.cxx (stringify): Copy this utility func here too. (run_pass): Add new options to set cmd and pid to the stpd command line. 2005-09-06 Frank Ch. Eigler * tapsets.cxx (emit_probe_entries): Disable fault_handler for now. 2005-09-05 Frank Ch. Eigler PR 1289 * translate.cxx (lex_cast_qstring): Correct "cast" of object to string containing more than one word. * tapset.cxx (lex_cast_qstring): Ditto. (dwarf_derived_module::emit_probe_entries): Emit and use a generic fault_handler. 2005-09-05 Frank Ch. Eigler PR 1172. * staptree.h, staptree.cxx: Make all ::print*(), operator<< functions take const staptree objects. (literal_string::print): \-prefix double-quotes. * translate.cxx (emit_common_header): Add context probe_point field. Switch to atomic_t busy flags. (emit_module_exit): Use atomic operations for busy flag. (visit_*): Use lex_cast_qstring for last_stmt strings. * tapsets.cxx (lex_cast_qstring): New function. (*::emit_probe_entries): Populate probe_point. Use atomic operations for busy flag. * tapset/context.stp (pp): New function. * stapfuncs.5.in: Document it. * testsuite/buildok/context_test.stp: Test it. 2005-09-04 Frank Ch. Eigler * translate.cxx (visit_literal_string): \-prefix double-quotes. 2005-09-04 Martin Hunt * testsuite/buildok/context_test.stp: New test. * tapset/logging.stp (log): Call _stp_printf(). * stapfuncs.5.in: Add contextinfo funcs. * tapset/context.stp: Minor cleanup. 2005-09-03 Frank Ch. Eigler PR 1187 prime * tapset.cxx (literal_stmt_for_local): Don't automgaically copy target char*'s to systemtap strings. * tapset/conversions.stp (user_string, kernel_string): New functions. * stapfuncs.5.in: Document new functions. 2005-09-03 Frank Ch. Eigler PR 1292, by popular request. * parse.cxx (parse_functiondecl): Allow optional value/param type declarations. * stap.1.in: Document this. * tapset/*.stp: Convert most functions accordingly. * testsuite/parseok/twelve.stp, semok/seven.stp, semko/twenty.stp: Test this. 2005-09-02 Frank Ch. Eigler * translate.cxx (varlock): Use trylock only for write locks. (translate_pass): Remove read_trylock macro hack. (visit_foreach_loop): Remove protective read lock, until PR 1275. (visit_*): Added many more "last_stmt"-setting expressions in the output, to improve last_error message locality. 2005-09-02 Martin Hunt * tapset/logging.stp: Make log() be same as print(). 2005-09-02 Frank Ch. Eigler * tapsets.cxx: Temporarily rolled back graydon's changes. 2005-09-02 Frank Ch. Eigler * tapset/*.stp: Renamed several files to simplify names. 2005-09-01 Graydon Hoare PR systemtap/1244 * testsuite/buildok/eighteen.stp: New test. * tapsets.cxx (dwflpp::literal_stmt_for_local) (query_statement, query_inline_instance_info) (query_func_info, query_srcfile_line, query_cu) (var_expanding_copy_visitor, visit_target_symbol) (dwarf_derived_probe): Fix 1244. 2005-09-01 Martin Hunt * tapset/builtin_logging.stp: Add print. * tapset/context.stp: New file. First cut at some context info. 2005-09-01 Martin Hunt * translate.cxx (emit_probe): Add a call to _stp_print_flush at the end of each probe. (translate_pass): Define STP_NUM_STRINGS to be 1 for a scratch string. Include current.c and stack.c. Don't define KALLSYMS_LOOKUP_NAME or KALLSYMS_LOOKUP. Remove references to next_fmt() and stp_dbug(). 2005-08-31 Graydon Hoare PR systemtap/1258 * tapsets.cxx (dwflpp::literal_stmt_for_local): Support DW_TAG_enumeration_type tag as synonymous with DW_TAG_base_type. * loc2c.c (base_byte_size): Likewise. * testsuite/buildok/seven.stp: Adjust to work on UP kernels. 2005-08-31 Graydon Hoare * tapsets.cxx (dwflpp::iterate_over_srcfile_lines): Correct segv reported in PR 1270. 2005-08-31 Frank Ch. Eigler * translate.cxx (visit_array_in, visit_arrayindex): Use write locks even for array reads, until PR 1275. (translate_pass): Add read_trylock -> write_trylock escalation. 2005-08-30 Roland McGrath * Makefile.am (install-data-local): Use mkdir -p, not -mkdir. * Makefile.in: Regenerated. 2005-08-30 Graydon Hoare * tapsets.cxx (dwflpp::literal_stmt_for_local): Handle dwarf pointer-to-1-byte-means-char case (found in PR 1187) * parse.cxx (parse_symbol): Eliminate use of "." from target symbol parser, conflicting with string concatenation operator. * staptree.h (target_symbol::component_type) Eliminate comp_struct_pointer_member, since . and -> are considered the same now. * staptree.cxx (target_symbol::print): Likewise. * testsuite/buildok/seventeen.stp: Test solution on PR 1191. * testsuite/buildok/six.stp: Test working portion of PR 1155. * testsuite/semko/nineteen.stp: Unresolved portion of PR 1155. 2005-08-30 Frank Ch. Eigler PR systemtap/1268 * translator (varlock): Add deadlock detection code. (emit_common_header): Add a new MAXTRYLOCK configuration macro. 2005-08-29 Graydon Hoare PR translator/1265 * tapsets.cxx (func_info::decl_file) (func_info::decl_line) (inline_instance_info::decl_file) (inline_instance_info::decl_line): New fields. (dwflpp::function_srcfile): Remove. (dwflpp::function_file): Add. (dwflpp::function_line): Add. (dwarf_derived_probe::dwarf_derived_probe): Update. (query_statement): Pass func, file, line through. (query_inline_instance_info): Likewise. (query_func_info): Likewise. (query_srcfile_line): Query statement lines if statement_str exists, rather than *_info. (query_dwarf_inline_instance): Extract file and line. (query_dwarf_func): Likewise. (query_cu): Pass empty func, file, line, for address-based queries. 2005-08-29 Frank Ch. Eigler * runtest.sh: Tolerate relative $SRCDIR. 2005-08-29 Frank Ch. Eigler * stapprobes.5.in, stapfuncs.5.in, stapex.5.in: New man pages. * stap.1.in: Moved some content out. * Makefile.am (man_MANS): Add new man pages. * configure.ac (AC_CONFIG_FILES): Add them. * systemtap.spec.in: Package them. * Makefile.in, configure: Regenerated. * buildrun.cxx (run_pass): Pass "-r" to stpd. * translate.cxx (emit_common_header): Wrap try/catch around variable decls, to improve exception particularity. (visit_literal_number): Emit as unsigned literal, which is actually a subtle correctness issue. 2005-08-28 Frank Ch. Eigler * tapsets.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. 2005-08-27 Roland McGrath * loc2c-test.c (print_type): New function. (print_vars): Use it. * loc2c-test.c (paddr, print_vars): New functions. (main): If given no variable name argument, print out variables. 2005-08-26 Graydon Hoare * translate.cxx: Revert tmp initialization changes. 2005-08-26 Graydon Hoare * parse.cxx (scan): Preserve basic C-ish escapes. * translate.cxx (c_tmpcounter::declaring): New flag. (c_tmpcounter::declare_or_init): New helper method. (c_tmpcounter::visit_*): Use declare_or_init. (c_unparser::emit_function): Run a tmpcounter to initialize tmps. (c_unparser::emit_probe): Likewise. (c_unparser::c_strcpy): Use strlcpy. (c_unparser::c_strcat): Use strlcat. 2005-08-25 Roland McGrath * Makefile.am (EXTRA_DIST): List .h files explicitly. Automake really does not like wildcards. * Makefile.in: Regenerated. 2005-08-25 Frank Ch. Eigler * Makefile.am (docs): Removed target. * Makefile.in: Regenerated. 2005-08-24 Graydon Hoare * tapsets.cxx (dwflpp::literal_stmt_for_local): Fetch pointer types, array types, strings, from target. 2005-08-24 Roland McGrath * loc2c-test.c (handle_variable): Iterate on const_type/volatile_type. 2005-08-24 Frank Ch. Eigler * configure.ac: Require elfutils 0.114. * tapsets.cxx: Brought back graydon's changes. * configure: Regenerated. 2005-08-24 Roland McGrath * systemtap.spec.in: Update elfutils requirement. 2005-08-24 Frank Ch. Eigler * translate.cxx (emit_global, emit_module_init): Use 2.6.9-compatible rwlock initialization. 2005-08-24 Frank Ch. Eigler * 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 * tapsets.cxx: Re-implement dwarf probe-pattern resolution. 2005-08-22 Frank Ch. Eigler 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 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-19 Frank Ch. Eigler PR systemtap/1213 * translate.cxx (visit_if_statement): Translate else arms. 2005-08-19 Frank Ch. Eigler PR systemtap/1209 * 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 . * stap.1.in: Document timer.jiffies(N) probe points. * testsuite/buildok/fourteen.stp: New test. 2005-08-19 Frank Ch. Eigler * elaborate.cxx (find_var): Remove $pid/$tid builtin logic. 2005-08-19 Martin Hunt * stp_check.in: Remove stp-control. 2005-08-18 Roland McGrath * loc2c.c (c_translate_addressof): Take TYPEDIE instead of TYPEATTR. * loc2c.h: Update decl. * loc2c-test.c (handle_variable): Handle DW_TAG_pointer_type target for fetch. 2005-08-18 Will Cohen * stp_check.in: See if relayfs available filesystem. 2005-08-18 Roland McGrath * 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 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'. (c_translate_location): Take new args FAIL, FAIL_ARG. * loc2c.h: Update declaration. * 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. PR systemtap/1205, systemtap/1206 * 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. * loc2c.c (base_byte_size): Add assert on expected DIE tag. (c_translate_array, c_translate_pointer): Likewise. * loc2c.h: Amend comments to explicitly state type DIE tags expected. * loc2c.c: #include "loc2c.h". 2005-08-16 Frank Ch. Eigler 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-16 Frank Ch. Eigler * main.cxx: Don't print library parse trees if last_pass=1. 2005-08-14 Roland McGrath * systemtap.spec.in: Update elfutils_version requirement to 0.113; restore bundled_elfutils setting to 1. 2005-08-12 Graydon Hoare * translate.cxx (c_tmpcounter::visit_array_in): Implement. (c_unparser::visit_array_in): Likewise. (mapvar::exists): New method. 2005-08-12 Frank Ch. Eigler PR systemtap/1122 et alii * parse.cxx (parse_literal): Parse and range-limit 64-bit numbers. (parse_unary): Correct precedence glitch. * staptree.h (literal_number): Store an int64_t. * staptree.cxx: Corresponding changes. * translate.cxx (check_dbz): Remove - insufficient. (emit_function): Define CONTEXT macro sibling for THIS. (c_typename): pe_long -> int64_t. (visit_literal_number): Format literal rigorously and uglily. (c_assignop, visit_binary_expression): Handle div/mod via new helper functions in runtime. * tapset/builtin_logging.stp: Add error, exit builtins. * testsuite/buildok/ten,eleven.stp: New tests. * testsuite/parse{ko,ok}/six.stp: Modify for larger numbers. * testsuite/transok/one.stp: Add more ";"s, maybe unnecessarily. 2005-08-11 Frank Ch. Eigler * systemtap.spec.in: Tweak to turn into fedora-flavoured spec. Don't build/install runtime docs. 2005-08-11 Frank Ch. Eigler * Makefile.am (uninstall-local): New target. * Makefile.in: Regenerate. 2005-08-11 Frank Ch. Eigler * translate.cxx (emit_function): Add an extra { } around the function body visitation. * tapset/timestamp_functions.stp: New file. * tapset/builtin_conversions.stp: Aggregated from [hex]string. * tapset/builtin_logging.stp: Aggregated from log/warn/printk. 2005-08-11 Frank Ch. Eigler * 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 Roland McGrath * loc2c.c (emit_base_store): New function. (emit_bitfield): Rewritten to handle stores, change parameters. (c_translate_fetch): Update caller. (c_translate_store): New function. * loc2c.h: Declare it. * loc2c-test.c (handle_variable): Grok "=" last argument to do a store. * loc2c.c (c_translate_location): Increment INDENT. (c_translate_pointer): Likewise. (emit_loc_value): Increment INDENT after emit_header. 2005-08-10 Graydon Hoare * tapsets.cxx (dwflpp::literal_stmt_for_local): Copy code from loc2c-test to implement target member variable access. 2005-08-10 Graydon Hoare * 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 PR translator/1186 * elaborate.cxx (resolve_2types): Accept a flag to tolerate unresolved expression types. (visit_functioncall): Call it thusly. * translate.cxx (emit_function): Tolerate void functions. * stap.1.in: Document possibility of void functions. * tapset/builtin_{log,printk,warn}.stp: Make these void functions. * testsuite/buildok/nine.stp, semok/eighteen.stp: New tests. 2005-08-10 Frank Ch. Eigler * 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 * 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 * testsuite/parseok/nine.stp: Update * testsuite/semok/{six,seven,eleven,seventeen}.stp: Update. 2005-08-09 Graydon Hoare * 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-09 Martin Hunt PR 1174 * stp_check.in: Supply path for lsmod. * stp_check: Removed. 2005-08-09 Graydon Hoare * elaborate.cxx: (delete_statement_symresolution_info): New struct. (symresolution_info::visit_delete_statement): Use it. (delete_statement_typeresolution_info): New struct. (typeresolution_info::visit_delete_statement): Use it. (symresolution_info::find_var): Accept -1 as 'unknown' arity. * elaborate.h: Update to reflect changes in .cxx. * translate.cxx (mapvar::del): New method. (c_unparser::getmap): Check arity >= 1; (delete_statement_operand_visitor): New struct. (c_unparser::visit_delete_statement): Use it. * staptree.cxx (vardecl::set_arity): Accept and ignore -1. (vardecl::compatible_arity): Likewise. * testsuite/buildok/eight.stp: New test for 'delete' operator. 2005-08-08 Roland McGrath * loc2c-test.c: New file. * Makefile.am (noinst_PROGRAMS): Add loc2c-test. (loc2c_test_SOURCES, loc2c_test_LDADD): New variables. * Makefile.in, aclocal.m4: Regenerated. 2005-08-08 Frank Ch. Eigler * stap.1.in: Autoconfify old man page. * configure.ac: Make it so. * stap.1: Removed. * configure, Makefile.in, aclocal.m4: Regenerated. 2005-08-05 Frank Ch. Eigler * runtest.sh: Keep around log files from crashed processes, those whose rc is neither 0 nor 1. 2005-08-05 Frank Ch. Eigler * 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 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. 2005-08-03 Graydon Hoare * tapsets.cxx (dwflpp): Fix address calculation logic a bit, and use prologue-end addresses for function probes. 2005-08-03 Frank Ch. Eigler * stap.1: More meat, all stub sections filled. * elaborate.cxx (visit_assignment): Add numerous missing cases. * parse.cxx: Parse ".=" operator. * testsuite/semok/sixteen.stp: Check them. * main.cxx (usage): Don't show incompletely supported options. 2005-08-03 Martin Hunt * stp_check.in : Copy sources to /var/cache/systemtap. * systemtap.spec.in: Install stp_check. * Makefile.am (install-exec-local): Install stp_check. 2005-08-03 Martin Hunt * configure.ac: Add stp_check to AC_CONFIG_FILES. * stp_check.in : New file. 2005-08-03 Frank Ch. Eigler * README: Be more specific about prerequisites. * tapset/builtin_string.stp: New builtin. * testsuite/buildok/seven.stp, semko/eighteen.stp: New tests. 2005-08-03 Roland McGrath * configure.ac, systemtap.spec.in: Version 0.2.1. * Makefile.in, aclocal.m4, configure: Regenerated. 2005-08-02 Roland McGrath * loc2c.c (emit_bitfield): Return bool, value from emit_base_fetch. (c_translate_fetch): Update caller. (c_translate_pointer): Never ignore emit_base_fetch return value. * systemtap.spec.in (%install): Remove parameters after %makeinstall. 2005-08-02 Frank Ch. Eigler * 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 * tapsets.cxx (emit_registrations): Treat module_name="kernel" as if module_name="". 2005-08-01 Graydon Hoare * 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(). 2005-08-01 Frank Ch. Eigler * tapsets.cxx: Support ".return" option for function probe points. * testuite/buildok/five.stp: Try it. 2005-08-01 Frank Ch. Eigler * 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 * 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 From Graydon Hoare * Makefile.am: Make sure stpd goes into libexec/systemtap/ * Makefile.in: Regenerated. 2005-07-29 Frank Ch. Eigler * 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 * Version 0.2 distribution. * 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. * tapsets.cxx: -> * loc2c.c, loc2c.h: Likewise. * main.cxx (main): Check return value of system. * 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. * 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. 2005-07-28 Frank Ch. Eigler * elaborate.cxx (find_var): Correct array dereferencing thinko. 2005-07-28 Graydon Hoare * 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 Frank Ch. Eigler * 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. 2005-07-28 Frank Ch. Eigler * 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 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 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-28 Martin Hunt * Makefile.am (install-data-local): Add runtime/transport. * Makefile.in: regenerated. 2005-07-26 Graydon Hoare * elaborate.cxx: Revert builtin-function code. * translate.cxx: Likewise. * tapsets.{h,cxx}: Likewise. 2005-07-26 Martin Hunt * buildrun.cxx (compile_pass): Add -Wno-unused to CFLAGS because usually a module doesn't use every function in the runtime. 2005-07-26 Martin Hunt * 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. 2005-07-26 Frank Ch. Eigler 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. 2005-07-26 Martin Hunt * Makefile.am (AM_CPPFLAGS): Set PKGLIBDIR correctly. 2005-07-26 Martin Hunt * systemtap.spec.in: Stpd goes in libexec/systemtap. * Makefile.am (libexecdir): Set to libexecdir/systemtap. * aclocal.m4, Makefile.in: Regenerated 2005-07-25 Roland McGrath * configure.ac: Don't define PKGLIBDIR and PKGDATADIR here. * Makefile.am (AM_CPPFLAGS): New variable, use -D here instead. (dist-hook): Don't remove ChangeLog files. (install-data-local): Don't install docs, just runtime stuff. (rpm, clean-local): Use make variables instead of @substitution@s. * configure, config.in, aclocal.m4, Makefile.in: Regenerated 2005-07-22 Graydon Hoare * 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. 2005-07-21 Martin Hunt * Makefile.am (EXTRA_DIST): Add systemtap.spec. (install-data-local): Install docs and probes. (docs): New target. (rpm): New target. * configure.ac: Set initial version to 0.1.1. (pkglibdir): Set to libexec. * Makefile.in: Regenerated. 2005-07-20 Graydon Hoare * elaborate.{cxx,h} (find_array): Remove. (find_scalar): Rename to find_var, add array support. * staptree.{cxx,h} (vardecl::compatible_arity): New method. * translate.cxx: Refactor, add array read/write support. * testsuite/transok/three.stp: Uncomment array uses. * testsuite/transok/seven.stp: New test of array r/w. 2005-07-20 Frank Ch. Eigler * 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-19 Frank Ch. Eigler * Makefile.am (dist-hook): Complete the resulting tarball. * Makefile.in: Regenerated. 2005-07-19 Frank Ch. Eigler * translate.cxx (emit_module_init/exit, translate_pass): Conform to newer runtime startup/shutdown hooks. 2005-07-15 Frank Ch. Eigler * Makefile.am (install-data-local): Correct typo. * buildrun.cxx (compile_pass): Ditto. * main.cxx (main): Print errors if passes 4 or 5 fail. 2005-07-14 Frank Ch. Eigler * 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. 2005-07-14 Frank Ch. Eigler * Makefile.am (stpd): Install in $pkglibdir. (runtime): Copy to $pkgdatadir. * configure.ac: Pass along pkgdatadir and pkglibdir. * main.cxx: Default runtime_path from pkgdatadir. * buildrun.cxx (run_pass): Correct stpd directory. * Makefile.in, configure, config.in: Regenerated. 2005-07-12 Graydon Hoare * 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-12 Frank Ch. Eigler * buildrun.cxx (compile_pass): Make non-verbose mode quieter. (run_pass): Spawn stpd for dirty work. * Makefile.am: Also build stpd into libexecdir. * configure.ac: Pass LIBEXECDIR. * Makefile.in, configure, config.in: Regenerated. * AUTHORS: Update. 2005-07-11 Graydon Hoare * staptree.cxx (require): Generally handle null pointers in src. (deep_copy_visitor::visit_if_statement): Revert fche's change. 2005-07-11 Frank Ch. Eigler * parse.cxx (parse_literal): Compile cleanly on 64-bit host. * staptree.cxx (deep_copy_visitor::visit_if_statement): Don't freak on a null if_statement.elseblock. 2005-07-07 Graydon Hoare * 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. 2005-07-07 Frank Ch. Eigler * 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. 2005-07-05 Graydon Hoare * 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 * 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-07-04 Graydon Hoare * 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. 2005-06-27 Graydon Hoare * 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 * 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 * config.in, configure: Regenerated. * tapsets.cxx: Make dwarf code conditional on new elfutils header. 2005-06-20 Graydon Hoare * 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 * 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 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. 2005-06-08 Frank Ch. Eigler systemtap/916 Implement all basic scalar operators, including modify-assignment. * parse.cxx (lexer): Allow multi-character lookahead in order to scan 1/2/3-character operators. (parse_boolean_or/and/xor/shift): New routines. * translate.cxx (visit_assignment, visit_binary_expression, visit_*_crement): Generally rewrote. (visit_*): Added more parentheses in output. (emit_module_init): Initialize globals. * staptree.h, elaborate.cxx, elaborate.h: Remove exponentiation. * main.cxx (main): Add an end-of-line to output file. * testsuite/*: Several new tests. 2005-06-05 Frank Ch. Eigler Implement for/next/continue/break/while statements. * staptree.h: Declare new 0-arity statement types. Tweak for_loop. * parse.cxx: Parse them all. * translate.cxx (c_unparser): Maintain break/continue label stack. (visit_for_loop, *_statement): New implementations. * elaborate.*, staptree.cxx: Mechanical changes. * testsuite/parseok/ten.stp, semko/twelve.stp, transko/two.stp, transok/five.stp: New tests. 2005-06-03 Frank Ch. Eigler * elaborate.cxx (find_*): Remove arity checks from here ... * staptree.cxx (set_arity): Put arity match assertion here. * testsuite/semko/{six,nine}.stp: Confirm logic. * testsuite/transko/one.stp: First translation-time ko test. 2005-06-03 Frank Ch. Eigler * TODO: Removed entries already represented in bugzilla. * elaborate.cxx: Rewrite type inference for several operators. * main.cxx (main): For -p2 runs, print types of function/probe locals. * parse.cxx (scan): Identify more two-character operators. (parse_comparison): Support the whole suite. * translate.cxx (visit_unary_expression, logical_or_expr, logical_and_expr, comparison,ternary_expression): New support. * testsuite/parseok/semok.stp: Clever new test. * testsuite/transok/four.stp: New test. * testsuite/*: Some tweaked tests for syntax changes. 2005-06-03 Frank Ch. Eigler * parse.cxx (scan): Support C and C++ comment styles. * testsuite/parseok/four.stp: Test them some ... * testsuite/parseko/nine.stp: ... and some more. 2005-06-02 Frank Ch. Eigler * translate.cxx (visit_concatenation, visit_binary_expression): New basic implementation. (*): Reduce emitted whitespace and remove `# LINE "FILE"' lines. 2005-06-02 Frank Ch. Eigler Parse foreach construct. Added fuller copyright notices throughout. * staptree.h (foreach_loop): New tree node type. * staptree.cxx: Print it, visit it, love it, leave it. * parse.cxx: Parse it. (parse_stmt_block): Don't require ";" separators between statements. (parse_array_in): Use [] as index group operator instead of (). * elaborate.cxx (visit_foreach_loop): New code. * translate.cxx: Slightly tighten errorcount/actioncount handling. * main.cxx: Accept "-" as script file name standing for stdin. (visit_arrayindex): Switch to simpler set_arity call. * configure.ac: Generate DATE macro. * Makefile.in, configure, config.in: Regenerated. * testsuite/*: New/updated tests for syntax changes, foreach (). 2005-05-30 Frank Ch. Eigler More fully parse & elaborate "expr in array" construct. * staptree.h (array_in): Make this unary. Update .cxx to match. * parse.cxx (parse_array_in): Rewrite. (parse_symbol_plain): Removed. Update .h to match. * elaborate.cxx (typeresolution_info::visit_array_in): New function. (find_array): Tentatively, accept arity=0. * translate.cxx (c_unparser::c_assign): New functions to eliminate much ugly duplication. Use throughout. (visit_symbol): Correct function formal argument search. (c_tmpcounter*::visit): Add missing recursion in several functions. * testsuite/*: Add new tests for array-in construct. Add the first "transok" test. * Makefile.am: Add transok tests. * Makefile.in: Regenerated. 2005-05-26 Frank Ch. Eigler * translate.cxx: Traverse trees just for common-header generation, to emit explicit temp variables into context. Switch to explicit "frame" pointer in generated function/probe bodies. Initialize locals in function bodies. Rename "test_unparser" to "c_unparser" throughout. 2005-05-24 Frank Ch. Eigler * elaborate.cxx (find_array): Support automagic tapset globals. * testsuite/semok/nine.stp: Test it. * staptree.cxx (stapfile print): List globals. 2005-05-24 Frank Ch. Eigler * testsuite/semlib/*: New tapset library chunks for "-I" testing. * testsuite/semok/eight.stp, nine.stp: New tests. 2005-05-22 Frank Ch. Eigler * Makefile.am (gcov): New target to generate test-coverage data from a testsuite run. * Makefile.in: Regenerated. 2005-05-20 Frank Ch. Eigler Many changes throughout. Partial sketch of translation output. * elaborate.*: Elaboration pass. * translate.*: Translation pass. * staptree.*: Simplified for visitor concept. * main.cxx: Translator mainline. * *test.cxx: Removed. * testsuite/*: Some new tests, some changed for newer syntax. 2005-05-05 Frank Ch. Eigler * parse.cxx (parse): Add helper methods. (lexer::scan, parse_assignment): Parse "<<<" operator. Fix assignment associativity. (parse_symbol): Permit function with empty arg list. (parse_global, parse_statement, parse_functiondecl): Expect unconsumed leading keyword. (parse_global): Don't use ";" termination. * parse.h: Corresponding changes. * staptree.cxx (binary_expression::resolve_types): Fix <<< type inference. (translator_output): Improve pretty-printing. (*): Add general visitors to statement/expression types. * staptree.h: Corresponding changes. Tweak symresolution_info fields. Add semantic_error class. * semtest.cxx: Adapt to this. * testsuite/parseok/two.stp, semok/*.stp: Adapt to syntax changes. 2005-03-15 Frank Ch. Eigler * semtest.cxx: Print probe signatures properly. * staptree.cxx (probe::printsig): New function. 2005-03-15 Frank Ch. Eigler * TODO: New file. Include some probe-point-provider syntax examples. * parse.cxx (lexer::scan, parser::parse_literal): Support hex, octal numbers via strtol. (parse_probe, parse_probe_point): Modify for dotted syntax. * staptree.cxx: Ditto. * parsetest.cxx, semtest.cxx: Print parse/sem results even if .stp files were given on command line. * parse.h, staptree.h: Rename probe_point_spec -> probe_point. * runtest.sh: New test-runner front-end script. * Makefile.am: Use it for TESTS_ENVIRONMENT. * testsuite/*: Update probe point syntax. Add a bunch of new tests. 2005-03-04 Frank Ch. Eigler * parse.cxx (scan): Support '$' characters in identifiers. (parse_symbol): Support thread-> / process-> shorthand. * staptree.cxx (symresolution_info::find): Split up into find_scalar, find_array, find_function. (resolve_symbols): Call the above for symbol/arrayindex/functioncall. (find_scalar): Add stub support for synthetic builtin variables. * staptree.h: Corresponding changes. * testsuite/*: Some new tests. 2005-03-03 Frank Ch. Eigler * parse.cxx (parse_assignment): Assert lvalueness of left operand. * staptree.h (expression): Add is_lvalue member. * staptree.cxx (functioncall::resolve_types): Don't crash on formal-vs-actual argument count mismatch. (*): Add some is_lvalue stub functions. * testsuite/*: Some new tests. 2005-03-01 Frank Ch. Eigler * parse.cxx: Implement left-associativity for several types of operators. Add some more statement types. Parse functions. Be able to print tokens. Simplify error generating functions. Save tokens in all parse tree nodes. * parse.h: Corresponding changes. * staptree.cxx: Move tree-printing functions here. Add many new functions for symbol and type resolution. * staptree.h: Corresponding changes. * semtest.cxx: New semantic analysis pass & test driver. * testsuite/sem*/*: New tests. * parsetest.cxx: Separated parse test driver. * testsuite/parse*/*: Adapt tests to parsetest driver. * Makefile.am: Build semtest. Run its tests. * Makefile.in: Regenerated. 2005-02-11 Frank Ch. Eigler * parse.cxx, parse.h: New files: parser. * staptree.h: New file: semantic object declarations. * staptree.cxx: New dummy driver file.