Initial revision
[ssr] / StraySrc / SDLS / DLLManager / s / dllmdump
1 ;
2 ; dump.s
3 ;
4 ; DLLManager dump utility
5 ;
6 ; © 1994-1998 Straylight
7 ;
8
9 ;----- Licensing note -------------------------------------------------------
10 ;
11 ; This file is part of Straylight's Dynamic Linking System (SDLS)
12 ;
13 ; SDLS is free software; you can redistribute it and/or modify
14 ; it under the terms of the GNU General Public License as published by
15 ; the Free Software Foundation; either version 2, or (at your option)
16 ; any later version.
17 ;
18 ; SDLS is distributed in the hope that it will be useful,
19 ; but WITHOUT ANY WARRANTY; without even the implied warranty of
20 ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 ; GNU General Public License for more details.
22 ;
23 ; You should have received a copy of the GNU General Public License
24 ; along with SDLS. If not, write to the Free Software Foundation,
25 ; 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
26
27 GET libs:header
28 GET libs:swis
29 GET sh.dllblock
30 GET sh.appblock
31 GET sh.linkblock
32 GET sh.wspace
33
34 AREA |!!!Foonly|,CODE,READONLY
35
36 start STMFD R13!,{R14}
37 MOV R0,#18
38 ADR R1,modname
39 SWI XOS_Module
40 LDMVSFD R13!,{PC}
41 MOV R11,R12
42 MOV R12,R4
43 SWI OS_WriteS
44 DCB "*** Dump of DLLManager workspace at &",0
45 MOV R0,R12
46 BL writeHex
47 SWI OS_WriteS
48 DCB 13,10,10
49 DCB "[DLL list]",13,10
50 DCB 13,10,0
51
52 ; --- Dump out DLL list ---
53
54 LDR R7,dll__list
55
56 dll_loop CMP R7,#0
57 BEQ dump_apps
58 LDR R0,[R7,#dl_name]
59 SWI XOS_Write0
60 SWI XOS_WriteI+' '
61 LDR R0,[R7,#dl_version]
62 BL writeDec
63 SWI XOS_WriteS
64 DCB 13,10," Handle: ",0
65 MOV R0,R7
66 BL writeHex
67 SWI XOS_WriteS
68 DCB 13,10," Links: ",0
69 LDR R0,[R7,#dl_next]
70 BL writeHex
71 SWI XOS_WriteI+','
72 LDR R0,[R7,#dl_prev]
73 BL writeHex
74 SWI XOS_WriteS
75 DCB 13,10," Ref count: ",0
76 LDR R0,[R7,#dl_clients]
77 AND R1,R0,#&80000000
78 BIC R0,R0,#&80000000
79 BL writeDec
80 CMP R1,#0
81 BEQ notent
82 SWI XOS_WriteI+' '
83 SWI XOS_WriteI+'['
84 SWI XOS_WriteI+'T'
85 SWI XOS_WriteI+']'
86 notent SWI XOS_NewLine
87 SWI XOS_NewLine
88 LDR R7,[R7,#dl_next]
89 B dll_loop
90
91 modname DCB "DLLManager",0
92
93 ; --- Dump out application data ---
94
95 dump_apps SWI XOS_WriteS
96 DCB "[App data]",13,10
97 DCB 13,10
98 DCB "Cached handle: ",0
99 LDR R0,app__cacheHnd
100 BL writeHex
101 SWI XOS_WriteS
102 DCB 13,10
103 DCB "Cached pointer: ",0
104 LDR R0,app__cachePtr
105 BL writeHex
106 SWI XOS_WriteS
107 DCB 13,10
108 DCB 13,10
109 DCB "[App list]",13,10
110 DCB 13,10,0
111
112 ; --- Dump out application list ---
113
114 LDR R7,app__list
115
116 app_loop CMP R7,#0
117 BEQ dump_sub
118 ADD R0,R7,#app_name
119 SWI XOS_Write0
120 SWI XOS_WriteS
121 DCB 13,10
122 DCB " External handle: ",0
123 LDR R0,[R7,#app_handle]
124 BL writeHex
125 SWI XOS_WriteS
126 DCB 13,10
127 DCB " Internal handle: ",0
128 MOV R0,R7
129 BL writeHex
130 SWI XOS_WriteS
131 DCB 13,10
132 DCB " Links: ",0
133 LDR R0,[R7,#app_next]
134 BL writeHex
135 SWI XOS_WriteI+','
136 LDR R0,[R7,#app_prev]
137 BL writeHex
138 SWI XOS_WriteS
139 DCB 13,10
140 DCB " Stack entries: ",0
141 LDR R0,[R7,#app_stackPtr]
142 MOV R0,R0,LSR #3 ;Divide it by 8
143 BL writeDec
144 SWI XOS_WriteS
145 DCB 13,10
146 DCB " Cached DLL handle: ",0
147 LDR R0,[R7,#app_cachedll]
148 BL writeHex
149 SWI XOS_WriteS
150 DCB 13,10
151 DCB " Cached DLL link: ",0
152 LDR R0,[R7,#app_cacheptr]
153 BL writeHex
154 SWI XOS_WriteS
155 DCB 13,10
156 DCB " DLL list",13,10,0
157
158 ; --- Dump out DLL list quickly ---
159
160 LDR R8,[R7,#app_dlls]
161 used_list CMP R8,#0
162 BEQ app_end
163 LDR R9,[R8,#lk_dll]
164 SWI XOS_WriteI+' '
165 SWI XOS_WriteI+' '
166 SWI XOS_WriteI+' '
167 SWI XOS_WriteI+' '
168 LDR R0,[R9,#dl_name]
169 SWI XOS_Write0
170 SWI XOS_WriteI+' '
171 LDR R0,[R9,#dl_version]
172 BL writeDec
173 SWI XOS_WriteI+' '
174 SWI XOS_WriteI+'['
175 LDR R0,[R8,#lk_work]
176 BL writeHex
177 SWI XOS_WriteI+']'
178 LDR R0,[R8,#lk_flags]
179 CMP R0,#0
180 BEQ floop
181 SWI XOS_WriteI+' '
182 SWI XOS_WriteI+'['
183 SWI XOS_WriteI+'T'
184 SWI XOS_WriteI+']'
185 floop SWI XOS_NewLine
186 LDR R8,[R8,#lk_next]
187 B used_list
188
189 app_end SWI XOS_NewLine
190 LDR R7,[R7,#app_next]
191 B app_loop
192
193 ; --- Dump sub_alloc information ---
194
195 dump_sub LDMFD R13!,{PC}
196
197 writeHex STMFD R13!,{R1,R2,R14}
198 MOV R1,R11
199 MOV R2,#256
200 SWI XOS_ConvertHex8
201 SWI XOS_Write0
202 LDMFD R13!,{R1,R2,PC}^
203
204 writeDec STMFD R13!,{R1,R2,R14}
205 MOV R1,R11
206 MOV R2,#256
207 SWI XOS_ConvertInteger4
208 SWI XOS_Write0
209 LDMFD R13!,{R1,R2,PC}^
210
211 END