OSDN Git Service

2019/02/24(Sun) 18:41
[drdeamon64/drdeamon64.git] / libgoblin / drd64_libgoblin_binfo.h
index 3fb1377..d446dcc 100644 (file)
@@ -45,88 +45,56 @@ Comment:
        #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 */