drd64_libgoblin_proginfo.o \
drd64_libgoblin_binfo.o \
drd64_libgoblin_binaryfile.o \
+ drd64_libgoblin_srcfile.o \
drd64_libgoblin_checkbin.o \
drd64_libgoblin_readbin.o \
drd64_libgoblin_loadprog.o \
drd64_libgoblin_proginfo.h \
drd64_libgoblin_binfo.h \
drd64_libgoblin_binaryfile.h \
+ drd64_libgoblin_srcfile.h \
drd64_libgoblin_checkbin.h \
drd64_libgoblin_readbin.h \
drd64_libgoblin_loadprog.h \
test_libgoblin_api.o \
test_libgoblin_proginfo.o \
test_libgoblin_binaryfile.o \
+ test_libgoblin_srcfile.o \
test_libgoblin_loadprog.o \
test_libgoblin_binfo.o \
test_libgoblin_objinfo.o \
drd64_libgoblin_binaryfile.o: drd64_libgoblin_binaryfile.c $(HEADER)
$(CC) -c -o drd64_libgoblin_binaryfile.o $(FLAGS_DEBUG) \
drd64_libgoblin_binaryfile.c
+drd64_libgoblin_srcfile.o: drd64_libgoblin_srcfile.c $(HEADER)
+ $(CC) -c -o drd64_libgoblin_srcfile.o $(FLAGS_DEBUG) \
+ drd64_libgoblin_srcfile.c
drd64_libgoblin_checkbin.o: drd64_libgoblin_checkbin.c $(HEADER)
$(CC) -c -o drd64_libgoblin_checkbin.o $(FLAGS_DEBUG) \
drd64_libgoblin_checkbin.c
$(CC) -c -o test_libgoblin_binaryfile.o \
$(FLAGS_DEBUG) $(FLAGS_COMPILE) $(TEST_FLAGS_COMPILE) \
test_libgoblin_binaryfile.c
+test_libgoblin_srcfile.o: test_libgoblin_srcfile.c $(HEADER) $(TEST_HEADER)
+ $(CC) -c -o test_libgoblin_srcfile.o \
+ $(FLAGS_DEBUG) $(FLAGS_COMPILE) $(TEST_FLAGS_COMPILE) \
+ test_libgoblin_srcfile.c
test_libgoblin_loadprog.o: test_libgoblin_loadprog.c $(HEADER) $(TEST_HEADER)
$(CC) -c -o test_libgoblin_loadprog.o \
$(FLAGS_DEBUG) $(FLAGS_COMPILE) $(TEST_FLAGS_COMPILE) \
$(CALLGRAPH):
env CC=cc cflow -A -P -g -X -n *.c $(HEADER) > $(CALLGRAPH)
- #env CC=cc cflow -A -P -g -X -n drd64_*.c $(HEADER) > $(CALLGRAPH)
clean:
rm -f *.o
#include"drd64_libgoblin_proginfo.h"
#include"drd64_libgoblin_binfo.h"
#include"drd64_libgoblin_binaryfile.h"
+#include"drd64_libgoblin_srcfile.h"
#include"drd64_libgoblin_checkbin.h"
#include"drd64_libgoblin_readbin.h"
#include"drd64_libgoblin_loadprog.h"
((PF_MASKOS & dw_flag) ? 'O': ' '),
((PF_MASKPROC & dw_flag) ? 'P': ' ') );
- printf(" %s\t\t[PROGHDR] Flag[%5s] Type: %s, align= %d\n",
+ printf(" %s\t\t[PROGHDR] Flag[%5s] Type: %s, align= %ld\n",
pstr_space, str_flag, str_type, p_obj->info.proghdr.qw_align );
printf(" %s\n", pstr_space );
Byte b_level )
{
char str_space[384];
- LibGoblin_ObjectInfo *p_objinfo;
+ //LibGoblin_ObjectInfo *p_objinfo;
str_space[0] = '\0';
----------------------------------------------------------------------*/
LIBGOBLIN_ELF_SYMTAB_EXTERN
int
- Elf_Symtab_ReadSymtabSection(
- LibGoblin_ProgramInfo *p_pginfo )
+ ELF64_Symtab_ReadSection(
+ LibGoblin_BinaryInfo *p_binfo )
{
-/*
+
Byte *pb_symtab;
int i_result = 0x00;
DWord dw_symbols;
DWord dw_cnt;
- Elf32_Shdr *p_shdr32;
- Elf64_Shdr *p_shdr64;
- Elf32_Sym *p_sym32 = NULL;
- Elf64_Sym *p_sym64 = NULL;
+ Elf64_Shdr *p_shdr;
+ Elf64_Sym *p_sym = NULL;
LibGoblin_SectionInfo *p_secinfo;
assert( NULL != p_binfo );
p_secinfo = LibGoblin_Section_GetSectionInfo_fid(
p_binfo, LIBGOBLIN_SECTION_ID_SYMTAB );
if( NULL == p_secinfo ) {
- return -0x01;
+ return 0x00;
}
- if( IsBinfoType_Elf64( p_binfo ) ) {
- p_shdr64 = (Elf64_Shdr *)(p_secinfo->pb_sechdr);
- if( 0 == p_shdr64->sh_entsize ) {
- return -0x02;
- }
- dw_symbols = (DWord)p_shdr64->sh_size / (DWord)p_shdr64->sh_entsize;
- pb_symtab = p_secinfo->pb_data;
- }
- else {
- p_shdr32 = (Elf32_Shdr *)(p_secinfo->pb_sechdr);
- if( 0 == p_shdr32->sh_entsize ) {
- return -0x02;
- }
- dw_symbols = (DWord)p_shdr32->sh_size / (DWord)p_shdr32->sh_entsize;
- pb_symtab = p_secinfo->pb_data;
+ p_shdr = (Elf64_Shdr *)(p_secinfo->pb_sechdr);
+ if( 0 == p_shdr->sh_entsize ) {
+ return -0x02;
}
+ dw_symbols = (DWord)p_shdr->sh_size / (DWord)p_shdr->sh_entsize;
+ pb_symtab = p_secinfo->pb_data;
+
+ p_sym = (Elf64_Sym *)pb_symtab;
+ for( dw_cnt = 0; ((dw_cnt < dw_symbols) && (0x00 == i_result)); dw_cnt++, p_sym++ ) {
- // Create & Alloc SymbolWorkTable
- i_result = LibGoblin_SymWork_AllocSymbolWorkTable( p_symwork, dw_symbols );
- if( 0x00 != i_result ) {
- return -0x03;
- }
- // Read SymbolSection to SymbolWorkTable
- if( IsBinfoType_Elf64( p_binfo ) ) {
- p_sym64 = (Elf64_Sym *)pb_symtab;
- for( dw_cnt = 0; ((dw_cnt < dw_symbols) && (0x00 == i_result)); dw_cnt++, p_sym64++ ) {
- i_result = LibGoblin_SymWork_AddSymbolWorkInfo(
- p_binfo, p_symwork, (PtrValue)p_sym64->st_value, (Byte *)p_sym64,
- LIBGOBLIN_SYMWORKINFO_TYPE_SYMTAB );
- }
- }
- else {
- p_sym32= (Elf32_Sym *)pb_symtab;
-
- for( dw_cnt = 0; ((dw_cnt < dw_symbols) && (0x00 == i_result)); dw_cnt++, p_sym32++ ) {
- i_result = LibGoblin_SymWork_AddSymbolWorkInfo(
- p_binfo, p_symwork, (PtrValue)p_sym32->st_value, (Byte *)p_sym32,
- LIBGOBLIN_SYMWORKINFO_TYPE_SYMTAB );
- }
}
if( 0x00 != i_result ) {
return -0x04;
}
- // Sort WorkTable
-// LibGoblin_SymWork_SortSymbolWorkTable( p_symwork );
-*/
return 0x00;
}
--- /dev/null
+/*DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64
+
+ D r . D e a m o n 6 4
+ for INTEL64(R), AMD64(R)
+
+ Copyright(C) 2007-2009 Koine Yuusuke(koinec). All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY Koine Yuusuke(koinec) ``AS IS'' AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL Koine Yuusuke(koinec) OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+OF THE POSSIBILITY OF SUCH DAMAGE.
+
+DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64*/
+
+/* File Info -----------------------------------------------------------
+File: drd64_.c
+Function:
+Comment:
+----------------------------------------------------------------------*/
+
+#define DRD64_SRC_LIBGOBLIN_SRCFILE
+#include"drd64_libgoblin.h"
+
+/*----------------------------------------------------------------------
+----------------------------------------------------------------------*/
+LIBGOBLIN_SRCFILE_EXTERN
+LibGoblin_SrcFile *
+ SrcFile_GetSrcFile(
+ int i_srcid )
+{
+ if(( gi_max_src_file <= i_srcid ) || ( 0 > i_srcid ))
+ { return NULL; }
+
+ if( -0x01 == SRCFILE( i_srcid )->i_id )
+ { return NULL; }
+
+ return SRCFILE( i_srcid );
+}
+
+
+/*----------------------------------------------------------------------
+OK
+----------------------------------------------------------------------*/
+LIBGOBLIN_SRCFILE_EXTERN
+LibGoblin_SrcFile *
+ SrcFile_AllocSrcFile(
+ void )
+{
+ int i_cnt;
+ int i_id_now = -0x01;
+ LibGoblin_SrcFile *p_srcfile = NULL;
+ LibGoblin_SrcFile *p_srcbase;
+
+ if( gi_now_src_file < gi_max_src_file ) {
+ // Search Non-Used & Alloced SrcFile struct.
+ for( i_cnt = 0; i_cnt < gi_max_src_file; i_cnt++ ) {
+ if( -0x01 == SRCFILE( i_cnt )->i_id ) {
+ p_srcfile = SRCFILE( i_cnt );
+ i_id_now = i_cnt;
+ goto goto_SrcFile_AllocSrcFile_dataset;
+ }
+ }
+
+ // Bug -- Not Exist Non-used SrcFile struct.
+ goto goto_SrcFile_AllocSrcFile_post;
+ }
+
+ if( gi_now_src_file == gi_alloc_src_file ) {
+ p_srcbase = (LibGoblin_SrcFile *)realloc( gp_src_file,
+ sizeof( LibGoblin_SrcFile ) *
+ ( gi_alloc_src_file + LIBGOBLIN_SRCFILE_UNITS ) );
+ if( NULL == p_srcbase ) {
+ goto goto_SrcFile_AllocSrcFile_post;
+ }
+
+ gp_src_file = p_srcbase;
+ gi_alloc_src_file += LIBGOBLIN_SRCFILE_UNITS;
+ }
+
+ i_id_now = gi_now_src_file;
+
+goto_SrcFile_AllocSrcFile_dataset:
+ if( i_id_now == gi_max_src_file ) { gi_max_src_file++; }
+ p_srcfile = SRCFILE( i_id_now );
+ p_srcfile->i_id = i_id_now;
+ gi_now_src_file++;
+
+goto_SrcFile_AllocSrcFile_post:
+ return p_srcfile;
+}
+
+
+/*----------------------------------------------------------------------
+----------------------------------------------------------------------*/
+/*
+LIBGOBLIN_SRCFILE_EXTERN
+LibGoblin_SrcFile *
+ SrcFile_SearchSrcFile(
+ char *pstr_filename,
+ char *pstr_localpath,
+ char *pstr_remotepath )
+{
+ int i_cnt;
+ int i_result;
+ LibGoblin_SrcFile *p_bfile;
+
+ assert( NULL != pstr_filename);
+ assert( NULL != pstr_localpath );
+
+ for( i_cnt = 0; i_cnt < gi_max_src_file; i_cnt++ ) {
+ p_bfile = SRCFILE( i_cnt );
+
+ if( -0x01 == p_bfile->i_id ) { continue; }
+
+ i_result = strncmp( pstr_filename, p_bfile->str_filename, DRD64_MAX_PATH );
+ if( 0x00 != i_result ) { continue; }
+
+ i_result = strncmp( pstr_localpath, p_bfile->str_localpath, DRD64_MAX_PATH );
+ if( 0x00 != i_result ) { continue; }
+
+ if( NULL != pstr_remotepath ) {
+ i_result = strncmp( pstr_remotepath, p_bfile->str_remotepath, DRD64_MAX_PATH );
+ if( 0x00 != i_result ) { continue; }
+ }
+
+ goto goto_SrcFile_SearchSrcFile_post;
+ }
+
+ p_bfile = NULL;
+
+goto_SrcFile_SearchSrcFile_post:
+ return p_bfile;
+}
+*/
+
+
+/*----------------------------------------------------------------------
+----------------------------------------------------------------------*/
+/*
+LIBGOBLIN_SRCFILE_EXTERN
+LibGoblin_SrcFile *
+ SrcFile_DispenseSrcFile(
+ LibGoblin_SrcInfo *p_binfo,
+ char *pstr_localpath,
+ char *pstr_remotepath )
+{
+ LibGoblin_SrcFile *p_bfile;
+
+ assert( NULL != p_binfo );
+
+ p_bfile = SrcFile_SearchSrcFile(
+ p_binfo->str_filename, pstr_localpath, pstr_remotepath );
+ if( NULL != p_bfile ) {
+ p_bfile->i_refcount++;
+ }
+ else {
+ p_bfile = SrcFile_AllocSrcFile();
+ }
+
+ strncpy( p_bfile->str_filename, p_binfo->str_filename, DRD64_MAX_PATH );
+ strncpy( p_bfile->str_localpath, pstr_localpath, DRD64_MAX_PATH );
+ if( NULL != pstr_remotepath ) {
+ strncpy( p_bfile->str_remotepath, pstr_remotepath, DRD64_MAX_PATH );
+ }
+
+ return p_bfile;
+}
+*/
+
+/*----------------------------------------------------------------------
+OK
+----------------------------------------------------------------------*/
+void
+ SrcFile_ClearSrcFile(
+ LibGoblin_SrcFile *p_srcfile )
+{
+ assert( NULL != p_srcfile );
+
+ memset( p_srcfile, 0x00, sizeof( LibGoblin_SrcFile ) );
+
+ p_srcfile->i_id = -0x01;
+
+ return;
+}
+
+
+/*----------------------------------------------------------------------
+OK
+----------------------------------------------------------------------*/
+LIBGOBLIN_SRCFILE_EXTERN
+int
+ SrcFile_FreeSrcFile(
+ LibGoblin_SrcFile *p_srcfile )
+{
+ int i_id;
+
+ assert( NULL != p_srcfile );
+
+ if( -0x01 == p_srcfile->i_id ) { return 0x00; }
+
+ i_id = p_srcfile->i_id;
+ SrcFile_ClearSrcFile( p_srcfile );
+
+ if( gi_max_src_file == (i_id + 1) )
+ { gi_max_src_file--; }
+
+ gi_now_src_file--;
+ if( 0 == gi_now_src_file ) { gi_max_src_file = 0; }
+
+ return 0x00;
+}
+
+
+/*----------------------------------------------------------------------
+OK
+----------------------------------------------------------------------*/
+LIBGOBLIN_SRCFILE_EXTERN
+int
+ SrcFile_Init(
+ void )
+{
+ int i_cnt;
+ LibGoblin_SrcFile *p_srcfile;
+
+ if( 0 != gi_max_src_file ) {
+ return -0x01;
+ }
+
+ gp_src_file = (LibGoblin_SrcFile *)malloc(
+ sizeof( LibGoblin_SrcFile ) * LIBGOBLIN_SRCFILE_UNITS );
+ if( NULL == gp_src_file ) {
+ return -0x02;
+ }
+
+ for( i_cnt = 0; i_cnt < LIBGOBLIN_SRCFILE_UNITS; i_cnt++ ) {
+ p_srcfile = SRCFILE( i_cnt );
+ SrcFile_ClearSrcFile( p_srcfile );
+ }
+
+ gi_alloc_src_file = LIBGOBLIN_SRCFILE_UNITS;
+ gi_max_src_file = 0;
+ gi_now_src_file = 0;
+
+ return 0x00;
+}
+
+
+/*----------------------------------------------------------------------
+OK
+----------------------------------------------------------------------*/
+LIBGOBLIN_SRCFILE_EXTERN
+int
+ SrcFile_Term(
+ void )
+{
+ LibGoblin_SrcFile *p_srcfile;
+
+ if( 0 < gi_now_src_file ) {
+ for( ; gi_max_src_file > 0; gi_max_src_file-- ) {
+ p_srcfile = SRCFILE( gi_max_src_file - 1 );
+ SrcFile_FreeSrcFile( p_srcfile );
+ }
+ }
+
+ free( gp_src_file );
+
+ gp_src_file = NULL;
+ gi_alloc_src_file = 0;
+ gi_max_src_file = 0;
+ gi_now_src_file = 0;
+
+ return 0x00;
+}
+
+
+/* EOF of drd64_.c ----------------------------------- */
--- /dev/null
+/*DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64
+
+ D r . D e a m o n 6 4
+ for INTEL64(R), AMD64(R)
+
+ Copyright(C) 2007-2009 Koine Yuusuke(koinec). All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY Koine Yuusuke(koinec) ``AS IS'' AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL Koine Yuusuke(koinec) OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+OF THE POSSIBILITY OF SUCH DAMAGE.
+
+DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64*/
+
+/* File Info -----------------------------------------------------------
+File: drd64_.h
+Function: Header
+Comment:
+----------------------------------------------------------------------*/
+
+#ifndef DRD64_HEADER_LIBGOBLIN_SRCFILE
+#define DRD64_HEADER_LIBGOBLIN_SRCFILE
+
+#ifdef DRD64_SRC_LIBGOBLIN_SRCFILE
+ #define LIBGOBLIN_SRCFILE_EXTERN
+#else
+ #define LIBGOBLIN_SRCFILE_EXTERN extern
+#endif
+
+#if defined DRD64_SRC_LIBGOBLIN_SRCFILE
+ #define LIBGOBLIN_SRCFILE_INTERNALFUNC
+#elif defined DRD64_SRC_TEST_LIBGOBLIN_SRCFILE
+ #define LIBGOBLIN_SRCFILE_INTERNALFUNC
+#endif
+
+#define LIBGOBLIN_SRCFILE_UNITS 128
+#define LIBGOBLIN_SRCFILE_MAX_BINFO 128
+
+#ifdef DRD64_SRC_LIBGOBLIN_SRCFILE
+LibGoblin_SrcFile *gp_src_file = NULL;
+int gi_alloc_src_file = 0;
+int gi_max_src_file = 0;
+int gi_now_src_file = 0;
+#endif
+
+#define SRCFILE(n) ((LibGoblin_SrcFile *)(gp_src_file + (n)))
+
+LIBGOBLIN_SRCFILE_EXTERN
+ LibGoblin_SrcFile *SrcFile_GetSrcFile( int i_srcid );
+LIBGOBLIN_SRCFILE_EXTERN
+ LibGoblin_SrcFile *SrcFile_AllocSrcFile( void );
+/*
+LIBGOBLIN_SRCFILE_EXTERN
+ LibGoblin_SrcFile *SrcFile_SearchSrcFile(
+ char *pstr_filename, char *pstr_localpath, char *pstr_remotepath );
+LIBGOBLIN_SRCFILE_EXTERN
+ LibGoblin_SrcFile *SrcFile_DispenseSrcFile(
+ LibGoblin_BinaryInfo *p_binfo, char *pstr_localpath, char *pstr_remotepath );
+*/
+LIBGOBLIN_SRCFILE_EXTERN
+ int SrcFile_FreeSrcFile( LibGoblin_SrcFile *p_srcfile );
+LIBGOBLIN_SRCFILE_EXTERN
+ int SrcFile_Init( void );
+LIBGOBLIN_SRCFILE_EXTERN
+ int SrcFile_Term( void );
+
+
+#ifdef LIBGOBLIN_SRCFILE_INTERNALFUNC
+void SrcFile_ClearSrcFile( LibGoblin_SrcFile *p_libinfo );
+
+#endif
+
+#endif /* DRD64_HEADER_XXX */
+
+/* EOF of drd64_.h ----------------------------------- */
/*=====================================================================*/
typedef struct {
- int i_srcid;
+ int i_id;
char str_filename[DRD64_MAX_PATH];
char str_localpath[DRD64_MAX_PATH];
-} LibGoblin_SourceInfo;
+ char str_remotepath[DRD64_MAX_PATH];
+} LibGoblin_SrcFile;
/*=====================================================================*/
Test_LibGoblin_BinInfo();
Test_LibGoblin_ProgInfo();
Test_LibGoblin_BinaryFile();
+ Test_LibGoblin_SrcFile();
Test_LibGoblin_ObjInfo();
Test_LibGoblin_SymWork();
Test_LibGoblin_ReadBinary();
#endif
DRD64_TEST_LIBGOBLIN_BINARYFILE_EXTERN int Test_LibGoblin_BinaryFile( void );
+#ifdef DRD64_SRC_TEST_LIBGOBLIN_SRCFILE
+ #define DRD64_TEST_LIBGOBLIN_SRCFILE_EXTERN
+#else
+ #define DRD64_TEST_LIBGOBLIN_SRCFILE_EXTERN extern
+#endif
+DRD64_TEST_LIBGOBLIN_SRCFILE_EXTERN int Test_LibGoblin_SrcFile( void );
+
#ifdef DRD64_SRC_TEST_LIBGOBLIN_READBINARY
#define DRD64_TEST_LIBGOBLIN_READBINARY_EXTERN
#else
--- /dev/null
+/*DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64
+
+ D r . D e a m o n 6 4
+ for INTEL64(R), AMD64(R)
+
+ Copyright(C) 2007-2009 Koine Yuusuke(koinec). All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY Koine Yuusuke(koinec) ``AS IS'' AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL Koine Yuusuke(koinec) OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+OF THE POSSIBILITY OF SUCH DAMAGE.
+
+DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64*/
+
+/* File Info -----------------------------------------------------------
+File: drd64_.c
+Function:
+Comment:
+----------------------------------------------------------------------*/
+
+#define DRD64_SRC_TEST_LIBGOBLIN_SRCFILE
+#include"drd64_libgoblin.h"
+#include"test_libgoblin.h"
+
+
+/* SrcFile_AllocSrcFile() & FreeSrcFile() *****************/
+/*--------------------------------------------------------------------*/
+void Test_SrcFile_AllocFree_test00_002( void )
+{
+ int i_cnt;
+ int i_result;
+ LibGoblin_SrcFile *p_srcfile;
+
+ i_result = SrcFile_Init();
+ CU_ASSERT( 0x00 == i_result );
+
+ for( i_cnt = 0; i_cnt < 300; i_cnt++ ) {
+ p_srcfile = SrcFile_AllocSrcFile();
+ CU_ASSERT( NULL != p_srcfile );
+ CU_ASSERT( i_cnt == p_srcfile->i_id );
+ }
+
+ for( i_cnt = 0; i_cnt < 32; i_cnt ++ ) {
+ p_srcfile = NULL;
+ p_srcfile = SrcFile_GetSrcFile( (i_cnt * 8) );
+ CU_ASSERT( NULL != p_srcfile );
+
+ i_result = SrcFile_FreeSrcFile( p_srcfile );
+ CU_ASSERT( 0x00 == i_result );
+ }
+
+ for( i_cnt = 0; i_cnt < 32; i_cnt++ ) {
+ p_srcfile = NULL;
+ p_srcfile = SrcFile_AllocSrcFile();
+ CU_ASSERT( NULL != p_srcfile );
+ CU_ASSERT( (i_cnt * 8) == p_srcfile->i_id );
+ }
+
+ for( i_cnt = 0; i_cnt < 300; i_cnt++ ) {
+ p_srcfile = NULL;
+ p_srcfile = SrcFile_GetSrcFile( i_cnt );
+ CU_ASSERT( NULL != p_srcfile );
+
+ i_result = SrcFile_FreeSrcFile( p_srcfile );
+ CU_ASSERT( 0x00 == i_result );
+ }
+
+ p_srcfile = SrcFile_GetSrcFile( 0 );
+ CU_ASSERT( NULL == p_srcfile );
+
+ i_result = SrcFile_Term();
+ CU_ASSERT( 0x00 == i_result );
+
+ return;
+}
+
+
+/* EOF of drd64_.c ----------------------------------- */
+/*--------------------------------------------------------------------*/
+void Test_SrcFile_AllocFree_test00_001( void )
+{
+ int i_result;
+ LibGoblin_SrcFile *p_srcfile;
+
+ i_result = SrcFile_Init();
+ CU_ASSERT( 0x00 == i_result );
+
+ p_srcfile = SrcFile_AllocSrcFile();
+ CU_ASSERT( NULL != p_srcfile );
+
+ i_result = SrcFile_FreeSrcFile( p_srcfile );
+ CU_ASSERT( 0x00 == i_result );
+
+ i_result = SrcFile_Term();
+ CU_ASSERT( 0x00 == i_result );
+
+ return;
+}
+
+
+/* SrcFile_Init() & Term() ****************************************/
+/*--------------------------------------------------------------------*/
+void Test_SrcFile_InitTerm_test00_001( void )
+{
+ int i_result;
+
+ i_result = SrcFile_Init();
+ CU_ASSERT( 0x00 == i_result );
+
+ i_result = SrcFile_Term();
+ CU_ASSERT( 0x00 == i_result );
+
+ return;
+}
+
+
+/*----------------------------------------------------------------------
+----------------------------------------------------------------------*/
+DRD64_TEST_LIBGOBLIN_SRCFILE_EXTERN
+int
+ Test_LibGoblin_SrcFile(
+ void )
+{
+ CU_pSuite pt_goblin;
+
+ pt_goblin = CU_add_suite( "LibGoblin_SrcFile", NULL, NULL );
+
+ CU_add_test( pt_goblin, "SrcFile_InitTerm_test00_001",
+ Test_SrcFile_InitTerm_test00_001 );
+ CU_add_test( pt_goblin, "SrcFile_AllocFree_test00_001",
+ Test_SrcFile_AllocFree_test00_001 );
+ CU_add_test( pt_goblin, "SrcFile_AllocFree_test00_001",
+ Test_SrcFile_AllocFree_test00_002 );
+
+ return 0x00;
+}
+
+
+/* EOF of drd64_.c ----------------------------------- */