OSDN Git Service

2019/02/24(Sun) 18:41
[drdeamon64/drdeamon64.git] / libgoblin / drd64_libgoblin_binfo.h
index 3b83707..d446dcc 100644 (file)
@@ -45,64 +45,57 @@ Comment:
        #define LIBGOBLIN_BINFO_EXTERN  extern
 #endif
 
-#define DRD64_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        DRD64_LIBGOBLIN_BINFO_ENDIAN_NONE       0x00
-#define        DRD64_LIBGOBLIN_BINFO_ENDIAN_LITTLE     0x01
-#define        DRD64_LIBGOBLIN_BINFO_ENDIAN_BIG        0x02
-
-typedef struct {
-       int                     i_id;
-
-       DWord           dw_size;
-       Byte            *p_binary;
-
-       Byte            b_type;
-       Byte            b_endian;
-
-       void            *p_format;
-       
-} Drd64_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 Drd64_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
-       Drd64_LibGoblin_BinaryInfo *
-               Drd64_LibDrd64_BinInfo_AllocBinInfo(
-                       void );
-
+       LibGoblin_BinaryInfo *BinaryInfo_GetBinInfo( int i_bid );
 LIBGOBLIN_BINFO_EXTERN
-       int
-               Drd64_LibGoblin_FreeBinaryInfo(
-                       Drd64_LibGoblin_BinaryInfo *p_binfo );
-
+       int BinInfo_SearchFilename( char *pstr_libname, LibGoblin_BinaryInfo *p_binfo_self );
 LIBGOBLIN_BINFO_EXTERN
-       int
-               Drd64_LibGoblin_InitBinaryInfo(
-                       void );
-
+       const char *BinaryInfo_GetRPath( LibGoblin_BinaryInfo *p_binfo, char *pstr_rpath );
 LIBGOBLIN_BINFO_EXTERN
-       int
-               Drd64_LibGoblin_TermBinaryInfo(
-                       void );
-
+       int BinaryInfo_SetRPath(
+                       LibGoblin_BinaryInfo *p_binfo, const char *pstr_rpath );
+LIBGOBLIN_BINFO_EXTERN
+       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
-       Drd64_LibGoblin_BinaryInfo *
-               Drd64_LibGoblin_BInfo_GetBinaryInfo(
-                       int i_bid );
+       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 */