§  Varargs in GHC:  T7160.hs
 A comment from this test case tells us why the function  debugBelch2 exists: 
 ghc/testsuite/tests/rts/T7160.hs
foreign import ccall "&debugBelch2" fun :: FunPtr (Ptr () -> Ptr () -> IO ())
 The implementation is: 
 ghc/libraries/base/cbits/PrelIOUtils.c
void debugBelch2(const char*s, char *t)
{
    debugBelch(s,t);
}
 ghc/rts/RtsMessages.c
RtsMsgFunction *debugMsgFn  = rtsDebugMsgFn;
...
void
debugBelch(const char*s, ...)
{
  va_list ap;
  va_start(ap,s);
  (*debugMsgFn)(s,ap);
  va_end(ap);
}