Author: sewardj
Date: 2007-12-02 22:03:43 +0000 (Sun, 02 Dec 2007)
New Revision: 7267

Log:
Back out r7210 ("Fix completely bogus implementation of
VG_(seginfo_sect_kind).") as it breaks DRD and possible Callgrind.

The segment kind identification code is basically broken for non-text
segments, but requires fixing at a higher level than this.  See
discussion on valgrind-developers, 20 March 07, "Bug in
VG_(seginfo_sect_kind) ?"

Modified:
   trunk/coregrind/m_debuginfo/debuginfo.c


Modified: trunk/coregrind/m_debuginfo/debuginfo.c
===================================================================
--- trunk/coregrind/m_debuginfo/debuginfo.c     2007-12-02 13:37:18 UTC (rev 
7266)
+++ trunk/coregrind/m_debuginfo/debuginfo.c     2007-12-02 22:03:43 UTC (rev 
7267)
@@ -1263,43 +1263,36 @@
 
 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) 
{
-         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 (a >= si->text_start_avma 
+          && a < si->text_start_avma + si->text_size) {
 
-   if (si != NULL)
-      vg_assert(ret != Vg_SectUnknown);
+        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 (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);
+        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;
+      }
    }
 
    return ret;


-------------------------------------------------------------------------
SF.Net email is sponsored by: The Future of Linux Business White Paper
from Novell.  From the desktop to the data center, Linux is going
mainstream.  Let it simplify your IT future.
http://altfarm.mediaplex.com/ad/ck/8857-50307-18918-4
_______________________________________________
Valgrind-developers mailing list
Valgrind-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/valgrind-developers

Reply via email to