From 9fab2262961c9cd1ab3efea5d362b8a6a1c0c7c3 Mon Sep 17 00:00:00 2001 From: Josh Stone Date: Thu, 18 Mar 2010 15:39:42 -0700 Subject: PR11346: Move the skip-badvars logic into const-folding The const_folder is where we prune constant expressions, like conditionals based on a @defined($foo), so we want to give this a chance to work before skip-badvars comes in and throws a warning. As an added bonus, this makes skip-badvars more generic, so it will work even for non-dwarf $target variables. * elaborate.cxx (const_folder::visit_target_symbol): Enact skip-badvars. * tapsets.cxx (dwarf_var_expanding_visitor::visit_target_symbol): Don't worry about badvars here anymore. Save the error now, clean up later. * testsuite/semok/badvar_undefined.stp: Test that @defined with skip-badvars doesn't throw any warnings. --- testsuite/semok/badvar_undefined.stp | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100755 testsuite/semok/badvar_undefined.stp (limited to 'testsuite/semok/badvar_undefined.stp') diff --git a/testsuite/semok/badvar_undefined.stp b/testsuite/semok/badvar_undefined.stp new file mode 100755 index 00000000..05023ef0 --- /dev/null +++ b/testsuite/semok/badvar_undefined.stp @@ -0,0 +1,7 @@ +#!/bin/sh + +# PR11346: We shouldn't even see a warning when a would-be skip-badvars +# replacement is masked by a @defined condition. + +stap -W -p2 --skip-badvars -e 'probe kernel.function("sys_getxattr") +{ printf("%s\n", user_string(@defined($pathname) ? $pathname : $path)) }' -- cgit