From 3d0aad37cadc30e6abd55a876ada82d4ef84091d Mon Sep 17 00:00:00 2001 From: "Koine Yuusuke(koinec)" Date: Sat, 17 Aug 2019 20:27:12 +0900 Subject: [PATCH] (LibGoblin) * WorkBackup --- libgoblin/Makefile | 6 +++ libgoblin/drd64_libgoblin.h | 1 + libgoblin/drd64_libgoblin_dwarf_tag_array.c | 66 +++++++++++++++++++++++++ libgoblin/drd64_libgoblin_dwarf_tag_array.h | 54 ++++++++++++++++++++ libgoblin/drd64_libgoblin_dwarf_tag_class.c | 2 + libgoblin/drd64_libgoblin_dwarf_tag_dispatch.h | 30 +++++------ libgoblin/drd64_libgoblin_dwarf_tag_function.c | 2 + libgoblin/drd64_libgoblin_dwarf_tag_parameter.c | 1 + libgoblin/drd64_libgoblin_dwarf_tag_struct.c | 2 + libgoblin/drd64_libgoblin_dwarf_tag_type.c | 3 ++ 10 files changed, 152 insertions(+), 15 deletions(-) create mode 100644 libgoblin/drd64_libgoblin_dwarf_tag_array.c create mode 100644 libgoblin/drd64_libgoblin_dwarf_tag_array.h diff --git a/libgoblin/Makefile b/libgoblin/Makefile index b2b184b..39476d8 100644 --- a/libgoblin/Makefile +++ b/libgoblin/Makefile @@ -77,6 +77,7 @@ OBJS = drd64_libgoblin_api.o \ drd64_libgoblin_dwarf_tag_struct.o \ drd64_libgoblin_dwarf_tag_parameter.o \ drd64_libgoblin_dwarf_tag_function.o \ + drd64_libgoblin_dwarf_tag_array.o \ drd64_libgoblin_dwarf_tag_class.o \ drd64_libgoblin_dwarf_tag_exception.o \ drd64_libgoblin_dwarf_tag_notclang.o \ @@ -119,6 +120,7 @@ HEADER = drd64_libgoblin.h \ drd64_libgoblin_dwarf_tag_struct.h \ drd64_libgoblin_dwarf_tag_parameter.h \ drd64_libgoblin_dwarf_tag_function.h \ + drd64_libgoblin_dwarf_tag_array.h \ drd64_libgoblin_dwarf_tag_class.h \ drd64_libgoblin_dwarf_tag_exception.h \ drd64_libgoblin_dwarf_tag_notclang.h \ @@ -263,6 +265,10 @@ drd64_libgoblin_dwarf_tag_function.o: \ drd64_libgoblin_dwarf_tag_function.c $(HEADER) $(CC) -c -o drd64_libgoblin_dwarf_tag_function.o $(FLAGS_DEBUG) \ drd64_libgoblin_dwarf_tag_function.c +drd64_libgoblin_dwarf_tag_array.o: \ + drd64_libgoblin_dwarf_tag_array.c $(HEADER) + $(CC) -c -o drd64_libgoblin_dwarf_tag_array.o $(FLAGS_DEBUG) \ + drd64_libgoblin_dwarf_tag_array.c drd64_libgoblin_dwarf_tag_class.o: \ drd64_libgoblin_dwarf_tag_class.c $(HEADER) $(CC) -c -o drd64_libgoblin_dwarf_tag_class.o $(FLAGS_DEBUG) \ diff --git a/libgoblin/drd64_libgoblin.h b/libgoblin/drd64_libgoblin.h index b878eb3..0899323 100644 --- a/libgoblin/drd64_libgoblin.h +++ b/libgoblin/drd64_libgoblin.h @@ -101,6 +101,7 @@ Comment: #include"drd64_libgoblin_dwarf_tag_struct.h" #include"drd64_libgoblin_dwarf_tag_parameter.h" #include"drd64_libgoblin_dwarf_tag_function.h" +#include"drd64_libgoblin_dwarf_tag_array.h" #include"drd64_libgoblin_dwarf_tag_class.h" #include"drd64_libgoblin_dwarf_tag_exception.h" #include"drd64_libgoblin_dwarf_tag_notclang.h" diff --git a/libgoblin/drd64_libgoblin_dwarf_tag_array.c b/libgoblin/drd64_libgoblin_dwarf_tag_array.c new file mode 100644 index 0000000..5f0b52b --- /dev/null +++ b/libgoblin/drd64_libgoblin_dwarf_tag_array.c @@ -0,0 +1,66 @@ +/*DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64 + + D r . D e a m o n 6 4 + for INTEL64(R), AMD64(R) + + Copyright(C) 2007-2009 Koine Yuusuke(koinec). All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY Koine Yuusuke(koinec) ``AS IS'' AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL Koine Yuusuke(koinec) OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED +OF THE POSSIBILITY OF SUCH DAMAGE. + +DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64*/ + +/* File Info ----------------------------------------------------------- +File: drd64_.c +Function: +Comment: +----------------------------------------------------------------------*/ + +#define DRD64_SRC_LIBGOBLIN_DWARF_TAG_ARRAY +#include"drd64_libgoblin.h" + +/*---------------------------------------------------------------------- +DW_TAG_array_type +DW_TAG_subrange_type +DW_TAG_enumeration_type +DW_TAG_enumerator +----------------------------------------------------------------------*/ + +/*---------------------------------------------------------------------- +----------------------------------------------------------------------*/ +LIBGOBLIN_DWARF_TAG_ARRAY_EXTERN +int + DWARF_Tag_Array_UnImplement( + DWord dw_tag, + LibGoblin_BinaryInfo *p_binfo ) +{ + printf( " UnImplement DWARF Tag(Array): %s [%02xh]\n", + Debug_DWARF_GetTAGname( dw_tag ), dw_tag ); + + return 0x00; +} + +/*---------------------------------------------------------------------- +----------------------------------------------------------------------*/ + + + +/* EOF of drd64_.c ----------------------------------- */ diff --git a/libgoblin/drd64_libgoblin_dwarf_tag_array.h b/libgoblin/drd64_libgoblin_dwarf_tag_array.h new file mode 100644 index 0000000..5f5598c --- /dev/null +++ b/libgoblin/drd64_libgoblin_dwarf_tag_array.h @@ -0,0 +1,54 @@ +/*DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64 + + D r . D e a m o n 6 4 + for INTEL64(R), AMD64(R) + + Copyright(C) 2007-2009 Koine Yuusuke(koinec). All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY Koine Yuusuke(koinec) ``AS IS'' AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL Koine Yuusuke(koinec) OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED +OF THE POSSIBILITY OF SUCH DAMAGE. + +DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64*/ + +/* File Info ----------------------------------------------------------- +File: drd64_.h +Function: Header +Comment: +----------------------------------------------------------------------*/ + +#ifndef DRD64_HEADER_LIBGOBLIN_DWARF_TAG_ARRAY +#define DRD64_HEADER_LIBGOBLIN_DWARF_TAG_ARRAY + +#include"drd64_libgoblin.h" + +#ifdef DRD64_SRC_LIBGOBLIN_DWARF_TAG_ARRAY + #define LIBGOBLIN_DWARF_TAG_ARRAY_EXTERN +#else + #define LIBGOBLIN_DWARF_TAG_ARRAY_EXTERN extern +#endif + +LIBGOBLIN_DWARF_TAG_ARRAY_EXTERN + int DWARF_Tag_Array_UnImplement( DWord dw_tag, LibGoblin_BinaryInfo *p_binfo ); + + +#endif /* DRD64_HEADER_LIBGOBLIN_BINFO */ + +/* EOF of drd64_.h ----------------------------------- */ diff --git a/libgoblin/drd64_libgoblin_dwarf_tag_class.c b/libgoblin/drd64_libgoblin_dwarf_tag_class.c index 68e419b..2598b94 100644 --- a/libgoblin/drd64_libgoblin_dwarf_tag_class.c +++ b/libgoblin/drd64_libgoblin_dwarf_tag_class.c @@ -46,6 +46,8 @@ DW_TAG_access_declaration DW_TAG_template_type_parameter DW_TAG_template_value_parameter DW_TAG_imported_declaration +DW_TAG_namespace +DW_TAG_imported_module ----------------------------------------------------------------------*/ /*---------------------------------------------------------------------- diff --git a/libgoblin/drd64_libgoblin_dwarf_tag_dispatch.h b/libgoblin/drd64_libgoblin_dwarf_tag_dispatch.h index 25c0726..050b1c8 100644 --- a/libgoblin/drd64_libgoblin_dwarf_tag_dispatch.h +++ b/libgoblin/drd64_libgoblin_dwarf_tag_dispatch.h @@ -67,48 +67,48 @@ LIBGOBLIN_DWARF_TAG_DISPATCH_EXTERN #ifdef DRD64_SRC_LIBGOBLIN_DWARF_TAG_DISPATCH DWARF_TagFunction dwarf_tag[LIBGOBLIN_DWARF_TAG_MAX] = { { 0x00, NULL }, - { DW_TAG_array_type, NULL }, // 0x01 + { DW_TAG_array_type, DWARF_Tag_Array_UnImplement }, // 0x01: array { DW_TAG_class_type, DWARF_Tag_Class_UnImplement }, // 0x02: class { DW_TAG_entry_point, DWARF_Tag_NotClang_UnImplement }, // 0x03: notclang - { DW_TAG_enumeration_type, NULL }, // 0x04 + { DW_TAG_enumeration_type, DWARF_Tag_Array_UnImplement }, // 0x04: array { DW_TAG_formal_parameter, DWARF_Tag_Parameter_UnImplement }, // 0x05: parameter { 0x06, NULL }, { 0x07, NULL }, { DW_TAG_imported_declaration, DWARF_Tag_Class_UnImplement }, // 0x08: class { 0x09, NULL }, - { DW_TAG_label, NULL }, // 0x0a - { DW_TAG_lexical_block, NULL }, // 0x0b + { DW_TAG_label, DWARF_Tag_Function_UnImplement }, // 0x0a: function + { DW_TAG_lexical_block, DWARF_Tag_Function_UnImplement }, // 0x0b: function { 0x0c, NULL }, - { DW_TAG_member, NULL }, // 0x0d + { DW_TAG_member, DWARF_Tag_Struct_UnImplement }, // 0x0d: struct { 0x0e, NULL }, { DW_TAG_pointer_type, DWARF_Tag_Type_UnImplement }, // 0x0f: type - { DW_TAG_reference_type, NULL }, // 0x10 + { DW_TAG_reference_type, DWARF_Tag_Type_UnImplement }, // 0x10: type { DW_TAG_compile_unit, NULL }, // 0x11 { DW_TAG_string_type, DWARF_Tag_NotClang_UnImplement }, // 0x12: notclang { DW_TAG_structure_type, DWARF_Tag_Struct_UnImplement }, // 0x13: struct { 0x14, NULL }, - { DW_TAG_subroutine_type, NULL }, // 0x15: - { DW_TAG_typedef, NULL }, // 0x16 + { DW_TAG_subroutine_type, DWARF_Tag_Type_UnImplement }, // 0x15: type + { DW_TAG_typedef, DWARF_Tag_Type_UnImplement }, // 0x16: type { DW_TAG_union_type, DWARF_Tag_Struct_UnImplement }, // 0x17: struct - { DW_TAG_unspecified_parameters,NULL }, // 0x18 - { DW_TAG_variant, NULL }, // 0x19 + { DW_TAG_unspecified_parameters,DWARF_Tag_Parameter_UnImplement }, // 0x18: parameter + { DW_TAG_variant, DWARF_Tag_Struct_UnImplement }, // 0x19: struct { DW_TAG_common_block, DWARF_Tag_NotClang_UnImplement }, // 0x1a: notclang { DW_TAG_common_inclusion, DWARF_Tag_NotClang_UnImplement }, // 0x1b: notclang { DW_TAG_inheritance, DWARF_Tag_Class_UnImplement }, // 0x1c: class { DW_TAG_inlined_subroutine, DWARF_Tag_Function_UnImplement }, // 0x1d: function { DW_TAG_module, DWARF_Tag_NotClang_UnImplement }, // 0x1e: notclang - { DW_TAG_ptr_to_member_type, NULL }, // 0x1f + { DW_TAG_ptr_to_member_type, DWARF_Tag_Type_UnImplement }, // 0x1f: type { DW_TAG_set_type, DWARF_Tag_NotClang_UnImplement }, // 0x20: notclang - { DW_TAG_subrange_type, NULL }, // 0x21 + { DW_TAG_subrange_type, DWARF_Tag_Array_UnImplement }, // 0x21: array { DW_TAG_with_stmt, DWARF_Tag_NotClang_UnImplement }, // 0x22: notclang { DW_TAG_access_declaration, DWARF_Tag_Class_UnImplement }, // 0x23: class { DW_TAG_base_type, DWARF_Tag_Type_UnImplement }, // 0x24: type { DW_TAG_catch_block, DWARF_Tag_Exception_UnImplement }, // 0x25: exception { DW_TAG_const_type, DWARF_Tag_Type_UnImplement }, // 0x26: type { DW_TAG_constant, DWARF_Tag_Parameter_UnImplement }, // 0x27: parameter - { DW_TAG_enumerator, NULL }, // 0x28 + { DW_TAG_enumerator, DWARF_Tag_Array_UnImplement }, // 0x28: array { 0x29, NULL }, { DW_TAG_friend, DWARF_Tag_Class_UnImplement }, // 0x2a: class { DW_TAG_namelist, DWARF_Tag_NotClang_UnImplement }, // 0x2b: notclang @@ -128,8 +128,8 @@ DWARF_TagFunction dwarf_tag[LIBGOBLIN_DWARF_TAG_MAX] = { { DW_TAG_dwarf_procedure, NULL }, // 0x36 { DW_TAG_restrict_type, DWARF_Tag_Type_UnImplement }, // 0x37: type { DW_TAG_interface_type, DWARF_Tag_Class_UnImplement }, // 0x38: class - { DW_TAG_namespace, NULL }, // 0x39 - { DW_TAG_imported_module, NULL }, // 0x3a + { DW_TAG_namespace, DWARF_Tag_Class_UnImplement }, // 0x39: class + { DW_TAG_imported_module, DWARF_Tag_Class_UnImplement }, // 0x3a: class { DW_TAG_unspecified_type, DWARF_Tag_Type_UnImplement }, // 0x3b: type { DW_TAG_partial_unit, DWARF_Tag_NotClang_UnImplement }, // 0x3c: notclang { DW_TAG_imported_unit, DWARF_Tag_NotClang_UnImplement }, // 0x3d: notclang diff --git a/libgoblin/drd64_libgoblin_dwarf_tag_function.c b/libgoblin/drd64_libgoblin_dwarf_tag_function.c index 62dade3..a2017ba 100644 --- a/libgoblin/drd64_libgoblin_dwarf_tag_function.c +++ b/libgoblin/drd64_libgoblin_dwarf_tag_function.c @@ -40,6 +40,8 @@ Comment: /*---------------------------------------------------------------------- DW_TAG_subprogram DW_TAG_inlined_subroutine +DW_TAG_lexical_block +DW_TAG_label ----------------------------------------------------------------------*/ /*---------------------------------------------------------------------- diff --git a/libgoblin/drd64_libgoblin_dwarf_tag_parameter.c b/libgoblin/drd64_libgoblin_dwarf_tag_parameter.c index c1eb926..e1784b9 100644 --- a/libgoblin/drd64_libgoblin_dwarf_tag_parameter.c +++ b/libgoblin/drd64_libgoblin_dwarf_tag_parameter.c @@ -41,6 +41,7 @@ Comment: DW_TAG_variable DW_TAG_formal_parameter DW_TAG_constant +DW_TAG_unspecified_parameters ----------------------------------------------------------------------*/ /*---------------------------------------------------------------------- diff --git a/libgoblin/drd64_libgoblin_dwarf_tag_struct.c b/libgoblin/drd64_libgoblin_dwarf_tag_struct.c index 0fc5d7e..3c4d459 100644 --- a/libgoblin/drd64_libgoblin_dwarf_tag_struct.c +++ b/libgoblin/drd64_libgoblin_dwarf_tag_struct.c @@ -40,6 +40,8 @@ Comment: /*---------------------------------------------------------------------- DW_TAG_structure_type DW_TAG_union_type +DW_TAG_member +DW_TAG_variant ----------------------------------------------------------------------*/ /*---------------------------------------------------------------------- diff --git a/libgoblin/drd64_libgoblin_dwarf_tag_type.c b/libgoblin/drd64_libgoblin_dwarf_tag_type.c index 6ee8c4d..eadb0ce 100644 --- a/libgoblin/drd64_libgoblin_dwarf_tag_type.c +++ b/libgoblin/drd64_libgoblin_dwarf_tag_type.c @@ -45,6 +45,9 @@ DW_TAG_pointer_type DW_TAG_reference_type DW_TAG_restrict_type DW_TAG_volatile_type +DW_TAG_typedef +DW_TAG_subroutine_type +DW_TAG_ptr_to_member_type ----------------------------------------------------------------------*/ /*---------------------------------------------------------------------- -- 2.11.0