From c01f08549f0f894e38a02da67bf081f632e2d9a9 Mon Sep 17 00:00:00 2001 From: "Koine Yuusuke(koinec)" Date: Wed, 26 Jun 2019 05:55:24 +0900 Subject: [PATCH] (LibGoblin) * WorkBackup --- libgoblin/drd64_libgoblin_dwarf_attrform.c | 34 ++++++++++++++++++++++++++++++ libgoblin/drd64_libgoblin_dwarf_attrform.h | 4 +++- 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/libgoblin/drd64_libgoblin_dwarf_attrform.c b/libgoblin/drd64_libgoblin_dwarf_attrform.c index f1033fc..ea5ec7f 100644 --- a/libgoblin/drd64_libgoblin_dwarf_attrform.c +++ b/libgoblin/drd64_libgoblin_dwarf_attrform.c @@ -479,4 +479,38 @@ Byte * } +/*---------------------------------------------------------------------- +----------------------------------------------------------------------*/ +LIBGOBLIN_DWARF_ATTRFORM_EXTERN +LibGoblin_DWARF_DIEValue * + DWARF_AttrForm_GetDIEValue( + LibGoblin_BinaryInfo *p_binfo, + DWord dw_attribute ) +{ + int i_cnt; + LibGoblin_DWARF_DIEValue *p_retval = NULL; + + assert( NULL != p_binfo ); + + if( LIBGOBLIN_DWARF_ATTR_MAX < dw_attribute ) { + goto goto_DWARF_AttrForm_GetDIEValue_post; + } + + if( LIBGOBLIN_DWARF_ATTR_DEF_MAX >= dw_attribute ) { + p_retval = p_binfo->dwarf.t_attr[dw_attribute].p_val; + goto goto_DWARF_AttrForm_GetDIEValue_post; + } + + for( i_cnt = (LIBGOBLIN_DWARF_ATTR_DEF_MAX + 1); i_cnt <= LIBGOBLIN_DWARF_ATTR_MAX; i_cnt++ ) { + if( p_binfo->dwarf.t_attr[i_cnt].dw_attribute == dw_attribute ) { + p_retval = p_binfo->dwarf.t_attr[dw_attribute].p_val; + break; + } + } + +goto_DWARF_AttrForm_GetDIEValue_post: + return p_retval; +} + + /* EOF of drd64_.c ----------------------------------- */ diff --git a/libgoblin/drd64_libgoblin_dwarf_attrform.h b/libgoblin/drd64_libgoblin_dwarf_attrform.h index 1ef9c89..0aeb657 100644 --- a/libgoblin/drd64_libgoblin_dwarf_attrform.h +++ b/libgoblin/drd64_libgoblin_dwarf_attrform.h @@ -54,7 +54,9 @@ LIBGOBLIN_DWARF_ATTRFORM_EXTERN DWARF_AbbrevEntry *p_abbrev, LibGoblin_BinaryInfo *p_binfo, LibGoblin_DWARF_Info_CUHeader *p_cuheader ); - +LIBGOBLIN_DWARF_ATTRFORM_EXTERN + LibGoblin_DWARF_DIEValue *DWARF_AttrForm_GetDIEValue( + LibGoblin_BinaryInfo *p_binfo, DWord dw_attribute ); #ifdef DRD64_SRC_LIBGOBLIN_DWARF_ATTRFORM Byte *DWARF_AttrForm_ReadFormat_Data( -- 2.11.0