OSDN Git Service

2018/12/14
authorKoine Yuusuke(koinec) <koinec@users.osdn.me>
Fri, 14 Dec 2018 12:14:18 +0000 (21:14 +0900)
committerKoine Yuusuke(koinec) <koinec@users.osdn.me>
Fri, 14 Dec 2018 12:14:18 +0000 (21:14 +0900)
  * WorkBackup

libgoblin/drd64_libgoblin_objinfo.c
libgoblin/drd64_libgoblin_type.h

index 2b51a9e..79fb08a 100644 (file)
@@ -143,6 +143,59 @@ LibGoblin_ObjectInfo *
 /*----------------------------------------------------------------------
 ----------------------------------------------------------------------*/
 LIBGOBLIN_OBJINFO_EXTERN
+LibGoblin_ObjectInfo *
+       ObjectInfo_AllocStaticObject(
+                       LibGoblin_ProgramInfo   *p_pginfo,
+                       Ptr                                             ptr_address,
+                       QWord                                   qw_size )
+{
+       LibGoblin_ObjectInfo    *p_objinfo;
+       LibGoblin_ObjectInfo    *p_objnow;
+
+       p_objinfo       = ObjectInfo_AllocObjectInfo( p_pginfo );
+       if( NULL == p_objinfo )
+               { goto  goto_ObjectInfo_AllocStaticObject_post; }
+
+       if( -0x01 == p_pginfo->i_top_objinfo )  {
+               p_pginfo->i_top_objinfo = p_objinfo->i_id;
+               goto    goto_ObjectInfo_AllocStaticObject_post;
+       }
+
+       p_objnow        = OBJINFO( p_pginfo, p_pginfo->i_top_objinfo );
+       assert( NULL != p_objnow );
+
+       /// XXX 2018/11/27
+       do      {
+
+
+       }while( -0x01 == p_objnow->i_next_id );
+
+
+goto_ObjectInfo_AllocStaticObject_post:
+       return p_objinfo;
+}
+
+
+/*----------------------------------------------------------------------
+----------------------------------------------------------------------*/
+LIBGOBLIN_OBJINFO_EXTERN
+LibGoblin_ObjectInfo *
+       ObjectInfo_AllocWorkObject(
+                       LibGoblin_ProgramInfo   *p_pginfo,
+                       LibGoblin_ObjectInfo    *p_objtop,
+                       Ptr                                             ptr_address )
+{
+       LibGoblin_ObjectInfo    *p_objinfo;
+
+       p_objinfo       = ObjectInfo_AllocObjectInfo( p_pginfo );
+
+       return p_objinfo;
+}
+
+
+/*----------------------------------------------------------------------
+----------------------------------------------------------------------*/
+LIBGOBLIN_OBJINFO_EXTERN
 int
        ObjectInfo_FreeObjectInfo(
                LibGoblin_ProgramInfo   *p_pginfo,
index eb54201..916de91 100644 (file)
@@ -68,10 +68,14 @@ typedef     struct  {
        DWord   dw_size;                // Object Size (Address Range)
        char    *pstr_name;             // Object Name (Param./Func./etc...)
        //DWord dw_srcid;               // SourceInfo struct ID
-       DWord   dw_next;
        Byte    b_elf_flags;
        Word    w_secid;                // SectionInfo ItemIndex belong with this object.
 
+       int             i_dynamic_id;   // Child-Top ObjectInfo (use only Dynamic Mode)
+       int             i_parent_id;    // Parent ObjectInfo
+       int             i_next_id;              // Next Address ObjectInfo
+       int             i_prev_id;              // Prev Address ObjectInfo
+
 } LibGoblin_ObjectInfo;
 
 
@@ -214,9 +218,10 @@ typedef    struct  {
 
        // Object Table & Address Table ---
        LibGoblin_ObjectInfo    *p_objinfo;
-       int                                             i_alloc_objinfo;
-       int                                             i_max_objinfo;
-       int                                             i_now_objinfo;
+       int                                             i_alloc_objinfo;        // Alloced ObjectInfo
+       int                                             i_max_objinfo;          // ObjectInfo Max ID
+       int                                             i_now_objinfo;          // ObjectInfo Items
+       int                                             i_top_objinfo;          // Top-Ptr ObjectInfo
        LibGoblin_AddressInfo   *p_addrinfo;