Author: sewardj
Date: 2007-11-25 12:30:36 +0000 (Sun, 25 Nov 2007)
New Revision: 7210

Log:
Fix completely bogus implementation of VG_(seginfo_sect_kind).  This
was reported a very long time ago (2 years?) but was not fixed until
now.

Modified:
   trunk/coregrind/m_debuginfo/debuginfo.c


Modified: trunk/coregrind/m_debuginfo/debuginfo.c
===================================================================
--- trunk/coregrind/m_debuginfo/debuginfo.c     2007-11-25 00:56:51 UTC (rev 
7209)
+++ trunk/coregrind/m_debuginfo/debuginfo.c     2007-11-25 12:30:36 UTC (rev 
7210)
@@ -1263,36 +1263,43 @@
 
 VgSectKind VG_(seginfo_sect_kind)(Addr a)
 {
-   SegInfo* si;
+   SegInfo*   si;
    VgSectKind ret = Vg_SectUnknown;
 
-   for(si = segInfo_list; si != NULL; si = si->next) {
-      if (a >= si->text_start_avma 
-          && a < si->text_start_avma + si->text_size) {
+   for (si = segInfo_list; si != NULL; si = si->next) {
+      if (a >= si->text_start_avma && a < si->text_start_avma + si->text_size) 
{
+         ret = Vg_SectText;
+         break;
+      }
+      if (a >= si->data_start_avma && a < si->data_start_avma + si->data_size) 
{
+         ret = Vg_SectData;
+         break;
+      }
+      if (a >= si->bss_start_avma && a < si->bss_start_avma + si->bss_size) {
+         ret = Vg_SectBSS;
+         break;
+      }
+      if (a >= si->plt_start_avma && a < si->plt_start_avma + si->plt_size) {
+         ret = Vg_SectPLT;
+         break;
+      }
+      if (a >= si->got_start_avma && a < si->got_start_avma + si->got_size) {
+         ret = Vg_SectGOT;
+         break;
+      }
+   }
 
-        if (0)
-           VG_(printf)(
-               "addr=%p si=%p %s got=%p %d  plt=%p %d data=%p %d bss=%p %d\n",
-               a, si, si->filename, 
-               si->got_start_avma,  si->got_size,
-               si->plt_start_avma,  si->plt_size,
-               si->data_start_avma, si->data_size,
-               si->bss_start_avma,  si->bss_size);
+   if (si != NULL)
+      vg_assert(ret != VgSectUnknown);
 
-        ret = Vg_SectText;
-
-        if (a >= si->data_start_avma && a < si->data_start_avma + 
si->data_size)
-           ret = Vg_SectData;
-        else 
-         if (a >= si->bss_start_avma && a < si->bss_start_avma + si->bss_size)
-           ret = Vg_SectBSS;
-        else 
-         if (a >= si->plt_start_avma && a < si->plt_start_avma + si->plt_size)
-           ret = Vg_SectPLT;
-        else 
-         if (a >= si->got_start_avma && a < si->got_start_avma + si->got_size)
-           ret = Vg_SectGOT;
-      }
+   if (0 && si) {
+      VG_(printf)(
+         "addr=%p si=%p %s got=%p %d  plt=%p %d data=%p %d bss=%p %d\n",
+         a, si, si->filename, 
+         si->got_start_avma,  si->got_size,
+         si->plt_start_avma,  si->plt_size,
+         si->data_start_avma, si->data_size,
+         si->bss_start_avma,  si->bss_size);
    }
 
    return ret;


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Valgrind-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/valgrind-developers

Reply via email to