From: dsmith Date: Thu, 17 Jan 2008 20:44:34 +0000 (+0000) Subject: 2008-01-17 David Smith X-Git-Tag: release-0.6.2~129 X-Git-Url: https://sourceware.org/git/?a=commitdiff_plain;h=af3047833424103c4e17728e849670da865d37c3;p=systemtap.git 2008-01-17 David Smith * tapsets.cxx (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. --- diff --git a/ChangeLog b/ChangeLog index 619823128..71cb20019 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,9 @@ (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-16 David Smith diff --git a/tapsets.cxx b/tapsets.cxx index 89819d6e1..84187960f 100644 --- a/tapsets.cxx +++ b/tapsets.cxx @@ -5882,6 +5882,25 @@ perfmon_var_expanding_copy_visitor::visit_target_symbol (target_symbol *e) if (e->base_name != "$counter") throw semantic_error ("target variables not available to perfmon probes"); + if (e->components.size() > 0) + { + switch (e->components[0].first) + { + case target_symbol::comp_literal_array_index: + throw semantic_error("perfmon probe '$counter' variable may not be used as array", + e->tok); + break; + case target_symbol::comp_struct_member: + throw semantic_error("perfmon probe '$counter' variable may not be used as a structure", + e->tok); + break; + default: + throw semantic_error ("invalid use of perfmon probe '$counter' variable", + e->tok); + break; + } + } + ec->code = "THIS->__retvalue = _pfm_pmd_x[" + lex_cast(counter_number) + "].reg_num;"; ec->code += "/* pure */";