Author: sewardj
Date: 2008-02-07 11:58:22 +0000 (Thu, 07 Feb 2008)
New Revision: 7375

Log:
Allow tools to extract the ThreadId associated with an Error, so they
can then enquire as to the IP/SP/FP at error, which are necessary for
building better source-level descriptions of data addresses.



Modified:
   branches/DATASYMS/coregrind/m_errormgr.c
   branches/DATASYMS/include/pub_tool_errormgr.h


Modified: branches/DATASYMS/coregrind/m_errormgr.c
===================================================================
--- branches/DATASYMS/coregrind/m_errormgr.c    2008-02-07 11:53:55 UTC (rev 
7374)
+++ branches/DATASYMS/coregrind/m_errormgr.c    2008-02-07 11:58:22 UTC (rev 
7375)
@@ -119,9 +119,9 @@
    // NULL if unsuppressed; or ptr to suppression record.
    Supp* supp;
    Int count;
-   ThreadId tid;
 
    // The tool-specific part
+   ThreadId tid;           // Initialised by core
    ExeContext* where;      // Initialised by core
    ErrorKind ekind;        // Used by ALL.  Must be in the range (0..)
    Addr addr;              // Used frequently
@@ -129,6 +129,17 @@
    void* extra;            // For any tool-specific extras
 };
 
+
+
+/* Note, VG_(get_error_tid) only produces a meaningful result at the
+   time that the error is handed to VG_(maybe_record_error), since the
+   same tid may be reassigned later to a new thread.  Caveat
+   Caller. */
+ThreadId VG_(get_error_tid) ( Error* err )
+{
+   return err->tid;
+}
+
 ExeContext* VG_(get_error_where) ( Error* err )
 {
    return err->where;

Modified: branches/DATASYMS/include/pub_tool_errormgr.h
===================================================================
--- branches/DATASYMS/include/pub_tool_errormgr.h       2008-02-07 11:53:55 UTC 
(rev 7374)
+++ branches/DATASYMS/include/pub_tool_errormgr.h       2008-02-07 11:58:22 UTC 
(rev 7375)
@@ -55,7 +55,11 @@
    Error;
 
 /* Useful in VG_(tdict).tool_error_matches_suppression(),
- * VG_(tdict).tool_pp_Error(), etc */
+ * VG_(tdict).tool_pp_Error(), etc.  Note, VG_(get_error_tid) only
+   produces a meaningful result at the time that the error is
+   handed to VG_(maybe_record_error), since the same tid may be
+   reassigned later to a new thread.  Caveat Caller. */
+ThreadId    VG_(get_error_tid)     ( Error* err );
 ExeContext* VG_(get_error_where)   ( Error* err );
 ErrorKind   VG_(get_error_kind)    ( Error* err );
 Addr        VG_(get_error_address) ( Error* err );


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

Reply via email to