diff --git a/coregrind/vg_main.c b/coregrind/vg_main.c
index 3eca777..77ee6be 100644
--- a/coregrind/vg_main.c
+++ b/coregrind/vg_main.c
@@ -2007,21 +2007,21 @@
    if (VG_(clo_verbosity) > 1) {
       Int fd;
       if (VG_(clo_log_to) != VgLogTo_Fd)
-         VG_(message)(Vg_UserMsg, "");
-      VG_(message)(Vg_UserMsg, "Valgrind library directory: %s", VG_(libdir));
-      VG_(message)(Vg_UserMsg, "Command line");
+         VG_(message)(Vg_DebugMsg, "");
+      VG_(message)(Vg_DebugMsg, "Valgrind library directory: %s", VG_(libdir));
+      VG_(message)(Vg_DebugMsg, "Command line");
       for (i = 0; i < VG_(client_argc); i++)
-         VG_(message)(Vg_UserMsg, "   %s", VG_(client_argv)[i]);
+         VG_(message)(Vg_DebugMsg, "   %s", VG_(client_argv)[i]);
 
-      VG_(message)(Vg_UserMsg, "Startup, with flags:");
+      VG_(message)(Vg_DebugMsg, "Startup, with flags:");
       for (i = 1; i < vg_argc; i++) {
-         VG_(message)(Vg_UserMsg, "   %s", vg_argv[i]);
+         VG_(message)(Vg_DebugMsg, "   %s", vg_argv[i]);
       }
 
-      VG_(message)(Vg_UserMsg, "Contents of /proc/version:");
+      VG_(message)(Vg_DebugMsg, "Contents of /proc/version:");
       fd = VG_(open) ( "/proc/version", VKI_O_RDONLY, 0 );
       if (fd < 0) {
-         VG_(message)(Vg_UserMsg, "  can't open /proc/version");
+         VG_(message)(Vg_DebugMsg, "  can't open /proc/version");
       } else {
          #define BUF_LEN    256
          Char version_buf[BUF_LEN];
@@ -2029,9 +2029,9 @@
          vg_assert(n <= 256);
          if (n > 0) {
             version_buf[n-1] = '\0';
-            VG_(message)(Vg_UserMsg, "  %s", version_buf);
+            VG_(message)(Vg_DebugMsg, "  %s", version_buf);
          } else {
-            VG_(message)(Vg_UserMsg, "  (empty?)");
+            VG_(message)(Vg_DebugMsg, "  (empty?)");
          }
          VG_(close)(fd);
          #undef BUF_LEN
diff --git a/coregrind/vg_symtab2.c b/coregrind/vg_symtab2.c
index f6aab00..0d6d0a2 100644
--- a/coregrind/vg_symtab2.c
+++ b/coregrind/vg_symtab2.c
@@ -374,7 +374,7 @@
 void VG_(symerr) ( Char* msg )
 {
    if (VG_(clo_verbosity) > 1)
-      VG_(message)(Vg_UserMsg,"%s", msg );
+      VG_(message)(Vg_DebugMsg,"%s", msg );
 }
 
 
@@ -1137,7 +1137,7 @@
    }
 
    if (VG_(clo_verbosity) > 1)
-      VG_(message)(Vg_UserMsg, "Reading debug info from %s...", name);
+      VG_(message)(Vg_DebugMsg, "Reading debug info from %s...", name);
 
    *size = stat_buf.st_size;
    
@@ -1156,7 +1156,7 @@
       int res = VG_(munmap)((void*)addr, *size);
       vg_assert(0 == res);
       if (VG_(clo_verbosity) > 1)
-	 VG_(message)(Vg_UserMsg, "... CRC mismatch (computed %08x wanted %08x)", calccrc, crc);
+	 VG_(message)(Vg_DebugMsg, "... CRC mismatch (computed %08x wanted %08x)", calccrc, crc);
       return 0;
    }
    
@@ -1215,7 +1215,7 @@
 
    oimage = (Addr)NULL;
    if (VG_(clo_verbosity) > 1)
-      VG_(message)(Vg_UserMsg, "Reading syms from %s (%p)", si->filename, si->start );
+      VG_(message)(Vg_DebugMsg, "Reading syms from %s (%p)", si->filename, si->start );
 
    /* mmap the object image aboard, so that we can read symbols and
       line number info out of it.  It will be munmapped immediately
@@ -1241,10 +1241,8 @@
    VG_(close)(fd);
 
    if (oimage == ((Addr)(-1))) {
-      VG_(message)(Vg_UserMsg,
-                   "warning: mmap failed on %s", si->filename );
-      VG_(message)(Vg_UserMsg,
-                   "         no symbols or debug info loaded" );
+      VG_(message)(Vg_UserMsg, "warning: mmap failed on %s", si->filename );
+      VG_(message)(Vg_UserMsg, "         no symbols or debug info loaded" );
       return False;
    }
 
@@ -1659,7 +1657,7 @@
    }
 
    if (VG_(clo_verbosity) > 1)
-      VG_(message)(Vg_UserMsg, 
+      VG_(message)(Vg_DebugMsg, 
                    "discard syms at %p-%p in %s due to munmap()", 
                    start, start+length, curr->filename ? curr->filename : (Char *)"???");
 
