LibGoblin_DWARF_DIEValue *p_val,
Byte *pb_info,
QWord *pqw_remains,
- //DWARF_AbbrevEntry *p_abbrev,
DWord dw_format,
LibGoblin_BinaryInfo *p_binfo,
LibGoblin_DWARF_Info_CUHeader *p_cuheader )
{
-/*
- LibGoblin_DWARF_DIEValue *p_val,
-
- // Read Debug Information Entry (DIE) ---
- memset( p_infoval, 0x00, sizeof( LibGoblin_DWARF_DIEValue ) * p_abbrev->i_items );
- p_val = p_infoval;
- memset( p_binfo->dwarf.t_attr, 0x00, sizeof( p_binfo->dwarf.t_attr) );
- for( i_cnt = 0; i_cnt < p_abbrev->i_items; i_cnt++, p_val++ ) {
- dw_attribute = p_abbrev->dw_attribute[ i_cnt ];
- dw_format = p_abbrev->dw_format[ i_cnt ];
-*/
switch( dw_format ) {
case DW_FORM_addr: // 0x01: address
pb_info = DWARF_AttrForm_ReadFormat_Address(
default:
break;
}
-// }
+
+ return pb_info;
+}
+
+
+/*----------------------------------------------------------------------
+----------------------------------------------------------------------*/
+LIBGOBLIN_DWARF_ATTRFORM_EXTERN
+Byte *
+ DWARF_AttrForm_ReadDIEValue(
+ Byte *pb_info,
+ QWord *pqw_remains,
+ DWARF_AbbrevEntry *p_abbrev,
+ LibGoblin_BinaryInfo *p_binfo,
+ LibGoblin_DWARF_Info_CUHeader *p_cuheader )
+{
+ int i_cnt;
+ DWord dw_attribute;
+ DWord dw_format;
+ LibGoblin_DWARF_DIEValue *p_val;
+
+ // Read Debug Information Entry (DIE) ---
+ memset( p_binfo->dwarf.p_infoval, 0x00, sizeof( LibGoblin_DWARF_DIEValue ) * p_abbrev->i_items );
+ p_val = p_binfo->dwarf.p_infoval;
+
+ memset( p_binfo->dwarf.t_attr, 0x00, sizeof( p_binfo->dwarf.t_attr) );
+
+ for( i_cnt = 0; i_cnt < p_abbrev->i_items; i_cnt++, p_val++ ) {
+ dw_attribute = p_abbrev->dw_attribute[ i_cnt ];
+ dw_format = p_abbrev->dw_format[ i_cnt ];
+
+ pb_info = DWARF_AttrForm_ReadFormat_Data(
+ p_val, pb_info, pqw_remains, dw_format, p_binfo, p_cuheader );
+ }
return pb_info;
}
LibGoblin_DWARF_DIEValue *p_val, Byte *pb_info, QWord *pqw_remains,
DWord dw_format, LibGoblin_BinaryInfo *p_binfo, LibGoblin_DWARF_Info_CUHeader *p_cuheader );
+LIBGOBLIN_DWARF_ATTRFORM_EXTERN
+ Byte *DWARF_AttrForm_ReadDIEValue(
+ Byte *pb_info, QWord *pqw_remains,
+ DWARF_AbbrevEntry *p_abbrev,
+ LibGoblin_BinaryInfo *p_binfo,
+ LibGoblin_DWARF_Info_CUHeader *p_cuheader );
#ifdef DRD64_SRC_LIBGOBLIN_DWARF_ATTRFORM
char *pstr_srcpath = NULL;
char str_temp[DRD64_MAX_PATH+1];
DWord dw_arvid;
- DWord dw_attribute;
- DWord dw_format;
+ //DWord dw_attribute;
+ //DWord dw_format;
QWord qw_temp;
DWARF_AbbrevEntry *p_arvnow;
- LibGoblin_DWARF_DIEValue *p_infoval;
+ //LibGoblin_DWARF_DIEValue *p_infoval;
LibGoblin_DWARF_DIEValue *p_val;
LibGoblin_SrcFile *p_srcfile;
assert( NULL != p_binfo );
assert( NULL != p_bfile );
- p_infoval = p_binfo->dwarf.p_infoval;
+ //p_infoval = p_binfo->dwarf.p_infoval;
i_childlv = 0;
do {
// Read Reference Abbrev-ID ---
p_arvnow = p_abbrev + (dw_arvid - 1);
// Read Debug Information Entry (DIE) ---
+/*
memset( p_infoval, 0x00, sizeof( LibGoblin_DWARF_DIEValue ) * p_arvnow->i_items );
p_val = p_infoval;
pb_info = DWARF_AttrForm_ReadFormat_Data(
p_val, pb_info, &qw_size_cu, dw_format, p_binfo, pt_cuheader );
}
+*/
+ pb_info = DWARF_AttrForm_ReadDIEValue(
+ pb_info, &qw_size_cu, p_arvnow, p_binfo, pt_cuheader );
if( 0x00 != p_arvnow->b_children ) { i_childlv++; }
int i_result;
int i_srcfiles;
int i_abbrevs;
- int i_cnt;
+ //int i_cnt;
Byte *pb_info;
Byte *pb_custart;
DWord dw_arvid;
- DWord dw_attribute;
- DWord dw_format;
+ //DWord dw_attribute;
+ //DWord dw_format;
QWord qw_temp;
QWord qw_size_cu;
QWord qw_size_info;
LibGoblin_BinaryFile *p_bfile;
DWARF_AbbrevEntry *p_abbrev;
DWARF_AbbrevEntry *p_arvnow;
- LibGoblin_DWARF_DIEValue *p_infoval;
- LibGoblin_DWARF_DIEValue *p_val;
+ //LibGoblin_DWARF_DIEValue *p_infoval;
+ //LibGoblin_DWARF_DIEValue *p_val;
LibGoblin_DWARF_Info_CUHeader t_cuheader;
LibGoblin_SrcFile *p_srcfile;
i_srcfiles = p_bfile->dwarf.i_srcfiles;
- p_infoval = p_binfo->dwarf.p_infoval;
+ //p_infoval = p_binfo->dwarf.p_infoval;
// Get section Info ---
psec_info = Section_GetSectionInfo( p_binfo, LIBGOBLIN_SECTION_ID_DEBUG_INFO );
p_arvnow = p_abbrev + (dw_arvid - 1);
// Read Debug Information Entry (DIE) ---
+/*
memset( p_infoval, 0x00, sizeof( LibGoblin_DWARF_DIEValue ) * p_arvnow->i_items );
p_val = p_infoval;
}
+*/
+ pb_info = DWARF_AttrForm_ReadDIEValue(
+ pb_info, &qw_size_cu, p_arvnow, p_binfo, &t_cuheader );
if( 0x00 != p_arvnow->b_children ) { i_childlv++; }