diff options
Diffstat (limited to 'elaborate.cxx')
-rw-r--r-- | elaborate.cxx | 57 |
1 files changed, 56 insertions, 1 deletions
diff --git a/elaborate.cxx b/elaborate.cxx index dd0cb0c4..957f5ea5 100644 --- a/elaborate.cxx +++ b/elaborate.cxx @@ -10,6 +10,7 @@ #include "elaborate.h" #include "parse.h" #include "tapsets.h" +#include "session.h" extern "C" { #include <sys/utsname.h> @@ -70,6 +71,58 @@ derived_probe::derived_probe (probe *p, probe_point *l): // ------------------------------------------------------------------------ +// Members of derived_probe_group + +void +derived_probe_group::register_probe(be_derived_probe* p) +{ + throw semantic_error ("unexpected registration of a be_derived_probe"); +} + + +void +derived_probe_group::register_probe(dwarf_derived_probe* p) +{ + throw semantic_error ("unexpected registration of a dwarf_derived_probe"); +} + + +void +derived_probe_group::register_probe(hrtimer_derived_probe* p) +{ + throw semantic_error ("unexpected registration of a hrtimer_derived_probe"); +} + + +void +derived_probe_group::register_probe(mark_derived_probe* p) +{ + throw semantic_error ("unexpected registration of a mark_derived_probe"); +} + + +void +derived_probe_group::register_probe(never_derived_probe* p) +{ + throw semantic_error ("unexpected registration of a never_derived_probe"); +} + + +void +derived_probe_group::register_probe(profile_derived_probe* p) +{ + throw semantic_error ("unexpected registration of a profile_derived_probe"); +} + + +void +derived_probe_group::register_probe(timer_derived_probe* p) +{ + throw semantic_error ("unexpected registration of a timer_derived_probe"); +} + + +// ------------------------------------------------------------------------ // Members of derived_probe_builder bool @@ -330,6 +383,8 @@ struct alias_derived_probe: public derived_probe { alias_derived_probe (probe* base): derived_probe (base) {} + void register_probe (systemtap_session& s) { } + // alias probes should be ultimately expanded to other derived_probe // types, and not themselves emitted. void emit_registrations (translator_output* o) { throw semantic_error ("inappropriate", this->tok); } @@ -882,7 +937,7 @@ semantic_pass_symbols (systemtap_session& s) for (unsigned j=0; j<dps.size(); j++) { derived_probe* dp = dps[j]; - s.probes.push_back (dp); + dp->register_probe (s); try { |