2 # Don't forget to rebuild sparse with uncommented debug options
3 # in the Makefile. Also, gcc 3 is known to screw up with the
4 # cpp macros in the debugging info.
7 # If a gdb_show_* function is running at a non-zero recursion
8 # level, only a short summary is shown, preventing further
9 # recursion. Also note that gdb has only one, global, scope
10 # for variables, so we need to be careful with recursions.
13 set $showing_token = 0
14 set $showing_ident = 0
15 set $showing_symbol = 0
33 set *($entry) = (void *) (~3UL & (unsigned long)$ptr->list[$index])
37 # Ptr list looping skeleton
38 define gdb_ptr_list_for_each
40 set $my_head = (struct ptr_list *) $arg0
41 set $my_list = $my_head
47 while ($my_nr < $my_list->nr)
49 # Put your iterator code here
53 if (($my_list = $my_list->next) == $my_head)
60 # Show symbols in a symbol_list. Non-recursive
61 define gdb_ptr_list_for_each_show_symbol
63 set $my_head = (struct ptr_list *) $arg0
64 set $my_list = $my_head
70 while ($my_nr < ($my_list)->nr)
71 set $my_symbol = (struct symbol *) ((~3UL) & (unsigned long)($my_list)->list[$my_nr])
72 gdb_show_symbol($my_symbol)
77 set $my_list = ($my_list)->next
78 if ($my_list == $my_head)
86 #define gdb_show_statement
92 if ($arg0->modifiers & MOD_AUTO)
95 if ($arg0->modifiers & MOD_REGISTER)
96 printf "MOD_REGISTER "
98 if ($arg0->modifiers & MOD_STATIC)
101 if ($arg0->modifiers & MOD_EXTERN)
104 if ($arg0->modifiers & MOD_CONST)
107 if ($arg0->modifiers & MOD_VOLATILE)
108 printf "MOD_VOLATILE "
110 if ($arg0->modifiers & MOD_SIGNED)
113 if ($arg0->modifiers & MOD_UNSIGNED)
114 printf "MOD_UNSIGNED "
116 if ($arg0->modifiers & MOD_CHAR)
119 if ($arg0->modifiers & MOD_SHORT)
122 if ($arg0->modifiers & MOD_LONG)
125 if ($arg0->modifiers & MOD_LONGLONG)
126 printf "MOD_LONGLONG "
128 if ($arg0->modifiers & MOD_TYPEDEF)
129 printf "MOD_TYPEDEF "
131 if ($arg0->modifiers & MOD_INLINE)
134 if ($arg0->modifiers & MOD_ADDRESSABLE)
135 printf "MOD_ADDRESSABLE "
137 if ($arg0->modifiers & MOD_NOCAST)
140 if ($arg0->modifiers & MOD_NODEREF)
141 printf "MOD_NODEREF "
143 if ($arg0->modifiers & MOD_ACCESSED)
144 printf "MOD_ACCESSED "
146 if ($arg0->modifiers & MOD_TOPLEVEL)
147 printf "MOD_TOPLEVEL "
149 if ($arg0->modifiers & MOD_LABEL)
152 if ($arg0->modifiers & MOD_ASSIGNED)
153 printf "MOD_ASSIGNED "
155 if ($arg0->modifiers & MOD_TYPE)
158 if ($arg0->modifiers & MOD_SAFE)
161 if ($arg0->modifiers & MOD_USERTYPE)
162 printf "MOD_USERTYPE "
164 if ($arg0->modifiers & MOD_FORCE)
167 if ($arg0->modifiers & MOD_EXPLICITLY_SIGNED)
168 printf "MOD_EXPLICITLY_SIGNED"
170 if ($arg0->modifiers & MOD_BITWISE)
171 printf "MOD_BITWISE "
173 if (!$arg0->modifiers)
177 printf ", alignment = %d", $arg0->alignment
179 printf ", address_space = %d", $arg0->as
185 if ($arg0->base_type)
187 printf "base_type = "
188 gdb_show_symbol($arg0->base_type)
196 define gdb_show_symbol
197 printf "(%x) type = ", $arg0
199 printf ", namespace = "
200 output $arg0->namespace
202 printf ", ident = %s\n", show_ident($arg0->ident)
204 printf ", ident = NULL\n"
211 call show_symbol($arg0)
214 if ($arg0->namespace == NS_SYMBOL)
217 gdb_show_ctype(&($arg0->ctype))
224 define gdb_show_symbols_next_id
231 gdb_show_symbol($sym)
232 set $sym = $sym->next_id
239 define gdb_show_ident
241 printf "(%p) '%s'\n", $arg0, show_ident($arg0)
246 if (! $showing_ident)
247 set $showing_ident = 1
255 gdb_show_symbols_next_id($ident->symbols)
259 set $showing_ident = 0
263 define gdb_show_token
264 printf "%p: '%s', type = ", $arg0, show_token($arg0)
265 output (enum token_type) ($arg0)->pos.type
268 if (! $showing_token)
269 set $showing_token = 1
274 if ($token->pos.type == TOKEN_IDENT)
277 gdb_show_ident $token.ident
280 if ($token->pos.type == TOKEN_MACRO_ARGUMENT)
282 printf "argnum = %d\n", $token->argnum
285 if ($token->pos.type == TOKEN_SPECIAL)
287 printf "special = \"%s\"\n", show_special($token.special)
291 set $showing_token = 0
296 define gdb_show_tokens
300 while ($t != &eof_token_entry)