Mercurial > hg > Members > kono > nitros9-code
annotate scripts/os9.gdb @ 2992:1d9ec36546c0
rules.mak: Mark as development version again
We are not bumping the version number before the next release
is ready. So 3.3.0 dev means 3.3.0 + dev
author | Tormod Volden <debian.tormod@gmail.com> |
---|---|
date | Mon, 14 Apr 2014 00:30:18 +0200 |
parents | a0b770fab355 |
children | e3e858889ab6 |
rev | line source |
---|---|
2955
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
1 # gdb scripts for NitrOS-9 (or OS-9) |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
2 # Copyright 2014 Tormod Volden |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
3 |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
4 # os9_mdir prints out registered modules, like os9 mdir command |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
5 |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
6 # pretty-print of registers on every halt, |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
7 # and update external source code window |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
8 define hook-stop |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
9 printf "S=%04x X=%04x Y=%04x U=%04x A=%02x B=%02x CC=%02x PC=%04x ", $s, $x, $y, $u, $a, $b, $cc , $pc |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
10 os9_mwhere |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
11 end |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
12 |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
13 # print name of module at given address |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
14 define os9_mname |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
15 set $mname = (char*)$arg0 + *((int*)$arg0 + 2) |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
16 while 1 |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
17 if (*$mname < 0x80) |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
18 printf "%c", *$mname |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
19 else |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
20 printf "%c", *$mname-0x80 |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
21 loop_break |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
22 end |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
23 set $mname += 1 |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
24 end |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
25 end |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
26 |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
27 # print details of module at given address |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
28 define os9_mident |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
29 set $m = (int*)$arg0 |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
30 set $msize = *($m + 1) |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
31 set $mtype = *((char*) $m + 6) |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
32 set $mexec = *(int*)((char*) $m + 9) |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
33 printf "%04x %4x %2X ", $m, $msize, $mtype |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
34 os9_mname $m |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
35 if ($mtype & 0xf) |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
36 printf "\t[exec %04x] ", (char*)$m + $mexec |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
37 end |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
38 printf "\n" |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
39 end |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
40 |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
41 # list all registered modules |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
42 define os9_mdir |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
43 printf "addr size ty name\n" |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
44 set $mt = 0x300 |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
45 while ($mt < 0x400) |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
46 if ((int*)*$mt) |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
47 os9_mident (int*)*$mt |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
48 end |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
49 set $mt += 4 |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
50 end |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
51 end |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
52 |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
53 # finds module at given address, sets $mstart |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
54 define os9_mwhich |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
55 set $pc_reg = $arg0 |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
56 set $mt = 0x300 |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
57 while ($mt < 0x400) |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
58 if ((int*)*$mt) |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
59 set $mstart = (int*)*$mt |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
60 set $mend = (char*)$mstart + *($mstart + 1) |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
61 if ($pc_reg >= $mstart && $pc_reg < $mend) |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
62 loop_break |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
63 end |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
64 end |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
65 set $mt += 4 |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
66 end |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
67 if ($mt == 0x400) |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
68 set $mstart = 0 |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
69 end |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
70 end |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
71 |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
72 |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
73 # Look up source code line for given address. |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
74 # Requires assembly list files named by CRC in current directory |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
75 # and "gvim" to display listing and highlight line. |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
76 define os9_mwhere |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
77 if ($argc == 1) |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
78 set $pc_reg = $arg0 |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
79 else |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
80 set $pc_reg = $pc |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
81 end |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
82 os9_mwhich $pc_reg |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
83 if ($mstart) |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
84 printf "inside " |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
85 os9_mname $mstart |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
86 printf "\n" |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
87 eval "!gvim --remote %02X%02X%02X.crc && gvim --remote-send \":set cursorline<CR>\" && gvim --remote-send \"/^%04X<CR>\"", *((char*)$mend-3), *((char*)$mend-2), *((char*)$mend-1), (char*)$pc_reg - (char*)$mstart |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
88 else |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
89 printf "no module\n" |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
90 end |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
91 end |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
92 |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
93 # Set breakpoint in current module, at given offset |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
94 define b9 |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
95 os9_mwhich $pc |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
96 eval "hbreak *0x%x", (int)$mstart + $arg0 |
a0b770fab355
Add scripts/os9.gdb and list2crc.pl for gdb debugging
Tormod Volden <debian.tormod@gmail.com>
parents:
diff
changeset
|
97 end |