/*----------------------------------------------------------------------
----------------------------------------------------------------------*/
-/*
-LibGoblin_SrcFile *
- DWARF_Info_RegistSrcFile_fromTagCompileUnit(
- LibGoblin_BinaryInfo *p_binfo,
- LibGoblin_BinaryFile *p_bfile,
- Byte *pb_info,
- DWARF_AbbrevEntry *p_abbrev,
- QWord qw_size_cu,
- LibGoblin_DWARF_Info_CUHeader *pt_cuheader )
-{
- int i_childlv;
- char *pstr_srcpath = NULL;
- char str_temp[DRD64_MAX_PATH+1];
- DWord dw_arvid;
- QWord qw_temp;
- DWARF_AbbrevEntry *p_arvnow;
- LibGoblin_DWARF_DIEValue *p_val;
- LibGoblin_SrcFile *p_srcfile;
-
- assert( NULL != p_binfo );
- assert( NULL != p_bfile );
-
- i_childlv = 0;
- do {
- // Read Reference Abbrev-ID ---
- pb_info = DWARF_Common_DecodeULEB128( &qw_temp, pb_info, &qw_size_cu );
- dw_arvid = (DWord)qw_temp;
-
- if( 0 == dw_arvid ) {
- i_childlv--;
- continue;
- }
-
- p_arvnow = p_abbrev + (dw_arvid - 1);
-
- // Read Debug Information Entry (DIE) ---
- pb_info = DWARF_AttrForm_ReadDIEValue(
- pb_info, &qw_size_cu, p_arvnow, p_binfo, pt_cuheader );
-
- if( 0x00 != p_arvnow->b_children ) { i_childlv++; }
-
- // Check compile unit tag ---
- if( DW_TAG_compile_unit == p_arvnow->dw_tag ) { break; }
-
- }while( 0 != qw_size_cu );
-
- if( DW_TAG_compile_unit != p_arvnow->dw_tag ) {
- return NULL;
- }
-
- p_val = DWARF_AttrForm_GetDIEValue( p_binfo, DW_AT_name );
- if( NULL != p_val ) { pstr_srcpath = p_val->value.pstr_value; }
- if( NULL == pstr_srcpath ) {
- return NULL;
- }
-
- strncpy( str_temp, pstr_srcpath, DRD64_MAX_PATH );
- p_srcfile = SrcFile_DispenseSrcFile( p_bfile, basename( str_temp ) );
- if( NULL == p_srcfile ) {
- return NULL;
- }
-
- strncpy( p_srcfile->str_srcpath, dirname( str_temp ), DRD64_MAX_PATH );
-
- return p_srcfile;
-}
-*/
-
-
-/*----------------------------------------------------------------------
-----------------------------------------------------------------------*/
LIBGOBLIN_DWARF_INFO_EXTERN
int
DWARF_Info_Read(
DWARF_AbbrevEntry *p_arvnow;
LibGoblin_DWARF_Info_CUHeader t_cuheader;
LibGoblin_DWARF_Info_Ancestry t_ancestry[DWARF_ANCESTRY_MAX];
- //LibGoblin_SrcFile *p_srcfile;
assert( NULL != p_binfo );
&p_abbrev, &i_abbrevs,
p_binfo, p_bfile, t_cuheader.qw_abbrev_offset );
- // Read DW_TAG_compile_unit & Regist SrcFile struct. ---
-/*
- p_srcfile = DWARF_Info_RegistSrcFile_fromTagCompileUnit(
- p_binfo, p_bfile, pb_info, p_abbrev, qw_size_cu, &t_cuheader );
- if( NULL != p_srcfile ) {
- p_srcfile->dwarf.i_abbrevs = i_abbrevs;
- p_srcfile->dwarf.p_abbrev = p_abbrev;
-
- //printf( "\n SrcFile: %s, Orig.Path: %s\n",
- // p_srcfile->str_filename, p_srcfile->str_srcpath );
- }
-*/
- //printf( " size: %ld, ver:%d, abbrev off.:%ld, addr.size: %d\n",
- // t_cuheader.qw_unitsize, t_cuheader.w_version,
- // t_cuheader.qw_abbrev_offset, t_cuheader.b_pointersize);
-
// Read & Process DWARF info TAG ---
i_childlv = 0;
t_ancestry[0].pb_dwinfo = NULL;
p_obj->info.objfile.i_abbrevs = i_abbrevs;
p_obj->info.objfile.p_abbrev = p_abbrev;
+ memcpy( &(p_obj->info.objfile.t_cuheader), &t_cuheader,
+ sizeof( LibGoblin_DWARF_Info_CUHeader ) );
}
t_ancestry[i_childlv].pb_dwinfo = pb_now;