OSDN Git Service

(LibGoblin)
authorKoine Yuusuke(koinec) <koinec@users.osdn.me>
Tue, 20 Aug 2019 07:46:30 +0000 (16:46 +0900)
committerKoine Yuusuke(koinec) <koinec@users.osdn.me>
Tue, 20 Aug 2019 07:46:30 +0000 (16:46 +0900)
  * WorkBackup

libgoblin/drd64_libgoblin_debug_objinfo.c
libgoblin/drd64_libgoblin_objinfo.c

index 640b403..8645673 100644 (file)
@@ -448,6 +448,19 @@ void
        return;
 }
 
+/*--------------------------------------------------------------------*/
+void
+       Debug_ObjectInfo_Print_ObjectFile(
+                       LibGoblin_ObjectInfo    *p_obj,
+                       char    *pstr_space,
+                       Byte    b_level )
+{
+       printf(" %s\t\t[OBJINFO] Addr.Link(%3d <-> %3d)\n",
+                               pstr_space, p_obj->addrlink.i_prev_id, p_obj->addrlink.i_next_id );
+
+       return;
+}
+
 
 /*====================================================================*/
 /*--------------------------------------------------------------------*/
@@ -500,6 +513,7 @@ void
                        break;
 
                case OBJINFO_TYPE_OBJFILE:
+                       Debug_ObjectInfo_Print_ObjectFile( p_obj, pstr_space, b_level );
                        break;
 
                case OBJINFO_TYPE_FUNCTION:
index 25189af..b36591e 100644 (file)
@@ -386,17 +386,34 @@ LibGoblin_ObjectInfo *
                if(( p_objnow->addr.ptr_addr.value <= ptr_value )
                                && ( (ptr_value + qw_size) <= (p_objnow->addr.ptr_addr.value + p_objnow->addr.qw_size)
                                && ( ptr_value < (p_objnow->addr.ptr_addr.value + p_objnow->addr.qw_size)) ))   {
-                       if( p_objnow->addr.qw_size <= p_objover->addr.qw_size ) { p_objover     = p_objnow; }
+
+                       if(( ptr_value == p_objnow->addr.ptr_addr.value )
+                                       && ( qw_size == p_objnow->addr.qw_size ))       {
+                               if( b_type >= p_objnow->b_type )                {
+                                       if( p_objnow->addr.qw_size <= p_objover->addr.qw_size ) {
+                                               p_objover       = p_objnow;
+                                       }
+                               }
+                       }
+                       else {
+                               if( p_objnow->addr.qw_size <= p_objover->addr.qw_size ) {
+                                       p_objover       = p_objnow;
+                               }
+                       }
                }
 
                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; }
+                               if( b_type < p_objnow->b_type )         {
+                                       //printf( "now: %d , obj= %d, over=%d\n",  p_objnow->i_id, p_objinfo->i_id, p_objover->i_id );
+                                       //p_objover     = p_objnow;
+                                       break;
+                               }
                        }
-*/
+
 //AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
                }
                else if( ptr_value < p_objnow->addr.ptr_addr.value )    { break; }
@@ -414,6 +431,7 @@ LibGoblin_ObjectInfo *
        if( NULL != p_objnow )  { p_objnow->addrlink.i_prev_id  = p_objinfo->i_id; }
 
 
+
        // Search ObjectInfo Inset Location. (Group Order) *****************
        // Set Group Order Link Info. --------------------------------------
        if( OBJINFO_INSETMODE_INSET == ( OBJINFO_INSETMODE_INSET & b_mode ))    {
@@ -434,6 +452,17 @@ LibGoblin_ObjectInfo *
        do      {
                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 )    {
+                                       //printf( "now: %d <> %d\n",  p_objnow->i_id, p_objinfo->i_id );
+                               if( b_type < p_objnow->b_type )         {
+                                       //p_objover     = p_objnow;
+                                       break;
+                               }
+                       }
+
+//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
                }
                else if( ptr_value < p_objnow->addr.ptr_addr.value )    { break; }