Author: sewardj
Date: 2008-01-09 22:53:42 +0000 (Wed, 09 Jan 2008)
New Revision: 7335

Log:
Now that the infrastructure behind it is straightened out a bit, fix
VG_(seginfo_sect_kind) accordingly.

Modified:
   branches/DATASYMS/coregrind/m_debuginfo/debuginfo.c
   branches/DATASYMS/include/pub_tool_debuginfo.h


Modified: branches/DATASYMS/coregrind/m_debuginfo/debuginfo.c
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/debuginfo.c 2008-01-09 22:01:40 UTC 
(rev 7334)
+++ branches/DATASYMS/coregrind/m_debuginfo/debuginfo.c 2008-01-09 22:53:42 UTC 
(rev 7335)
@@ -1455,38 +1455,46 @@
 VgSectKind VG_(seginfo_sect_kind)(Addr a)
 {
    DebugInfo* di;
-   VgSectKind ret = Vg_SectUnknown;
 
    for (di = debugInfo_list; di != NULL; di = di->next) {
-      if (a >= di->text_avma 
-          && a < di->text_avma + di->text_size) {
 
-        if (0)
-           VG_(printf)(
-               "addr=%p di=%p %s got=%p %ld  plt=%p %ld data=%p %ld bss=%p 
%ld\n",
-               a, di, di->filename,
-               di->got_avma,  di->got_size,
-               di->plt_avma,  di->plt_size,
-               di->data_avma, di->data_size,
-               di->bss_avma,  di->bss_size);
+      if (0)
+         VG_(printf)(
+            "addr=%p di=%p %s got=%p,%ld plt=%p,%ld data=%p,%ld bss=%p,%ld\n",
+            a, di, di->filename,
+            di->got_avma,  di->got_size,
+            di->plt_avma,  di->plt_size,
+            di->data_avma, di->data_size,
+            di->bss_avma,  di->bss_size);
 
-        ret = Vg_SectText;
+      if (di->text_size > 0
+          && a >= di->text_avma && a < di->text_avma + di->text_size)
+         return Vg_SectText;
 
-        if (a >= di->data_avma && a < di->data_avma + di->data_size)
-           ret = Vg_SectData;
-        else 
-         if (a >= di->bss_avma && a < di->bss_avma + di->bss_size)
-           ret = Vg_SectBSS;
-        else 
-         if (a >= di->plt_avma && a < di->plt_avma + di->plt_size)
-           ret = Vg_SectPLT;
-        else 
-         if (a >= di->got_avma && a < di->got_avma + di->got_size)
-           ret = Vg_SectGOT;
-      }
+      if (di->data_size > 0
+          && a >= di->data_avma && a < di->data_avma + di->data_size)
+         return Vg_SectData;
+
+      if (di->bss_size > 0
+          && a >= di->bss_avma && a < di->bss_avma + di->bss_size)
+         return Vg_SectBSS;
+
+      if (di->plt_size > 0
+          && a >= di->plt_avma && a < di->plt_avma + di->plt_size)
+         return Vg_SectPLT;
+
+      if (di->got_size > 0
+          && a >= di->got_avma && a < di->got_avma + di->got_size)
+         return Vg_SectGOT;
+
+      if (di->opd_size > 0
+          && a >= di->opd_avma && a < di->opd_avma + di->opd_size)
+         return Vg_SectOPD;
+
+      /* we could also check for .eh_frame, if anyone really cares */
    }
 
-   return ret;
+   return Vg_SectUnknown;
 }
 
 Char* VG_(seginfo_sect_kind_name)(Addr a, Char* buf, UInt n_buf)
@@ -1510,6 +1518,9 @@
       case Vg_SectPLT:
          VG_(snprintf)(buf, n_buf, "PLT");
          break;
+      case Vg_SectOPD:
+         VG_(snprintf)(buf, n_buf, "OPD");
+         break;
       default:
          vg_assert(0);
    }

Modified: branches/DATASYMS/include/pub_tool_debuginfo.h
===================================================================
--- branches/DATASYMS/include/pub_tool_debuginfo.h      2008-01-09 22:01:40 UTC 
(rev 7334)
+++ branches/DATASYMS/include/pub_tool_debuginfo.h      2008-01-09 22:53:42 UTC 
(rev 7335)
@@ -130,7 +130,8 @@
       Vg_SectData,
       Vg_SectBSS,
       Vg_SectGOT,
-      Vg_SectPLT
+      Vg_SectPLT,
+      Vg_SectOPD
    }
    VgSectKind;
 


-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
Valgrind-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/valgrind-developers

Reply via email to