From: <sv...@va...> - 2009-07-15 14:48:42
|
Author: sewardj Date: 2009-07-15 15:48:32 +0100 (Wed, 15 Jul 2009) New Revision: 10465 Log: 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. Modified: trunk/coregrind/m_commandline.c trunk/coregrind/m_coredump/coredump-elf.c trunk/coregrind/m_debugger.c trunk/coregrind/m_debuginfo/d3basics.c trunk/coregrind/m_debuginfo/debuginfo.c trunk/coregrind/m_debuginfo/readdwarf.c trunk/coregrind/m_debuginfo/readdwarf3.c trunk/coregrind/m_debuginfo/readelf.c trunk/coregrind/m_debuginfo/readpdb.c trunk/coregrind/m_debuginfo/readstabs.c trunk/coregrind/m_debuginfo/readxcoff.c trunk/coregrind/m_debuginfo/storage.c trunk/coregrind/m_demangle/demangle.c trunk/coregrind/m_errormgr.c trunk/coregrind/m_execontext.c trunk/coregrind/m_libcassert.c trunk/coregrind/m_libcprint.c trunk/coregrind/m_libcproc.c trunk/coregrind/m_main.c trunk/coregrind/m_mallocfree.c trunk/coregrind/m_options.c trunk/coregrind/m_redir.c trunk/coregrind/m_replacemalloc/replacemalloc_core.c trunk/coregrind/m_scheduler/scheduler.c trunk/coregrind/m_sigframe/sigframe-amd64-linux.c trunk/coregrind/m_sigframe/sigframe-ppc32-aix5.c trunk/coregrind/m_sigframe/sigframe-ppc32-linux.c trunk/coregrind/m_sigframe/sigframe-ppc64-aix5.c trunk/coregrind/m_sigframe/sigframe-ppc64-linux.c trunk/coregrind/m_sigframe/sigframe-x86-linux.c trunk/coregrind/m_signals.c trunk/coregrind/m_stacks.c trunk/coregrind/m_stacktrace.c trunk/coregrind/m_syswrap/syswrap-aix5.c trunk/coregrind/m_syswrap/syswrap-amd64-linux.c trunk/coregrind/m_syswrap/syswrap-generic.c trunk/coregrind/m_syswrap/syswrap-linux.c trunk/coregrind/m_syswrap/syswrap-main.c trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c trunk/coregrind/m_syswrap/syswrap-x86-linux.c trunk/coregrind/m_tooliface.c trunk/coregrind/m_translate.c trunk/coregrind/m_transtab.c trunk/coregrind/m_ume/elf.c trunk/coregrind/m_ume/main.c trunk/coregrind/m_ume/script.c trunk/coregrind/m_wordfm.c trunk/coregrind/pub_core_libcprint.h trunk/coregrind/pub_core_options.h trunk/coregrind/pub_core_tooliface.h [... diff too large to include ...] |