From 83ca3872dadc89c5a8155150bf76d5c09890dcc9 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Thu, 30 Jul 2009 00:06:59 +0200 Subject: PR10459. Disable all warning messages on -w. * stap.1.in: Document that -w disables all warning messages. * dwflpp.cxx (get_module_dwarf): Only output warning when session suppress_warnings is not set. * translate.cxx (dump_unwindsyms): Likewise. (emit_symbol_data_done): Likewise. * tapsets.cxx (query_module_symtab): Likewise. (read_from_elf_file): Take systemtap_session, check suppress_warnings before emitting warning. (read_from_text_file): Likewise. (get_symtab): Call read_from_elf_file and read_from_text_file with session. --- translate.cxx | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'translate.cxx') diff --git a/translate.cxx b/translate.cxx index 9c901065..f2e04d7d 100644 --- a/translate.cxx +++ b/translate.cxx @@ -4779,7 +4779,7 @@ dump_unwindsyms (Dwfl_Module *m, // likely can't do anything about this; backtraces for the // affected module would just get all icky heuristicy. // So only report in verbose mode. - if (c->session.verbose > 2) + if (c->session.verbose > 2 && ! c->session.suppress_warnings) c->session.print_warning ("No unwind data for " + modname + ", " + dwfl_errmsg (-1)); } @@ -5080,12 +5080,12 @@ emit_symbol_data_done (unwindsym_dump_context *ctx, systemtap_session& s) << ";\n"; // Some nonexistent modules may have been identified with "-d". Note them. - for (set::iterator it = ctx->undone_unwindsym_modules.begin(); - it != ctx->undone_unwindsym_modules.end(); - it ++) - { - s.print_warning ("missing unwind/symbol data for module '" + (*it) + "'"); - } + if (! s.suppress_warnings) + for (set::iterator it = ctx->undone_unwindsym_modules.begin(); + it != ctx->undone_unwindsym_modules.end(); + it ++) + s.print_warning ("missing unwind/symbol data for module '" + + (*it) + "'"); } -- cgit From 6fda2dff51c667a8c73545dd397b844108715310 Mon Sep 17 00:00:00 2001 From: Josh Stone Date: Mon, 3 Aug 2009 14:45:21 -0700 Subject: PR2049: support arbitrary $target-array indexing Rather than just numeric literals, we can now support arbitrary expressions for the index value. Note that loc2c won't allow this for noncontiguous arrays, as the access methods need to be statically computed, but for contiguous arrays and pointers-as-arrays it works just fine. * staptree.h (target_symbol::component): Add expression_array_index. * staptree.cxx (target_symbol::visit_components): New helper. (target_symbol::assert_no_components): Recognize new array type. (target_symbol::component::print): Print subexpressions. (traversing_visitor::visit_target_symbol, visit_cast_op): Visit the indexing components too. (varuse_collecting_visitor::visit_target_symbol): Ditto. (update_visitor::visit_target_symbol, visit_cast_op): Ditto. * elaborate.cxx (void_statement_reducer::visit_target_symbol): New. (void_statement_reducer::visit_cast_op): Save indexes too. * parse.cxx (parser::parse_target_symbol_components): Parse expressions. * tapsets.cxx (dwarf_var_expanding_visitor::visit_target_symbol): Pass expression-indexes as parameters (indexN) to the dwarf function. (dwarf_cast_expanding_visitor::visit_cast_op): Ditto. (tracepoint_var_expanding_visitor::visit_target_symbol_arg): Ditto. (sdt_var_expanding_visitor::visit_target_symbol): Visit the new @cast. * dwflpp.cxx (dwflpp::translate_components): Use THIS->indexN. * translate.cxx (c_unparser::visit_target_symbol): Correct error msg. * testsuite/systemtap.base/pointer_array.stp: Use a simple index. --- translate.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'translate.cxx') diff --git a/translate.cxx b/translate.cxx index f2e04d7d..a26e4085 100644 --- a/translate.cxx +++ b/translate.cxx @@ -3515,7 +3515,7 @@ c_unparser::visit_target_symbol (target_symbol* e) if (!e->probe_context_var.empty()) o->line() << "l->" << e->probe_context_var; else - throw semantic_error("cannot translate general cast expression", e->tok); + throw semantic_error("cannot translate general target expression", e->tok); } -- cgit