Print this page
11972 resync smatch
Split |
Close |
Expand all |
Collapse all |
--- old/usr/src/tools/smatch/src/gdbhelpers
+++ new/usr/src/tools/smatch/src/gdbhelpers
1 1
2 2 # Don't forget to rebuild sparse with uncommented debug options
3 3 # in the Makefile. Also, gcc 3 is known to screw up with the
4 4 # cpp macros in the debugging info.
5 5
6 6
7 7 # If a gdb_show_* function is running at a non-zero recursion
8 8 # level, only a short summary is shown, preventing further
9 9 # recursion. Also note that gdb has only one, global, scope
10 10 # for variables, so we need to be careful with recursions.
11 11
12 12
13 13 set $showing_token = 0
14 14 set $showing_ident = 0
15 15 set $showing_symbol = 0
16 16
17 17 set $ntabs = 0
18 18
19 19 define gdb_tabs
20 20 set $tmp = $ntabs
21 21 while ($tmp--)
22 22 printf "\t"
23 23 end
24 24 end
25 25
26 26
27 27 # Ptr list handling
28 28 define ptr_entry
29 29 set $ptr = $arg0
30 30 set $index = $arg1
31 31 set $entry = &($arg2)
32 32
33 33 set *($entry) = (void *) (~3UL & (unsigned long)$ptr->list[$index])
34 34 end
35 35
36 36
37 37 # Ptr list looping skeleton
38 38 define gdb_ptr_list_for_each
39 39
40 40 set $my_head = (struct ptr_list *) $arg0
41 41 set $my_list = $my_head
42 42
43 43
44 44 if ($my_head)
45 45 while (1)
46 46 set $my_nr = 0
47 47 while ($my_nr < $my_list->nr)
48 48
49 49 # Put your iterator code here
50 50 set $my_nr++
51 51 end
52 52
53 53 if (($my_list = $my_list->next) == $my_head)
54 54 loop_break
55 55 end
56 56 end
57 57 end
58 58 end
59 59
60 60 # Show symbols in a symbol_list. Non-recursive
61 61 define gdb_ptr_list_for_each_show_symbol
62 62
63 63 set $my_head = (struct ptr_list *) $arg0
64 64 set $my_list = $my_head
65 65
66 66
67 67 if ($my_head)
68 68 while (1)
69 69 set $my_nr = 0
70 70 while ($my_nr < ($my_list)->nr)
71 71 set $my_symbol = (struct symbol *) ((~3UL) & (unsigned long)($my_list)->list[$my_nr])
72 72 gdb_show_symbol($my_symbol)
73 73
74 74 set $my_nr++
75 75 end
76 76
77 77 set $my_list = ($my_list)->next
78 78 if ($my_list == $my_head)
79 79 loop_break
80 80 end
81 81 end
82 82 end
83 83 end
84 84
85 85
86 86 #define gdb_show_statement
87 87
88 88
89 89 # Recursive
90 90 define gdb_show_ctype
91 91 printf "modifiers: "
92 92 if ($arg0->modifiers & MOD_AUTO)
93 93 printf "MOD_AUTO "
94 94 end
95 95 if ($arg0->modifiers & MOD_REGISTER)
96 96 printf "MOD_REGISTER "
97 97 end
98 98 if ($arg0->modifiers & MOD_STATIC)
99 99 printf "MOD_STATIC "
↓ open down ↓ |
99 lines elided |
↑ open up ↑ |
100 100 end
101 101 if ($arg0->modifiers & MOD_EXTERN)
102 102 printf "MOD_EXTERN "
103 103 end
104 104 if ($arg0->modifiers & MOD_CONST)
105 105 printf "MOD_CONST "
106 106 end
107 107 if ($arg0->modifiers & MOD_VOLATILE)
108 108 printf "MOD_VOLATILE "
109 109 end
110 + if ($arg0->modifiers & MOD_RESTRICT)
111 + printf "MOD_RESTRICT "
112 + end
113 + if ($arg0->modifiers & MOD_ATOMIC)
114 + printf "MOD_ATOMIC "
115 + end
110 116 if ($arg0->modifiers & MOD_SIGNED)
111 117 printf "MOD_SIGNED "
112 118 end
113 119 if ($arg0->modifiers & MOD_UNSIGNED)
114 120 printf "MOD_UNSIGNED "
115 121 end
116 122 if ($arg0->modifiers & MOD_CHAR)
117 123 printf "MOD_CHAR "
118 124 end
119 125 if ($arg0->modifiers & MOD_SHORT)
120 126 printf "MOD_SHORT "
↓ open down ↓ |
1 lines elided |
↑ open up ↑ |
121 127 end
122 128 if ($arg0->modifiers & MOD_LONG)
123 129 printf "MOD_LONG "
124 130 end
125 131 if ($arg0->modifiers & MOD_LONGLONG)
126 132 printf "MOD_LONGLONG "
127 133 end
128 134 if ($arg0->modifiers & MOD_LONGLONGLONG)
129 135 printf "MOD_LONGLONGLONG "
130 136 end
131 - if ($arg0->modifiers & MOD_TYPEDEF)
132 - printf "MOD_TYPEDEF "
133 - end
134 137 if ($arg0->modifiers & MOD_INLINE)
135 138 printf "MOD_INLINE "
136 139 end
137 140 if ($arg0->modifiers & MOD_ADDRESSABLE)
138 141 printf "MOD_ADDRESSABLE "
139 142 end
140 143 if ($arg0->modifiers & MOD_NOCAST)
141 144 printf "MOD_NOCAST "
142 145 end
143 146 if ($arg0->modifiers & MOD_NODEREF)
144 147 printf "MOD_NODEREF "
145 148 end
146 - if ($arg0->modifiers & MOD_ACCESSED)
147 - printf "MOD_ACCESSED "
148 - end
149 149 if ($arg0->modifiers & MOD_TOPLEVEL)
150 150 printf "MOD_TOPLEVEL "
151 151 end
152 152 if ($arg0->modifiers & MOD_ASSIGNED)
153 153 printf "MOD_ASSIGNED "
154 154 end
155 155 if ($arg0->modifiers & MOD_TYPE)
156 156 printf "MOD_TYPE "
157 157 end
158 158 if ($arg0->modifiers & MOD_SAFE)
159 159 printf "MOD_SAFE "
160 160 end
161 161 if ($arg0->modifiers & MOD_USERTYPE)
162 162 printf "MOD_USERTYPE "
163 163 end
164 164 if ($arg0->modifiers & MOD_EXPLICITLY_SIGNED)
165 165 printf "MOD_EXPLICITLY_SIGNED"
166 166 end
167 167 if ($arg0->modifiers & MOD_BITWISE)
168 168 printf "MOD_BITWISE "
169 169 end
170 170 if (!$arg0->modifiers)
171 171 printf "0"
172 172 end
173 173
174 174 printf ", alignment = %d", $arg0->alignment
175 175 if ($arg0->as)
176 176 printf ", address_space = %d", $arg0->as
177 177 end
178 178 printf "\n"
179 179
180 180
181 181 set $ntabs++
182 182 if ($arg0->base_type)
183 183 gdb_tabs
184 184 printf "base_type = "
185 185 gdb_show_symbol($arg0->base_type)
186 186 end
187 187
188 188 set $ntabs--
189 189
190 190
191 191 end
192 192
193 193 define gdb_show_symbol
194 194 printf "(%x) type = ", $arg0
195 195 output $arg0->type
196 196 printf ", namespace = "
197 197 output $arg0->namespace
198 198 if ($arg0->ident)
199 199 printf ", ident = %s\n", show_ident($arg0->ident)
200 200 else
201 201 printf ", ident = NULL\n"
202 202 end
203 203
204 204 # print "zz"
205 205
206 206 gdb_tabs
207 207 printf "dump:\n"
208 208 call show_symbol($arg0)
209 209
210 210 set $ntabs++
211 211 if ($arg0->namespace == NS_SYMBOL)
212 212 gdb_tabs
213 213 printf "ctype = "
214 214 gdb_show_ctype(&($arg0->ctype))
215 215 end
216 216 set $ntabs--
217 217 end
218 218
219 219
220 220 # non-recursive
221 221 define gdb_show_symbols_next_id
222 222 set $sym = $arg0
223 223 printf "{\n"
224 224 set $ntabs++
225 225 while ($sym)
226 226 gdb_tabs
227 227 printf "symbol = "
228 228 gdb_show_symbol($sym)
229 229 set $sym = $sym->next_id
230 230 end
231 231 set $ntabs--
232 232 gdb_tabs
233 233 printf "}\n"
234 234 end
235 235
236 236 define gdb_show_ident
237 237 if ($arg0)
238 238 printf "(%p) '%s'\n", $arg0, show_ident($arg0)
239 239 else
240 240 printf "NULL\n"
241 241 end
242 242
243 243 if (! $showing_ident)
244 244 set $showing_ident = 1
245 245 set $ntabs++
246 246
247 247 set $ident = $arg0
248 248
249 249 if ($ident->symbols)
250 250 gdb_tabs
251 251 printf "symbols = "
252 252 gdb_show_symbols_next_id($ident->symbols)
253 253 end
254 254
255 255 set $ntabs--
256 256 set $showing_ident = 0
257 257 end
258 258 end
259 259
260 260 define gdb_show_token
261 261 printf "%p: '%s', type = ", $arg0, show_token($arg0)
262 262 output (enum token_type) ($arg0)->pos.type
263 263 printf "\n"
264 264
265 265 if (! $showing_token)
266 266 set $showing_token = 1
267 267 set $ntabs++
268 268
269 269 set $token = $arg0
270 270
271 271 if ($token->pos.type == TOKEN_IDENT)
272 272 gdb_tabs
273 273 printf "ident = "
274 274 gdb_show_ident $token.ident
275 275 end
276 276
277 277 if ($token->pos.type == TOKEN_MACRO_ARGUMENT)
278 278 gdb_tabs
279 279 printf "argnum = %d\n", $token->argnum
280 280 end
281 281
282 282 if ($token->pos.type == TOKEN_SPECIAL)
283 283 gdb_tabs
284 284 printf "special = \"%s\"\n", show_special($token.special)
285 285 end
286 286
287 287 set $ntabs--
288 288 set $showing_token = 0
289 289 end
290 290 end
291 291
292 292 # non-recursive
293 293 define gdb_show_tokens
294 294 set $t = $arg0
295 295 printf "{\n"
296 296 set $ntabs++
297 297 while ($t != &eof_token_entry)
298 298 gdb_tabs
299 299 printf "token = "
300 300 gdb_show_token($t)
301 301 set $t = ($t)->next
302 302 end
303 303 set $ntabs--
304 304 gdb_tabs
305 305 printf "}\n"
306 306 end
307 307
↓ open down ↓ |
149 lines elided |
↑ open up ↑ |
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX