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