From 5c34cc891d6929ff9cd52b6fe725873c181b094e Mon Sep 17 00:00:00 2001 From: Josh Stone Date: Thu, 17 Sep 2009 16:51:40 -0700 Subject: Simplify sdt's record_semaphore * tapsets.cxx (sdt_query::record_semaphore): Use lookup_symbol_address. --- tapsets.cxx | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) (limited to 'tapsets.cxx') diff --git a/tapsets.cxx b/tapsets.cxx index 4bede3c9..ed9e1d56 100644 --- a/tapsets.cxx +++ b/tapsets.cxx @@ -3709,22 +3709,11 @@ sdt_query::get_next_probe() void sdt_query::record_semaphore (vector & results, unsigned start) { - int sym_count = dwfl_module_getsymtab(dw.module); - assert (sym_count >= 0); - for (int i = 0; i < sym_count; i++) - { - GElf_Sym sym; - GElf_Word shndxp; - char *sym_str = (char*)dwfl_module_getsym (dw.module, i, &sym, &shndxp); - if (strcmp(sym_str, string(probe_name + "_semaphore").c_str()) == 0) - { - string process_name; - derived_probe_builder::get_param(params, TOK_PROCESS, process_name); - for (unsigned i = start; i < results.size(); ++i) - sess.sdt_semaphore_addr.insert(make_pair(results[i], sym.st_value)); - break; - } - } + string semaphore = probe_name + "_semaphore"; + Dwarf_Addr addr = lookup_symbol_address(dw.module, semaphore.c_str()); + if (addr) + for (unsigned i = start; i < results.size(); ++i) + sess.sdt_semaphore_addr.insert(make_pair(results[i], addr)); } -- cgit