| OLD | NEW |
| 1 /* This testcase is part of GDB, the GNU debugger. |
| 2 |
| 3 Copyright 2010-2013 Free Software Foundation, Inc. |
| 4 |
| 5 This program is free software; you can redistribute it and/or modify |
| 6 it under the terms of the GNU General Public License as published by |
| 7 the Free Software Foundation; either version 3 of the License, or |
| 8 (at your option) any later version. |
| 9 |
| 10 This program is distributed in the hope that it will be useful, |
| 11 but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 13 GNU General Public License for more details. |
| 14 |
| 15 You should have received a copy of the GNU General Public License |
| 16 along with this program. If not, see <http://www.gnu.org/licenses/>. */ |
| 17 |
| 1 /* This program does two things; it generates valid trace files, and | 18 /* This program does two things; it generates valid trace files, and |
| 2 it can also be traced so as to test trace file creation from | 19 it can also be traced so as to test trace file creation from |
| 3 GDB. */ | 20 GDB. */ |
| 4 | 21 |
| 5 #include <stdio.h> | 22 #include <stdio.h> |
| 6 #include <string.h> | 23 #include <string.h> |
| 7 #include <fcntl.h> | 24 #include <fcntl.h> |
| 8 #include <sys/stat.h> | 25 #include <sys/stat.h> |
| 9 | 26 |
| 10 char spbuf[200]; | 27 char spbuf[200]; |
| 11 | 28 |
| 12 char trbuf[1000]; | 29 char trbuf[1000]; |
| 13 char *trptr; | 30 char *trptr; |
| 14 char *tfsizeptr; | 31 char *tfsizeptr; |
| 15 | 32 |
| 33 /* These globals are put in the trace buffer. */ |
| 34 |
| 16 int testglob = 31415; | 35 int testglob = 31415; |
| 17 | 36 |
| 18 int testglob2 = 271828; | 37 int testglob2 = 271828; |
| 19 | 38 |
| 39 /* But these below are not. */ |
| 40 |
| 20 const int constglob = 10000; | 41 const int constglob = 10000; |
| 21 | 42 |
| 43 int nonconstglob = 14124; |
| 44 |
| 22 int | 45 int |
| 23 start_trace_file (char *filename) | 46 start_trace_file (char *filename) |
| 24 { | 47 { |
| 25 int fd; | 48 int fd; |
| 26 | 49 |
| 27 fd = open (filename, O_WRONLY|O_CREAT|O_APPEND, | 50 fd = open (filename, O_WRONLY|O_CREAT|O_APPEND, |
| 28 S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH); | 51 S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH); |
| 29 | 52 |
| 30 if (fd < 0) | 53 if (fd < 0) |
| 31 return fd; | 54 return fd; |
| (...skipping 30 matching lines...) Expand all Loading... |
| 62 memcpy (trptr, addr, size); | 85 memcpy (trptr, addr, size); |
| 63 trptr += size; | 86 trptr += size; |
| 64 } | 87 } |
| 65 | 88 |
| 66 void | 89 void |
| 67 write_basic_trace_file (void) | 90 write_basic_trace_file (void) |
| 68 { | 91 { |
| 69 int fd, int_x; | 92 int fd, int_x; |
| 70 short short_x; | 93 short short_x; |
| 71 | 94 |
| 72 fd = start_trace_file ("basic.tf"); | 95 fd = start_trace_file (TFILE_DIR "tfile-basic.tf"); |
| 73 | 96 |
| 74 /* The next part of the file consists of newline-separated lines | 97 /* The next part of the file consists of newline-separated lines |
| 75 defining status, tracepoints, etc. The section is terminated by | 98 defining status, tracepoints, etc. The section is terminated by |
| 76 an empty line. */ | 99 an empty line. */ |
| 77 | 100 |
| 78 /* Dump the size of the R (register) blocks in traceframes. */ | 101 /* Dump the size of the R (register) blocks in traceframes. */ |
| 79 snprintf (spbuf, sizeof spbuf, "R %x\n", 500 /* FIXME get from arch */); | 102 snprintf (spbuf, sizeof spbuf, "R %x\n", 500 /* FIXME get from arch */); |
| 80 write (fd, spbuf, strlen (spbuf)); | 103 write (fd, spbuf, strlen (spbuf)); |
| 81 | 104 |
| 82 /* Dump trace status, in the general form of the qTstatus reply. */ | 105 /* Dump trace status, in the general form of the qTstatus reply. */ |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 147 } | 170 } |
| 148 | 171 |
| 149 void | 172 void |
| 150 write_error_trace_file (void) | 173 write_error_trace_file (void) |
| 151 { | 174 { |
| 152 int fd; | 175 int fd; |
| 153 const char made_up[] = "made-up error"; | 176 const char made_up[] = "made-up error"; |
| 154 int len = sizeof (made_up) - 1; | 177 int len = sizeof (made_up) - 1; |
| 155 char *hex = alloca (len * 2 + 1); | 178 char *hex = alloca (len * 2 + 1); |
| 156 | 179 |
| 157 fd = start_trace_file ("error.tf"); | 180 fd = start_trace_file (TFILE_DIR "tfile-error.tf"); |
| 158 | 181 |
| 159 /* The next part of the file consists of newline-separated lines | 182 /* The next part of the file consists of newline-separated lines |
| 160 defining status, tracepoints, etc. The section is terminated by | 183 defining status, tracepoints, etc. The section is terminated by |
| 161 an empty line. */ | 184 an empty line. */ |
| 162 | 185 |
| 163 /* Dump the size of the R (register) blocks in traceframes. */ | 186 /* Dump the size of the R (register) blocks in traceframes. */ |
| 164 snprintf (spbuf, sizeof spbuf, "R %x\n", 500 /* FIXME get from arch */); | 187 snprintf (spbuf, sizeof spbuf, "R %x\n", 500 /* FIXME get from arch */); |
| 165 write (fd, spbuf, strlen (spbuf)); | 188 write (fd, spbuf, strlen (spbuf)); |
| 166 | 189 |
| 167 bin2hex (made_up, hex, len); | 190 bin2hex (made_up, hex, len); |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 207 { | 230 { |
| 208 write_basic_trace_file (); | 231 write_basic_trace_file (); |
| 209 | 232 |
| 210 write_error_trace_file (); | 233 write_error_trace_file (); |
| 211 | 234 |
| 212 done_making_trace_files (); | 235 done_making_trace_files (); |
| 213 | 236 |
| 214 return 0; | 237 return 0; |
| 215 } | 238 } |
| 216 | 239 |
| OLD | NEW |