OSDN Git Service

(LibGoblin)
authorKoine Yuusuke(koinec) <koinec@users.osdn.me>
Mon, 24 Jun 2019 20:26:04 +0000 (05:26 +0900)
committerKoine Yuusuke(koinec) <koinec@users.osdn.me>
Mon, 24 Jun 2019 20:26:04 +0000 (05:26 +0900)
  * WorkBackup

libgoblin/drd64_libgoblin_debug_dwarf_str.c
libgoblin/drd64_libgoblin_debug_dwarf_str.h
libgoblin/drd64_libgoblin_dwarf_attrform.c
libgoblin/drd64_libgoblin_dwarf_info.c
libgoblin/drd64_libgoblin_type.h

index 53edbcd..824d14f 100644 (file)
@@ -80,12 +80,12 @@ char *
        int             i_cnt;
        char    *pstr_name      = NULL;
 
-       if( DEBUG_DWARF_STR_AT_MAX >= dw_attr ) {
+       if( LIBGOBLIN_DWARF_ATTR_DEF_MAX >= dw_attr )   {
                pstr_name       = gpstr_dwarf_attribute_name[ dw_attr ];
                goto    goto_Debug_DWARF_GetAttributeName_post;
        }
 
-       for( i_cnt = 0; i_cnt < DEBUG_DWARF_STR_AT_EXT_MAX; i_cnt++ )   {
+       for( i_cnt = 0; i_cnt < LIBGOBLIN_DWARF_ATTR_EXT_MAX; i_cnt++ ) {
                if( dw_attr == gt_dwarf_str_at_ext[ i_cnt ].dw_at )     {
                        pstr_name       = gt_dwarf_str_at_ext[ i_cnt ].pstr_atname;
                        break;
index a3a00ce..c6524bf 100644 (file)
@@ -182,20 +182,20 @@ typedef struct    {
        DWord   dw_at;
 } LibGoblin_Debug_DWARF_Str_ATExtension;
 
-#define        DEBUG_DWARF_STR_AT_MAX          0x6f
-#define        DEBUG_DWARF_STR_AT_EXT_MAX      53
+//#define      DEBUG_DWARF_STR_AT_MAX          0x6f
+//#define      DEBUG_DWARF_STR_AT_EXT_MAX      53
 
 #ifndef DRD64_SRC_LIBGOBLIN_DEBUG_DWARF_STR
        extern  char    gstr_dwarf_attribute[ 64 ];
 
        extern  LibGoblin_Debug_DWARF_Str_ATExtension
-                                       gt_dwarf_str_at_ext[ DEBUG_DWARF_STR_AT_EXT_MAX + 1 ];
-       extern  char    *gpstr_dwarf_attribute_name[ DEBUG_DWARF_STR_AT_MAX + 1 ];
+                                       gt_dwarf_str_at_ext[ LIBGOBLIN_DWARF_ATTR_EXT_MAX + 1 ];
+       extern  char    *gpstr_dwarf_attribute_name[ LIBGOBLIN_DWARF_ATTR_DEF_MAX + 1 ];
 
 #else
        char    gstr_dwarf_attribute[ 64 ];
 
-       char    *gpstr_dwarf_attribute_name[ DEBUG_DWARF_STR_AT_MAX + 1 ] = {
+       char    *gpstr_dwarf_attribute_name[ LIBGOBLIN_DWARF_ATTR_DEF_MAX + 1 ] = {
        "none_AT(ENDorERROR)",                  /* 0x00 */
        "DW_AT_sibling",                                /* 0x01 */
        "DW_AT_location",                               /* 0x02 */
@@ -318,7 +318,7 @@ typedef struct      {
 // #define DW_AT_lo_user                       0x2000
 // #define DW_AT_hi_user                       0x3fff
 LibGoblin_Debug_DWARF_Str_ATExtension
-               gt_dwarf_str_at_ext[ DEBUG_DWARF_STR_AT_EXT_MAX + 1 ]   = {
+               gt_dwarf_str_at_ext[ LIBGOBLIN_DWARF_ATTR_EXT_MAX + 1 ] = {
        { "DW_AT_sf_names",                                                     0x2101 },       // GNU extensions.
        { "DW_AT_src_info",                                                     0x2102 },       // GNU extensions.
        { "DW_AT_mac_info",                                                     0x2103 },       // GNU extensions.
index de47f9a..a0617cc 100644 (file)
@@ -302,10 +302,22 @@ Byte *
                LibGoblin_DWARF_DIEValue        *p_val,
                Byte    *pb_info,
                QWord   *pqw_remains,
+               //DWARF_AbbrevEntry     *p_abbrev,
                DWord   dw_format,
                LibGoblin_BinaryInfo    *p_binfo,
                LibGoblin_DWARF_Info_CUHeader   *p_cuheader )
 {
+/*
+       LibGoblin_DWARF_DIEValue        *p_val,
+
+       // Read Debug Information Entry (DIE) ---
+       memset( p_infoval, 0x00, sizeof( LibGoblin_DWARF_DIEValue ) * p_abbrev->i_items );
+       p_val   = p_infoval;
+       memset( p_binfo->dwarf.t_attr, 0x00, sizeof( p_binfo->dwarf.t_attr) );
+       for( i_cnt = 0; i_cnt < p_abbrev->i_items; i_cnt++, p_val++ )   {
+               dw_attribute    = p_abbrev->dw_attribute[ i_cnt ];
+               dw_format       = p_abbrev->dw_format[ i_cnt ];
+*/
        switch( dw_format )     {
                case DW_FORM_addr:              // 0x01: address
                        pb_info = DWARF_AttrForm_ReadFormat_Address(
@@ -426,6 +438,7 @@ Byte *
                default:
                        break;
        }
+//     }
 
        return pb_info;
 }
index ff5be34..a03ccd4 100644 (file)
@@ -307,7 +307,6 @@ int
                        t_cuheader.qw_abbrev_offset,
                        t_cuheader.b_pointersize);
 
-
                // Read & Process DWARF info TAG ---
                i_childlv       = 0;
                do      {
@@ -326,14 +325,16 @@ int
                        memset( p_infoval, 0x00, sizeof( LibGoblin_DWARF_DIEValue ) * p_arvnow->i_items );
                        p_val   = p_infoval;
 
+                       memset( p_binfo->dwarf.t_attr, 0x00, sizeof( p_binfo->dwarf.t_attr) );
+
                        for( i_cnt = 0; i_cnt < p_arvnow->i_items; i_cnt++, p_val++ )   {
                                dw_attribute    = p_arvnow->dw_attribute[ i_cnt ];
                                dw_format               = p_arvnow->dw_format[ i_cnt ];
 
-                               //pb_info       = DWARF_Info_ReadFormat_Data(
-                               //                              p_val, pb_info, &qw_size_cu, dw_format, p_binfo, &t_cuheader );
                                pb_info = DWARF_AttrForm_ReadFormat_Data(
                                                                p_val, pb_info, &qw_size_cu, dw_format, p_binfo, &t_cuheader );
+
+                               
                        }
 
                        if( 0x00 != p_arvnow->b_children )      { i_childlv++; }
index 17a958d..b2c8bb5 100644 (file)
@@ -375,6 +375,11 @@ typedef struct     {
 #define        LIBGOBLIN_BINFO_FILE_DEBUG              2
 #define        LIBGOBLIN_BINFO_FILE_LIBRARY    -1
 
+#define        LIBGOBLIN_DWARF_ATTR_DEF_MAX    0x6f
+#define        LIBGOBLIN_DWARF_ATTR_EXT_MAX    53
+#define        LIBGOBLIN_DWARF_ATTR_MAX                (LIBGOBLIN_DWARF_ATTR_DEF_MAX + LIBGOBLIN_DWARF_ATTR_EXT_MAX)
+
+
 typedef struct {
        /* BinaryInfo Struct ID */
        int                     i_id;
@@ -416,6 +421,8 @@ typedef struct      {
        struct  {
                int                                                     i_maxvals;
                LibGoblin_DWARF_DIEValue        *p_infoval;
+
+               LibGoblin_DWARF_Attribute       t_attr[LIBGOBLIN_DWARF_ATTR_MAX+1];
        } dwarf;