"TYPE:MUL", // 0x06
"TYPE:SIG", // 0x07
- "FUNCTION", // 0x08
- "OBJECT", // 0x09
- "COMMON", // 0x0a
- "TLS", // 0x0b
+ "TYPEDEF", // 0x08
+ "FUNCTION", // 0x09
+ "OBJECT", // 0x0a
+ "COMMON", // 0x0b
+ "TLS", // 0x0c
"REL", // 0x0d
- "", // 0x0d
"", // 0x0e
"", // 0x0f
"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
return;
}
+/*--------------------------------------------------------------------*/
+void
+ Debug_ObjectInfo_Print_Typedef(
+ LibGoblin_ObjectInfo *p_obj,
+ char *pstr_space,
+ Byte b_level )
+{
+ printf(" %s\t\t[OBJINFO] Addr.Link(%3d <-> %3d) .debug_info=%8ph\n",
+ pstr_space, p_obj->addrlink.i_prev_id, p_obj->addrlink.i_next_id,
+ p_obj->dwarf.pb_info );
+ printf(" %s\t\t[TYPEDEF] Link Addr= %8ph -> ObjID= %d\n",
+ pstr_space, p_obj->info.type.p_dwtype, p_obj->info.type.i_objid_type );
+
+ return;
+}
+
/*====================================================================*/
/*--------------------------------------------------------------------*/
void
Debug_ObjectInfo_Print_Type_Multi( p_obj, pstr_space, b_level );
break;
+ case OBJINFO_TYPE_TYPEDEF:
+ Debug_ObjectInfo_Print_Typedef( p_obj, pstr_space, b_level );
+ break;
+
case OBJINFO_TYPE_FUNCTION:
Debug_ObjectInfo_Print_Function( p_obj, pstr_space, b_level );
break;
}
//p_obj->i_srcid = p_srcfile->i_id;
}
-
+
/*
p_bfile = BinaryFile_GetBinaryFile( p_binfo->i_binfile );
assert( NULL != p_bfile );
pobj_now = ObjectInfo_InsetObject(
p_pginfo, ptrval_start, (QWord)0, pobj_parent,
- OBJINFO_INSETMODE_ADOPT, OBJINFO_TYPE_TYPE_SINGLE, NULL );
+ OBJINFO_INSETMODE_ADOPT, OBJINFO_TYPE_TYPEDEF, NULL );
if( NULL == pobj_now ) {
return -0x03;
}
}
if( ptr_value == p_objnow->addr.ptr_addr.value ) {
-//printf("DEBUG: %s (%x) : size= %lxh, obj= %lxh (%s)\n", pstr_name, dw_hash, qw_size, p_objnow->addr.qw_size, p_objnow->pstr_name );
if( qw_size > p_objnow->addr.qw_size )
{ break; }
- else if( qw_size < p_objnow->addr.qw_size ) {
- if( b_type < p_objnow->b_type ) { break; }
- }
- else { // qw_size == p_objnow->addr.qw_size
-//printf("DEBUG: %s (%x) <=> %s (%x) is chkmode.\n", pstr_name, dw_hash, p_objnow->pstr_name, p_objnow->dw_hash );
+
+ else if( qw_size == p_objnow->addr.qw_size ) {
if( b_type < p_objnow->b_type ) { break; }
if( OBJINFO_INSETMODE_CHKNAME & b_mode ) {
#define OBJINFO_TYPE_OBJFILE 0x05
#define OBJINFO_TYPE_TYPE_MULTI 0x06
#define OBJINFO_TYPE_TYPE_SINGLE 0x07
-#define OBJINFO_TYPE_FUNCTION 0x08
-#define OBJINFO_TYPE_OBJECT 0x09
-#define OBJINFO_TYPE_COMMON 0x0a
-#define OBJINFO_TYPE_TLS 0x0b
-#define OBJINFO_TYPE_REL 0x0c
+#define OBJINFO_TYPE_TYPEDEF 0x08
+#define OBJINFO_TYPE_FUNCTION 0x09
+#define OBJINFO_TYPE_OBJECT 0x0a
+#define OBJINFO_TYPE_COMMON 0x0b
+#define OBJINFO_TYPE_TLS 0x0c
+#define OBJINFO_TYPE_REL 0x0d
#define OBJINFO_TYPE_NONE 0x7f
typedef struct {