OSDN Git Service

Squashed commit of the following:
authorKoine Yuusuke(koinec) <koinec@users.osdn.me>
Tue, 3 Nov 2015 08:37:52 +0000 (17:37 +0900)
committerKoine Yuusuke(koinec) <koinec@users.osdn.me>
Tue, 3 Nov 2015 08:37:52 +0000 (17:37 +0900)
commit 8bbf2f21d68e3b265f9f785ca79ccca08cfbda5b
Author: Koine Yuusuke(koinec) <koinec@users.osdn.me>
Date:   Tue Nov 3 17:35:22 2015 +0900

    * Add LibGoblin_BinaryFile struct for LibGoblin_BinaryInfo. (with surround correcttion)

16 files changed:
libgoblin/drd64_libgoblin_analyze.c
libgoblin/drd64_libgoblin_analyze.h
libgoblin/drd64_libgoblin_binfo.c
libgoblin/drd64_libgoblin_checkbin.c
libgoblin/drd64_libgoblin_dwarf.c
libgoblin/drd64_libgoblin_dwarf_abbrev.c
libgoblin/drd64_libgoblin_dwarf_info.c
libgoblin/drd64_libgoblin_dwarf_line.c
libgoblin/drd64_libgoblin_elf.c
libgoblin/drd64_libgoblin_elf.h
libgoblin/drd64_libgoblin_elf64.c
libgoblin/drd64_libgoblin_elf64.h
libgoblin/drd64_libgoblin_readbin.c
libgoblin/drd64_libgoblin_readbin.h
libgoblin/drd64_libgoblin_type.h
libgoblin/test_libgoblin_readbin.c

index 3b61e37..45ab1e7 100644 (file)
@@ -44,22 +44,23 @@ Comment:
 LIBGOBLIN_ANALYZE_EXTERN
 int
        LibGoblin_AnalyzeBinary(
-               LibGoblin_BinaryInfo    *p_bin )
+               LibGoblin_BinaryInfo    *p_binfo,
+               int             i_analyzefid )
 {
        int             i_result;
-       int             i_bintype;
+       LibGoblin_BinaryFile    *p_bfile;
 
-       /* Check Binary Format */
-       i_bintype       = LibGoblin_CheckBinary( p_bin );
+       assert( NULL != p_binfo );
 
-       if( LIBGOBLIN_BINFO_TYPE_ELF == i_bintype )     {
-               /* Analyze ELF-Binary Format */
-               i_result = LibGoblin_AnalyzeElf( p_bin );
-               /* Analyze DWARF-Debug Format */
-       }       else {
+       p_bfile = &(p_binfo->t_binfile[ i_analyzefid ]);
        
+       /* XXX: check binaryfile is ELF file */
+       if( 0x00 == (DRD64_LIBFILETYPE_SUB_ELF & p_bfile->dw_flag) )    {
+               return 0x01;
        }
-       
+
+       /* Analyze ELF & Debug-Info. ---*/
+       i_result = LibGoblin_AnalyzeElf( p_binfo, i_analyzefid );
 
        return i_result;
 }
index 9519032..76e758a 100644 (file)
@@ -46,9 +46,8 @@ Comment:
 #endif
 
 LIBGOBLIN_ANALYZE_EXTERN
-int
-       LibGoblin_AnalyzeBinary(
-               LibGoblin_BinaryInfo    *p_bin );
+       int LibGoblin_AnalyzeBinary(
+                       LibGoblin_BinaryInfo *p_bin, int i_analyzefid );
 
 
 
index 6afe5e5..103c543 100644 (file)
@@ -58,12 +58,16 @@ void
        LibGoblin_BinInfo_ClearBinInfo(
                        LibGoblin_BinaryInfo    *p_binfo )
 {
+       int             i_cnt;
+       
        assert( NULL != p_binfo );
 
        memset( p_binfo, 0x00, sizeof( LibGoblin_BinaryInfo ) );
 
        p_binfo->i_id   = -0x01;
-       p_binfo->i_fd   = -0x01;
+       for( i_cnt = 0; i_cnt < LIBGOBLIN_BINFO_MAXFILES; i_cnt++ )     {
+               p_binfo->t_binfile[i_cnt].i_fd  = -0x01;
+       }
 
        return;
 }
@@ -160,12 +164,15 @@ int
                LibGoblin_BinaryInfo *p_binfo )
 {
        int             i_binfoid;      
+       int             i_cnt;
 
        if( NULL == p_binfo )   { return 0x01; }
 
-       if( NULL != p_binfo->p_format )         {
-               free( p_binfo->p_format );
-               p_binfo->p_format       = NULL;
+       for( i_cnt = 0; i_cnt < LIBGOBLIN_BINFO_MAXFILES; i_cnt++ )     {
+               if( NULL == p_binfo->t_binfile[i_cnt].p_elf )   {
+                       free( p_binfo->t_binfile[i_cnt].p_elf );
+                       p_binfo->t_binfile[i_cnt].p_elf = NULL;
+               }
        }
 
        i_binfoid       = p_binfo->i_id;
index bbeca58..48c871c 100644 (file)
@@ -43,25 +43,8 @@ int
        LibGoblin_CheckBinary(
                LibGoblin_BinaryInfo    *p_bin )
 {
-       int                     i_result;
-       Byte            *p_data;
 
-       assert( NULL != p_bin );
-
-       p_data  = p_bin->pb_binary;
-       assert( NULL != p_data );
-       
-       /* Judge Elf-Header? */
-       if( 0x00 != LibGoblin_IsElf( p_data ) ) {
-               p_bin->b_type   = LIBGOBLIN_BINFO_TYPE_ELF;
-               i_result                = LIBGOBLIN_BINFO_TYPE_ELF;
-       }
-       else {
-               p_bin->b_type   = LIBGOBLIN_BINFO_TYPE_NONE;
-               i_result                = LIBGOBLIN_BINFO_TYPE_NONE;
-       }
-
-       return i_result;
+       return 0x00;
 }
 
 
index be1ab38..457be1a 100644 (file)
@@ -51,7 +51,7 @@ int
 
        /* Get .debug_abbrev section Info */
        pb_data_abbrev  = LibGoblin_Elf_GetSection(
-                                               &qw_size_abbrev, p_bin,
+                                               &qw_size_abbrev, p_bin, 0,
                                                LIBGOBLIN_ELF_SEC_ID_DEBUG_ABBREV );
        if( NULL == pb_data_abbrev )    { return 0x00; }
 
index 19a222c..4f164ff 100644 (file)
@@ -137,7 +137,7 @@ int
 
        /* Get .debug_abbrev section Info */
        pb_data = LibGoblin_Elf_GetSection(
-                                       &qw_size_abbrev, p_bin,
+                                       &qw_size_abbrev, p_bin, 0,
                                        LIBGOBLIN_ELF_SEC_ID_DEBUG_ABBREV );
        if( NULL == pb_data )   { return 0x01; }
 
@@ -222,7 +222,7 @@ int
 
        /* Get .debug_abbrev section Info */
        pb_data = LibGoblin_Elf_GetSection(
-                                       &qw_size_abbrev, p_bin,
+                                       &qw_size_abbrev, p_bin, 0,
                                        LIBGOBLIN_ELF_SEC_ID_DEBUG_ABBREV );
        if( NULL == pb_data )   { return 0x01; }
 
index 80ef76a..adca944 100644 (file)
@@ -493,7 +493,7 @@ int
 
        /* Get .debug_abbrev section Info */
        pb_data = LibGoblin_Elf_GetSection(
-                                       &qw_size_info, p_bin,
+                                       &qw_size_info, p_bin, 0,
                                        LIBGOBLIN_ELF_SEC_ID_DEBUG_INFO );
        if( NULL == pb_data )   { return 0x01; }
 
index e9b1647..041180e 100644 (file)
@@ -654,7 +654,7 @@ int
 
        /* Get .debug_abbrev section Info */
        pb_data = LibGoblin_Elf_GetSection(
-                                       &qw_size, p_bin,
+                                       &qw_size, p_bin, 0,
                                        LIBGOBLIN_ELF_SEC_ID_DEBUG_LINE );
        if( NULL == pb_data )   { return 0x01; }
 
index 9b435ee..114d844 100644 (file)
@@ -66,32 +66,38 @@ LIBGOBLIN_ELF_EXTERN
 Byte *
        LibGoblin_Elf_GetSection(
                QWord   *qw_secsize,
-               LibGoblin_BinaryInfo    *p_bin,
+               LibGoblin_BinaryInfo    *p_binfo,
+               int             i_analyzefid,
                Byte    b_secid )
 {
        Byte                                    *pb_data;
+       Byte                                    *pb_binary;
        LibGoblin_Format_Elf64  *p_elf64;
        LibGoblin_Format_Elf32  *p_elf32;
        Elf64_Shdr                              *p_elfshr64;
        Elf32_Shdr                              *p_elfshr32;
+       LibGoblin_BinaryFile    *p_bfile;
 
-       assert( NULL != p_bin );
+       assert( NULL != p_binfo );
+       p_bfile = &(p_binfo->t_binfile[ i_analyzefid ]);
+       pb_binary       = p_bfile->pb_binary;
 
        pb_data         = NULL;
        *qw_secsize     = 0;
 
+
        if( LIBGOBLIN_ELF_SEC_ID_DEFAULT_MAX <= b_secid )       { return NULL; }
 
-       if( IsBinfoType_Elf64(p_bin) )  {
-               p_elf64         = (LibGoblin_Format_Elf64 *)p_bin->p_format;
+       if( IsBinfoType_Elf64(p_binfo) )        {
+               p_elf64         = (LibGoblin_Format_Elf64 *)p_binfo->p_format;
                p_elfshr64      = p_elf64->p_section[b_secid];
-               pb_data         = (Byte *)(p_bin->pb_binary + p_elfshr64->sh_offset);
+               pb_data         = (Byte *)(pb_binary + p_elfshr64->sh_offset);
                *qw_secsize     = (QWord)p_elfshr64->sh_size;
        }
-       else if( IsBinfoType_Elf32(p_bin) ) {
-               p_elf32         = (LibGoblin_Format_Elf32 *)p_bin->p_format;
+       else if( IsBinfoType_Elf32(p_binfo) ) {
+               p_elf32         = (LibGoblin_Format_Elf32 *)p_binfo->p_format;
                p_elfshr32      = p_elf32->p_section[b_secid];
-               pb_data         = (Byte *)(p_bin->pb_binary + p_elfshr32->sh_offset);
+               pb_data         = (Byte *)(pb_binary + p_elfshr32->sh_offset);
                *qw_secsize     = (QWord)p_elfshr32->sh_size;
        }
 
@@ -104,50 +110,52 @@ Byte *
 LIBGOBLIN_ELF_EXTERN
 int
        LibGoblin_AnalyzeElf(
-               LibGoblin_BinaryInfo    *p_bin )
+               LibGoblin_BinaryInfo    *p_binfo,
+               int             i_analyzefid )
 {
-       //int           i_err;
        Byte    *pb_data;
+       LibGoblin_BinaryFile    *p_bfile;
 
-       assert( NULL != p_bin );
-       pb_data = p_bin->pb_binary;
+       assert( NULL != p_binfo );
+       p_bfile = &(p_binfo->t_binfile[ i_analyzefid ]);
+       pb_data = p_bfile->pb_binary;
        assert( NULL != pb_data );
 
        /* Analyze ELF Ident Header from Bits ---*/
        if( ELFCLASS64 == *(pb_data + EI_CLASS) )
-               { p_bin->b_type = LIBGOBLIN_BINFO_TYPE_ELF64; }
+               { p_binfo->b_type       = LIBGOBLIN_BINFO_TYPE_ELF64; }
        else if( ELFCLASS32 == *(pb_data + EI_CLASS) )
-               { p_bin->b_type = LIBGOBLIN_BINFO_TYPE_ELF32; }
+               { p_binfo->b_type       = LIBGOBLIN_BINFO_TYPE_ELF32; }
        
        /* Analyze ELF Ident Header from Endian ---*/
        if( ELFDATA2LSB == *(pb_data + EI_DATA) )
-               { p_bin->b_endian       = LIBGOBLIN_BINFO_ENDIAN_LITTLE; }
+               { p_binfo->b_endian     = LIBGOBLIN_BINFO_ENDIAN_LITTLE; }
        else if( ELFDATA2MSB == *(pb_data + EI_DATA) )
-               { p_bin->b_endian       = LIBGOBLIN_BINFO_ENDIAN_BIG; }
+               { p_binfo->b_endian     = LIBGOBLIN_BINFO_ENDIAN_BIG; }
 
 
        /* Alloc BinaryInfo Format Struct Area from bits ---*/
-       if( LIBGOBLIN_BINFO_TYPE_ELF64 == p_bin->b_type )               {
-               p_bin->p_format = LibGoblin_Elf64_AllocFormat();
+       if( LIBGOBLIN_BINFO_TYPE_ELF64 == p_binfo->b_type )             {
+               p_binfo->p_format       = LibGoblin_Elf64_AllocFormat();
        }
-       else if( LIBGOBLIN_BINFO_TYPE_ELF32 == p_bin->b_type )  {
-               p_bin->p_format = LibGoblin_Elf32_AllocFormat();
+       else if( LIBGOBLIN_BINFO_TYPE_ELF32 == p_binfo->b_type )        {
+               p_binfo->p_format       = LibGoblin_Elf32_AllocFormat();
        }
-       if( NULL == p_bin->p_format )   {
+       if( NULL == p_binfo->p_format ) {
                return 0x01;
        } 
        
        /* Analyze ELF Header */
-       if( LIBGOBLIN_BINFO_TYPE_ELF64 == p_bin->b_type )               {
-               LibGoblin_Elf64_Analyze( p_bin );
+       if( LIBGOBLIN_BINFO_TYPE_ELF64 == p_binfo->b_type )             {
+               LibGoblin_Elf64_Analyze( p_binfo, i_analyzefid );
        }
-       else if( LIBGOBLIN_BINFO_TYPE_ELF32 == p_bin->b_type )  {
+       else if( LIBGOBLIN_BINFO_TYPE_ELF32 == p_binfo->b_type )        {
        }
 
 
        /* Analyze Dwarf-Debug Info. */
-       if( 0x00 != LibGoblin_IsDwarf( p_bin ) )        {
-               LibGoblin_AnalyzeDwarf( p_bin );
+       if( 0x00 != LibGoblin_IsDwarf( p_binfo ) )      {
+               LibGoblin_AnalyzeDwarf( p_binfo );
        }
        
 
index f864875..757a104 100644 (file)
@@ -166,16 +166,13 @@ Comment:
 
 
 LIBGOBLIN_ELF_EXTERN
-       int
-               LibGoblin_IsElf(
-                       Byte    *p_data );
-
+       int LibGoblin_IsElf( Byte *p_data );
+LIBGOBLIN_ELF_EXTERN
+       Byte *LibGoblin_Elf_GetSection(
+                       QWord *qw_secsize, LibGoblin_BinaryInfo *p_bin, int i_analyzefid, Byte b_secid );
 LIBGOBLIN_ELF_EXTERN
-       Byte *
-               LibGoblin_Elf_GetSection(
-                       QWord                                   *qw_secsize,
-                       LibGoblin_BinaryInfo    *p_bin,
-                       Byte                                    b_secid );
+       int LibGoblin_AnalyzeElf(
+                       LibGoblin_BinaryInfo *p_binfo, int i_analyzefid );
 
 
 #endif /* DRD64_HEADER_LIBGOBLIN_BINFO */
index ef64868..c0eb41f 100644 (file)
@@ -121,20 +121,20 @@ int
 LIBGOBLIN_ELF64_EXTERN
 int
        LibGoblin_Elf64_Analyze(
-               LibGoblin_BinaryInfo    *p_bin )
+               LibGoblin_BinaryInfo    *p_binfo,
+               int                                             i_analyzefid )
 {
        //int           i_err;
        Byte    *pb_data;
        LibGoblin_Format_Elf64  *p_elf;
-       //Elf64_Ehdr    *p_elfhdr;
 
-       assert( NULL != p_bin );
+       assert( NULL != p_binfo );
 
-       assert( NULL != p_bin->pb_binary );
-       pb_data = p_bin->pb_binary;
+       pb_data = p_binfo->t_binfile[i_analyzefid].pb_binary;
+       assert( NULL != pb_data );
 
-       assert( NULL != p_bin->p_format );
-       p_elf   = (LibGoblin_Format_Elf64 *)p_bin->p_format;
+       assert( NULL != p_binfo->p_format );
+       p_elf   = (LibGoblin_Format_Elf64 *)p_binfo->p_format;
 
        /* Set ELF64 Header */
        p_elf->p_elfhdr = (Elf64_Ehdr *)pb_data;
@@ -142,12 +142,12 @@ int
        /* Read & Analyze Section Header */
        LibGoblin_Elf64_SetSectionHeader( p_elf, pb_data );
        
-       test( p_bin );
+       //test( p_binfo );
 
        return 0x00;
 }
 
-
+/*
 int test( LibGoblin_BinaryInfo  *p_bin )
 {
 
@@ -191,6 +191,7 @@ int test( LibGoblin_BinaryInfo  *p_bin )
        
        return 0x00;
 }
+*/
 
 
 /* EOF of drd64_.c ----------------------------------- */
index c15929f..15508ec 100644 (file)
@@ -58,14 +58,9 @@ typedef struct       {
 
 
 LIBGOBLIN_ELF64_EXTERN
-void *
-       LibGoblin_Elf64_AllocFormat(
-               void );
-
+       void *LibGoblin_Elf64_AllocFormat( void );
 LIBGOBLIN_ELF64_EXTERN
-int
-       LibGoblin_Elf64_Analyze(
-               LibGoblin_BinaryInfo    *p_bin );
+       int LibGoblin_Elf64_Analyze( LibGoblin_BinaryInfo *p_bin, int i_analyzefid );
 
 
 
index a42cd4f..3dde5ab 100644 (file)
@@ -44,13 +44,15 @@ LIBGOBLIN_READBIN_EXTERN
 int
        LibGoblin_ReadBinary_File(
                        LibGoblin_BinaryInfo    *p_binfo,
-                       const char      *pstr_filepath )
+                       const char      *pstr_filepath,
+                       int                     i_filetype )
 {
        int             i_result        = 0x00;
        int             i_err;
        int             i_fd    = -0x01;
-       struct  stat    t_sb;
        Byte    *pb_head;
+       LibFileType_FileType    t_ftype;
+       LibGoblin_BinaryFile    *p_bfile;
 
        assert( NULL != p_binfo );
 
@@ -65,25 +67,31 @@ int
                goto    goto_LibGoblin_ReadBinary_File_post;
        }
 
-       /* Get FileSize */
-       i_err   = fstat( i_fd, &t_sb );
-       if( -1 == i_err )               {
+       /* Get FileSize & FileType by LibFileType */
+       i_err   = LibFileType_CheckFileType( &t_ftype, pstr_filepath, i_fd );
+       if( 0x00 != i_err )     {
                close( i_fd );
                goto    goto_LibGoblin_ReadBinary_File_post;
        }
 
+       /* XXX : check i_filetype value */
+
+       p_bfile = &(p_binfo->t_binfile[ i_filetype ]);
+
        /* Memory Mapping from Binary-file */
-       pb_head  = mmap( NULL, t_sb.st_size, PROT_READ, MAP_SHARED, i_fd, 0 );
+       pb_head  = mmap( NULL, t_ftype.dw_filesize, PROT_READ, MAP_SHARED, i_fd, 0 );
        if( MAP_FAILED == pb_head )             {
                close( i_fd );
                goto    goto_LibGoblin_ReadBinary_File_post;
        }
 
-       p_binfo->pb_binary      = pb_head;
-       p_binfo->dw_size        = (DWord)t_sb.st_size;
-       p_binfo->i_fd           = i_fd;
+       memcpy( (void *)&(p_bfile->t_ftype), (void *)&t_ftype, sizeof( LibFileType_FileType ));
+       p_bfile->pb_binary      = pb_head;
+       p_bfile->dw_size        = t_ftype.dw_filesize;
+       p_bfile->i_fd           = i_fd;
+       p_bfile->dw_flag        = LIBGOBLIN_BINFO_FILE_MMAP;
        p_binfo->b_phase        = LIBGOBLIN_BINFO_PHASE_BINREAD;
-       strncpy( p_binfo->str_filepath, pstr_filepath, DRD64_MAX_PATH );
+       strncpy( p_bfile->str_filepath, pstr_filepath, DRD64_MAX_PATH );
 
        //LibGoblin_AnalyzeBinary( p_binfo );
         
@@ -100,8 +108,10 @@ int
        LibGoblin_ReadBinary_Memory(
                        LibGoblin_BinaryInfo    *p_binfo,
                        Byte    *pb_data,
-                       DWord   dw_size )
+                       DWord   dw_size,
+                       int             i_filetype )
 {
+       LibGoblin_BinaryFile    *p_bfile;
 
        assert( NULL != p_binfo );
 
@@ -109,8 +119,11 @@ int
                return -0x01;
        }
 
-       p_binfo->pb_binary      = pb_data;
-       p_binfo->dw_size        = dw_size;
+       p_bfile = &(p_binfo->t_binfile[ i_filetype ]);
+
+       p_bfile->pb_binary      = pb_data;
+       p_bfile->dw_size        = dw_size;
+       p_bfile->dw_flag        = LIBGOBLIN_BINFO_FILE_EXTALLOC;
        p_binfo->b_phase        = LIBGOBLIN_BINFO_PHASE_BINREAD;
 
        //i_result = LibGoblin_AnalyzeBinary( p_bin );
@@ -126,6 +139,8 @@ int
        LibGoblin_ReadBinary_FreeBinary(
                        LibGoblin_BinaryInfo    *p_binfo )
 {
+       int             i_cnt;
+       LibGoblin_BinaryFile    *p_bfile;
 
        assert( NULL != p_binfo );
 
@@ -133,13 +148,23 @@ int
                return -0x01;
        }
 
-       if( -0x01 != p_binfo->i_fd )    {
-               munmap( p_binfo->pb_binary, p_binfo->dw_size );
-               p_binfo->pb_binary      = NULL;
-               p_binfo->dw_size        = 0;
+       for( i_cnt = 0; i_cnt < LIBGOBLIN_BINFO_MAXFILES; i_cnt++ )     {
+               p_bfile = &(p_binfo->t_binfile[ i_cnt ]);
+
+               if( -0x01 == p_bfile->i_fd )    { continue; }
+
+               if( LIBGOBLIN_BINFO_FILE_MMAP & p_bfile->dw_flag )      {
+                       munmap( p_bfile->pb_binary, p_bfile->dw_size );
+                       close( p_bfile->i_fd );
+               }
+               else if( LIBGOBLIN_BINFO_FILE_INTALLOC & p_bfile->dw_flag )     {
+                       free( p_bfile->pb_binary );
+                       close( p_bfile->i_fd );
+               }
 
-               close( p_binfo->i_fd );
-               p_binfo->i_fd           = -0x01;
+               p_bfile->pb_binary      = NULL;
+               p_bfile->dw_size        = 0;
+               p_bfile->i_fd           = -0x01;
        }
 
        p_binfo->b_phase        = LIBGOBLIN_BINFO_PHASE_ALLOCED;
index 38e9832..f5d05ce 100644 (file)
@@ -47,10 +47,10 @@ Comment:
 
 LIBGOBLIN_READBIN_EXTERN
        int LibGoblin_ReadBinary_File(
-                               LibGoblin_BinaryInfo *p_binfo, const char *pstr_filepath );
+                               LibGoblin_BinaryInfo *p_binfo, const char *pstr_filepath, int i_filetype );
 LIBGOBLIN_READBIN_EXTERN
        int LibGoblin_ReadBinary_Memory(
-                               LibGoblin_BinaryInfo *p_binfo, Byte *pb_data, DWord dw_size );
+                               LibGoblin_BinaryInfo *p_binfo, Byte *pb_data, DWord dw_size, int i_filetype );
 LIBGOBLIN_READBIN_EXTERN
        int LibGoblin_ReadBinary_FreeBinary( LibGoblin_BinaryInfo *p_binfo );
 
index bb5f657..dcc09bc 100644 (file)
@@ -63,10 +63,22 @@ Comment:
 #define        LIBGOBLIN_BINFO_PHASE_BINREAD   0x02
 #define        LIBGOBLIN_BINFO_PHASE_ANALYZED  0x03
 
+#define        LIBGOBLIN_BINFO_MAXFILES                3
+#define        LIBGOBLIN_BINFO_FILE_EXEC               0
+#define        LIBGOBLIN_BINFO_FILE_CORE               1
+#define        LIBGOBLIN_BINFO_FILE_DEBUG              2
+
+#define        LIBGOBLIN_BINFO_FILE_MMAP               (DWord)0x01
+#define        LIBGOBLIN_BINFO_FILE_EXTALLOC   (DWord)0x02
+#define        LIBGOBLIN_BINFO_FILE_INTALLOC   (DWord)0x04
+
+
 typedef struct {
        /* Binary-File Info. */
        int                     i_fd;
+       DWord           dw_flag;
        char            str_filepath[DRD64_MAX_PATH];
+       LibFileType_FileType    t_ftype;
 
        /* Binary-File Memory Image Access Info. */
        DWord           dw_size;
@@ -90,16 +102,8 @@ typedef struct      {
        /* Debug-Format Depending Info. (DWarf) */
        void            *p_debug;
 
-       LibGoblin_BinaryFile    t_bfile[3];
-
        /* Exec. File ===========================================*/
-       /* Binary-File Info. */
-       int                     i_fd;
-       char            str_filepath[DRD64_MAX_PATH];
-
-       /* Binary-File Memory Image Access Info. */
-       DWord           dw_size;
-       Byte            *pb_binary;
+       LibGoblin_BinaryFile    t_binfile[3];
 
        /* Binary-Format Depending Info. (ELF)*/
        void            *p_format;
index d61e526..8776b35 100644 (file)
@@ -56,7 +56,7 @@ void Test_LibGoblin_ReadBinary_File_test00_001( void )
        p_binfo = LibGoblin_BinInfo_GetBinInfo( i_binfoid );
        CU_ASSERT( NULL != p_binfo );
 
-       i_result        = LibGoblin_ReadBinary_File( p_binfo, "../dwarftest" );
+       i_result        = LibGoblin_ReadBinary_File( p_binfo, "../dwarftest", LIBGOBLIN_BINFO_FILE_EXEC );
        CU_ASSERT( 0x00 == i_result );
 
        i_result        = LibGoblin_ReadBinary_FreeBinary( p_binfo );
@@ -105,7 +105,7 @@ void Test_LibGoblin_ReadBinary_Memory_test00_001( void )
        sz_read = read( i_fd, pb_data, t_sb.st_size );
        CU_ASSERT( sz_read == t_sb.st_size );
 
-       i_result        = LibGoblin_ReadBinary_Memory( p_binfo, pb_data, t_sb.st_size );
+       i_result        = LibGoblin_ReadBinary_Memory( p_binfo, pb_data, t_sb.st_size, LIBGOBLIN_BINFO_FILE_EXEC );
        CU_ASSERT( 0x00 == i_result );
 
        i_result        = LibGoblin_ReadBinary_FreeBinary( p_binfo );