From 595c72071dd0e4e8ba0a9fd9ed9cc43e2b3bf5f8 Mon Sep 17 00:00:00 2001 From: "Koine Yuusuke(koinec)" Date: Sun, 20 Oct 2019 22:04:20 +0900 Subject: [PATCH] (LibGoblin) * WorkBackup --- libgoblin/drd64_libgoblin_debug_objinfo.c | 14 +++++++++++++- libgoblin/drd64_libgoblin_dwarf_tag_function.c | 18 +++++------------- libgoblin/drd64_libgoblin_elf_symtab.c | 2 +- libgoblin/drd64_libgoblin_type.h | 2 +- 4 files changed, 20 insertions(+), 16 deletions(-) diff --git a/libgoblin/drd64_libgoblin_debug_objinfo.c b/libgoblin/drd64_libgoblin_debug_objinfo.c index 5d3e8f7..d2f0c3d 100644 --- a/libgoblin/drd64_libgoblin_debug_objinfo.c +++ b/libgoblin/drd64_libgoblin_debug_objinfo.c @@ -199,7 +199,19 @@ void char *pstr_space, Byte b_level ) { - Debug_ObjectInfo_Print_SymbolCommon( p_obj, pstr_space, b_level ); + //Debug_ObjectInfo_Print_SymbolCommon( p_obj, pstr_space, b_level ); + + 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[FUNCTION] ReturnType: Link Addr= %8ph -> ObjID= %d\n", + pstr_space, p_obj->dwarf.pb_dwinfo_type, p_obj->dwarf.i_objid_type ); return; } diff --git a/libgoblin/drd64_libgoblin_dwarf_tag_function.c b/libgoblin/drd64_libgoblin_dwarf_tag_function.c index 636a08c..ddeabc8 100644 --- a/libgoblin/drd64_libgoblin_dwarf_tag_function.c +++ b/libgoblin/drd64_libgoblin_dwarf_tag_function.c @@ -98,22 +98,14 @@ int int i_result; int i_cnt; int i_srcid = NO_SRC; - int i_objid = NO_OBJ; int i_objid_parent = NO_OBJ; - char *pstr_filepath = NULL; - char *pstr_path = NULL; - char *pstr_filename; - char str_filename[DRD64_MAX_PATH+1]; - char str_path[DRD64_MAX_PATH+1]; Byte *pb_link = NULL; DWord dw_srcline = 0; - DWord dw_lineoffset; QWord qw_low_pc; QWord qw_high_pc; - LibGoblin_SrcFile *p_srcfile; - LibGoblin_BinaryFile *p_bfile; LibGoblin_ProgramInfo *p_pginfo; LibGoblin_ObjectInfo *pobj_parent; + LibGoblin_ObjectInfo *pobj_master = NULL; LibGoblin_ObjectInfo *pobj_now; LibGoblin_DWARF_Ranges t_ranges; @@ -260,16 +252,16 @@ int } if( 0 == i_cnt ) { - pobj_parent = pobj_now; - pobj_now->info.function.i_objid_parent = NO_OBJ; + pobj_master = pobj_now; + pobj_now->info.function.i_objid_master = NO_OBJ; } else { - pobj_now->info.function.i_objid_parent = pobj_parent->i_id; + pobj_now->info.function.i_objid_master = pobj_master->i_id; } } goto_DWARF_Tag_Function_subprogram_post: - return i_objid_parent; + return pobj_master->i_id; } diff --git a/libgoblin/drd64_libgoblin_elf_symtab.c b/libgoblin/drd64_libgoblin_elf_symtab.c index fd546bd..76b3293 100644 --- a/libgoblin/drd64_libgoblin_elf_symtab.c +++ b/libgoblin/drd64_libgoblin_elf_symtab.c @@ -123,7 +123,7 @@ LibGoblin_ObjectInfo * { p_obj->dw_status |= OBJINFO_STATUS_DYNAMIC; } if( b_objtype == OBJINFO_TYPE_FUNCTION ) - { p_obj->info.function.i_objid_parent = NO_OBJ; } + { p_obj->info.function.i_objid_master = NO_OBJ; } goto_ELF64_Symtab_RegistSymbol_toObjectInfo_post: return p_obj; diff --git a/libgoblin/drd64_libgoblin_type.h b/libgoblin/drd64_libgoblin_type.h index 32178ba..65b641b 100644 --- a/libgoblin/drd64_libgoblin_type.h +++ b/libgoblin/drd64_libgoblin_type.h @@ -200,7 +200,7 @@ typedef struct { } type; struct { - int i_objid_parent; + int i_objid_master; DWord dw_sz_frame_base; DWord dw_sz_return_addr; -- 2.11.0