|
|
1.1 root 1: define ststack
2: set $f=(long*)*$r1
3: p/x $f
4: x/i *($f+2)-4
5: end
6:
7: define tstack
8: if (*(long*)$f) != 0
9: set $f=*(long*)$f
10: p/x $f
11: x/i *($f+8)-4
12: else
13: echo end of stack\n
14: end
15: end
16:
17: define pcb
18: p *(pcb_t)$arg0
19: end
20:
21: define pth
22: p *(thread_t)$arg0
23: end
24:
25: define pta
26: p *(task_t)$arg0
27: end
28:
29: define dcz
30: p *(zone_t)$arg0
31: end
32:
33: define dmapent
34: echo " map_entry"
35: p $arg0
36: echo " start "
37: p ((vm_map_entry_t)$arg0)->links.start
38: echo " end "
39: p ((vm_map_entry_t)$arg0)->links.end
40: if ( $arg0->is_a_map != 0)
41: echo " object is a map"\n
42: echo " share"
43: p $arg0->object.share_map
44: echo " offset"
45: p $arg0->offset
46: end
47: if ( $arg0->is_shared != 0)
48: echo " region is shared"\n
49: end
50: if ( $arg0->is_sub_map != 0)
51: echo " object is a sub map"\n
52: end
53: if ( $arg0->copy_on_write != 0)
54: echo " data is copy on write"\n
55: end
56: if ( $arg0->in_transition != 0)
57: echo " Entry is being changed"\n
58: end
59: if ( $arg0->needs_wakeup != 0)
60: echo " Waiters on in_transition"\n
61: end
62: if ( $arg0->needs_copy != 0)
63: echo " object needs to be copied"\n
64: end
65: echo " protection "
66: p ((vm_map_entry_t)$arg0)->protection
67: echo " max protection "
68: p ((vm_map_entry_t)$arg0)->max_protection
69: echo " inheritance "
70: p ((vm_map_entry_t)$arg0)->inheritance
71: echo " wired count "
72: p ((vm_map_entry_t)$arg0)->wired_count
73: echo " user_wired_count "
74: p ((vm_map_entry_t)$arg0)->user_wired_count
75: end
76:
77: define dmap
78: set $vmmapptr=$arg0
79: set $iter=0
80: if (((vm_map_t)$vmmapptr)->is_main_map != 0)
81: echo " this is a main map"\n
82: end
83: echo " start "
84: p ((vm_map_t)$vmmapptr)->hdr.links.start
85: echo " end "
86: p ((vm_map_t)$vmmapptr)->hdr.links.end
87: if ((vm_map_t)$vmmapptr->entries_pageable != 0)
88: echo " map entries are pageable"\n
89: else
90: echo " map entries are NOT pageable"\n
91: end
92: echo " size "
93: p ((vm_map_t)$vmmapptr)->size
94: echo " pmap "
95: p ((vm_map_t)$vmmapptr)->pmap
96: set $mapentptr=$vmmapptr->hdr.links.next
97: echo " number of map entries "
98: p ((vm_map_t)$vmmapptr)->hdr.nentries
99: while ($iter < ((vm_map_t)$arg0)->hdr.nentries)
100: echo \n
101: echo " entry "
102: p $iter
103: dmapent $mapentptr
104: set $mapentptr=((vm_map_entry_t)$mapentptr)->links.next
105: set $iter=$iter+1
106: end
107:
108: end
109:
110: define dzleak
111: if (((zone_t)$arg0)->zone_name != 0)
112: p (char *)(((zone_t)($arg0))->zone_name)
113: end
114: echo " num elem used "
115: p/x $arg0->count
116: echo " curr zone size "
117: p/x $arg0->cur_size
118: echo " max zone size "
119: p/x $arg0->max_size
120: if ($arg0->free_elements !=0)
121: echo " next free element"
122: p/x $arg0->free_elements
123: end
124: if ( $arg0->doing_alloc != 0)
125: echo " doing allocation"
126: p/x $arg0->doing_alloc
127: end
128: echo " allocation size"
129: p/x $arg0->alloc_size
130: if ( $arg0->pageable != 0)
131: echo " zone is pageable\n"
132: end
133: if ( $arg0->sleepable != 0)
134: echo " zone is sleepable\n"
135: end
136: if ( $arg0->exhaustible != 0)
137: echo " zone is exhaustible\n"
138: end
139: if ( $arg0->expandable != 0)
140: echo " zone is expandable\n"
141: end
142: set $iter=0
143: while ($iter < $arg0->num_alloc_callers)
144: p/x *(struct caller_s *)$arg0->alloc_callers[$iter]
145: set $iter=$iter+1
146: end
147: echo " number of alloc callers "
148: p/x $arg0->num_alloc_callers
149: set $iter=0
150: while ($iter < $arg0->num_free_callers)
151: p/x *(struct caller_s *)$arg0->free_callers[$iter]
152: set $iter=$iter+1
153: end
154: echo " number of free callers "
155: p/x $arg0->num_free_callers
156: end
157:
158: define dz
159: if (((zone_t)$arg0)->zone_name != 0)
160: p (char *)(((zone_t)($arg0))->zone_name)
161: end
162: echo " num elem used "
163: p/x $arg0->count
164: echo " curr zone size "
165: p/x $arg0->cur_size
166: echo " max zone size "
167: p/x $arg0->max_size
168: if ($arg0->free_elements !=0)
169: echo " next free element"
170: p/x $arg0->free_elements
171: end
172: if ( $arg0->doing_alloc != 0)
173: echo " doing allocation"
174: p/x $arg0->doing_alloc
175: end
176: echo " allocation size"
177: p/x $arg0->alloc_size
178: if ( $arg0->pageable != 0)
179: echo " zone is pageable\n"
180: end
181: if ( $arg0->sleepable != 0)
182: echo " zone is sleepable\n"
183: end
184: if ( $arg0->exhaustible != 0)
185: echo " zone is exhaustible\n"
186: end
187: if ( $arg0->expandable != 0)
188: echo " zone is expandable\n"
189: end
190: end
191:
192: define daz
193: set $numtasks=default_pset->task_count
194: set $iter=0
195: set $zoneptr=zone_zone
196: while ($zoneptr != 0)
197: echo \n
198: dz $zoneptr
199: set $zoneptr=((zone_t)($zoneptr))->next_zone
200: set $iter=$iter+1
201: end
202: echo number of zones =
203: p $iter
204: end
205:
206: define dleakaz
207: set $numtasks=default_pset->task_count
208: set $iter=0
209: set $zoneptr=zone_zone
210: while ($zoneptr != 0)
211: echo \n
212: dzleak $zoneptr
213: set $zoneptr=((zone_t)($zoneptr))->next_zone
214: set $iter=$iter+1
215: end
216: echo number of zones =
217: p $iter
218: end
219:
220: define tsaved
221: p/x *(struct ppc_saved_state *)($f+0x90)
222: end
223:
224: define sustack
225: set $u=(long*)((((int)$arg0) & 0x0FFFFFFF) + 0x60000000)
226: p/x $u
227: p/x *($u+2)-4
228: end
229:
230: define ustack
231: if (*(long*)$u) != 0
232: set $u=(long*)((((int)(*(long*)$u)) & 0x0FFFFFFF) + 0x60000000)
233: p/x $u
234: if (((int)(*($u+2)-4)) & 0xF0000000) == 0
235: x/i ((((int)(*($u+2)-4)) & 0x0FFFFFFF) + 0x20000000)
236: else
237: p/x *($u+2)-4
238: end
239: else
240: echo end of user stack\n
241: end
242: end
243:
244: define tasks
245: set $numtasks=default_pset->task_count
246: set $iter=0
247: set $taskptr=default_pset->tasks.next
248: while ($iter < $numtasks)
249: if ((((struct task *)($taskptr))->proc) != 0)
250: p (char *)(((struct task *)($taskptr))->proc->p_comm)
251: p ((struct task *)($taskptr))->map
252: end
253: set $taskptr=((struct task *)($taskptr))->pset_tasks.next
254: set $iter=$iter+1
255: end
256: end
257:
258: define threads
259: set $numthreads=default_pset->thread_count
260: set $iter=0
261: set $threadptr=default_pset->threads.next
262: while ($iter < $numthreads)
263: if ((((struct thread *)($threadptr))->task->proc) != 0)
264: p (char *)(((struct thread *)($threadptr))->task->proc->p_comm)
265: p $threadptr
266: end
267: set $threadptr=((struct thread *)($threadptr))->pset_threads.next
268: set $iter=$iter+1
269: end
270: end
271:
272: define kstackthreads
273: set $numthreads=default_pset->thread_count
274: set $iter=0
275: set $threadptr=default_pset->threads.next
276: while ($iter < $numthreads)
277: if ((((struct thread *)($threadptr))->kernel_stack) != 0)
278: if ((((struct thread *)($threadptr))->task->proc) != 0)
279: p (char *)(((struct thread *)($threadptr))->task->proc->p_comm)
280: p $threadptr
281: end
282: end
283: set $threadptr=((struct thread *)($threadptr))->pset_threads.next
284: set $iter=$iter+1
285: end
286: end
287:
288: define waitthreads
289: set $numthreads=default_pset->thread_count
290: set $iter=0
291: set $threadptr=default_pset->threads.next
292: while ($iter < $numthreads)
293: if ((((struct thread *)($threadptr))->wait_event) != 0)
294: p (char *)(((struct thread *)($threadptr))->task->proc->p_comm)
295: p $threadptr
296: p ((struct thread *)($threadptr))->wait_event
297: p ((struct thread *)($threadptr))->wait_mesg
298: end
299: set $threadptr=((struct thread *)($threadptr))->pset_threads.next
300: set $iter=$iter+1
301: end
302: end
303:
304: define tomkstack
305: if (( ((thread_t)$arg0)->kernel_stack) == 0)
306: echo "no kernel stack"
307: else
308: if $arg0 == cpu_data->active_thread
309: ststack
310: else
311: p/x ((struct ppc_kernel_state *)((((thread_t)$arg0)->kernel_stack)+0x3f94))->r1
312: x/i ((struct ppc_kernel_state *)((((thread_t)$arg0)->kernel_stack)+0x3f94))->lr
313: end
314: end
315: end
316:
317: define kstack
318: if (( ((thread_t)$arg0)->kernel_stack) == 0)
319: echo "no kernel stack"
320: else
321: if $arg0 == cpu_data->active_thread
322: ststack
323: else
324: set $f=((struct ppc_kernel_state *)(($s->kernel_stack)+0x3f94))->r1
325: p/x $f
326: x/i ((struct ppc_kernel_state *)(($s->kernel_stack)+0x3f94))->lr
327: end
328: end
329: end
330:
331: define setRegFromSaved
332: set $s_pc=(long)$pc
333: set $s_lr=(long)$lr
334: set $s_r1=(long)$r1
335: set $s_r13=(long)$r13
336: set $s_r14=(long)$r14
337: set $s_r15=(long)$r15
338: set $s_r16=(long)$r16
339: set $s_r17=(long)$r17
340: set $s_r18=(long)$r18
341: set $s_r19=(long)$r19
342: set $s_r20=(long)$r20
343: set $s_r21=(long)$r21
344: set $s_r22=(long)$r22
345: set $s_r23=(long)$r23
346: set $s_r24=(long)$r24
347: set $s_r25=(long)$r25
348: set $s_r26=(long)$r26
349: set $s_r27=(long)$r27
350: set $s_r28=(long)$r28
351: set $s_r29=(long)$r29
352: set $s_r30=(long)$r30
353: set $s_r31=(long)$r31
354: x/i $s_pc
355: end
356:
357: define printReg
358: printf "pc\t0x%x\n", $s_pc
359: printf "lr\t0x%x\n", $s_lr
360: printf "r1\t0x%x\n", $s_r1
361: printf "r13\t0x%x\n", $s_r13
362: printf "r14\t0x%x\n", $s_r14
363: printf "r15\t0x%x\n", $s_r15
364: printf "r16\t0x%x\n", $s_r16
365: printf "r17\t0x%x\n", $s_r17
366: printf "r18\t0x%x\n", $s_r18
367: printf "r19\t0x%x\n", $s_r19
368: printf "r20\t0x%x\n", $s_r20
369: printf "r21\t0x%x\n", $s_r21
370: printf "r22\t0x%x\n", $s_r22
371: printf "r23\t0x%x\n", $s_r23
372: printf "r24\t0x%x\n", $s_r24
373: printf "r25\t0x%x\n", $s_r25
374: printf "r26\t0x%x\n", $s_r26
375: printf "r27\t0x%x\n", $s_r27
376: printf "r28\t0x%x\n", $s_r28
377: printf "r29\t0x%x\n", $s_r29
378: printf "r30\t0x%x\n", $s_r30
379: printf "r31\t0x%x\n", $s_r31
380: end
381:
382: define popReg
383: if (*(long*)$s_r1) == 0
384: echo end of stack\n
385: else
386: set $s_r1=*(long*)$s_r1
387: set $s_lr=*(long*)($s_r1+8)
388: set $s_t1=$s_r1
389: if $arg0 != 0
390: if $arg0 <= 31
391: set $s_t1=$s_t1-4
392: set $s_r31=*(long*)$s_t1
393: end
394: if $arg0 <= 30
395: set $s_t1=$s_t1-4
396: set $s_r30=*(long*)$s_t1
397: end
398: if $arg0 <= 29
399: set $s_t1=$s_t1-4
400: set $s_r29=*(long*)$s_t1
401: end
402: if $arg0 <= 28
403: set $s_t1=$s_t1-4
404: set $s_r28=*(long*)$s_t1
405: end
406: if $arg0 <= 27
407: set $s_t1=$s_t1-4
408: set $s_r27=*(long*)$s_t1
409: end
410: if $arg0 <= 26
411: set $s_t1=$s_t1-4
412: set $s_r26=*(long*)$s_t1
413: end
414: if $arg0 <= 25
415: set $s_t1=$s_t1-4
416: set $s_r25=*(long*)$s_t1
417: end
418: if $arg0 <= 24
419: set $s_t1=$s_t1-4
420: set $s_r24=*(long*)$s_t1
421: end
422: if $arg0 <= 23
423: set $s_t1=$s_t1-4
424: set $s_r23=*(long*)$s_t1
425: end
426: if $arg0 <= 22
427: set $s_t1=$s_t1-4
428: set $s_r22=*(long*)$s_t1
429: end
430: if $arg0 <= 21
431: set $s_t1=$s_t1-4
432: set $s_r21=*(long*)$s_t1
433: end
434: if $arg0 <= 20
435: set $s_t1=$s_t1-4
436: set $s_r20=*(long*)$s_t1
437: end
438: if $arg0 <= 19
439: set $s_t1=$s_t1-4
440: set $s_r19=*(long*)$s_t1
441: end
442: if $arg0 <= 18
443: set $s_t1=$s_t1-4
444: set $s_r18=*(long*)$s_t1
445: end
446: if $arg0 <= 17
447: set $s_t1=$s_t1-4
448: set $s_r17=*(long*)$s_t1
449: end
450: if $arg0 <= 16
451: set $s_t1=$s_t1-4
452: set $s_r16=*(long*)$s_t1
453: end
454: end
455: set $s_pc=$s_lr-4
456: x/i $s_pc
457: end
458: end
459:
460: define wherePC
461: x/i $s_pc
462: end
463:
464: define popSaved
465: set $s_t1=(struct ppc_saved_state *)($s_r1+0x90)
466: set $s_pc=(long)$s_t1->srr0
467: set $s_lr=(long)$s_t1->lr
468: set $s_r1=(long)$s_t1->r1
469: set $s_r13=(long)$s_t1->r13
470: set $s_r14=(long)$s_t1->r14
471: set $s_r15=(long)$s_t1->r15
472: set $s_r16=(long)$s_t1->r16
473: set $s_r17=(long)$s_t1->r17
474: set $s_r18=(long)$s_t1->r18
475: set $s_r19=(long)$s_t1->r19
476: set $s_r20=(long)$s_t1->r20
477: set $s_r21=(long)$s_t1->r21
478: set $s_r22=(long)$s_t1->r22
479: set $s_r23=(long)$s_t1->r23
480: set $s_r24=(long)$s_t1->r24
481: set $s_r25=(long)$s_t1->r25
482: set $s_r26=(long)$s_t1->r26
483: set $s_r27=(long)$s_t1->r27
484: set $s_r28=(long)$s_t1->r28
485: set $s_r29=(long)$s_t1->r29
486: set $s_r30=(long)$s_t1->r30
487: set $s_r31=(long)$s_t1->r31
488: x/i $s_pc
489: end
490:
491: define setRegFromThread
492: set $s_t1=(thread_t)$arg0
493: set $s_t1=(struct ppc_kernel_state *)(($s_t1->kernel_stack)+0x3f94)
494: set $s_pc=(long)$s_t1->lr
495: set $s_lr=(long)$s_t1->lr
496: set $s_r1=(long)$s_t1->r1
497: set $s_r13=(long)$s_t1->r13[0]
498: set $s_r14=(long)$s_t1->r13[1]
499: set $s_r15=(long)$s_t1->r13[2]
500: set $s_r16=(long)$s_t1->r13[3]
501: set $s_r17=(long)$s_t1->r13[4]
502: set $s_r18=(long)$s_t1->r13[5]
503: set $s_r19=(long)$s_t1->r13[6]
504: set $s_r20=(long)$s_t1->r13[7]
505: set $s_r21=(long)$s_t1->r13[8]
506: set $s_r22=(long)$s_t1->r13[9]
507: set $s_r23=(long)$s_t1->r13[10]
508: set $s_r24=(long)$s_t1->r13[11]
509: set $s_r25=(long)$s_t1->r13[12]
510: set $s_r26=(long)$s_t1->r13[13]
511: set $s_r27=(long)$s_t1->r13[14]
512: set $s_r28=(long)$s_t1->r13[15]
513: set $s_r29=(long)$s_t1->r13[16]
514: set $s_r30=(long)$s_t1->r13[17]
515: set $s_r31=(long)$s_t1->r13[18]
516: x/i $s_pc
517: end
518:
519: define popLR
520: set $s_pc=$s_lr-4
521: x/i $s_pc
522: end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.