1/* General utility routines for the remote server for GDB.
2   Copyright (C) 1986, 1989, 1993, 1995, 1996, 1997, 1999, 2000, 2002, 2003,
3   2011
4   Free Software Foundation, Inc.
5
6   This file is part of GDB.
7   It has been modified to integrate it in valgrind
8
9   This program is free software; you can redistribute it and/or modify
10   it under the terms of the GNU General Public License as published by
11   the Free Software Foundation; either version 2 of the License, or
12   (at your option) any later version.
13
14   This program is distributed in the hope that it will be useful,
15   but WITHOUT ANY WARRANTY; without even the implied warranty of
16   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17   GNU General Public License for more details.
18
19   You should have received a copy of the GNU General Public License
20   along with this program; if not, write to the Free Software
21   Foundation, Inc., 51 Franklin Street, Fifth Floor,
22   Boston, MA 02110-1301, USA.  */
23
24#include "server.h"
25/* Generally useful subroutines used throughout the program.  */
26
27/* Print the system error message for sr.
28   Then print the rest of the args. */
29void sr_perror (SysRes sr, const char *string,...)
30{
31   va_list args;
32   if (sr_isError (sr))
33      VG_(umsg) ("error %ld %s\n", sr_Err(sr), VG_(strerror) (sr_Err(sr)));
34   else
35      VG_(umsg) ("sr_perror called with no error!!!\n");
36   va_start (args, string);
37   VG_(vmessage) ( Vg_UserMsg, string, args );
38   va_end (args);
39}
40
41/* Print an error message and return to command level.
42   STRING is the error message, used as a fprintf string,
43   and ARG is passed as an argument to it.  */
44
45void error (const char *string,...)
46{
47   va_list args;
48   va_start (args, string);
49   VG_(vmessage) ( Vg_UserMsg, string, args );
50   va_end(args);
51   VG_MINIMAL_LONGJMP(toplevel);
52}
53
54/* Print an error message and exit reporting failure.
55   This is for a error that we cannot continue from.
56   STRING and ARG are passed to fprintf.  */
57
58/* VARARGS */
59void fatal (const char *string,...)
60{
61   va_list args;
62   va_start (args, string);
63   VG_(vmessage) ( Vg_UserMsg, string, args );
64   va_end (args);
65   VG_(exit) (1);
66}
67
68/* VARARGS */
69void warning (const char *string,...)
70{
71   va_list args;
72   va_start (args, string);
73   VG_(vmessage) ( Vg_UserMsg, string, args );
74   va_end (args);
75}
76
77#if 0
78/* print timestamp */
79static
80void dbgts(void)
81{
82   struct vki_timeval dbgtv;
83   SysRes res;
84   res = VG_(do_syscall2)(__NR_gettimeofday, (UWord)&dbgtv, (UWord)NULL);
85   // gettimeofday(&dbgtv, NULL);
86   dlog(0, "%ld.%6ld ", dbgtv.tv_sec, dbgtv.tv_usec);
87}
88#endif
89