diff options
author | Josh Stone <jistone@redhat.com> | 2009-05-15 13:14:52 -0700 |
---|---|---|
committer | Josh Stone <jistone@redhat.com> | 2009-05-15 13:31:22 -0700 |
commit | b6fa229bc4b361a23f23daa13af634a0515230d6 (patch) | |
tree | bc1ba43e264939bc71a9690aec7d8c719b7c1a5a | |
parent | c94efd6357211094fce035d7435efe971bdf5ae1 (diff) | |
download | systemtap-steved-b6fa229bc4b361a23f23daa13af634a0515230d6.tar.gz systemtap-steved-b6fa229bc4b361a23f23daa13af634a0515230d6.tar.xz systemtap-steved-b6fa229bc4b361a23f23daa13af634a0515230d6.zip |
Merge the dwflpp::query_cu_..._address methods
The method query_cu_containing_global_address was only called by
query_cu_containing_module_address, and the latter was just doing a
simple argument transform. They are now merged into a single method,
query_cu_containing_address. The function module_address_to_global is
also merged here at its only call site.
-rw-r--r-- | dwflpp.cxx | 27 | ||||
-rw-r--r-- | dwflpp.h | 5 | ||||
-rw-r--r-- | tapsets.cxx | 2 |
3 files changed, 9 insertions, 25 deletions
@@ -182,11 +182,17 @@ dwflpp::focus_on_function(Dwarf_Die * f) void -dwflpp::query_cu_containing_global_address(Dwarf_Addr a, void *arg) +dwflpp::query_cu_containing_address(Dwarf_Addr a, void *arg) { Dwarf_Addr bias; assert(dwfl); + assert(module); get_module_dwarf(); + + // globalize the module-relative address + if (module_name != TOK_KERNEL && dwfl_module_relocations (module) > 0) + a += module_start; + Dwarf_Die* cudie = dwfl_module_addrdie(module, a, &bias); if (cudie) // address could be wildly out of range query_cu (cudie, arg); @@ -194,25 +200,6 @@ dwflpp::query_cu_containing_global_address(Dwarf_Addr a, void *arg) } -void -dwflpp::query_cu_containing_module_address(Dwarf_Addr a, void *arg) -{ - query_cu_containing_global_address(module_address_to_global(a), arg); -} - - -Dwarf_Addr -dwflpp::module_address_to_global(Dwarf_Addr a) -{ - assert(dwfl); - assert(module); - get_module_dwarf(); - if (module_name == TOK_KERNEL || dwfl_module_relocations (module) <= 0) - return a; - return a + module_start; -} - - bool dwflpp::module_name_matches(string pattern) { @@ -197,10 +197,7 @@ struct dwflpp void focus_on_cu(Dwarf_Die * c); void focus_on_function(Dwarf_Die * f); - void query_cu_containing_global_address(Dwarf_Addr a, void *arg); - void query_cu_containing_module_address(Dwarf_Addr a, void *arg); - - Dwarf_Addr module_address_to_global(Dwarf_Addr a); + void query_cu_containing_address(Dwarf_Addr a, void *arg); bool module_name_matches(std::string pattern); bool name_has_wildcard(std::string pattern); diff --git a/tapsets.cxx b/tapsets.cxx index 3aad1730..3437205f 100644 --- a/tapsets.cxx +++ b/tapsets.cxx @@ -751,7 +751,7 @@ dwarf_query::query_module_dwarf() // NB: we don't need to add the module base address or bias // value here (for reasons that may be coincidental). - dw.query_cu_containing_module_address(addr, this); + dw.query_cu_containing_address(addr, this); } else { |