|
From: <sv...@va...> - 2010-04-12 20:57:05
|
Author: sewardj
Date: 2010-04-12 21:56:56 +0100 (Mon, 12 Apr 2010)
New Revision: 11104
Log:
search_all_symtabs: when mapping addresses to text symbols, consider
any symbol in the r-x mapped segment to be a valid candidate. This
relaxes the filtering criterion slightly, makes it consistent with
other is-it-text? checks. Some addresses which before didn't get
mapped to anything are now correctly mapped to "vtable for Foo"
symbols.
Modified:
trunk/coregrind/m_debuginfo/debuginfo.c
Modified: trunk/coregrind/m_debuginfo/debuginfo.c
===================================================================
--- trunk/coregrind/m_debuginfo/debuginfo.c 2010-04-12 20:05:24 UTC (rev 11103)
+++ trunk/coregrind/m_debuginfo/debuginfo.c 2010-04-12 20:56:56 UTC (rev 11104)
@@ -1239,10 +1239,13 @@
for (di = debugInfo_list; di != NULL; di = di->next) {
if (findText) {
- inRange = di->text_present
- && di->text_size > 0
- && di->text_avma <= ptr
- && ptr < di->text_avma + di->text_size;
+ /* Consider any symbol in the r-x mapped area to be text.
+ See Comment_Regarding_Text_Range_Checks in storage.c for
+ details. */
+ inRange = di->have_rx_map
+ && di->rx_map_size > 0
+ && di->rx_map_avma <= ptr
+ && ptr < di->rx_map_avma + di->rx_map_size;
} else {
inRange = (di->data_present
&& di->data_size > 0
|