diff options
author | brolley <brolley> | 2008-01-23 19:15:19 +0000 |
---|---|---|
committer | brolley <brolley> | 2008-01-23 19:15:19 +0000 |
commit | 85278e66846c4ce452c3442887ec947180661c40 (patch) | |
tree | 6eceb665b92b42a6104e3ca6b6c912cb0322b27b | |
parent | 98c22a8eca4b79a0115e11bb1d917f9b4e0ed7fe (diff) | |
download | systemtap-steved-85278e66846c4ce452c3442887ec947180661c40.tar.gz systemtap-steved-85278e66846c4ce452c3442887ec947180661c40.tar.xz systemtap-steved-85278e66846c4ce452c3442887ec947180661c40.zip |
2008-01-23 Dave Brolley <brolley@redhat.com>
* translate.cxx (var::fini): New method.
(c_unparser::emit_module_init): Call var::fini when deregistering
variables without indices.
(c_unparser::emit_module_exit): Likewise.
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | translate.cxx | 18 |
2 files changed, 25 insertions, 0 deletions
@@ -1,3 +1,10 @@ +2008-01-23 Dave Brolley <brolley@redhat.com> + + * translate.cxx (var::fini): New method. + (c_unparser::emit_module_init): Call var::fini when deregistering + variables without indices. + (c_unparser::emit_module_exit): Likewise. + 2008-01-22 Jim Keniston <jkenisto@us.ibm.com> * runtime/uprobes/uprobes.c: Fix from Srinivasa: Recast diff --git a/translate.cxx b/translate.cxx index 21a438b6..0beaf1f8 100644 --- a/translate.cxx +++ b/translate.cxx @@ -400,6 +400,20 @@ public: } } + string fini () const + { + switch (type()) + { + case pe_string: + case pe_long: + return ""; // no action required + case pe_stats: + return "_stp_stat_del (" + value () + ");"; + default: + throw semantic_error("unsupported deallocator for " + value()); + } + } + void declare(c_unparser &c) const { c.c_declare(ty, name); @@ -1201,6 +1215,8 @@ c_unparser::emit_module_init () vardecl* v = session->globals[i]; if (v->index_types.size() > 0) o->newline() << getmap (v).fini(); + else + o->newline() << getvar (v).fini(); } o->newline() << "return rc;"; @@ -1262,6 +1278,8 @@ c_unparser::emit_module_exit () vardecl* v = session->globals[i]; if (v->index_types.size() > 0) o->newline() << getmap (v).fini(); + else + o->newline() << getvar (v).fini(); } o->newline() << "free_percpu (contexts);"; |