OSDN Git Service

(LibGoblin)
authorKoine Yuusuke(koinec) <koinec@users.osdn.me>
Tue, 4 Jun 2019 21:05:39 +0000 (06:05 +0900)
committerKoine Yuusuke(koinec) <koinec@users.osdn.me>
Tue, 4 Jun 2019 21:05:39 +0000 (06:05 +0900)
  * WorkBackup

libgoblin/drd64_libgoblin_dwarf_info.c
libgoblin/drd64_libgoblin_dwarf_tag.c
libgoblin/drd64_libgoblin_dwarf_tag.h

index 98f7665..3142b8c 100644 (file)
@@ -726,6 +726,7 @@ int
                        if( 0x00 != p_arvnow->b_children )      { i_childlv++; }
 
                        // Dispatch for generate Rapid-Access Table by DIE-tag
+                       i_result        = DWARF_Tag_Dispatch( p_binfo, p_bfile, p_srcfile, p_arvnow );
 
                        Debug_DWARF_PrintDIE( p_bfile, p_abbrev, dw_arvid, i_childlv );
 
index fd3833d..49aef77 100644 (file)
@@ -39,7 +39,16 @@ Comment:
 
 /*----------------------------------------------------------------------
 ----------------------------------------------------------------------*/
-
+LIBGOBLIN_DWARF_TAG_EXTERN
+int
+       DWARF_Tag_Dispatch(
+               LibGoblin_BinaryInfo    *p_binfo,
+               LibGoblin_BinaryFile    *p_bfile,
+               LibGoblin_SrcFile               *p_srcfile,
+               DWARF_AbbrevEntry               *p_abbrev )
+{
+       return 0x00;
+}
 
 /*----------------------------------------------------------------------
 ----------------------------------------------------------------------*/
index 376932b..80f3a13 100644 (file)
@@ -45,30 +45,47 @@ Comment:
        #define LIBGOBLIN_DWARF_TAG_EXTERN      extern
 #endif
 
-#define        LIBGOBLIN_DWARF_TAG_MAX 128
-#define        LIBGOBLIN_DWARF_TAG_DEFAULT_MAX 0x43
+#define        LIBGOBLIN_DWARF_TAG_MAX 91
+#define        LIBGOBLIN_DWARF_TAG_DEFAULT_MAX 0x4f
 
 typedef        struct  {
        DWord   dw_tag;
        int             (* DWARF_Tag_Proc)( LibGoblin_BinaryInfo *p_binfo );
 } DWARF_TagFunction;
 
+
+LIBGOBLIN_DWARF_TAG_EXTERN
+       int DWARF_Tag_Dispatch(
+        LibGoblin_BinaryInfo    *p_binfo,
+        LibGoblin_BinaryFile    *p_bfile,
+        LibGoblin_SrcFile       *p_srcfile,
+        DWARF_AbbrevEntry       *p_abbrev );
+
+
 #ifdef DRD64_SRC_LIBGOBLIN_DWARF_TAG
 DWARF_TagFunction      dwarf_tag[LIBGOBLIN_DWARF_TAG_MAX]      = {
+               { 0x00, NULL },
                { DW_TAG_array_type, NULL },    // 0x01
                { DW_TAG_class_type, NULL },    // 0x02
                { DW_TAG_entry_point, NULL },   // 0x03
                { DW_TAG_enumeration_type, NULL },      // 0x04
                { DW_TAG_formal_parameter, NULL },      // 0x05
+               { 0x06, NULL },
+               { 0x07, NULL },
                { DW_TAG_imported_declaration, NULL },  // 0x08
+               { 0x09, NULL },
                { DW_TAG_label, NULL }, // 0x0a
                { DW_TAG_lexical_block, NULL }, // 0x0b
+               { 0x0c, NULL },
                { DW_TAG_member, NULL },        // 0x0d
+               { 0x0e, NULL },
                { DW_TAG_pointer_type, NULL },  // 0x0f
+
                { DW_TAG_reference_type, NULL },        // 0x10
                { DW_TAG_compile_unit, NULL },  // 0x11
                { DW_TAG_string_type, NULL },   // 0x12
                { DW_TAG_structure_type, NULL },        // 0x13
+               { 0x14, NULL },
                { DW_TAG_subroutine_type, NULL },       // 0x15
                { DW_TAG_typedef, NULL },       // 0x16
                { DW_TAG_union_type, NULL },    // 0x17
@@ -80,6 +97,7 @@ DWARF_TagFunction     dwarf_tag[LIBGOBLIN_DWARF_TAG_MAX]      = {
                { DW_TAG_inlined_subroutine, NULL },    // 0x1d
                { DW_TAG_module, NULL },        // 0x1e
                { DW_TAG_ptr_to_member_type, NULL },    // 0x1f
+
                { DW_TAG_set_type, NULL },      // 0x20
                { DW_TAG_subrange_type, NULL }, // 0x21
                { DW_TAG_with_stmt, NULL },     // 0x22
@@ -89,15 +107,15 @@ DWARF_TagFunction  dwarf_tag[LIBGOBLIN_DWARF_TAG_MAX]      = {
                { DW_TAG_const_type, NULL },    // 0x26
                { DW_TAG_constant, NULL },      // 0x27
                { DW_TAG_enumerator, NULL },    // 0x28
+               { 0x29, NULL },
                { DW_TAG_friend, NULL },        // 0x2a
                { DW_TAG_namelist, NULL },      // 0x2b
                { DW_TAG_namelist_item, NULL }, // 0x2c
                { DW_TAG_packed_type, NULL },   // 0x2d
                { DW_TAG_subprogram, NULL },    // 0x2e
-               { DW_TAG_template_type_parameter, NULL },       // 0x2f
-               { DW_TAG_template_type_param, NULL },   // 0x2f
-               { DW_TAG_template_value_parameter, NULL },      // 0x30
-               { DW_TAG_template_value_param, NULL },  // 0x30
+               { DW_TAG_template_type_parameter, NULL },       // 0x2f = DW_TAG_template_type_param
+
+               { DW_TAG_template_value_parameter, NULL },      // 0x30 = DW_TAG_template_value_param
                { DW_TAG_thrown_type, NULL },   // 0x31
                { DW_TAG_try_block, NULL },     // 0x32
                { DW_TAG_variant_part, NULL },  // 0x33
@@ -111,12 +129,26 @@ DWARF_TagFunction dwarf_tag[LIBGOBLIN_DWARF_TAG_MAX]      = {
                { DW_TAG_unspecified_type, NULL },      // 0x3b
                { DW_TAG_partial_unit, NULL },  // 0x3c
                { DW_TAG_imported_unit, NULL }, // 0x3d
+               { 0x3e, NULL },
                { DW_TAG_condition, NULL },     // 0x3f
+
                { DW_TAG_shared_type, NULL },   // 0x40
                { DW_TAG_type_unit, NULL },     // 0x41
                { DW_TAG_rvalue_reference_type, NULL }, // 0x42
                { DW_TAG_template_alias, NULL },        // 0x43
-       // DW_TAG_lo_user 0x4080 ----
+               { 0x44, NULL },
+               { 0x45, NULL },
+               { 0x46, NULL },
+               { 0x47, NULL },
+               { 0x48, NULL },
+               { 0x49, NULL },
+               { 0x4a, NULL },
+               { 0x4b, NULL },
+               { 0x4c, NULL },
+               { 0x4d, NULL },
+               { 0x4e, NULL },
+               { 0x4f, NULL },
+       // DW_TAG_lo_user 0x4080 ---- 11 items
                { DW_TAG_format_label, NULL },  // 0x4101
                { DW_TAG_function_template, NULL },     // 0x4102
                { DW_TAG_class_template, NULL },        // 0x4103