#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
{ 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
{ 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
{ 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