• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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. */
sr_perror(SysRes sr,const char * string,...)29 void sr_perror (SysRes sr, const char *string,...)
30 {
31    va_list args;
32    if (sr_isError (sr))
33       VG_(umsg) ("error %lu %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 
error(const char * string,...)45 void 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 */
fatal(const char * string,...)59 void 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 */
warning(const char * string,...)69 void 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 */
79 static
80 void 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