#define LIBGOBLIN_BINFO_EXTERN extern
#endif
-#define LIBGOBLIN_BINFO_UNITS 8
-
-#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 IsBinfoType_Elf64(n) \
- ((LIBGOBLIN_BINFO_TYPE_ELF64==((n)->b_type)) ? 0x01 : 0x00)
-#define IsBinfoType_Elf32(n) \
- ((LIBGOBLIN_BINFO_TYPE_ELF32==((n)->b_type)) ? 0x01 : 0x00)
-
-#define LIBGOBLIN_BINFO_ENDIAN_NONE 0x00
-#define LIBGOBLIN_BINFO_ENDIAN_LITTLE 0x01
-#define LIBGOBLIN_BINFO_ENDIAN_BIG 0x02
-
-#define LIBGOBLIN_BINFO_SECTION_TEXT 0x00
-#define LIBGOBLIN_BINFO_SECTION_DATA 0x01
-#define LIBGOBLIN_BINFO_SECTION_BSS 0x02
-
-
-typedef struct {
- /* BinaryInfo Struct ID */
- int i_id;
-
- /* Binary-File Info. */
- int i_fd;
- char str_filepath[DRD64_MAX_PATH];
-
- /* Binary-File Memory Image Access Info. */
- DWord dw_size;
- Byte *p_binary;
-
- /* BinaryInfo Common Info. */
- Byte b_type;
- Byte b_endian;
- Byte b_bits;
-
- /* Binary-Format Depending Info. (ELF)*/
- void *p_format;
- /* Debug-Format Depending Info. (DWarf) */
- void *p_debug;
-
- /* Section Table */
- int i_num_sectbl;
- LibGoblin_SectionTable *p_sectbl;
-
-} LibGoblin_BinaryInfo;
-
+#if defined DRD64_SRC_LIBGOBLIN_BINFO
+ #define LIBGOBLIN_BINFO_INTERNALFUNC
+#elif defined DRD64_SRC_TEST_LIBGOBLIN_BINFO
+ #define LIBGOBLIN_BINFO_INTERNALFUNC
+#endif
+#define LIBGOBLIN_BINFO_UNITS 8
-LIBGOBLIN_BINFO_EXTERN LibGoblin_BinaryInfo *gp_binary_info;
-LIBGOBLIN_BINFO_EXTERN int gi_max_binary_info;
-LIBGOBLIN_BINFO_EXTERN int gi_now_binary_info;
+#ifdef DRD64_SRC_LIBGOBLIN_BINFO
+LibGoblin_BinaryInfo *gp_binary_info = NULL;
+int gi_alloc_binary_info = 0;
+int gi_max_binary_info = 0;
+int gi_now_binary_info = 0;
+#endif
+#define BINFO(n) ((LibGoblin_BinaryInfo *)(gp_binary_info + (n)))
+#define BINFOID(n) ((n)->i_id)
LIBGOBLIN_BINFO_EXTERN
- LibGoblin_BinaryInfo *
- LibDrd64_BinInfo_AllocBinInfo(
- void );
-
+ LibGoblin_BinaryInfo *BinaryInfo_GetBinInfo( int i_bid );
LIBGOBLIN_BINFO_EXTERN
- int
- LibGoblin_FreeBinaryInfo(
- LibGoblin_BinaryInfo *p_binfo );
-
+ int BinInfo_SearchFilename( char *pstr_libname, LibGoblin_BinaryInfo *p_binfo_self );
LIBGOBLIN_BINFO_EXTERN
- int
- LibGoblin_InitBinaryInfo(
- void );
-
+ const char *BinaryInfo_GetRPath( LibGoblin_BinaryInfo *p_binfo, char *pstr_rpath );
LIBGOBLIN_BINFO_EXTERN
- int
- LibGoblin_TermBinaryInfo(
- void );
-
+ int BinaryInfo_SetRPath(
+ LibGoblin_BinaryInfo *p_binfo, const char *pstr_rpath );
LIBGOBLIN_BINFO_EXTERN
- LibGoblin_BinaryInfo *
- LibGoblin_BInfo_GetBinaryInfo(
- int i_bid );
+ int BinaryInfo_SetRunPath(
+ LibGoblin_BinaryInfo *p_binfo, const char *pstr_runpath );
+LIBGOBLIN_BINFO_EXTERN
+ int BinaryInfo_SetProgramPath(
+ LibGoblin_BinaryInfo *p_binfo, const char *pstr_progpath, const char *pstr_realpath );
+LIBGOBLIN_BINFO_EXTERN
+ LibGoblin_BinaryInfo *BinaryInfo_AllocBinInfo(
+ LibGoblin_ProgramInfo *p_pginfo, const char *pstr_filename, int i_parent_bid );
+LIBGOBLIN_BINFO_EXTERN
+ int BinaryInfo_FreeBinInfo( LibGoblin_BinaryInfo *p_binfo );
+LIBGOBLIN_BINFO_EXTERN
+ int BinaryInfo_Init( void );
+LIBGOBLIN_BINFO_EXTERN
+ int BinaryInfo_Term( void );
+
+#ifdef LIBGOBLIN_BINFO_INTERNALFUNC
+ void BinaryInfo_ClearBinInfo( LibGoblin_BinaryInfo *p_binfo );
+ int BinInfo_AppendChain( LibGoblin_BinaryInfo *p_binfo_now );
+ int BinInfo_DeleteChain( LibGoblin_BinaryInfo *p_binfo_del );
+#endif
#endif /* DRD64_HEADER_LIBGOBLIN_BINFO */