/* drd64_libgoblin_?????.c Functions =====================*/
LIBGOBLIN_FUNC
int
- Drd64_LibGoblin_Init(
+ LibGoblin_Init(
void );
LIBGOBLIN_FUNC
int
- Drd64_LibGoblin_Term(
+ LibGoblin_Term(
void );
LIBGOBLIN_FUNC
int
- Drd64_LibGoblin_AnalyzeBinary(
+ LibGoblin_AnalyzeBinary(
Byte *p_data,
DWord dw_size );
LIBGOBLIN_FUNC
int
- Drd64_LibGoblin_AnalyzeBinary(
+ LibGoblin_AnalyzeBinary(
Byte *p_data,
DWord dw_size )
{
int i_bid;
int i_bintype;
int i_err;
- Drd64_LibGoblin_BinaryInfo *p_bin;
+ LibGoblin_BinaryInfo *p_bin;
/* Alloc BinaryInfo Struct */
- p_bin = Drd64_LibDrd64_BinInfo_AllocBinInfo();
+ p_bin = LibDrd64_BinInfo_AllocBinInfo();
if( NULL == p_bin ) { return -1; }
i_bid = p_bin->i_id;
p_bin->dw_size = dw_size;
/* Check Binary Format */
- i_bintype = Drd64_LibGoblin_CheckBinary( p_bin );
+ i_bintype = LibGoblin_CheckBinary( p_bin );
- if( DRD64_LIBGOBLIN_BINFO_TYPE_ELF == i_bintype ) {
+ if( LIBGOBLIN_BINFO_TYPE_ELF == i_bintype ) {
/* Analyze ELF-Binary Format */
- Drd64_LibGoblin_AnalyzeElf( p_bin );
+ LibGoblin_AnalyzeElf( p_bin );
/* Analyze DWARF-Debug Format */
} else {
/*----------------------------------------------------------------------
----------------------------------------------------------------------*/
LIBGOBLIN_BINFO_EXTERN
-Drd64_LibGoblin_BinaryInfo *
- Drd64_LibDrd64_BinInfo_AllocBinInfo(
+LibGoblin_BinaryInfo *
+ LibDrd64_BinInfo_AllocBinInfo(
void)
{
int i_cnt;
int i_id_now;
- Drd64_LibGoblin_BinaryInfo *p_binfo_base;
- Drd64_LibGoblin_BinaryInfo *p_binfo_now;
+ LibGoblin_BinaryInfo *p_binfo_base;
+ LibGoblin_BinaryInfo *p_binfo_now;
p_binfo_now = NULL;
i_id_now = -1;
if( NULL == p_binfo_now ) {
p_binfo_base = realloc( gp_binary_info,
- sizeof( Drd64_LibGoblin_BinaryInfo ) *
- (gi_max_binary_info + DRD64_LIBGOBLIN_BINFO_UNITS) );
+ sizeof( LibGoblin_BinaryInfo ) *
+ (gi_max_binary_info + LIBGOBLIN_BINFO_UNITS) );
if( NULL == p_binfo_base ) { return NULL; }
gp_binary_info = p_binfo_base;
- gi_max_binary_info += DRD64_LIBGOBLIN_BINFO_UNITS;
+ gi_max_binary_info += LIBGOBLIN_BINFO_UNITS;
p_binfo_now = gp_binary_info + gi_now_binary_info;
i_id_now = gi_now_binary_info++;
i_id_now = gi_now_binary_info++;
}
- memset( p_binfo_now, 0x00, sizeof( Drd64_LibGoblin_BinaryInfo ) );
+ memset( p_binfo_now, 0x00, sizeof( LibGoblin_BinaryInfo ) );
p_binfo_now->i_id = i_id_now;
----------------------------------------------------------------------*/
LIBGOBLIN_BINFO_EXTERN
int
- Drd64_LibGoblin_FreeBinaryInfo(
- Drd64_LibGoblin_BinaryInfo *p_binfo )
+ LibGoblin_FreeBinaryInfo(
+ LibGoblin_BinaryInfo *p_binfo )
{
if( NULL == p_binfo ) { return 0x01; }
p_binfo->p_format = NULL;
}
- memset( p_binfo, 0x00, sizeof( Drd64_LibGoblin_BinaryInfo ) );
+ memset( p_binfo, 0x00, sizeof( LibGoblin_BinaryInfo ) );
p_binfo->i_id = -1;
----------------------------------------------------------------------*/
LIBGOBLIN_BINFO_EXTERN
int
- Drd64_LibGoblin_InitBinaryInfo(
+ LibGoblin_InitBinaryInfo(
void)
{
- gp_binary_info = malloc( sizeof( Drd64_LibGoblin_BinaryInfo )
- * DRD64_LIBGOBLIN_BINFO_UNITS );
+ gp_binary_info = malloc( sizeof( LibGoblin_BinaryInfo )
+ * LIBGOBLIN_BINFO_UNITS );
if( NULL == gp_binary_info )
{ return -1; }
- gi_max_binary_info = DRD64_LIBGOBLIN_BINFO_UNITS;
+ gi_max_binary_info = LIBGOBLIN_BINFO_UNITS;
gi_now_binary_info = 0;
return 0x00;
----------------------------------------------------------------------*/
LIBGOBLIN_BINFO_EXTERN
int
- Drd64_LibGoblin_TermBinaryInfo(
+ LibGoblin_TermBinaryInfo(
void )
{
free( gp_binary_info );
/*----------------------------------------------------------------------
----------------------------------------------------------------------*/
LIBGOBLIN_BINFO_EXTERN
-Drd64_LibGoblin_BinaryInfo *
- Drd64_LibGoblin_BInfo_GetBinaryInfo(
+LibGoblin_BinaryInfo *
+ LibGoblin_BInfo_GetBinaryInfo(
int i_bid )
{
if(( gi_now_binary_info <= i_bid ) && ( 0 > i_bid ))
#define LIBGOBLIN_BINFO_EXTERN extern
#endif
-#define DRD64_LIBGOBLIN_BINFO_UNITS 8
+#define LIBGOBLIN_BINFO_UNITS 8
-#define DRD64_LIBGOBLIN_BINFO_TYPE_NONE 0x00
-#define DRD64_LIBGOBLIN_BINFO_TYPE_ELF 0x01
-#define DRD64_LIBGOBLIN_BINFO_TYPE_ELF64 0x64
-#define DRD64_LIBGOBLIN_BINFO_TYPE_ELF32 0x32
+#define LIBGOBLIN_BINFO_TYPE_NONE 0x00
+#define LIBGOBLIN_BINFO_TYPE_ELF 0x01
+#define LIBGOBLIN_BINFO_TYPE_ELF64 0x64
+#define LIBGOBLIN_BINFO_TYPE_ELF32 0x32
-#define DRD64_LIBGOBLIN_BINFO_ENDIAN_NONE 0x00
-#define DRD64_LIBGOBLIN_BINFO_ENDIAN_LITTLE 0x01
-#define DRD64_LIBGOBLIN_BINFO_ENDIAN_BIG 0x02
+#define LIBGOBLIN_BINFO_ENDIAN_NONE 0x00
+#define LIBGOBLIN_BINFO_ENDIAN_LITTLE 0x01
+#define LIBGOBLIN_BINFO_ENDIAN_BIG 0x02
typedef struct {
int i_id;
void *p_format;
-} Drd64_LibGoblin_BinaryInfo;
+} LibGoblin_BinaryInfo;
-LIBGOBLIN_BINFO_EXTERN Drd64_LibGoblin_BinaryInfo *gp_binary_info;
-LIBGOBLIN_BINFO_EXTERN int gi_max_binary_info;
-LIBGOBLIN_BINFO_EXTERN int gi_now_binary_info;
+LIBGOBLIN_BINFO_EXTERN LibGoblin_BinaryInfo *gp_binary_info;
+LIBGOBLIN_BINFO_EXTERN int gi_max_binary_info;
+LIBGOBLIN_BINFO_EXTERN int gi_now_binary_info;
LIBGOBLIN_BINFO_EXTERN
- Drd64_LibGoblin_BinaryInfo *
- Drd64_LibDrd64_BinInfo_AllocBinInfo(
+ LibGoblin_BinaryInfo *
+ LibDrd64_BinInfo_AllocBinInfo(
void );
LIBGOBLIN_BINFO_EXTERN
int
- Drd64_LibGoblin_FreeBinaryInfo(
- Drd64_LibGoblin_BinaryInfo *p_binfo );
+ LibGoblin_FreeBinaryInfo(
+ LibGoblin_BinaryInfo *p_binfo );
LIBGOBLIN_BINFO_EXTERN
int
- Drd64_LibGoblin_InitBinaryInfo(
+ LibGoblin_InitBinaryInfo(
void );
LIBGOBLIN_BINFO_EXTERN
int
- Drd64_LibGoblin_TermBinaryInfo(
+ LibGoblin_TermBinaryInfo(
void );
LIBGOBLIN_BINFO_EXTERN
- Drd64_LibGoblin_BinaryInfo *
- Drd64_LibGoblin_BInfo_GetBinaryInfo(
+ LibGoblin_BinaryInfo *
+ LibGoblin_BInfo_GetBinaryInfo(
int i_bid );
LIBGOBLIN_CHECKBIN_EXTERN
int
- Drd64_LibGoblin_CheckBinary(
- Drd64_LibGoblin_BinaryInfo *p_bin )
+ LibGoblin_CheckBinary(
+ LibGoblin_BinaryInfo *p_bin )
{
int i_result;
Byte *p_data;
assert( NULL != p_data );
/* Judge Elf-Header? */
- if( 0x00 != Drd64_LibGoblin_IsElf( p_data ) ) {
- p_bin->b_type = DRD64_LIBGOBLIN_BINFO_TYPE_ELF;
- i_result = DRD64_LIBGOBLIN_BINFO_TYPE_ELF;
+ 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 = DRD64_LIBGOBLIN_BINFO_TYPE_NONE;
- i_result = DRD64_LIBGOBLIN_BINFO_TYPE_NONE;
+ p_bin->b_type = LIBGOBLIN_BINFO_TYPE_NONE;
+ i_result = LIBGOBLIN_BINFO_TYPE_NONE;
}
return i_result;
LIBGOBLIN_CHECKBIN_EXTERN
int
- Drd64_LibGoblin_CheckBinary(
- Drd64_LibGoblin_BinaryInfo *p_bin );
+ LibGoblin_CheckBinary(
+ LibGoblin_BinaryInfo *p_bin );
#endif /* DRD64_HEADER_LIBGOBLIN_CHECKBIN */
----------------------------------------------------------------------*/
LIBGOBLIN_ELF_EXTERN
int
- Drd64_LibGoblin_IsElf(
+ LibGoblin_IsElf(
Byte *p_data )
{
Elf_Ehdr *p_elfhdr;
/*----------------------------------------------------------------------
----------------------------------------------------------------------*/
void *
- Drd64_LibGoblin_Elf64_AllocFormat(
+ LibGoblin_Elf64_AllocFormat(
void )
{
- Drd64_LibGoblin_BinaryInfo_Elf64 *p_elf;
+ LibGoblin_BinaryInfo_Elf64 *p_elf;
- p_elf = (Drd64_LibGoblin_BinaryInfo_Elf64 *)
- malloc( sizeof(Drd64_LibGoblin_BinaryInfo_Elf64) );
+ p_elf = (LibGoblin_BinaryInfo_Elf64 *)
+ malloc( sizeof(LibGoblin_BinaryInfo_Elf64) );
if( NULL != p_elf ) {
- memset( p_elf, 0x00, sizeof(Drd64_LibGoblin_BinaryInfo_Elf64) );
+ memset( p_elf, 0x00, sizeof(LibGoblin_BinaryInfo_Elf64) );
}
return (void *)p_elf;
/*----------------------------------------------------------------------
----------------------------------------------------------------------*/
void *
- Drd64_LibGoblin_Elf32_AllocFormat(
+ LibGoblin_Elf32_AllocFormat(
void )
{
- Drd64_LibGoblin_BinaryInfo_Elf32 *p_elf;
+ LibGoblin_BinaryInfo_Elf32 *p_elf;
- p_elf = (Drd64_LibGoblin_BinaryInfo_Elf32 *)
- malloc( sizeof(Drd64_LibGoblin_BinaryInfo_Elf32) );
+ p_elf = (LibGoblin_BinaryInfo_Elf32 *)
+ malloc( sizeof(LibGoblin_BinaryInfo_Elf32) );
if( NULL != p_elf ) {
- memset( p_elf, 0x00, sizeof(Drd64_LibGoblin_BinaryInfo_Elf32) );
+ memset( p_elf, 0x00, sizeof(LibGoblin_BinaryInfo_Elf32) );
}
return (void *)p_elf;
/*----------------------------------------------------------------------
----------------------------------------------------------------------*/
int
- Drd64_LibGoblin_Elf64_Analyze(
- Drd64_LibGoblin_BinaryInfo *p_bin )
+ LibGoblin_Elf64_Analyze(
+ LibGoblin_BinaryInfo *p_bin )
{
int i_err;
Byte *p_data;
- Drd64_LibGoblin_BinaryInfo_Elf64 *p_elf;
+ LibGoblin_BinaryInfo_Elf64 *p_elf;
assert( NULL != p_bin );
p_data = p_bin->p_binary;
assert( NULL != p_bin->p_format );
- p_elf = (Drd64_LibGoblin_BinaryInfo_Elf64 *)p_bin->p_format;
+ p_elf = (LibGoblin_BinaryInfo_Elf64 *)p_bin->p_format;
p_elf->p_elfhdr = (Elf64_Ehdr *)p_data;
----------------------------------------------------------------------*/
LIBGOBLIN_ELF_EXTERN
int
- Drd64_LibGoblin_AnalyzeElf(
- Drd64_LibGoblin_BinaryInfo *p_bin )
+ LibGoblin_AnalyzeElf(
+ LibGoblin_BinaryInfo *p_bin )
{
int i_err;
Byte *pb_data;
/* Analyze ELF Ident Header from Bits ---*/
if( ELFCLASS64 == *(pb_data + EI_CLASS) )
- { p_bin->b_type = DRD64_LIBGOBLIN_BINFO_TYPE_ELF64; }
+ { p_bin->b_type = LIBGOBLIN_BINFO_TYPE_ELF64; }
else if( ELFCLASS32 == *(pb_data + EI_CLASS) )
- { p_bin->b_type = DRD64_LIBGOBLIN_BINFO_TYPE_ELF32; }
+ { p_bin->b_type = LIBGOBLIN_BINFO_TYPE_ELF32; }
/* Analyze ELF Ident Header from Endian ---*/
if( ELFDATA2LSB == *(pb_data + EI_DATA) )
- { p_bin->b_endian = DRD64_LIBGOBLIN_BINFO_ENDIAN_LITTLE; }
+ { p_bin->b_endian = LIBGOBLIN_BINFO_ENDIAN_LITTLE; }
else if( ELFDATA2MSB == *(pb_data + EI_DATA) )
- { p_bin->b_endian = DRD64_LIBGOBLIN_BINFO_ENDIAN_BIG; }
+ { p_bin->b_endian = LIBGOBLIN_BINFO_ENDIAN_BIG; }
/* Alloc BinaryInfo Format Struct Area from bits ---*/
- if( DRD64_LIBGOBLIN_BINFO_TYPE_ELF64 == p_bin->b_type ) {
- p_bin->p_format = Drd64_LibGoblin_Elf64_AllocFormat();
+ if( LIBGOBLIN_BINFO_TYPE_ELF64 == p_bin->b_type ) {
+ p_bin->p_format = LibGoblin_Elf64_AllocFormat();
}
- else if( DRD64_LIBGOBLIN_BINFO_TYPE_ELF32 == p_bin->b_type ) {
- p_bin->p_format = Drd64_LibGoblin_Elf32_AllocFormat();
+ else if( LIBGOBLIN_BINFO_TYPE_ELF32 == p_bin->b_type ) {
+ p_bin->p_format = LibGoblin_Elf32_AllocFormat();
}
if( NULL == p_bin->p_format ) {
return 0x01;
}
/* Analyze ELF Header */
- if( DRD64_LIBGOBLIN_BINFO_TYPE_ELF64 == p_bin->b_type ) {
- Drd64_LibGoblin_Elf64_Analyze( p_bin );
+ if( LIBGOBLIN_BINFO_TYPE_ELF64 == p_bin->b_type ) {
+ LibGoblin_Elf64_Analyze( p_bin );
}
- else if( DRD64_LIBGOBLIN_BINFO_TYPE_ELF32 == p_bin->b_type ) {
+ else if( LIBGOBLIN_BINFO_TYPE_ELF32 == p_bin->b_type ) {
}
typedef struct {
Elf64_Ehdr *p_elfhdr;
-} Drd64_LibGoblin_BinaryInfo_Elf64;
+} LibGoblin_BinaryInfo_Elf64;
typedef struct {
Elf32_Ehdr *p_elfhdr;
-} Drd64_LibGoblin_BinaryInfo_Elf32;
+} LibGoblin_BinaryInfo_Elf32;
LIBGOBLIN_ELF_EXTERN
int
- Drd64_LibGoblin_IsElf(
+ LibGoblin_IsElf(
Byte *p_data );
#endif /* DRD64_HEADER_LIBGOBLIN_BINFO */
----------------------------------------------------------------------*/
LIBGOBLIN_FUNC
int
- Drd64_LibGoblin_Init(
+ LibGoblin_Init(
void )
{
int i_err;
- i_err = Drd64_LibGoblin_InitBinaryInfo();
+ i_err = LibGoblin_InitBinaryInfo();
if( 0x00 != i_err ) { return i_err; }
return 0x00;
----------------------------------------------------------------------*/
LIBGOBLIN_FUNC
int
- Drd64_LibGoblin_Term(
+ LibGoblin_Term(
void )
{
int i_err;
- i_err = Drd64_LibGoblin_TermBinaryInfo();
+ i_err = LibGoblin_TermBinaryInfo();
if( 0x00 != i_err ) { return i_err; }
return 0x00;
p_head = mmap( NULL, t_sb.st_size, PROT_READ, MAP_SHARED, i_fd, 0 );
if( MAP_FAILED == p_head ) { goto goto_main_err; }
- Drd64_LibGoblin_AnalyzeBinary( p_head, t_sb.st_size );
+ LibGoblin_Init();
+
+ LibGoblin_AnalyzeBinary( p_head, t_sb.st_size );
+ LibGoblin_Term();
+
i_err = munmap( p_head, t_sb.st_size );
goto_main_err: