From: Koine Yuusuke(koinec) Date: Tue, 20 Aug 2019 07:46:30 +0000 (+0900) Subject: (LibGoblin) X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=6325edc3735425d53723bc803f0a42207922e193;p=drdeamon64%2Fdrdeamon64.git (LibGoblin) * WorkBackup --- diff --git a/libgoblin/drd64_libgoblin_debug_objinfo.c b/libgoblin/drd64_libgoblin_debug_objinfo.c index 640b403..8645673 100644 --- a/libgoblin/drd64_libgoblin_debug_objinfo.c +++ b/libgoblin/drd64_libgoblin_debug_objinfo.c @@ -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: diff --git a/libgoblin/drd64_libgoblin_objinfo.c b/libgoblin/drd64_libgoblin_objinfo.c index 25189af..b36591e 100644 --- a/libgoblin/drd64_libgoblin_objinfo.c +++ b/libgoblin/drd64_libgoblin_objinfo.c @@ -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; }