OSDN Git Service

(LibGoblin)
authorKoine Yuusuke(koinec) <koinec@users.osdn.me>
Tue, 20 Aug 2019 06:34:35 +0000 (15:34 +0900)
committerKoine Yuusuke(koinec) <koinec@users.osdn.me>
Tue, 20 Aug 2019 06:34:35 +0000 (15:34 +0900)
  * WorkBackup

libgoblin/drd64_libgoblin_debug_objinfo.c
libgoblin/drd64_libgoblin_dwarf_tag_compileunit.c
libgoblin/drd64_libgoblin_elf_proghdr.c
libgoblin/drd64_libgoblin_elf_rela.c
libgoblin/drd64_libgoblin_elf_symtab.c
libgoblin/drd64_libgoblin_objinfo.c
libgoblin/drd64_libgoblin_objinfo.h
libgoblin/drd64_libgoblin_section.c
libgoblin/drd64_libgoblin_type.h
libgoblin/test_libgoblin_objinfo.c

index dfcfd80..640b403 100644 (file)
@@ -39,53 +39,39 @@ Comment:
 
 static char    gstr_type[256][9]       = {
        "NULL",                 // 0x00
-       "PROGRAM",              // 0x01
-       "MASTER",               // 0x02
+       "MASTER",               // 0x01
+       "PROGRAM",              // 0x02
        "PROGHDR",              // 0x03
        "SECTION",              // 0x04
-       "FUNCTION",             // 0x05
-       "OBJECT",               // 0x06
-       "COMMON",               // 0x07
-       "TLS",                  // 0x08
-       "REL",                  // 0x09
-       "OBJFILE",              // 0x0a
+       "OBJFILE",              // 0x05
+       "FUNCTION",             // 0x06
+       "OBJECT",               // 0x07
+
+       "COMMON",               // 0x08
+       "TLS",                  // 0x09
+       "REL",                  // 0x0a
        "",                             // 0x0b
        "",                             // 0x0c
        "",                             // 0x0d
-       "",                             // 0x0e
-       "",                             // 0x0f
-
-       "TYPE(SIG)",    // 0x10
-       "TYPE(MUL)",    // 0x11
-       "", "", "", "", "", "",
-       "", "", "", "", "", "", "", "",
-       "", "", "", "", "", "", "", "",
-       "", "", "", "", "", "", "", "",
-       "", "", "", "", "", "", "", "",
-
-       "", "", "", "", "", "", "", "",
-       "", "", "", "", "", "", "", "",
-       "", "", "", "", "", "", "", "",
-       "", "", "", "", "", "", "", "",
-       "", "", "", "", "", "", "", "",
-       "", "", "", "", "", "", "", "",
-       "", "", "", "", "", "", "", "",
-
-       "", "", "", "", "", "", "", "",
-       "", "", "", "", "", "", "", "",
-       "", "", "", "", "", "", "", "",
-       "", "", "", "", "", "", "", "",
-       "", "", "", "", "", "", "", "",
-       "", "", "", "", "", "", "", "",
-       "", "", "", "", "", "", "", "",
-
-       "", "", "", "", "", "", "", "",
-       "", "", "", "", "", "", "", "",
-       "", "", "", "", "", "", "", "",
-       "", "", "", "", "", "", "", "",
-       "", "", "", "", "", "", "", "",
-       "", "", "", "", "", "", "", "",
-       "", "", "", "", "", "", "", ""
+       "TYPE(SIG)",    // 0x0e
+       "TYPE(MUL)",    // 0x0f
+       "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
+       "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
+       "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
+       "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
+       "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
+       "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
+       "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", 
+       "NONE",
+
+       "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
+       "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
+       "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
+       "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
+       "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
+       "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
+       "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
+       "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""
 };
 
 /*====================================================================*/
@@ -513,6 +499,9 @@ void
                        Debug_ObjectInfo_Print_Section( p_obj, pstr_space, b_level );
                        break;
 
+               case OBJINFO_TYPE_OBJFILE:
+                       break;
+
                case OBJINFO_TYPE_FUNCTION:
                        Debug_ObjectInfo_Print_Function( p_obj, pstr_space, b_level );
                        break;
index c71f45d..4bc6411 100644 (file)
@@ -158,8 +158,9 @@ int
                p_obj   = ObjectInfo_InsetObject(
                                                        p_pginfo, t_ranges.ptr_low[i_cnt].value,
                                                        (QWord)(t_ranges.ptr_high[i_cnt].value - t_ranges.ptr_low[i_cnt].value),
-                                                       NULL, OBJINFO_INSETMODE_INSET | OBJINFO_INSETMODE_ADOPT );
-               p_obj->b_type           = OBJINFO_TYPE_OBJFILE;
+                                                       NULL, OBJINFO_INSETMODE_INSET | OBJINFO_INSETMODE_ADOPT,
+                                                       OBJINFO_TYPE_OBJFILE );
+               //p_obj->b_type         = OBJINFO_TYPE_OBJFILE;
                p_obj->pstr_name        = pval_name->value.pstr_value;
                p_obj->dw_hash          = Common_CalcDJBhash( pval_name->value.pstr_value );
                
index d1c11a7..a530640 100644 (file)
@@ -87,12 +87,12 @@ int
 
        p_objinfo       = ObjectInfo_InsetObject(
                                                        p_pginfo, ptr_start, (ptr_end - ptr_start), NULL,
-                                                       OBJINFO_INSETMODE_PUT );
+                                                       OBJINFO_INSETMODE_PUT, OBJINFO_TYPE_PROGRAM );
        if( NULL == p_objinfo ) {
                return -0x01;
        }
 
-       p_objinfo->b_type               = OBJINFO_TYPE_PROGRAM;
+       //p_objinfo->b_type             = OBJINFO_TYPE_PROGRAM;
        p_objinfo->pstr_name    = p_binfo->str_filename;
        p_objinfo->info.program.i_binfo_id      = p_binfo->i_id;
 
@@ -112,13 +112,14 @@ int
                p_objinfo       = ObjectInfo_InsetObject(
                                                        p_pginfo, ((PtrValue)p_proghdr->p_vaddr + p_binfo->ptr_loadbase),
                                                        p_proghdr->p_memsz, NULL,
-                                                       OBJINFO_INSETMODE_INSET | OBJINFO_INSETMODE_ADOPT );
+                                                       OBJINFO_INSETMODE_INSET | OBJINFO_INSETMODE_ADOPT,
+                                                       OBJINFO_TYPE_PROGHDR );
                if( NULL == p_objinfo ) {
                        return -0x02;
                }
 
                // Set ProgramHdr Value to ObjectInfo  ---
-               p_objinfo->b_type                       = OBJINFO_TYPE_PROGHDR;
+               //p_objinfo->b_type                     = OBJINFO_TYPE_PROGHDR;
 
                p_objinfo->file.i_binfile       = p_binfo->i_binfile;
                //   p_offset - File offset of contents.
index 5141105..610aa41 100644 (file)
@@ -211,8 +211,9 @@ int
                        // r_offset -  Location to be relocated.
                        pobj_rel        = ObjectInfo_InsetObject(
                                                        p_pginfo, ((PtrValue)pelf_rela->r_offset + p_binfo->ptr_loadbase),
-                                                       sizeof( void * ), NULL, OBJINFO_INSETMODE_INSET | OBJINFO_INSETMODE_ADOPT );
-                       pobj_rel->b_type        = OBJINFO_TYPE_REL;
+                                                       sizeof( void * ), NULL, OBJINFO_INSETMODE_INSET | OBJINFO_INSETMODE_ADOPT,
+                                                       OBJINFO_TYPE_REL );
+                       //pobj_rel->b_type      = OBJINFO_TYPE_REL;
                }
                assert( NULL != pobj_rel );
 
index 8c56507..00b79da 100644 (file)
@@ -50,6 +50,8 @@ LibGoblin_ObjectInfo *
                        Elf64_Sym       *p_sym,
                        Byte            *pb_strtab )
 {
+       Byte                                    b_symtype;
+       Byte                                    b_objtype;
        LibGoblin_SrcFile               *p_srcfile;
        LibGoblin_BinaryFile    *p_bfile;
        LibGoblin_ObjectInfo    *p_obj  = NULL;
@@ -71,22 +73,51 @@ LibGoblin_ObjectInfo *
                goto    goto_ELF64_Symtab_RegistSymbol_toObjectInfo_post;
        }
 
+       // st_info - Type and binding information.
+       b_symtype       = ELF64_ST_TYPE( p_sym->st_info );
+       switch( ELF64_ST_TYPE( p_sym->st_info ) )       {
+               // Unspecified type.
+               case STT_NOTYPE:
+                       b_objtype       = OBJINFO_TYPE_NONE;            break;
+               // Data object.
+               case STT_OBJECT:
+                       b_objtype       = OBJINFO_TYPE_OBJECT;          break;
+               // Function.
+               case STT_FUNC:
+                       b_objtype       = OBJINFO_TYPE_FUNCTION;        break;
+               // Section.
+               case STT_SECTION:
+                       b_objtype       = OBJINFO_TYPE_SECTION;         break;
+               // Uninitialized common block.
+               case STT_COMMON:
+                       b_objtype       = OBJINFO_TYPE_COMMON;          break;
+               // TLS object.
+               case STT_TLS:
+                       b_objtype       = OBJINFO_TYPE_TLS;                     break;
+               default:
+                       b_objtype       = OBJINFO_TYPE_NONE;            break;
+       }
+
        // st_value - Symbol value.
        // st_size - Size of associated object.
        p_obj   = ObjectInfo_InsetObject(
                                        p_pginfo, ptr_loadaddr, qw_size, NULL,
-                                       OBJINFO_INSETMODE_INSET | OBJINFO_INSETMODE_ADOPT );
+                                       OBJINFO_INSETMODE_INSET | OBJINFO_INSETMODE_ADOPT, b_objtype );
+
+       p_obj->info.symbol.b_type       = b_symtype;
+       p_obj->b_type                           = b_objtype;
 
        // st_name - String table index of name.
        p_obj->pstr_name        = (char *)(pb_strtab + p_sym->st_name);
        p_obj->dw_hash          = Common_CalcDJBhash( (char *)(pb_strtab + p_sym->st_name) );
 
+/*
        // st_info - Type and binding information.
        p_obj->info.symbol.b_type       = ELF64_ST_TYPE( p_sym->st_info );
        switch( ELF64_ST_TYPE( p_sym->st_info ) )       {
                // Unspecified type.
                case STT_NOTYPE:
-                       p_obj->b_type   = OBJINFO_TYPE_NULL;            break;
+                       p_obj->b_type   = OBJINFO_TYPE_NONE;            break;
                // Data object.
                case STT_OBJECT:
                        p_obj->b_type   = OBJINFO_TYPE_OBJECT;          break;
@@ -103,9 +134,9 @@ LibGoblin_ObjectInfo *
                case STT_TLS:
                        p_obj->b_type   = OBJINFO_TYPE_TLS;             break;
                default:
-                       p_obj->b_type   = OBJINFO_TYPE_NULL;            break;
+                       p_obj->b_type   = OBJINFO_TYPE_NONE;            break;
        }
-
+*/
        // st_info - Type and binding information.
        p_obj->info.symbol.b_binding    = ELF64_ST_BIND( p_sym->st_info );
 
index 5e4f94f..25189af 100644 (file)
@@ -219,6 +219,7 @@ int
 
        p_objinfo->addr.ptr_addr.value  = 0x0000000000000000;
        p_objinfo->addr.qw_size                 = 0xffffffffffffffff;
+       p_objinfo->b_type                               = OBJINFO_TYPE_MASTER;
 
        p_pginfo->objinfo.i_topid       = p_objinfo->i_id;
 
@@ -339,7 +340,8 @@ LibGoblin_ObjectInfo *
                        PtrValue                                ptr_value,
                        QWord                                   qw_size,
                        LibGoblin_ObjectInfo    *p_parent,
-                       Byte                                    b_mode )
+                       Byte                                    b_mode,
+                       Byte                                    b_type )
 {
        int                                             i_result        = 0x00;
        LibGoblin_ObjectInfo    *p_objinfo      = NULL;
@@ -371,6 +373,7 @@ LibGoblin_ObjectInfo *
 
        p_objinfo->addr.ptr_addr.value  = ptr_value;
        p_objinfo->addr.qw_size                 = qw_size;
+       p_objinfo->b_type                               = b_type;
 
        // Search ObjectInfo Inset Location. (Address Order)*****************
        p_objnow        = OBJINFO( p_pginfo, p_pginfo->objinfo.i_topid );
@@ -388,6 +391,13 @@ LibGoblin_ObjectInfo *
 
                if( ptr_value == p_objnow->addr.ptr_addr.value )        {
                        if( qw_size > p_objnow->addr.qw_size )  { break; }
+//VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
+/*
+                       else if( qw_size == p_objnow->addr.qw_size )    {
+                               if( b_type < p_objnow->b_type )         { p_objover     = p_objnow; }
+                       }
+*/
+//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
                }
                else if( ptr_value < p_objnow->addr.ptr_addr.value )    { break; }
                
@@ -559,25 +569,6 @@ goto_ObjectInfo_SearchDynamicSymbol_post:
 
 /*----------------------------------------------------------------------
 ----------------------------------------------------------------------*/
-/*
-LIBGOBLIN_OBJINFO_EXTERN
-LibGoblin_ObjectInfo *
-       ObjectInfo_AllocWorkObject(
-                       LibGoblin_ProgramInfo   *p_pginfo,
-                       LibGoblin_ObjectInfo    *p_objtop,
-                       Ptr                                             ptr_addr )
-{
-       LibGoblin_ObjectInfo    *p_objinfo;
-
-       p_objinfo       = ObjectInfo_AllocObjectInfo( p_pginfo );
-
-       return p_objinfo;
-}
-*/
-
-
-/*----------------------------------------------------------------------
-----------------------------------------------------------------------*/
 #define        FUNCID_LibGoblin_ObjectInfo_FreeObjectInfo      0x12
 LIBGOBLIN_OBJINFO_EXTERN
 int
index 8ef9d34..bda637c 100644 (file)
@@ -79,7 +79,7 @@ LIBGOBLIN_OBJINFO_EXTERN
 LIBGOBLIN_OBJINFO_EXTERN
        LibGoblin_ObjectInfo *ObjectInfo_InsetObject(
                        LibGoblin_ProgramInfo *p_pginfo, PtrValue ptr_value, QWord qw_size,
-            LibGoblin_ObjectInfo *p_parent, Byte b_mode );
+            LibGoblin_ObjectInfo *p_parent, Byte b_mode, Byte b_type );
 LIBGOBLIN_OBJINFO_EXTERN
        LibGoblin_ObjectInfo *ObjectInfo_SearchAddressSize(
                        LibGoblin_ProgramInfo *p_pginfo, PtrValue ptr_value, QWord qw_size );
index 18d1dbe..0abe24f 100644 (file)
@@ -183,9 +183,10 @@ int
                // sh_size - Size in bytes.
                p_objinfo       = ObjectInfo_InsetObject(
                                                        p_pginfo, p_section->ptr_addr.value, p_section->qw_size, NULL,
-                                                       OBJINFO_INSETMODE_INSET | OBJINFO_INSETMODE_ADOPT );
+                                                       OBJINFO_INSETMODE_INSET | OBJINFO_INSETMODE_ADOPT,
+                                                       OBJINFO_TYPE_SECTION );
 
-               p_objinfo->b_type                       = OBJINFO_TYPE_SECTION;
+               //p_objinfo->b_type                     = OBJINFO_TYPE_SECTION;
 
                p_objinfo->file.i_binfile       = p_section->i_binfile;
                // sh_offset - Offset in file.
index 0a775dc..2c8c709 100644 (file)
@@ -90,18 +90,19 @@ typedef struct      {
 #define        OBJINFO_STATUS_SOLVED   0x00001000
 
 #define        OBJINFO_TYPE_NULL                       0x00
-#define        OBJINFO_TYPE_PROGRAM            0x01
-#define        OBJINFO_TYPE_MASTER                     0x02
+#define        OBJINFO_TYPE_MASTER                     0x01
+#define        OBJINFO_TYPE_PROGRAM            0x02
 #define        OBJINFO_TYPE_PROGHDR            0x03
 #define        OBJINFO_TYPE_SECTION            0x04
-#define        OBJINFO_TYPE_FUNCTION           0x05
-#define        OBJINFO_TYPE_OBJECT                     0x06
-#define        OBJINFO_TYPE_COMMON                     0x07
-#define        OBJINFO_TYPE_TLS                        0x08
-#define        OBJINFO_TYPE_REL                        0x09
-#define        OBJINFO_TYPE_OBJFILE            0x0a
-#define        OBJINFO_TYPE_TYPE_SINGLE        0x10
-#define        OBJINFO_TYPE_TYPE_MULTI         0x11
+#define        OBJINFO_TYPE_OBJFILE            0x05
+#define        OBJINFO_TYPE_FUNCTION           0x06
+#define        OBJINFO_TYPE_OBJECT                     0x07
+#define        OBJINFO_TYPE_COMMON                     0x08
+#define        OBJINFO_TYPE_TLS                        0x09
+#define        OBJINFO_TYPE_REL                        0x0a
+#define        OBJINFO_TYPE_TYPE_SINGLE        0x0e
+#define        OBJINFO_TYPE_TYPE_MULTI         0x0f
+#define        OBJINFO_TYPE_NONE                       0x7f
 
 typedef        struct  {
        int             i_id;
index 75c09c3..a36dd70 100644 (file)
@@ -78,7 +78,7 @@ void Test_ObjectInfo_InsetDelete_test00_001(
        LibGoblin_ObjectInfo    *p_objmaster;
 
        // Alloc ---
-       p_objinfo       = ObjectInfo_InsetObject( p_pginfo, 0x00000000, 0x00100000, NULL, 0x00 );
+       p_objinfo       = ObjectInfo_InsetObject( p_pginfo, 0x00000000, 0x00100000, NULL, 0x00, OBJINFO_TYPE_NONE );
        Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 1, 0, NO_OBJ, NO_OBJ, NO_OBJ );
        CU_ASSERT( 0 == p_pginfo->objinfo.i_topid );
 
@@ -111,13 +111,13 @@ void Test_ObjectInfo_InsetDelete_test00_002(
        // Scenery 1 ......................................................
        // Alloc ---
        qw_addr = 0x0000000000000000;
-       p_objinfo       = ObjectInfo_InsetObject( p_pginfo, qw_addr, 0x10000000, NULL, 0x00 );
+       p_objinfo       = ObjectInfo_InsetObject( p_pginfo, qw_addr, 0x10000000, NULL, 0x00, OBJINFO_TYPE_NONE );
        Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 1, 0, NO_OBJ, NO_OBJ, NO_OBJ );
 
        qw_addr += 0x00100000;
 
        for( i_cnt = 2; i_cnt < 10000; i_cnt++ )        {
-               p_objinfo       = ObjectInfo_InsetObject( p_pginfo, qw_addr, 0x10000000, NULL, 0x00 );
+               p_objinfo       = ObjectInfo_InsetObject( p_pginfo, qw_addr, 0x10000000, NULL, 0x00, OBJINFO_TYPE_NONE );
                Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, i_cnt, 0, NO_OBJ, i_cnt - 1, NO_OBJ );
 
                qw_addr += 0x00000100;
@@ -146,12 +146,12 @@ void Test_ObjectInfo_InsetDelete_test00_002(
        // Scenery 2 ......................................................
        // Alloc ---
        qw_size         = 0x0000000000000001;
-       p_objinfo       = ObjectInfo_InsetObject( p_pginfo, 0x1000000000000000, qw_size, NULL, 0x00 );
+       p_objinfo       = ObjectInfo_InsetObject( p_pginfo, 0x1000000000000000, qw_size, NULL, 0x00, OBJINFO_TYPE_NONE );
        Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 9999, 0, NO_OBJ, NO_OBJ, NO_OBJ );
 
        for( i_cnt = 2; i_cnt < 10; i_cnt++ )   {
                qw_size         <<= 1;
-               p_objinfo       = ObjectInfo_InsetObject( p_pginfo,  0x1000000000000000, qw_size, NULL, 0x00 );
+               p_objinfo       = ObjectInfo_InsetObject( p_pginfo,  0x1000000000000000, qw_size, NULL, 0x00, OBJINFO_TYPE_NONE );
                Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, (10000 - i_cnt), 0, NO_OBJ, NO_OBJ, (10001 - i_cnt) );
        }
 
@@ -178,12 +178,12 @@ void Test_ObjectInfo_InsetDelete_test00_002(
        // Scenery 3 ......................................................
        // Alloc ---
        qw_addr = 0x10000000;
-       p_objinfo       = ObjectInfo_InsetObject( p_pginfo, qw_addr, 0x20000000, NULL, 0x00 );
+       p_objinfo       = ObjectInfo_InsetObject( p_pginfo, qw_addr, 0x20000000, NULL, 0x00, OBJINFO_TYPE_NONE );
        Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 9999, 0, NO_OBJ, NO_OBJ, NO_OBJ );
 
        for( i_cnt = 2; i_cnt < 10; i_cnt++ )   {
                qw_addr += 0x10000000;
-               p_objinfo       = ObjectInfo_InsetObject( p_pginfo, qw_addr, 0x20000000, NULL, 0x00 );
+               p_objinfo       = ObjectInfo_InsetObject( p_pginfo, qw_addr, 0x20000000, NULL, 0x00, OBJINFO_TYPE_NONE );
                Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, (10000 - i_cnt), 0, NO_OBJ, (10001 - i_cnt), NO_OBJ );
        }
 
@@ -236,14 +236,14 @@ void Test_ObjectInfo_InsetDelete_test00_003(
        // Alloc ---
        qw_addr = 0x10000000;
        qw_size = 0x10000000;
-       p_objinfo       = ObjectInfo_InsetObject( p_pginfo, qw_addr, qw_size, NULL, 0x00 );
+       p_objinfo       = ObjectInfo_InsetObject( p_pginfo, qw_addr, qw_size, NULL, 0x00, OBJINFO_TYPE_NONE );
        Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 1, 0, NO_OBJ, NO_OBJ, NO_OBJ );
 
        for( i_cnt = 2; i_cnt < 6; i_cnt++ )    {
                qw_addr += 0x00010000;
                qw_size >>= 1;
                p_objparent     = p_objinfo;
-               p_objinfo       = ObjectInfo_InsetObject( p_pginfo, qw_addr, qw_size, p_objparent, 0x00 );
+               p_objinfo       = ObjectInfo_InsetObject( p_pginfo, qw_addr, qw_size, p_objparent, 0x00, OBJINFO_TYPE_NONE );
                Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, i_cnt, p_objparent->i_id, NO_OBJ, NO_OBJ, NO_OBJ );
                Test_ObjectInfo_CUAssert_GrpLink( p_objparent, (i_cnt - 1), (i_cnt - 2), i_cnt, NO_OBJ, NO_OBJ );
        }
@@ -252,7 +252,7 @@ void Test_ObjectInfo_InsetDelete_test00_003(
                qw_addr += 0x00010000;
                qw_size >>= 1;
                p_objparent     = p_objinfo;
-               p_objinfo       = ObjectInfo_InsetObject( p_pginfo, qw_addr, qw_size, NULL, 0x01 );
+               p_objinfo       = ObjectInfo_InsetObject( p_pginfo, qw_addr, qw_size, NULL, 0x01, OBJINFO_TYPE_NONE );
                Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, i_cnt, p_objparent->i_id, NO_OBJ, NO_OBJ, NO_OBJ );
                Test_ObjectInfo_CUAssert_GrpLink( p_objparent, (i_cnt - 1), (i_cnt - 2), i_cnt, NO_OBJ, NO_OBJ );
        }
@@ -310,73 +310,73 @@ void Test_ObjectInfo_InsetDelete_test00_004_Alloc(
        // Scenery 1 ......................................................
        // Alloc ---
        //   ID01: 00000000h-40000000h
-       p_objinfo       = ObjectInfo_InsetObject( p_pginfo, 0x00000000, 0x40000000, NULL, 0x00 );
+       p_objinfo       = ObjectInfo_InsetObject( p_pginfo, 0x00000000, 0x40000000, NULL, 0x00, OBJINFO_TYPE_NONE );
        Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 1, 0, NO_OBJ, NO_OBJ, NO_OBJ );
 
        //   ID02: 80000000h-c0000000h
-       p_objinfo       = ObjectInfo_InsetObject( p_pginfo, 0x80000000, 0x40000000, NULL, 0x00 );
+       p_objinfo       = ObjectInfo_InsetObject( p_pginfo, 0x80000000, 0x40000000, NULL, 0x00, OBJINFO_TYPE_NONE );
        Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 2, 0, NO_OBJ, 1, NO_OBJ );
 
        //   ID03: 40000000h-80000000h
-       p_objinfo       = ObjectInfo_InsetObject( p_pginfo, 0x40000000, 0x40000000, NULL, 0x00 );
+       p_objinfo       = ObjectInfo_InsetObject( p_pginfo, 0x40000000, 0x40000000, NULL, 0x00, OBJINFO_TYPE_NONE );
        Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 3, 0, NO_OBJ, 1, 2 );
 
        //   ID04: 20000000h-30000000h
        p_objparent     = OBJINFO( p_pginfo, 1 );
        Test_ObjectInfo_CUAssert_GrpLink( p_objparent, 1, 0, NO_OBJ, NO_OBJ, 3 );
 
-       p_objinfo       = ObjectInfo_InsetObject( p_pginfo, 0x20000000, 0x10000000, NULL, 0x01 );
+       p_objinfo       = ObjectInfo_InsetObject( p_pginfo, 0x20000000, 0x10000000, NULL, 0x01, OBJINFO_TYPE_NONE );
        Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 4, 1, NO_OBJ, NO_OBJ, NO_OBJ );
        CU_ASSERT( 4 == p_objparent->grplink.i_child_topid );
 
        //   ID05: 30000000h-40000000h
-       p_objinfo       = ObjectInfo_InsetObject( p_pginfo, 0x30000000, 0x10000000, p_objparent, 0x00 );
+       p_objinfo       = ObjectInfo_InsetObject( p_pginfo, 0x30000000, 0x10000000, p_objparent, 0x00, OBJINFO_TYPE_NONE );
        Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 5, 1, NO_OBJ, 4, NO_OBJ );
 
        //   ID06: 38000000h-58000000h
-       p_objinfo       = ObjectInfo_InsetObject( p_pginfo, 0x38000000, 0x20000000, NULL, 0x00 );
+       p_objinfo       = ObjectInfo_InsetObject( p_pginfo, 0x38000000, 0x20000000, NULL, 0x00, OBJINFO_TYPE_NONE );
        Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 6, 0, NO_OBJ, 1, 3 );
 
        //   ID07: 60000000h-70000000h
-       p_objinfo       = ObjectInfo_InsetObject( p_pginfo, 0x60000000, 0x10000000, NULL, 0x01 );
+       p_objinfo       = ObjectInfo_InsetObject( p_pginfo, 0x60000000, 0x10000000, NULL, 0x01, OBJINFO_TYPE_NONE );
        Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 7, 3, NO_OBJ, NO_OBJ, NO_OBJ );
 
        //   ID08: 70000000h-80000000h
-       p_objinfo       = ObjectInfo_InsetObject( p_pginfo, 0x70000000, 0x10000000, p_objparent, 0x00 );
+       p_objinfo       = ObjectInfo_InsetObject( p_pginfo, 0x70000000, 0x10000000, p_objparent, 0x00, OBJINFO_TYPE_NONE );
        Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 8, 1, NO_OBJ, 5, NO_OBJ );
 
        //   ID09: 80000000h-a0000000h
-       p_objinfo       = ObjectInfo_InsetObject( p_pginfo, 0x80000000, 0x20000000, NULL, 0x00 );
+       p_objinfo       = ObjectInfo_InsetObject( p_pginfo, 0x80000000, 0x20000000, NULL, 0x00, OBJINFO_TYPE_NONE );
        Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 9, 0, NO_OBJ, 2, NO_OBJ );
 
        //   ID10: 21000000h-25000000h
-       p_objinfo       = ObjectInfo_InsetObject( p_pginfo, 0x21000000, 0x04000000, NULL, 0x01 );
+       p_objinfo       = ObjectInfo_InsetObject( p_pginfo, 0x21000000, 0x04000000, NULL, 0x01, OBJINFO_TYPE_NONE );
        Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 10, 4, NO_OBJ, NO_OBJ, NO_OBJ );
 
        //   ID11: 25000000h-29000000h
-       p_objinfo       = ObjectInfo_InsetObject( p_pginfo, 0x25000000, 0x04000000, NULL, 0x01 );
+       p_objinfo       = ObjectInfo_InsetObject( p_pginfo, 0x25000000, 0x04000000, NULL, 0x01, OBJINFO_TYPE_NONE );
        Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 11, 4, NO_OBJ, 10, NO_OBJ );
 
        //   ID12: 38000000h-40000000h
-       p_objinfo       = ObjectInfo_InsetObject( p_pginfo, 0x38000000, 0x08000000, NULL, 0x01 );
+       p_objinfo       = ObjectInfo_InsetObject( p_pginfo, 0x38000000, 0x08000000, NULL, 0x01, OBJINFO_TYPE_NONE );
        Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 12, 5, NO_OBJ, NO_OBJ, NO_OBJ );
 
        //   ID13: 40000000h-44000000h
        p_objparent     = OBJINFO( p_pginfo, 5 );
        Test_ObjectInfo_CUAssert_GrpLink( p_objparent, 5, 1, 12, 4, 8 );
 
-       p_objinfo       = ObjectInfo_InsetObject( p_pginfo, 0x40000000, 0x04000000, p_objparent, 0x00 );
+       p_objinfo       = ObjectInfo_InsetObject( p_pginfo, 0x40000000, 0x04000000, p_objparent, 0x00, OBJINFO_TYPE_NONE );
        Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 13, 5, NO_OBJ, 12, NO_OBJ );
 
        //   ID14: 80000000h-88000000h
        p_objparent     = OBJINFO( p_pginfo, 6 );
        Test_ObjectInfo_CUAssert_GrpLink( p_objparent, 6, 0, NO_OBJ, 1, 3 );
 
-       p_objinfo       = ObjectInfo_InsetObject( p_pginfo, 0x80000000, 0x08000000, p_objparent, 0x00 );
+       p_objinfo       = ObjectInfo_InsetObject( p_pginfo, 0x80000000, 0x08000000, p_objparent, 0x00, OBJINFO_TYPE_NONE );
        Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 14, 6, NO_OBJ, NO_OBJ, NO_OBJ );
 
        //   ID15: 84000000h-8c000000h
-       p_objinfo       = ObjectInfo_InsetObject( p_pginfo, 0x84000000, 0x08000000, p_objparent, 0x00 );
+       p_objinfo       = ObjectInfo_InsetObject( p_pginfo, 0x84000000, 0x08000000, p_objparent, 0x00, OBJINFO_TYPE_NONE );
        Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 15, 6, NO_OBJ, 14, NO_OBJ );
 
        // Check ---
@@ -568,67 +568,67 @@ void Test_ObjectInfo_InsetDelete_test00_005(
        //     ID01: 10000000h - 10100000h
        p_objinfo       = ObjectInfo_InsetObject(
                                                        p_pginfo, 0x10000000, 0x00100000, NULL,
-                                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET );
+                                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET, OBJINFO_TYPE_NONE );
        Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 1, 0, NO_OBJ, NO_OBJ, NO_OBJ );
 
        //   ID02: 10000000h - 20000000h
        p_objinfo       = ObjectInfo_InsetObject(
                                                        p_pginfo, 0x10000000, 0x10000000, NULL,
-                                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET );
+                                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET, OBJINFO_TYPE_NONE );
        Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 2, 0, 1, NO_OBJ, NO_OBJ );
 
        //   ID03: 30000000h - 40000000h
        p_objinfo       = ObjectInfo_InsetObject(
                                                        p_pginfo, 0x30000000, 0x10000000, NULL,
-                                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET );
+                                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET, OBJINFO_TYPE_NONE );
        Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 3, 0, NO_OBJ, 2, NO_OBJ );
 
        //   ID04: 50000000h - 60000000h
        p_objinfo       = ObjectInfo_InsetObject(
                                                        p_pginfo, 0x50000000, 0x10000000, NULL,
-                                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET );
+                                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET, OBJINFO_TYPE_NONE );
        Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 4, 0, NO_OBJ, 3, NO_OBJ );
 
        //       ID05: 70000000h - 70001000h
        p_objinfo       = ObjectInfo_InsetObject(
                                                        p_pginfo, 0x70000000, 0x00001000, NULL,
-                                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET );
+                                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET, OBJINFO_TYPE_NONE );
        Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 5, 0, NO_OBJ, 4, NO_OBJ );
 
        //         ID06: 90101000h - 90102000h
        p_objinfo       = ObjectInfo_InsetObject(
                                                        p_pginfo, 0x90101000, 0x00001000, NULL,
-                                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET );
+                                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET, OBJINFO_TYPE_NONE );
        Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 6, 0, NO_OBJ, 5, NO_OBJ );
 
        //       ID07: 90100000h - 90200000h
        p_objinfo       = ObjectInfo_InsetObject(
                                                        p_pginfo, 0x90100000, 0x00100000, NULL,
-                                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET );
+                                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET, OBJINFO_TYPE_NONE );
        Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 7, 0, 6, 5, NO_OBJ );
 
        //     ID08: 90000000h - a0000000h
        p_objinfo       = ObjectInfo_InsetObject(
                                                        p_pginfo, 0x90000000, 0x10000000, NULL,
-                                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET );
+                                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET, OBJINFO_TYPE_NONE );
        Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 8, 0, 7, 5, NO_OBJ );
 
        //     ID09: 70000000h - 80000000h
        p_objinfo       = ObjectInfo_InsetObject(
                                                        p_pginfo, 0x70000000, 0x10000000, NULL,
-                                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET );
+                                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET, OBJINFO_TYPE_NONE );
        Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 9, 0, 5, 4, 8 );
 
        // ID10: 00000000h - f0000000h
        p_objinfo       = ObjectInfo_InsetObject(
                                                        p_pginfo, 0x00000000, 0xf0000000, NULL,
-                                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET );
+                                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET, OBJINFO_TYPE_NONE );
        Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 10, 0, 2, NO_OBJ, NO_OBJ );
 
        //   ID11: 65000000h - b5000000h
        p_objinfo       = ObjectInfo_InsetObject(
                                                        p_pginfo, 0x65000000, 0x50000000, NULL,
-                                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET );
+                                                       OBJINFO_INSETMODE_ADOPT | OBJINFO_INSETMODE_INSET, OBJINFO_TYPE_NONE );
        Test_ObjectInfo_CUAssert_GrpLink( p_objinfo, 11, 10, 9, 4, NO_OBJ );