return i_result;
}
- //Debug_ObjectInfo_Print_AllGroupLink( p_pginfo, 0xff );
+ Debug_ObjectInfo_Print_AllGroupLink( p_pginfo, 0xff );
/* Analyze Dwarf-Debug Info. */
{
char *pstr_symname;
Byte b_binding;
+ Byte b_bindtemp;
Byte *pb_dynstr;
int i_bid;
int i_result;
pstr_symname = (char *)(pb_dynstr + p_sym->st_name);
// Check .gnu.hash ---
+ b_binding = 255;
i_symindex = -0x01;
while( -0x01 != i_bid ) {
p_binlib = BinaryInfo_GetBinInfo( i_bid );
assert( NULL != p_binlib );
- i_result = ELF64_GnuHash_SearchDynSym( p_binlib, pstr_symname, p_vernow, &b_binding );
+ i_result = ELF64_GnuHash_SearchDynSym( p_binlib, pstr_symname, p_vernow, &b_bindtemp );
if( 0 <= i_result ) {
i_symindex = i_result;
- break;
+ b_binding = b_bindtemp;
+ if( STB_WEAK != b_binding ) { break; }
}
i_bid = BinInfo_SearchNextSlave( p_binfo->i_id, i_bid );
}
- printf(" debug: [%2u] %s (%s)[binding:%d] = %d\n",
- dw_sym, pstr_symname, p_binlib->str_filename, b_binding, i_symindex );
if( 0 > i_symindex ) { continue; }