OSDN Git Service

(LibGoblin)
authorKoine Yuusuke(koinec) <koinec@users.osdn.me>
Tue, 25 Jun 2019 20:55:24 +0000 (05:55 +0900)
committerKoine Yuusuke(koinec) <koinec@users.osdn.me>
Tue, 25 Jun 2019 20:55:24 +0000 (05:55 +0900)
  * WorkBackup

libgoblin/drd64_libgoblin_dwarf_attrform.c
libgoblin/drd64_libgoblin_dwarf_attrform.h

index f1033fc..ea5ec7f 100644 (file)
@@ -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 ----------------------------------- */
index 1ef9c89..0aeb657 100644 (file)
@@ -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(