From 586eaa8dca9b9ddd55b5eada34f6b0bf419b61ae Mon Sep 17 00:00:00 2001 From: "Koine Yuusuke(koinec)" Date: Sun, 18 Aug 2019 11:15:03 +0900 Subject: [PATCH] (LibGoblin) * WorkBackup --- libgoblin/Makefile | 12 ++++++------ libgoblin/drd64_libgoblin.h | 2 +- libgoblin/drd64_libgoblin_binfo.c | 7 +++++++ libgoblin/drd64_libgoblin_dwarf_abbrev.c | 2 +- libgoblin/drd64_libgoblin_dwarf_info.c | 8 ++++---- ...warf_line.c => drd64_libgoblin_dwarf_oldline.c} | 4 ++-- ...warf_line.h => drd64_libgoblin_dwarf_oldline.h} | 22 +++++++++++----------- libgoblin/drd64_libgoblin_dwarf_tag_dispatch.c | 2 -- libgoblin/drd64_libgoblin_dwarf_tag_dispatch.h | 2 -- libgoblin/drd64_libgoblin_type.h | 5 ++++- 10 files changed, 36 insertions(+), 30 deletions(-) rename libgoblin/{drd64_libgoblin_dwarf_line.c => drd64_libgoblin_dwarf_oldline.c} (99%) rename libgoblin/{drd64_libgoblin_dwarf_line.h => drd64_libgoblin_dwarf_oldline.h} (83%) diff --git a/libgoblin/Makefile b/libgoblin/Makefile index 39476d8..818d432 100644 --- a/libgoblin/Makefile +++ b/libgoblin/Makefile @@ -72,7 +72,7 @@ OBJS = drd64_libgoblin_api.o \ drd64_libgoblin_dwarf_abbrev.o \ drd64_libgoblin_dwarf_attrform.o \ drd64_libgoblin_dwarf_info.o \ - drd64_libgoblin_dwarf_line.o \ + drd64_libgoblin_dwarf_oldline.o \ drd64_libgoblin_dwarf_tag_type.o \ drd64_libgoblin_dwarf_tag_struct.o \ drd64_libgoblin_dwarf_tag_parameter.o \ @@ -115,7 +115,7 @@ HEADER = drd64_libgoblin.h \ drd64_libgoblin_dwarf_abbrev.h \ drd64_libgoblin_dwarf_attrform.h \ drd64_libgoblin_dwarf_info.h \ - drd64_libgoblin_dwarf_line.h \ + drd64_libgoblin_dwarf_oldline.h \ drd64_libgoblin_dwarf_tag_type.h \ drd64_libgoblin_dwarf_tag_struct.h \ drd64_libgoblin_dwarf_tag_parameter.h \ @@ -245,10 +245,10 @@ drd64_libgoblin_dwarf_info.o: \ drd64_libgoblin_dwarf_info.c $(HEADER) $(CC) -c -o drd64_libgoblin_dwarf_info.o $(FLAGS_DEBUG) \ drd64_libgoblin_dwarf_info.c -drd64_libgoblin_dwarf_line.o: \ - drd64_libgoblin_dwarf_line.c $(HEADER) - $(CC) -c -o drd64_libgoblin_dwarf_line.o $(FLAGS_DEBUG) \ - drd64_libgoblin_dwarf_line.c +drd64_libgoblin_dwarf_oldline.o: \ + drd64_libgoblin_dwarf_oldline.c $(HEADER) + $(CC) -c -o drd64_libgoblin_dwarf_oldline.o $(FLAGS_DEBUG) \ + drd64_libgoblin_dwarf_oldline.c drd64_libgoblin_dwarf_tag_type.o: \ drd64_libgoblin_dwarf_tag_type.c $(HEADER) $(CC) -c -o drd64_libgoblin_dwarf_tag_type.o $(FLAGS_DEBUG) \ diff --git a/libgoblin/drd64_libgoblin.h b/libgoblin/drd64_libgoblin.h index 0899323..a7e7ff7 100644 --- a/libgoblin/drd64_libgoblin.h +++ b/libgoblin/drd64_libgoblin.h @@ -96,7 +96,7 @@ Comment: #include"drd64_libgoblin_dwarf_abbrev.h" #include"drd64_libgoblin_dwarf_attrform.h" #include"drd64_libgoblin_dwarf_info.h" -#include"drd64_libgoblin_dwarf_line.h" +#include"drd64_libgoblin_dwarf_oldline.h" #include"drd64_libgoblin_dwarf_tag_type.h" #include"drd64_libgoblin_dwarf_tag_struct.h" #include"drd64_libgoblin_dwarf_tag_parameter.h" diff --git a/libgoblin/drd64_libgoblin_binfo.c b/libgoblin/drd64_libgoblin_binfo.c index dd762af..98a0759 100644 --- a/libgoblin/drd64_libgoblin_binfo.c +++ b/libgoblin/drd64_libgoblin_binfo.c @@ -76,6 +76,11 @@ void p_binfo->dwarf.p_infoval = NULL; } + if( NULL != p_binfo->dwarf.pi_srctbl ) { + free( p_binfo->dwarf.pi_srctbl ); + p_binfo->dwarf.pi_srctbl = NULL; + } + memset( p_binfo, 0x00, sizeof( LibGoblin_BinaryInfo ) ); /* @@ -555,6 +560,7 @@ LibGoblin_BinaryInfo * assert( NULL != p_binfo_now ); p_binfo_now->dwarf.p_infoval = NULL; + p_binfo_now->dwarf.pi_srctbl = NULL; BinaryInfo_ClearBinInfo( p_binfo_now ); p_binfo_now->i_id = i_id_now; @@ -648,6 +654,7 @@ int for( i_cnt = 0; i_cnt < LIBGOBLIN_BINFO_UNITS; i_cnt++ ) { p_binfo = BINFO(i_cnt); p_binfo->dwarf.p_infoval = NULL; + p_binfo->dwarf.pi_srctbl = NULL; BinaryInfo_ClearBinInfo( p_binfo ); } diff --git a/libgoblin/drd64_libgoblin_dwarf_abbrev.c b/libgoblin/drd64_libgoblin_dwarf_abbrev.c index 5eb3503..77e2479 100644 --- a/libgoblin/drd64_libgoblin_dwarf_abbrev.c +++ b/libgoblin/drd64_libgoblin_dwarf_abbrev.c @@ -373,7 +373,7 @@ int p_bfile->dwarf.i_abbrevs_max = 0; p_bfile->dwarf.qw_abbrev_unreadsz = qw_size; - p_bfile->dwarf.i_srcfiles = i_filenums; + p_bfile->dwarf.i_objfiles = i_filenums; // Alloc Abbrev Memory --- p_dievalue = (LibGoblin_DWARF_DIEValue *)malloc( diff --git a/libgoblin/drd64_libgoblin_dwarf_info.c b/libgoblin/drd64_libgoblin_dwarf_info.c index 98a4af1..0b6e7ab 100644 --- a/libgoblin/drd64_libgoblin_dwarf_info.c +++ b/libgoblin/drd64_libgoblin_dwarf_info.c @@ -215,7 +215,7 @@ int { int i_childlv; int i_result; - int i_srcfiles; + int i_objfiles; int i_abbrevs; Byte *pb_info; Byte *pb_custart; @@ -235,7 +235,7 @@ int p_bfile = BinaryFile_GetBinaryFile( p_binfo->i_binfile ); assert( NULL != p_bfile ); - i_srcfiles = p_bfile->dwarf.i_srcfiles; + i_objfiles = p_bfile->dwarf.i_objfiles; // Get section Info --- psec_info = Section_GetSectionInfo( p_binfo, LIBGOBLIN_SECTION_ID_DEBUG_INFO ); @@ -298,7 +298,7 @@ int pb_info, &qw_size_cu, p_arvnow, p_binfo, &t_cuheader ); // Dispatch for generate Rapid-Access Table by DIE-tag - i_result = DWARF_Tag_Dispatch( p_binfo, p_bfile, p_srcfile, p_arvnow ); + i_result = DWARF_Tag_Dispatch( p_binfo, p_arvnow ); Debug_DWARF_PrintDIE( p_binfo, p_abbrev, dw_arvid, i_childlv ); @@ -307,7 +307,7 @@ int }while( 0 != qw_size_cu ); qw_size_info -= t_cuheader.qw_unitsize; - }while((qw_size_info > 0) && (i_srcfiles > 0)); + }while((qw_size_info > 0) && (i_objfiles > 0)); return 0x00; diff --git a/libgoblin/drd64_libgoblin_dwarf_line.c b/libgoblin/drd64_libgoblin_dwarf_oldline.c similarity index 99% rename from libgoblin/drd64_libgoblin_dwarf_line.c rename to libgoblin/drd64_libgoblin_dwarf_oldline.c index 4ea863a..39cca6f 100644 --- a/libgoblin/drd64_libgoblin_dwarf_line.c +++ b/libgoblin/drd64_libgoblin_dwarf_oldline.c @@ -34,7 +34,7 @@ Function: Comment: ----------------------------------------------------------------------*/ -#define DRD64_SRC_LIBGOBLIN_DWARF_ABBREV +#define DRD64_SRC_LIBGOBLIN_DWARF_OLDLINE #include"drd64_libgoblin.h" @@ -631,7 +631,7 @@ Byte * /*---------------------------------------------------------------------- ----------------------------------------------------------------------*/ -LIBGOBLIN_DWARF_LINE_EXTERN +LIBGOBLIN_DWARF_OLDLINE_EXTERN int LibGoblin_DwarfLine_Analyze( LibGoblin_BinaryInfo *p_bin ) diff --git a/libgoblin/drd64_libgoblin_dwarf_line.h b/libgoblin/drd64_libgoblin_dwarf_oldline.h similarity index 83% rename from libgoblin/drd64_libgoblin_dwarf_line.h rename to libgoblin/drd64_libgoblin_dwarf_oldline.h index 26793da..7cb29da 100644 --- a/libgoblin/drd64_libgoblin_dwarf_line.h +++ b/libgoblin/drd64_libgoblin_dwarf_oldline.h @@ -34,19 +34,19 @@ Function: Header Comment: ----------------------------------------------------------------------*/ -#ifndef DRD64_HEADER_LIBGOBLIN_DWARF_LINE -#define DRD64_HEADER_LIBGOBLIN_DWARF_LINE +#ifndef DRD64_HEADER_LIBGOBLIN_DWARF_OLDLINE +#define DRD64_HEADER_LIBGOBLIN_DWARF_OLDLINE #include"drd64_libgoblin.h" -#ifdef DRD64_SRC_LIBGOBLIN_DWARF_LINE - #define LIBGOBLIN_DWARF_LINE_EXTERN +#ifdef DRD64_SRC_LIBGOBLIN_DWARF_OLDLINE + #define LIBGOBLIN_DWARF_OLDLINE_EXTERN #else - #define LIBGOBLIN_DWARF_LINE_EXTERN extern + #define LIBGOBLIN_DWARF_OLDLINE_EXTERN extern #endif -#define LIBGOBLIN_DWARF_LINE_MAX_STDOPERANDS 16 -#define LIBGOBLIN_DWARF_LINE_MAX_SRCFILES 512 +#define LIBGOBLIN_DWARF_OLDLINE_MAX_STDOPERANDS 16 +#define LIBGOBLIN_DWARF_OLDLINE_MAX_SRCFILES 512 typedef struct { @@ -83,22 +83,22 @@ typedef struct { INT i_line_base; INT i_line_range; Byte b_opcode_base; - DWord dw_stdoperand_length[LIBGOBLIN_DWARF_LINE_MAX_STDOPERANDS]; + DWord dw_stdoperand_length[LIBGOBLIN_DWARF_OLDLINE_MAX_STDOPERANDS]; int i_num_includepath; char *pstr_includepath; int i_num_filename; LibGoblin_Dwarf_Line_FileNames - t_filename[LIBGOBLIN_DWARF_LINE_MAX_SRCFILES]; + t_filename[LIBGOBLIN_DWARF_OLDLINE_MAX_SRCFILES]; } LibGoblin_Dwarf_LineSection; -LIBGOBLIN_DWARF_LINE_EXTERN +LIBGOBLIN_DWARF_OLDLINE_EXTERN int LibGoblin_DwarfLine_Analyze( LibGoblin_BinaryInfo *p_bin ); -#endif /* DRD64_HEADER_LIBGOBLIN_DWARF_LINE */ +#endif /* DRD64_HEADER_LIBGOBLIN_DWARF_OLDLINE */ /* EOF of drd64_.h ----------------------------------- */ diff --git a/libgoblin/drd64_libgoblin_dwarf_tag_dispatch.c b/libgoblin/drd64_libgoblin_dwarf_tag_dispatch.c index 5f982c4..b8ae48b 100644 --- a/libgoblin/drd64_libgoblin_dwarf_tag_dispatch.c +++ b/libgoblin/drd64_libgoblin_dwarf_tag_dispatch.c @@ -56,8 +56,6 @@ LIBGOBLIN_DWARF_TAG_DISPATCH_EXTERN int DWARF_Tag_Dispatch( LibGoblin_BinaryInfo *p_binfo, - LibGoblin_BinaryFile *p_bfile, - LibGoblin_SrcFile *p_srcfile, DWARF_AbbrevEntry *p_abbrev ) { int i_result; diff --git a/libgoblin/drd64_libgoblin_dwarf_tag_dispatch.h b/libgoblin/drd64_libgoblin_dwarf_tag_dispatch.h index 050b1c8..fba0c7e 100644 --- a/libgoblin/drd64_libgoblin_dwarf_tag_dispatch.h +++ b/libgoblin/drd64_libgoblin_dwarf_tag_dispatch.h @@ -57,8 +57,6 @@ typedef struct { LIBGOBLIN_DWARF_TAG_DISPATCH_EXTERN int DWARF_Tag_Dispatch( LibGoblin_BinaryInfo *p_binfo, - LibGoblin_BinaryFile *p_bfile, - LibGoblin_SrcFile *p_srcfile, DWARF_AbbrevEntry *p_abbrev ); diff --git a/libgoblin/drd64_libgoblin_type.h b/libgoblin/drd64_libgoblin_type.h index e56a247..c2bd234 100644 --- a/libgoblin/drd64_libgoblin_type.h +++ b/libgoblin/drd64_libgoblin_type.h @@ -355,7 +355,7 @@ typedef struct { DWARF_AbbrevEntry *p_abbrev; QWord qw_abbrev_unreadsz; - int i_srcfiles; + int i_objfiles; int i_maxvals; } dwarf; @@ -455,6 +455,9 @@ typedef struct { int i_extattrs; LibGoblin_DWARF_Attribute t_attr[LIBGOBLIN_DWARF_ATTR_MAX+1]; + + int i_max_srcfiles; + int *pi_srctbl; } dwarf; -- 2.11.0