This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "systemtap: system-wide probe/trace tool". The branch, master has been updated via 0da35eae7b0cb6ba0e4541eea7a77d1efa50a5be (commit) via 0a4d32384ed8f9e282ce87ba3cd6bd9a4256210b (commit) via 5b1fa53b0c15142cc3bd5fe2c1a76ca90f05eac6 (commit) via 929eb962cbd543251f4faf25d6fc9b3ab3021623 (commit) from b82890944fa875ae6f1f46886da7c813882b3f44 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 0da35eae7b0cb6ba0e4541eea7a77d1efa50a5be Author: Josh Stone Date: Thu Oct 6 13:00:09 2011 -0700 PR3217: Add STP_LEGACY_PRINT option to use the old form * translate.cxx (c_unparser::visit_print_format): Alternate using STP_LEGACY_PRINT between the new compiled printfs and the old _stp_[s]printf, so we can make sure both still work. (c_unparser::emit_compiled_printf_locals): Conditionalize. (c_unparser::emit_compiled_printfs): Conditionalize. * testsuite/lib/stap_run2.exp: Show extra args used in stap_run2. * testsuite/systemtap.printf/*.exp: Run -DSTP_LEGACY_PRINT too in all the tests using stap_run2. Others will require greater restructuring to achieve this... commit 0a4d32384ed8f9e282ce87ba3cd6bd9a4256210b Author: Josh Stone Date: Thu Oct 6 12:33:59 2011 -0700 PR3217: Make compiled-printf functions noinline When running systemtap.printf/int1.stp, I got: ...: In function ‘probe_1997’: ...:3885:1: error: the frame size of 772 bytes is larger than 256 bytes [-Werror=frame-larger-than=] It's not yet clear to me why gcc claims so much stack space here, as even in the compiled printf functions, most of the local variables have very limited scope. For now, marking them noinline solves the issue, but this deserves closer inspection... * translate.cxx (c_unparser::emit_compiled_printfs): Mark each generated printf function as noinline. commit 5b1fa53b0c15142cc3bd5fe2c1a76ca90f05eac6 Author: Josh Stone Date: Tue Sep 27 15:30:13 2011 -0700 PR3217: Merge similar compiled-printfs It's pretty common for tapset wildcards to expand to lots of probes with slightly different handlers (e.g. syscall.*), and we'd like for the newly expanded printf code to not be duplicated so much. This patch keeps a hash in the translator of visited format strings, so we can output a compiled version of that only once. This requires some new argument space in the context, but we can optimize by realizing that (1) printfs never nest when arguments are precomputed, (2) string arguments are immutable and need not be copied, and (3) return strings for sprintf can write directly to the caller's tmpvar. * translate.cxx (c_unparser::compiled_printfs): New map for storing pair(print_to_stream, format_string) -> compiled printf name. (c_unparser::emit_compiled_printfs): New, emit the expanded function body for every compiled printf. (c_unparser::emit_compiled_printf_locals): New, emit a union-struct of context locals for all compiled printfs. (c_unparser::emit_common_header): Call emit_compiled_printf*. (c_unparser::declare_compiled_printf): New, called to declare that we need this printf -- add it to the map if it's not already there. (c_tmpcounter::visit_print_format): Declare printfs as we see them. (c_unparser::get_compiled_printf): New, get the name for a previously declared printf function. (c_unparser::visit_print_format): Get the compiled printf function. commit 929eb962cbd543251f4faf25d6fc9b3ab3021623 Author: Josh Stone Date: Tue Jun 7 16:50:20 2011 -0700 PR3217: Compiled printf This translates script-level printf statements into unrolled printing statements. The compiled code is faster, but also larger. * runtime/vsprintf.c (_stp_vsprint_memory): Factored out for %s/%m/%M. (_stp_vsprint_memory_size): Factored out for size of %s/%m/%M. (_stp_vsprint_memory_size): Factored out for %b. (_stp_vsprint_binary_size): Factored out for size of %b. * staptree.h (print_format::format_flag): Match the same definitions used by print_flag in runtime/vsprintf.c. (print_format::conversion_type): Collapse numeric types into one. (print_format::format_component::base): New field to classify numeric. (print_format::set_flag, print_format::test_flag): New, for convenience. * elaborate.cxx (typeresolution_info::visit_print_format): Handle the changes in conversion_type. * staptree.cxx (print_format::components_to_string): Parse out the new and impoved format_component. (print_format::string_to_components): Create the new format_component. * translate.cxx (c_unparser::visit_print_format): Generate unrolled code for printf statements. ----------------------------------------------------------------------- Summary of changes: elaborate.cxx | 8 +- runtime/vsprintf.c | 341 +++++++++--------- staptree.cxx | 83 ++-- staptree.h | 23 +- testsuite/lib/stap_run2.exp | 2 +- testsuite/systemtap.printf/basic1.exp | 1 + testsuite/systemtap.printf/basic2.exp | 1 + testsuite/systemtap.printf/basic3.exp | 1 + testsuite/systemtap.printf/basic4.exp | 1 + testsuite/systemtap.printf/basic5.exp | 1 + testsuite/systemtap.printf/basic6.exp | 1 + testsuite/systemtap.printf/bin6.exp | Bin 2741 -> 2796 bytes testsuite/systemtap.printf/char1.exp | 1 + testsuite/systemtap.printf/int1.exp | 1 + testsuite/systemtap.printf/memory1.exp | 1 + testsuite/systemtap.printf/print.exp | 1 + testsuite/systemtap.printf/print_char.exp | 1 + testsuite/systemtap.printf/println.exp | 1 + testsuite/systemtap.printf/ptr-1.2.exp | 1 + testsuite/systemtap.printf/ptr-1.3.exp | 1 + testsuite/systemtap.printf/string1.exp | 1 + translate.cxx | 585 ++++++++++++++++++++++++----- 22 files changed, 737 insertions(+), 320 deletions(-) hooks/post-receive -- systemtap: system-wide probe/trace tool