FreeCalypso > hg > freecalypso-sw
annotate rvinterf/ctracedec/decode.c @ 923:10b4bed10192
gsm-fw/L1: fix for the DSP patch corruption bug
The L1 code we got from the LoCosto fw contains a feature for DSP CPU load
measurement. This feature is a LoCosto-ism, i.e., not applicable to earlier
DBB chips (Calypso) with their respective earlier DSP ROMs. Most of the
code dealing with that feature is conditionalized as #if (DSP >= 38),
but one spot was missed, and the MCU code was writing into an API word
dealing with this feature. In TCS211 this DSP API word happens to be
used by the DSP code patch, hence that write was corrupting the patched
DSP code.
author | Mychaela Falconia <falcon@ivan.Harhan.ORG> |
---|---|
date | Mon, 19 Oct 2015 17:13:56 +0000 |
parents | 4c6e7ada647b |
children |
rev | line source |
---|---|
858
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
1 /* |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
2 * This module implements the actual decoding of compressed traces. |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
3 */ |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
4 |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
5 #include <sys/types.h> |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
6 #include <stdio.h> |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
7 #include <ctype.h> |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
8 #include <string.h> |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
9 #include <strings.h> |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
10 #include <stdlib.h> |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
11 |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
12 extern char *str2ind_tab_filename; |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
13 extern int str2ind_array_size; |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
14 extern char **str2ind_orig_strings; |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
15 extern char **str2ind_param_strings; |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
16 |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
17 #define MAX_PRINTF_PARAMS 16 |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
18 |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
19 static int cindex, cindex_nchars; |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
20 static u_char param_bytes_array[256]; |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
21 static int param_bytes_count; |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
22 static char *format_string, *param_type_string; |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
23 static int num_printf_params; |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
24 static u_long printf_params[MAX_PRINTF_PARAMS]; |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
25 static char output_buf[2048]; |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
26 |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
27 decode_hex_digit(c) |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
28 { |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
29 if (isdigit(c)) |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
30 return(c - '0'); |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
31 else if (isupper(c)) |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
32 return(c - 'A' + 10); |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
33 else |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
34 return(c - 'a' + 10); |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
35 } |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
36 |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
37 static int |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
38 decode_idx_and_params(line) |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
39 char *line; |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
40 { |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
41 char *cp; |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
42 u_char *dp; |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
43 |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
44 for (cp = line; isdigit(*cp); cp++) |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
45 ; |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
46 if (*cp && *cp != ' ') |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
47 return(-1); |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
48 cindex = atoi(line); |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
49 cindex_nchars = cp - line; |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
50 for (dp = param_bytes_array; *cp; ) { |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
51 if (*cp++ != ' ') |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
52 return(-1); |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
53 if (!isxdigit(cp[0]) || !isxdigit(cp[1])) |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
54 return(-1); |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
55 *dp++ = decode_hex_digit(cp[0]) << 4 | decode_hex_digit(cp[1]); |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
56 cp += 2; |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
57 } |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
58 param_bytes_count = dp - param_bytes_array; |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
59 return(0); |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
60 } |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
61 |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
62 static void |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
63 decode_parameters(filename_for_errs, lineno_for_errs) |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
64 char *filename_for_errs; |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
65 { |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
66 int pi, type; |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
67 u_char *bp, *endp; |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
68 |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
69 bp = param_bytes_array; |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
70 endp = bp + param_bytes_count; |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
71 for (pi = 0; pi < num_printf_params; pi++) { |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
72 type = param_type_string[pi]; |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
73 switch (type) { |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
74 case 'c': |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
75 if (bp >= endp) { |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
76 wrong_param_byte_count: fprintf(stderr, |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
77 "%s line %d: wrong number of parameter bytes for %s entry #%d\n", |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
78 filename_for_errs, lineno_for_errs, |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
79 str2ind_tab_filename, cindex); |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
80 exit(1); |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
81 } |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
82 printf_params[pi] = *bp++; |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
83 continue; |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
84 case 'i': |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
85 case 'p': |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
86 case '*': |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
87 if (bp > endp - 4) |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
88 goto wrong_param_byte_count; |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
89 printf_params[pi] = (u_long) bp[0] | |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
90 (u_long) bp[1] << 8 | |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
91 (u_long) bp[2] << 16 | |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
92 (u_long) bp[3] << 24; |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
93 bp += 4; |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
94 continue; |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
95 case 's': |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
96 printf_params[pi] = (u_long) bp; |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
97 for (;;) { |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
98 if (bp >= endp) { |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
99 fprintf(stderr, |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
100 "%s line %d: unterminated string parameter in compressed trace\n", |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
101 filename_for_errs, |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
102 lineno_for_errs); |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
103 exit(1); |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
104 } |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
105 if (!*bp++) |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
106 break; |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
107 } |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
108 continue; |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
109 default: |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
110 fprintf(stderr, |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
111 "%s entry #%d: parameter type \'%c\' not supported\n", |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
112 str2ind_tab_filename, cindex, type); |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
113 exit(1); |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
114 } |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
115 } |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
116 if (bp != endp) |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
117 goto wrong_param_byte_count; |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
118 } |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
119 |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
120 process_ctrace_line(line, cindex_offset, filename_for_errs, lineno_for_errs) |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
121 char *line, *filename_for_errs; |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
122 { |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
123 if (decode_idx_and_params(line + cindex_offset) < 0) { |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
124 fprintf(stderr, |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
125 "%s line %d: unable to decode compressed trace line\n", |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
126 filename_for_errs, lineno_for_errs); |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
127 exit(1); |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
128 } |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
129 if (cindex >= str2ind_array_size) { |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
130 fprintf(stderr, |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
131 "%s line %d: index %d exceeds the range of %s\n", |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
132 filename_for_errs, lineno_for_errs, cindex, |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
133 str2ind_tab_filename); |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
134 exit(1); |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
135 } |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
136 format_string = str2ind_orig_strings[cindex]; |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
137 param_type_string = str2ind_param_strings[cindex]; |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
138 num_printf_params = strlen(param_type_string); |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
139 if (num_printf_params > MAX_PRINTF_PARAMS) { |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
140 fprintf(stderr, |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
141 "error: entry #%d in %s has too many parameters\n", |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
142 cindex, str2ind_tab_filename); |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
143 exit(1); |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
144 } |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
145 decode_parameters(filename_for_errs, lineno_for_errs); |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
146 ind2str_doprnt(format_string, printf_params, output_buf); |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
147 printf("%.*s \"%s\"\n", cindex_offset + cindex_nchars, line, |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
148 output_buf); |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
149 return(0); |
4c6e7ada647b
compressed trace decoder almost fully implemented
Space Falcon <falcon@ivan.Harhan.ORG>
parents:
diff
changeset
|
150 } |