mirror of
https://github.com/Zenithsiz/ftmemsim-valgrind.git
synced 2026-02-08 21:09:49 +00:00
Merge coregrind/ changes from branches/MESSAGING_TIDYUP r10464.
This commit tidies up and rationalises what could be called the "messaging" system -- that part of V to do with presenting output to the user. In particular it brings significant improvements to XML output. Changes are: * XML and normal text output now have separate file descriptors, which solves longstanding problems for XML consumers caused by the XML output getting polluted by unexpected non-XML output. * This also means that we no longer have to hardwire all manner of output settings (verbosity, etc) when XML is requested. * The XML output format has been revised, cleaned up, and made more suitable for use by error detecting tools in general (various Memcheck-specific features have been removed). XML output is enabled for Ptrcheck and Helgrind, and Memcheck is updated to the new format. * One side effect is that the behaviour of VG_(message) has been made to be consistent with printf: it no longer automatically adds a newline at the end of the output. This means multiple calls to it can be used to build up a single line message; or a single call can write a multi-line message. The ==pid== preamble is automatically inserted at each newline. * VG_(message)(Vg_UserMsg, ..args..) now has the abbreviated form VG_(UMSG)(..args..); ditto VG_(DMSG) for Vg_DebugMsg and VG_(EMSG) for Vg_DebugExtraMsg. A couple of other useful printf derivatives have been added to pub_tool_libcprint.h, most particularly VG_(vcbprintf). * There's a small change in the core-tool interface to do with error handling: VG_(needs_tool_errors) has a new method void (*before_pp_Error)(Error* err) which, if non-NULL, is called just before void (*pp_Error)(Error* err). This is to give tools the chance to look at errors before any part of them is printed, so they can print any XML preamble they like. * coregrind/m_errormgr.c has been overhauled and cleaned up, and is a bit simpler and more commented. In particular pp_Error and VG_(maybe_record_error) are significantly changed. The diff is huge, but mostly very boring. Most of the changes are of the form - VG_(message)(Vg_UserMsg, "this is a message %d", n); + VG_(message)(Vg_UserMsg, "this is a message %d\n", n); Unfortunately as a result of this, it touches a large number of source files. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@10465
This commit is contained in:
@@ -523,9 +523,9 @@ static void printIpDesc(UInt n, Addr ip)
|
||||
VG_(describe_IP)(ip, buf, BUF_LEN);
|
||||
|
||||
if (VG_(clo_xml)) {
|
||||
VG_(message)(Vg_UserMsg, " %s", buf);
|
||||
VG_(printf_xml)(" %s\n", buf);
|
||||
} else {
|
||||
VG_(message)(Vg_UserMsg, " %s %s", ( n == 0 ? "at" : "by" ), buf);
|
||||
VG_(message)(Vg_UserMsg, " %s %s\n", ( n == 0 ? "at" : "by" ), buf);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -535,12 +535,12 @@ void VG_(pp_StackTrace) ( StackTrace ips, UInt n_ips )
|
||||
vg_assert( n_ips > 0 );
|
||||
|
||||
if (VG_(clo_xml))
|
||||
VG_(message)(Vg_UserMsg, " <stack>");
|
||||
VG_(printf_xml)(" <stack>\n");
|
||||
|
||||
VG_(apply_StackTrace)( printIpDesc, ips, n_ips );
|
||||
|
||||
if (VG_(clo_xml))
|
||||
VG_(message)(Vg_UserMsg, " </stack>");
|
||||
VG_(printf_xml)(" </stack>\n");
|
||||
}
|
||||
|
||||
/* Get and immediately print a StackTrace. */
|
||||
|
||||
Reference in New Issue
Block a user