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. */ 29 void 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 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 */ 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 */ 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