Modularise printing functions in m_libcprint.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3840 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/coregrind/Makefile.am b/coregrind/Makefile.am
index 723436c1..d5c2ef9 100644
--- a/coregrind/Makefile.am
+++ b/coregrind/Makefile.am
@@ -47,6 +47,7 @@
 	pub_core_execontext.h	\
 	pub_core_hashtable.h	\
 	pub_core_libcbase.h	\
+	pub_core_libcprint.h	\
 	pub_core_main.h		\
 	pub_core_mallocfree.h	\
 	pub_core_options.h	\
@@ -89,6 +90,7 @@
 	m_execontext.c \
 	m_hashtable.c \
 	m_libcbase.c \
+	m_libcprint.c \
 	m_main.c \
 	m_mallocfree.c \
 	m_options.c \
@@ -102,7 +104,6 @@
 	m_transtab.c \
 	\
 	ume.c \
-	vg_messages.c \
 	vg_mylibc.c \
 	vg_threadmodel.c \
 	vg_pthreadmodel.c
diff --git a/coregrind/core.h b/coregrind/core.h
index 58e08f7..25c8ee4 100644
--- a/coregrind/core.h
+++ b/coregrind/core.h
@@ -128,10 +128,6 @@
 extern void VG_(unimplemented) ( Char* msg )
             __attribute__((__noreturn__));
 
-/* Tell the logging mechanism whether we are logging to a file
-   descriptor or a socket descriptor. */
-extern Bool VG_(logging_to_socket);
-
 /* Tools use VG_(strdup)() which doesn't expose ArenaId */
 extern Char* VG_(arena_strdup) ( ArenaId aid, const Char* s);
 
diff --git a/coregrind/linux/core_os.c b/coregrind/linux/core_os.c
index 1c65a29..77ed861 100644
--- a/coregrind/linux/core_os.c
+++ b/coregrind/linux/core_os.c
@@ -30,6 +30,7 @@
 
 #include "core.h"
 #include "pub_core_debuglog.h"
+#include "pub_core_libcprint.h"
 #include "pub_core_options.h"
 #include "pub_core_signals.h"
 #include "pub_core_tooliface.h"
diff --git a/coregrind/m_aspacemgr/aspacemgr.c b/coregrind/m_aspacemgr/aspacemgr.c
index 5f4fce1..ded33e6 100644
--- a/coregrind/m_aspacemgr/aspacemgr.c
+++ b/coregrind/m_aspacemgr/aspacemgr.c
@@ -33,6 +33,7 @@
 #include "core.h"
 #include "pub_core_aspacemgr.h"
 #include "pub_core_libcbase.h"
+#include "pub_core_libcprint.h"
 #include "pub_core_options.h"
 #include "pub_core_syscalls.h"
 #include "pub_core_tooliface.h"
diff --git a/coregrind/m_aspacemgr/read_procselfmaps.c b/coregrind/m_aspacemgr/read_procselfmaps.c
index f1699c1..7e20cc1 100644
--- a/coregrind/m_aspacemgr/read_procselfmaps.c
+++ b/coregrind/m_aspacemgr/read_procselfmaps.c
@@ -33,6 +33,7 @@
 #include "core.h"
 #include "pub_core_aspacemgr.h"
 #include "pub_core_libcbase.h"
+#include "pub_core_libcprint.h"
 
 /* Size of a smallish table used to read /proc/self/map entries. */
 #define M_PROCMAP_BUF 50000
diff --git a/coregrind/m_debuginfo/dwarf.c b/coregrind/m_debuginfo/dwarf.c
index a4c7004..2cde637 100644
--- a/coregrind/m_debuginfo/dwarf.c
+++ b/coregrind/m_debuginfo/dwarf.c
@@ -30,6 +30,7 @@
 
 #include "core.h"
 #include "pub_core_libcbase.h"
+#include "pub_core_libcprint.h"
 #include "pub_core_options.h"
 #include "priv_symtab.h"
 
diff --git a/coregrind/m_debuginfo/stabs.c b/coregrind/m_debuginfo/stabs.c
index 1ba467f..aa117a3 100644
--- a/coregrind/m_debuginfo/stabs.c
+++ b/coregrind/m_debuginfo/stabs.c
@@ -30,6 +30,7 @@
 
 #include "core.h"
 #include "pub_core_libcbase.h"
+#include "pub_core_libcprint.h"
 #include "priv_symtab.h"
 
 #include <a.out.h>        /* stabs defns                    */
diff --git a/coregrind/m_debuginfo/symtab.c b/coregrind/m_debuginfo/symtab.c
index a259560..94d2b32 100644
--- a/coregrind/m_debuginfo/symtab.c
+++ b/coregrind/m_debuginfo/symtab.c
@@ -33,6 +33,7 @@
 #include "pub_core_aspacemgr.h"
 #include "pub_core_demangle.h"
 #include "pub_core_libcbase.h"
+#include "pub_core_libcprint.h"
 #include "pub_core_options.h"
 #include "pub_core_profile.h"
 #include "pub_core_redir.h"
diff --git a/coregrind/m_debuginfo/symtypes.c b/coregrind/m_debuginfo/symtypes.c
index 8c32d9e..4eae1ed 100644
--- a/coregrind/m_debuginfo/symtypes.c
+++ b/coregrind/m_debuginfo/symtypes.c
@@ -32,6 +32,7 @@
 #include "pub_core_debuginfo.h"
 #include "pub_core_debuglog.h"    /* VG_(debugLog_vprintf) */
 #include "pub_core_libcbase.h"
+#include "pub_core_libcprint.h"
 #include "pub_core_tooliface.h"
 #include "priv_symtypes.h"
 
diff --git a/coregrind/m_demangle/cplus-dem.c b/coregrind/m_demangle/cplus-dem.c
index fe059c7..e854c04 100644
--- a/coregrind/m_demangle/cplus-dem.c
+++ b/coregrind/m_demangle/cplus-dem.c
@@ -39,6 +39,7 @@
 #include "safe-ctype.h"
 #include "core.h"
 #include "pub_core_libcbase.h"
+#include "pub_tool_libcprint.h"
 
 /*#include <sys/types.h>
 #include <string.h>
diff --git a/coregrind/m_errormgr.c b/coregrind/m_errormgr.c
index 34a3219..fe36d22 100644
--- a/coregrind/m_errormgr.c
+++ b/coregrind/m_errormgr.c
@@ -33,6 +33,7 @@
 #include "pub_core_errormgr.h"
 #include "pub_core_execontext.h"
 #include "pub_core_libcbase.h"
+#include "pub_core_libcprint.h"
 #include "pub_core_main.h"          // for VG_(start_debugger)()
 #include "pub_core_options.h"
 #include "pub_core_stacktrace.h"
diff --git a/coregrind/m_execontext.c b/coregrind/m_execontext.c
index d8a47af..f53f151 100644
--- a/coregrind/m_execontext.c
+++ b/coregrind/m_execontext.c
@@ -30,6 +30,7 @@
 
 #include "core.h"
 #include "pub_core_execontext.h"
+#include "pub_core_libcprint.h"
 #include "pub_core_options.h"
 #include "pub_core_profile.h"
 
diff --git a/coregrind/m_libcbase.c b/coregrind/m_libcbase.c
index 33608ef..1ab10d3 100644
--- a/coregrind/m_libcbase.c
+++ b/coregrind/m_libcbase.c
@@ -28,7 +28,7 @@
    The GNU General Public License is contained in the file COPYING.
 */
 
-#include "tool.h"       // XXX: temporary, for NULL, VG_(), Char, etc
+#include "core.h"       // XXX: temporary, for NULL, VG_(), Char, etc
 #include "pub_core_libcbase.h"
 
 /* ---------------------------------------------------------------------
diff --git a/coregrind/m_main.c b/coregrind/m_main.c
index 713667c..d64272b 100644
--- a/coregrind/m_main.c
+++ b/coregrind/m_main.c
@@ -37,6 +37,7 @@
 #include "pub_core_errormgr.h"
 #include "pub_core_execontext.h"
 #include "pub_core_libcbase.h"
+#include "pub_core_libcprint.h"
 #include "pub_core_main.h"
 #include "pub_core_options.h"
 #include "pub_core_profile.h"
diff --git a/coregrind/m_mallocfree.c b/coregrind/m_mallocfree.c
index b6b58a7..3c09ef9 100644
--- a/coregrind/m_mallocfree.c
+++ b/coregrind/m_mallocfree.c
@@ -33,6 +33,7 @@
 #include "core.h"
 #include "pub_core_aspacemgr.h"
 #include "pub_core_libcbase.h"
+#include "pub_core_libcprint.h"
 #include "pub_core_options.h"
 #include "pub_core_profile.h"
 #include "valgrind.h"
diff --git a/coregrind/m_profile.c b/coregrind/m_profile.c
index 630fa9d..2f72aa3 100644
--- a/coregrind/m_profile.c
+++ b/coregrind/m_profile.c
@@ -29,6 +29,7 @@
 */
 
 #include "core.h"
+#include "pub_core_libcprint.h"
 #include "pub_core_profile.h"
 
 /* get rid of these, if possible */
diff --git a/coregrind/m_redir.c b/coregrind/m_redir.c
index b00645b..81afc96 100644
--- a/coregrind/m_redir.c
+++ b/coregrind/m_redir.c
@@ -33,6 +33,7 @@
 
 #include "pub_core_aspacemgr.h"
 #include "pub_core_libcbase.h"
+#include "pub_core_libcprint.h"
 #include "pub_core_skiplist.h"
 #include "pub_core_options.h"
 #include "pub_core_redir.h"
diff --git a/coregrind/m_replacemalloc/replacemalloc_core.c b/coregrind/m_replacemalloc/replacemalloc_core.c
index 8b99757..25ef0cf 100644
--- a/coregrind/m_replacemalloc/replacemalloc_core.c
+++ b/coregrind/m_replacemalloc/replacemalloc_core.c
@@ -30,6 +30,7 @@
 
 #include "core.h"
 #include "pub_core_libcbase.h"
+#include "pub_core_libcprint.h"
 #include "pub_core_options.h"
 #include "pub_core_replacemalloc.h"
 
diff --git a/coregrind/m_scheduler/scheduler.c b/coregrind/m_scheduler/scheduler.c
index 11c402c..5455ce7 100644
--- a/coregrind/m_scheduler/scheduler.c
+++ b/coregrind/m_scheduler/scheduler.c
@@ -64,6 +64,7 @@
 #include "pub_core_dispatch.h"
 #include "pub_core_errormgr.h"
 #include "pub_core_libcbase.h"
+#include "pub_core_libcprint.h"
 #include "pub_core_main.h"
 #include "pub_core_options.h"
 #include "pub_core_profile.h"
diff --git a/coregrind/m_sigframe/sigframe-amd64-linux.c b/coregrind/m_sigframe/sigframe-amd64-linux.c
index b9e2d6a..33593bc 100644
--- a/coregrind/m_sigframe/sigframe-amd64-linux.c
+++ b/coregrind/m_sigframe/sigframe-amd64-linux.c
@@ -32,6 +32,7 @@
 #include "core.h"
 #include "pub_core_aspacemgr.h"
 #include "pub_core_libcbase.h"
+#include "pub_core_libcprint.h"
 #include "pub_core_options.h"
 #include "pub_core_sigframe.h"
 #include "pub_core_signals.h"
diff --git a/coregrind/m_sigframe/sigframe-x86-linux.c b/coregrind/m_sigframe/sigframe-x86-linux.c
index 36aa5f1..f760586 100644
--- a/coregrind/m_sigframe/sigframe-x86-linux.c
+++ b/coregrind/m_sigframe/sigframe-x86-linux.c
@@ -32,6 +32,7 @@
 #include "core.h"
 #include "pub_core_aspacemgr.h" /* find_segment */
 #include "pub_core_libcbase.h"
+#include "pub_core_libcprint.h"
 #include "pub_core_options.h"
 #include "pub_core_sigframe.h"
 #include "pub_core_signals.h"
diff --git a/coregrind/m_signals.c b/coregrind/m_signals.c
index d7dcc7f..36d5736 100644
--- a/coregrind/m_signals.c
+++ b/coregrind/m_signals.c
@@ -84,6 +84,7 @@
 #include "pub_core_aspacemgr.h"
 #include "pub_core_errormgr.h"
 #include "pub_core_libcbase.h"
+#include "pub_core_libcprint.h"
 #include "pub_core_main.h"
 #include "pub_core_options.h"
 #include "pub_core_signals.h"
diff --git a/coregrind/m_skiplist.c b/coregrind/m_skiplist.c
index 1de8d2d..17ee897 100644
--- a/coregrind/m_skiplist.c
+++ b/coregrind/m_skiplist.c
@@ -88,6 +88,7 @@
 
 #include "core.h"
 #include "pub_core_libcbase.h"
+#include "pub_core_libcprint.h"
 #include "pub_core_skiplist.h"
 
 #include <stdlib.h>
diff --git a/coregrind/m_stacktrace.c b/coregrind/m_stacktrace.c
index 2b87d76..d9845cd 100644
--- a/coregrind/m_stacktrace.c
+++ b/coregrind/m_stacktrace.c
@@ -31,6 +31,7 @@
 #include "core.h"
 #include "pub_core_aspacemgr.h"
 #include "pub_core_libcbase.h"
+#include "pub_core_libcprint.h"
 #include "pub_core_options.h"
 #include "pub_core_profile.h"
 #include "pub_core_stacktrace.h"
diff --git a/coregrind/m_syscalls/syscalls-amd64-linux.c b/coregrind/m_syscalls/syscalls-amd64-linux.c
index fdece82..e96bb2e 100644
--- a/coregrind/m_syscalls/syscalls-amd64-linux.c
+++ b/coregrind/m_syscalls/syscalls-amd64-linux.c
@@ -32,6 +32,7 @@
 #include "ume.h"                /* for jmp_with_stack */
 #include "pub_core_debuglog.h"
 #include "pub_core_aspacemgr.h"
+#include "pub_core_libcprint.h"
 #include "pub_core_sigframe.h"
 #include "pub_core_syscalls.h"
 #include "pub_core_tooliface.h"
diff --git a/coregrind/m_syscalls/syscalls-linux.c b/coregrind/m_syscalls/syscalls-linux.c
index 6895c43..165a97f 100644
--- a/coregrind/m_syscalls/syscalls-linux.c
+++ b/coregrind/m_syscalls/syscalls-linux.c
@@ -30,6 +30,7 @@
 
 #include "core.h"
 #include "pub_core_aspacemgr.h"
+#include "pub_core_libcprint.h"
 #include "pub_core_tooliface.h"
 #include "priv_syscalls.h"
 
diff --git a/coregrind/m_syscalls/syscalls-x86-linux.c b/coregrind/m_syscalls/syscalls-x86-linux.c
index d7cdd57..e4cd267 100644
--- a/coregrind/m_syscalls/syscalls-x86-linux.c
+++ b/coregrind/m_syscalls/syscalls-x86-linux.c
@@ -37,6 +37,7 @@
 #include "ume.h"                /* for jmp_with_stack */
 #include "pub_core_debuglog.h"
 #include "pub_core_aspacemgr.h"
+#include "pub_core_libcprint.h"
 #include "pub_core_sigframe.h"
 #include "pub_core_syscalls.h"
 #include "pub_core_tooliface.h"
diff --git a/coregrind/m_syscalls/syscalls.c b/coregrind/m_syscalls/syscalls.c
index 05805e4..dfc9ff6 100644
--- a/coregrind/m_syscalls/syscalls.c
+++ b/coregrind/m_syscalls/syscalls.c
@@ -32,6 +32,7 @@
 #include "pub_core_debuglog.h"
 #include "pub_core_aspacemgr.h"
 #include "pub_core_libcbase.h"
+#include "pub_core_libcprint.h"
 #include "pub_core_main.h"
 #include "pub_core_profile.h"
 #include "pub_core_stacktrace.h"
diff --git a/coregrind/m_tooliface.c b/coregrind/m_tooliface.c
index 9c343fd..b9916af 100644
--- a/coregrind/m_tooliface.c
+++ b/coregrind/m_tooliface.c
@@ -31,6 +31,7 @@
 
 #include "core.h"
 #include "pub_core_tooliface.h"
+#include "pub_core_libcprint.h"
 
 // The core/tool dictionary of functions (initially zeroed, as we want it)
 VgToolInterface VG_(tdict);
diff --git a/coregrind/m_translate.c b/coregrind/m_translate.c
index eb4d940..9da8aae 100644
--- a/coregrind/m_translate.c
+++ b/coregrind/m_translate.c
@@ -32,6 +32,7 @@
 #include "core.h"
 #include "pub_core_aspacemgr.h"
 #include "pub_core_libcbase.h"
+#include "pub_core_libcprint.h"
 #include "pub_core_main.h"       // for VG_(bbs_done)
 #include "pub_core_options.h"
 #include "pub_core_profile.h"
diff --git a/coregrind/m_transtab.c b/coregrind/m_transtab.c
index 50182e3..8cc1699 100644
--- a/coregrind/m_transtab.c
+++ b/coregrind/m_transtab.c
@@ -32,6 +32,7 @@
 #include "core.h"
 #include "pub_core_debuginfo.h"
 #include "pub_core_libcbase.h"
+#include "pub_core_libcprint.h"
 #include "pub_core_options.h"
 #include "pub_core_tooliface.h"
 // XXX: this module should not depend on m_translate!
diff --git a/coregrind/pub_core_libcprint.h b/coregrind/pub_core_libcprint.h
new file mode 100644
index 0000000..303a430
--- /dev/null
+++ b/coregrind/pub_core_libcprint.h
@@ -0,0 +1,49 @@
+
+/*--------------------------------------------------------------------*/
+/*--- Printing libc stuff.                    pub_core_libcprint.h ---*/
+/*--------------------------------------------------------------------*/
+
+/*
+   This file is part of Valgrind, a dynamic binary instrumentation
+   framework.
+
+   Copyright (C) 2000-2005 Julian Seward
+      jseward@acm.org
+
+   This program is free software; you can redistribute it and/or
+   modify it under the terms of the GNU General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307, USA.
+
+   The GNU General Public License is contained in the file COPYING.
+*/
+
+#ifndef __PUB_CORE_LIBCPRINT_H
+#define __PUB_CORE_LIBCPRINT_H
+
+//--------------------------------------------------------------------
+// PURPOSE: This module contains all the libc code that is related to
+// higher-level (ie. higher than DebugLog) printing, eg. VG_(printf)().
+//--------------------------------------------------------------------
+
+#include "pub_tool_libcprint.h"
+
+/* Tell the logging mechanism whether we are logging to a file
+   descriptor or a socket descriptor. */
+extern Bool VG_(logging_to_socket);
+
+#endif   // __PUB_CORE_LIBCPRINT_H
+
+/*--------------------------------------------------------------------*/
+/*--- end                                                          ---*/
+/*--------------------------------------------------------------------*/
diff --git a/coregrind/vg_messages.c b/coregrind/vg_messages.c
deleted file mode 100644
index fe4004c..0000000
--- a/coregrind/vg_messages.c
+++ /dev/null
@@ -1,101 +0,0 @@
-
-/*--------------------------------------------------------------------*/
-/*--- For sending error/informative messages.                      ---*/
-/*---                                                vg_messages.c ---*/
-/*--------------------------------------------------------------------*/
-
-/*
-   This file is part of Valgrind, a dynamic binary instrumentation
-   framework.
-
-   Copyright (C) 2000-2005 Julian Seward 
-      jseward@acm.org
-
-   This program is free software; you can redistribute it and/or
-   modify it under the terms of the GNU General Public License as
-   published by the Free Software Foundation; either version 2 of the
-   License, or (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful, but
-   WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307, USA.
-
-   The GNU General Public License is contained in the file COPYING.
-*/
-
-#include "core.h"
-#include "valgrind.h"
-
-#include "pub_core_options.h"
-
-#include <time.h>
-#include <sys/time.h>
-
-UInt VG_(vmessage) ( VgMsgKind kind, const HChar* format, va_list vargs )
-{
-   UInt  count = 0;
-   Char  c;
-   const Char* pfx_s;
-   static const Char pfx[] = ">>>>>>>>>>>>>>>>";
-
-   switch (kind) {
-      case Vg_UserMsg:       c = '='; break;
-      case Vg_DebugMsg:      c = '-'; break;
-      case Vg_DebugExtraMsg: c = '+'; break;
-      case Vg_ClientMsg:     c = '*'; break;
-      default:               c = '?'; break;
-   }
-
-   // The pfx trick prints one or more '>' characters in front of the
-   // messages when running Valgrind under Valgrind, one per level of
-   // self-hosting.
-   pfx_s = &pfx[sizeof(pfx)-1-RUNNING_ON_VALGRIND],
-
-   // Print the message
-   count = 0;
-
-   if (!VG_(clo_xml))
-      count += VG_(printf) ("%s%c%c", pfx_s, c,c);
-
-   if (VG_(clo_time_stamp)) {
-      struct timeval tv;
-      struct tm tm;
-     
-      if ( gettimeofday( &tv, NULL ) == 0 &&
-           localtime_r( &tv.tv_sec, &tm ) == &tm )
-      {
-         count +=
-            VG_(printf)( "%04d-%02d-%02d %02d:%02d:%02d.%03d ",
-                         tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday,
-                         tm.tm_hour, tm.tm_min, tm.tm_sec, tv.tv_usec / 1000 );
-      }
-   }
-
-   if (!VG_(clo_xml))
-      count += VG_(printf) ("%d%c%c ", VG_(getpid)(), c,c);
-
-   count += VG_(vprintf)(format, vargs);
-   count += VG_(printf) ("\n");
-   return count;
-}
-
-/* Send a simple single-part message. */
-UInt VG_(message) ( VgMsgKind kind, const HChar* format, ... )
-{
-   UInt count;
-   va_list vargs;
-   va_start(vargs,format);
-   count = VG_(vmessage) ( kind, format, vargs );
-   va_end(vargs);
-   return count;
-}
-
-/*--------------------------------------------------------------------*/
-/*--- end                                                          ---*/
-/*--------------------------------------------------------------------*/
diff --git a/coregrind/vg_mylibc.c b/coregrind/vg_mylibc.c
index 989bcd3..9486dac 100644
--- a/coregrind/vg_mylibc.c
+++ b/coregrind/vg_mylibc.c
@@ -34,6 +34,7 @@
 #include "pub_core_aspacemgr.h"
 #include "pub_core_debuglog.h"    /* VG_(debugLog_vprintf) */
 #include "pub_core_libcbase.h"
+#include "pub_core_libcprint.h"
 #include "pub_core_main.h"
 #include "pub_core_options.h"
 #include "pub_core_stacktrace.h"
@@ -408,107 +409,6 @@
 }
 
 
-/* Tell the logging mechanism whether we are logging to a file
-   descriptor or a socket descriptor. */
-Bool VG_(logging_to_socket) = False;
-
-/* Do the low-level send of a message to the logging sink. */
-static void send_bytes_to_logging_sink ( Char* msg, Int nbytes )
-{
-   if (!VG_(logging_to_socket)) {
-      VG_(write)( VG_(clo_log_fd), msg, nbytes );
-   } else {
-      Int rc = VG_(write_socket)( VG_(clo_log_fd), msg, nbytes );
-      if (rc == -1) {
-         // For example, the listener process died.  Switch back to stderr.
-         VG_(logging_to_socket) = False;
-         VG_(clo_log_fd) = 2;
-         VG_(write)( VG_(clo_log_fd), msg, nbytes );
-      }
-   }
-}
-
-typedef struct {
-   char buf[100];
-   int n;
-} printf_buf;
-
-// Adds a single char to the buffer.  When the buffer gets sufficiently
-// full, we write its contents to the logging sink.
-static void add_to_myprintf_buf ( HChar c, void *p )
-{
-   printf_buf *myprintf_buf = (printf_buf *)p;
-   
-   if (myprintf_buf->n >= 100-10 /*paranoia*/ ) {
-      send_bytes_to_logging_sink( myprintf_buf->buf, myprintf_buf->n );
-      myprintf_buf->n = 0;
-   }
-   myprintf_buf->buf[myprintf_buf->n++] = c;
-   myprintf_buf->buf[myprintf_buf->n]   = 0;
-}
-
-UInt VG_(vprintf) ( const HChar *format, va_list vargs )
-{
-   UInt ret = 0;
-   printf_buf myprintf_buf = {"",0};
-
-   if (VG_(clo_log_fd) >= 0) {
-      ret = VG_(debugLog_vprintf) 
-               ( add_to_myprintf_buf, &myprintf_buf, format, vargs );
-
-      // Write out any chars left in the buffer.
-      if (myprintf_buf.n > 0) {
-         send_bytes_to_logging_sink( myprintf_buf.buf, myprintf_buf.n );
-      }
-   }
-   return ret;
-}
-
-UInt VG_(printf) ( const HChar *format, ... )
-{
-   UInt ret;
-   va_list vargs;
-
-   va_start(vargs, format);
-   ret = VG_(vprintf)(format, vargs);
-   va_end(vargs);
-
-   return ret;
-}
-
-/* A general replacement for sprintf(). */
-static void add_to_vg_sprintf_buf ( HChar c, void *p )
-{
-   char **vg_sprintf_ptr = p;
-   *(*vg_sprintf_ptr)++ = c;
-}
-
-UInt VG_(vsprintf) ( Char* buf, const HChar *format, va_list vargs )
-{
-   Int ret;
-   Char *vg_sprintf_ptr = buf;
-
-   ret = VG_(debugLog_vprintf) 
-            ( add_to_vg_sprintf_buf, &vg_sprintf_ptr, format, vargs );
-   add_to_vg_sprintf_buf('\0', &vg_sprintf_ptr);
-
-   vg_assert(VG_(strlen)(buf) == ret);
-
-   return ret;
-}
-
-UInt VG_(sprintf) ( Char* buf, const HChar *format, ... )
-{
-   UInt ret;
-   va_list vargs;
-
-   va_start(vargs,format);
-   ret = VG_(vsprintf)(buf, format, vargs);
-   va_end(vargs);
-
-   return ret;
-}
-
 /* ---------------------------------------------------------------------
    strdup()
    ------------------------------------------------------------------ */