OSDN Git Service

(LibGoblin)
authorKoine Yuusuke(koinec) <koinec@users.osdn.me>
Mon, 26 Aug 2019 12:13:15 +0000 (21:13 +0900)
committerKoine Yuusuke(koinec) <koinec@users.osdn.me>
Mon, 26 Aug 2019 12:13:15 +0000 (21:13 +0900)
  * WorkBackup

libgoblin/drd64_libgoblin_api.c
libgoblin/drd64_libgoblin_debug_objinfo.c
libgoblin/drd64_libgoblin_dwarf_tag_dispatch.h
libgoblin/drd64_libgoblin_dwarf_tag_type.c

index 3585a42..bf47637 100644 (file)
@@ -89,7 +89,7 @@ int
                                errno, (QWord)i_result, (QWord)0x00, __LINE__ );
                return -0x04;
        }
-
+/*
        i_result        = ObjectInfo_PostProc( p_pginfo, p_binfo );
        if( 0x00 != i_result )  {
                LibBrownie_Error_SetErrorInfo(
@@ -98,7 +98,7 @@ int
                                errno, (QWord)i_result, (QWord)0x00, __LINE__ );
                return -0x05;
        }
-
+*/
        // XXX: for DEBUG!
        Debug_ObjectInfo_Print_AllGroupLink( p_pginfo, 0xff );
 
index 5b682ab..ca841b3 100644 (file)
@@ -87,9 +87,10 @@ void
        char    str_visibility[32];
        LibGoblin_BinaryInfo    *p_binfo_origin;
 
-       printf(" %s\t\t[OBJINFO] Addr.Link(%3d <-> %3d)  File{ Offset=%8p, Size=%8ld, BinFileID=%d }\n",
+       printf(" %s\t\t[OBJINFO] Addr.Link(%3d <-> %3d) .debug_info=%8ph  File{ Offset=%8p, Size=%8ld, BinFileID=%d }\n",
                                pstr_space, 
                                p_obj->addrlink.i_prev_id, p_obj->addrlink.i_next_id,
+                               p_obj->dwarf.pb_info,
                                p_obj->file.pv_offset, p_obj->file.qw_size, p_obj->file.i_binfile );
 
        // Symbol type - ELFNN_ST_TYPE - st_info
@@ -257,9 +258,10 @@ void
        char    str_flag[256];
        DWord   qw_flag;
 
-       printf(" %s\t\t[OBJINFO] Addr.Link(%3d <-> %3d)  File{ Offset=%8p, Size=%8ld, BinFileID=%d }\n",
+       printf(" %s\t\t[OBJINFO] Addr.Link(%3d <-> %3d) .debug_info=%8ph File{ Offset=%8p, Size=%8ld, BinFileID=%d }\n",
                                pstr_space, 
                                p_obj->addrlink.i_prev_id, p_obj->addrlink.i_next_id,
+                               p_obj->dwarf.pb_info,
                                p_obj->file.pv_offset, p_obj->file.qw_size, p_obj->file.i_binfile );
 
 
@@ -383,9 +385,10 @@ void
        char    str_flag[8];
        DWord   dw_flag;
 
-       printf(" %s\t\t[OBJINFO] Addr.Link(%3d <-> %3d)  File{ Offset=%8p, Size=%8ld, BinFileID=%d }\n",
+       printf(" %s\t\t[OBJINFO] Addr.Link(%3d <-> %3d) .debug_info=%8ph File{ Offset=%8p, Size=%8ld, BinFileID=%d }\n",
                                pstr_space, 
                                p_obj->addrlink.i_prev_id, p_obj->addrlink.i_next_id,
+                               p_obj->dwarf.pb_info,
                                p_obj->file.pv_offset, p_obj->file.qw_size, p_obj->file.i_binfile );
 
        switch( p_obj->info.proghdr.dw_type )   {
@@ -439,8 +442,9 @@ void
                        char    *pstr_space,
                        Byte    b_level )
 {
-       printf(" %s\t\t[OBJINFO] Addr.Link(%3d <-> %3d)\n",
-                               pstr_space, p_obj->addrlink.i_prev_id, p_obj->addrlink.i_next_id );
+       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[PROGRAM] BinaryInfo ID= %d\n",
                                pstr_space, p_obj->info.program.i_binfo_id );
@@ -455,8 +459,9 @@ void
                        char    *pstr_space,
                        Byte    b_level )
 {
-       printf(" %s\t\t[OBJINFO] Addr.Link(%3d <-> %3d)\n",
-                               pstr_space, p_obj->addrlink.i_prev_id, p_obj->addrlink.i_next_id );
+       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[OBJFILE] Abbrev Nums=%3d (%8ph)  CU Header: size=%ld, ver=%d, pointer size=%d\n",
                                pstr_space, p_obj->info.objfile.i_abbrevs, p_obj->info.objfile.p_abbrev,
                                p_obj->info.objfile.t_cuheader.qw_unitsize,
@@ -473,10 +478,15 @@ void
                        char    *pstr_space,
                        Byte    b_level )
 {
-       printf(" %s\t\t[OBJINFO] Addr.Link(%3d <-> %3d)\n",
-                               pstr_space, p_obj->addrlink.i_prev_id, p_obj->addrlink.i_next_id );
-       printf(" %s\t\t[TYPE(Single)] size= %u, encoding= %xh\n",
-                               pstr_space, p_obj->info.type.dw_size, p_obj->info.type.b_encoding );
+       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[TYPE(Single)] size= %u, encoding= %xh, BitOffset=%d, BitSize=%d, Endianity=%x\n",
+                               pstr_space, p_obj->info.type.dw_size, p_obj->info.type.b_encoding,
+                               p_obj->info.type.b_bit_offset, p_obj->info.type.b_bit_size,
+                               p_obj->info.type.b_endianity );
+       printf(" %s\t\t[TYPE(Single)] Link Addr= %8ph  -> ObjID= %d\n",
+                               pstr_space, p_obj->info.type.p_dwtype, p_obj->info.type.i_objid_type );
 
        return;
 }
@@ -488,8 +498,9 @@ void
                        char    *pstr_space,
                        Byte    b_level )
 {
-       printf(" %s\t\t[OBJINFO] Addr.Link(%3d <-> %3d)\n",
-                               pstr_space, p_obj->addrlink.i_prev_id, p_obj->addrlink.i_next_id );
+       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 );
 
        return;
 }
index 138a1ad..f04dd68 100644 (file)
@@ -135,9 +135,9 @@ DWARF_TagFunction   dwarf_tag[LIBGOBLIN_DWARF_TAG_MAX]      = {
 { DW_TAG_try_block,                            DWARF_Tag_Exception_UnImplement },      // 0x32: exception
 { DW_TAG_variant_part,                 DWARF_Tag_NotClang_UnImplement },       // 0x33: notclang
 { DW_TAG_variable,                             DWARF_Tag_Parameter_UnImplement },      // 0x34: parameter
-{ DW_TAG_volatile_type,                        DWARF_Tag_Type_Common_Type },           // 0x35: type
+{ DW_TAG_volatile_type,                        DWARF_Tag_Type_Common_type },           // 0x35: type
 { DW_TAG_dwarf_procedure,              NULL }, // 0x36
-{ DW_TAG_restrict_type,                        DWARF_Tag_Type_Common_Type },           // 0x37: type
+{ DW_TAG_restrict_type,                        DWARF_Tag_Type_Common_type },           // 0x37: type
 { DW_TAG_interface_type,               DWARF_Tag_Class_UnImplement },          // 0x38: class
 { DW_TAG_namespace,                            DWARF_Tag_Class_UnImplement },          // 0x39: class
 { DW_TAG_imported_module,              DWARF_Tag_Class_UnImplement },          // 0x3a: class
index 0305a46..ea4b9d7 100644 (file)
@@ -86,7 +86,7 @@ int
         LibGoblin_DWARF_Info_Ancestry  *p_ancestry,
                LibGoblin_DWARF_Info_CUHeader   *p_cuheader )
 {
-       Byte            *pb_link;
+       Byte            *pb_link        = NULL;
        int                     i_obj_parent;
        PtrValue        ptrval_start;
        LibGoblin_ObjectInfo            *pobj_now;
@@ -97,14 +97,12 @@ int
 
        // Data Extract
        pval_type       = DWARF_AttrForm_GetDIEValue( p_binfo, DW_AT_type );
-       pval_name       = DWARF_AttrForm_GetDIEValue( p_binfo, DW_AT_nem);
+       pval_name       = DWARF_AttrForm_GetDIEValue( p_binfo, DW_AT_name );
 
-       if( NULL == pval_type ) {
-               return -0x02;
+       if( NULL != pval_type ) {
+               pb_link = pval_type->value.pb_link;
        }
 
-       pb_link = pval_type->value.pb_link;
-
        i_obj_parent    = p_ancestry[i_childlv - 1].i_objid;
 
        p_pginfo        = ProgInfo_GetProgInfo( p_binfo->i_pginfo );