; ; dump.s ; ; DLLManager dump utility ; ; © 1994-1998 Straylight ; ;----- Licensing note ------------------------------------------------------- ; ; This file is part of Straylight's Dynamic Linking System (SDLS) ; ; SDLS is free software; you can redistribute it and/or modify ; it under the terms of the GNU General Public License as published by ; the Free Software Foundation; either version 2, or (at your option) ; any later version. ; ; SDLS is distributed in the hope that it will be useful, ; but WITHOUT ANY WARRANTY; without even the implied warranty of ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ; GNU General Public License for more details. ; ; You should have received a copy of the GNU General Public License ; along with SDLS. If not, write to the Free Software Foundation, ; 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. GET libs:header GET libs:swis GET sh.dllblock GET sh.appblock GET sh.linkblock GET sh.wspace AREA |!!!Foonly|,CODE,READONLY start STMFD R13!,{R14} MOV R0,#18 ADR R1,modname SWI XOS_Module LDMVSFD R13!,{PC} MOV R11,R12 MOV R12,R4 SWI OS_WriteS DCB "*** Dump of DLLManager workspace at &",0 MOV R0,R12 BL writeHex SWI OS_WriteS DCB 13,10,10 DCB "[DLL list]",13,10 DCB 13,10,0 ; --- Dump out DLL list --- LDR R7,dll__list dll_loop CMP R7,#0 BEQ dump_apps LDR R0,[R7,#dl_name] SWI XOS_Write0 SWI XOS_WriteI+' ' LDR R0,[R7,#dl_version] BL writeDec SWI XOS_WriteS DCB 13,10," Handle: ",0 MOV R0,R7 BL writeHex SWI XOS_WriteS DCB 13,10," Links: ",0 LDR R0,[R7,#dl_next] BL writeHex SWI XOS_WriteI+',' LDR R0,[R7,#dl_prev] BL writeHex SWI XOS_WriteS DCB 13,10," Ref count: ",0 LDR R0,[R7,#dl_clients] AND R1,R0,#&80000000 BIC R0,R0,#&80000000 BL writeDec CMP R1,#0 BEQ notent SWI XOS_WriteI+' ' SWI XOS_WriteI+'[' SWI XOS_WriteI+'T' SWI XOS_WriteI+']' notent SWI XOS_NewLine SWI XOS_NewLine LDR R7,[R7,#dl_next] B dll_loop modname DCB "DLLManager",0 ; --- Dump out application data --- dump_apps SWI XOS_WriteS DCB "[App data]",13,10 DCB 13,10 DCB "Cached handle: ",0 LDR R0,app__cacheHnd BL writeHex SWI XOS_WriteS DCB 13,10 DCB "Cached pointer: ",0 LDR R0,app__cachePtr BL writeHex SWI XOS_WriteS DCB 13,10 DCB 13,10 DCB "[App list]",13,10 DCB 13,10,0 ; --- Dump out application list --- LDR R7,app__list app_loop CMP R7,#0 BEQ dump_sub ADD R0,R7,#app_name SWI XOS_Write0 SWI XOS_WriteS DCB 13,10 DCB " External handle: ",0 LDR R0,[R7,#app_handle] BL writeHex SWI XOS_WriteS DCB 13,10 DCB " Internal handle: ",0 MOV R0,R7 BL writeHex SWI XOS_WriteS DCB 13,10 DCB " Links: ",0 LDR R0,[R7,#app_next] BL writeHex SWI XOS_WriteI+',' LDR R0,[R7,#app_prev] BL writeHex SWI XOS_WriteS DCB 13,10 DCB " Stack entries: ",0 LDR R0,[R7,#app_stackPtr] MOV R0,R0,LSR #3 ;Divide it by 8 BL writeDec SWI XOS_WriteS DCB 13,10 DCB " Cached DLL handle: ",0 LDR R0,[R7,#app_cachedll] BL writeHex SWI XOS_WriteS DCB 13,10 DCB " Cached DLL link: ",0 LDR R0,[R7,#app_cacheptr] BL writeHex SWI XOS_WriteS DCB 13,10 DCB " DLL list",13,10,0 ; --- Dump out DLL list quickly --- LDR R8,[R7,#app_dlls] used_list CMP R8,#0 BEQ app_end LDR R9,[R8,#lk_dll] SWI XOS_WriteI+' ' SWI XOS_WriteI+' ' SWI XOS_WriteI+' ' SWI XOS_WriteI+' ' LDR R0,[R9,#dl_name] SWI XOS_Write0 SWI XOS_WriteI+' ' LDR R0,[R9,#dl_version] BL writeDec SWI XOS_WriteI+' ' SWI XOS_WriteI+'[' LDR R0,[R8,#lk_work] BL writeHex SWI XOS_WriteI+']' LDR R0,[R8,#lk_flags] CMP R0,#0 BEQ floop SWI XOS_WriteI+' ' SWI XOS_WriteI+'[' SWI XOS_WriteI+'T' SWI XOS_WriteI+']' floop SWI XOS_NewLine LDR R8,[R8,#lk_next] B used_list app_end SWI XOS_NewLine LDR R7,[R7,#app_next] B app_loop ; --- Dump sub_alloc information --- dump_sub LDMFD R13!,{PC} writeHex STMFD R13!,{R1,R2,R14} MOV R1,R11 MOV R2,#256 SWI XOS_ConvertHex8 SWI XOS_Write0 LDMFD R13!,{R1,R2,PC}^ writeDec STMFD R13!,{R1,R2,R14} MOV R1,R11 MOV R2,#256 SWI XOS_ConvertInteger4 SWI XOS_Write0 LDMFD R13!,{R1,R2,PC}^ END