OSDN Git Service

2019/02/03(Sun) 21:40
[drdeamon64/drdeamon64.git] / libgoblin / drd64_libgoblin_debug_objinfo.c
1 /*DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64
2
3                          D r . D e a m o n  6 4
4                         for INTEL64(R), AMD64(R)
5         
6    Copyright(C) 2007-2009 Koine Yuusuke(koinec). All rights reserved.
7
8 Redistribution and use in source and binary forms, with or without
9 modification, are permitted provided that the following conditions are met:
10
11  1. Redistributions of source code must retain the above copyright notice,
12     this list of conditions and the following disclaimer.
13  2. Redistributions in binary form must reproduce the above copyright
14     notice, this list of conditions and the following disclaimer in the
15     documentation and/or other materials provided with the distribution.
16
17 THIS SOFTWARE IS PROVIDED BY Koine Yuusuke(koinec) ``AS IS'' AND ANY
18 EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20 DISCLAIMED. IN NO EVENT SHALL Koine Yuusuke(koinec) OR CONTRIBUTORS BE
21 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
27 OF THE POSSIBILITY OF SUCH DAMAGE.
28
29 DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64*/
30
31 /* File Info -----------------------------------------------------------
32 File: drd64_.c
33 Function: 
34 Comment: 
35 ----------------------------------------------------------------------*/
36
37 #define DRD64_SRC_LIBGOBLIN_DEBUG_OBJINFO
38 #include"drd64_libgoblin.h"
39
40 static char     gstr_type[256][8]       = {
41         "NULL",
42         "MASTER",
43         "PROGHDR",
44         "SECTION",
45         "",
46         "",
47         "",
48         "",
49         "", "", "", "", "", "", "", "",
50         "", "", "", "", "", "", "", "",
51         "", "", "", "", "", "", "", "",
52         "", "", "", "", "", "", "", "",
53         "", "", "", "", "", "", "", "",
54         "", "", "", "", "", "", "", "",
55
56         "", "", "", "", "", "", "", "",
57         "", "", "", "", "", "", "", "",
58         "", "", "", "", "", "", "", "",
59         "", "", "", "", "", "", "", "",
60         "", "", "", "", "", "", "", "",
61         "", "", "", "", "", "", "", "",
62         "", "", "", "", "", "", "", "",
63
64         "", "", "", "", "", "", "", "",
65         "", "", "", "", "", "", "", "",
66         "", "", "", "", "", "", "", "",
67         "", "", "", "", "", "", "", "",
68         "", "", "", "", "", "", "", "",
69         "", "", "", "", "", "", "", "",
70         "", "", "", "", "", "", "", "",
71
72         "", "", "", "", "", "", "", "",
73         "", "", "", "", "", "", "", "",
74         "", "", "", "", "", "", "", "",
75         "", "", "", "", "", "", "", "",
76         "", "", "", "", "", "", "", "",
77         "", "", "", "", "", "", "", "",
78         "", "", "", "", "", "", "", ""
79 };
80
81 /*====================================================================*/
82 /*--------------------------------------------------------------------*/
83 void
84         Debug_ObjectInfo_PrintInfo(
85                         LibGoblin_ObjectInfo    *p_obj,
86                         int             i_depth,
87                         Byte    b_level )
88 {
89         char    str_space[256];
90
91         // Set Space String ---
92         if( 127 <= i_depth )    { i_depth = 127; }
93         memset( str_space, (int)' ', (i_depth * 2));
94         str_space[ (i_depth * 2) ]      = '\0';
95
96         // 
97
98         printf(" %s*OBJINFO[%4d] (%-8s) %16lxh - %16lxh (Size: %16lxh) : %s\n",
99                                 str_space, p_obj->i_id,
100                                 gstr_type[ p_obj->b_type ],
101                                 p_obj->addr.ptr_addr.value,
102                                 (( 0 < p_obj->addr.qw_size )
103                                         ? (p_obj->addr.ptr_addr.value + p_obj->addr.qw_size - 1)
104                                         : p_obj->addr.ptr_addr.value),
105                                 p_obj->addr.qw_size,
106                                 p_obj->pstr_name );
107
108         return;
109 }
110
111
112 /*====================================================================*/
113 /*--------------------------------------------------------------------*/
114 LIBGOBLIN_DEBUG_OBJINFO_EXTERN
115 int
116         Debug_ObjectInfo_Print_AllAddrLink(
117                         LibGoblin_ProgramInfo   *p_pginfo,
118                         Byte            b_level )
119 {
120         //LibGoblin_ObjectInfo  *p_objinfo;
121
122         if( 0x00 < b_level )
123                 { puts("[DEBUG] ObjectInfo - Addr.Link --------------------------------------"); }
124
125
126
127
128         if( 0x00 < b_level )    {
129                 puts("-----------------------------------------------------------------------");
130                 puts("");
131         }
132
133         return 0x00;
134 }
135
136 /*====================================================================*/
137 /*--------------------------------------------------------------------*/
138 void
139         Debug_ObjectInfo_Print_GroupLink(
140                         LibGoblin_ProgramInfo   *p_pginfo,
141                         LibGoblin_ObjectInfo    *p_objstart,
142                         int             i_depth,
143                         Byte    b_level )
144 {
145         LibGoblin_ObjectInfo    *p_objinfo;
146
147         if( NULL == p_objstart )        { return; }
148         p_objinfo       = p_objstart;
149         do      {
150                 // Print ObjInfo ---
151                 Debug_ObjectInfo_PrintInfo( p_objinfo, i_depth, b_level );
152
153                 // Child. ---
154                 if( NO_OBJINFO != p_objinfo->grplink.i_child_topid )    {
155                         Debug_ObjectInfo_Print_GroupLink(
156                                         p_pginfo,
157                                         OBJINFO( p_pginfo, p_objinfo->grplink.i_child_topid ), (i_depth + 1), b_level );
158                 }
159
160                 // Set Next ObjectInfo ---
161                 p_objinfo       = ((NO_OBJINFO == p_objinfo->grplink.i_next_id)
162                                                         ? NULL : OBJINFO( p_pginfo, p_objinfo->grplink.i_next_id ));
163         } while( NULL != p_objinfo );
164
165         return;
166 }
167
168
169 /*--------------------------------------------------------------------*/
170 LIBGOBLIN_DEBUG_OBJINFO_EXTERN
171 int
172         Debug_ObjectInfo_Print_AllGroupLink(
173                         LibGoblin_ProgramInfo   *p_pginfo,
174                         Byte            b_level )
175 {
176         LibGoblin_ObjectInfo    *p_objinfo;
177
178         if( 0x00 < b_level )
179                 { puts("[DEBUG] ObjectInfo - GroupLink --------------------------------------"); }
180
181
182         Debug_ObjectInfo_Print_GroupLink( p_pginfo, p_pginfo->objinfo.p_objinfo, 0, b_level );
183
184         if( 0x00 < b_level )    {
185                 puts("-----------------------------------------------------------------------");
186                 puts("");
187         }
188
189         return 0x00;
190 }
191
192
193 /* EOF of drd64_.c ----------------------------------- */