@ -914,7 +914,8 @@ is_visible_from_outside(Symbol* lsym)
// Get symbol resolution info.
ld_plugin_status
Pluginobj : : get_symbol_resolution_info ( int nsyms ,
Pluginobj : : get_symbol_resolution_info ( Symbol_table * symtab ,
int nsyms ,
ld_plugin_symbol * syms ,
int version ) const
{
@ -943,6 +944,8 @@ Pluginobj::get_symbol_resolution_info(int nsyms,
{
ld_plugin_symbol * isym = & syms [ i ] ;
Symbol * lsym = this - > symbols_ [ i ] ;
if ( lsym - > is_forwarder ( ) )
lsym = symtab - > resolve_forwards ( lsym ) ;
ld_plugin_symbol_resolution res = LDPR_UNKNOWN ;
if ( lsym - > is_undefined ( ) )
@ -1511,14 +1514,16 @@ static enum ld_plugin_status
get_symbols ( const void * handle , int nsyms , ld_plugin_symbol * syms )
{
gold_assert ( parameters - > options ( ) . has_plugins ( ) ) ;
Object * obj = parameters - > options ( ) . plugins ( ) - > object (
Plugin_manager * plugins = parameters - > options ( ) . plugins ( ) ;
Object * obj = plugins - > object (
static_cast < unsigned int > ( reinterpret_cast < intptr_t > ( handle ) ) ) ;
if ( obj = = NULL )
return LDPS_ERR ;
Pluginobj * plugin_obj = obj - > pluginobj ( ) ;
if ( plugin_obj = = NULL )
return LDPS_ERR ;
return plugin_obj - > get_symbol_resolution_info ( nsyms , syms , 1 ) ;
Symbol_table * symtab = plugins - > symtab ( ) ;
return plugin_obj - > get_symbol_resolution_info ( symtab , nsyms , syms , 1 ) ;
}
// Version 2 of the above. The only difference is that this version
@ -1528,14 +1533,16 @@ static enum ld_plugin_status
get_symbols_v2 ( const void * handle , int nsyms , ld_plugin_symbol * syms )
{
gold_assert ( parameters - > options ( ) . has_plugins ( ) ) ;
Object * obj = parameters - > options ( ) . plugins ( ) - > object (
Plugin_manager * plugins = parameters - > options ( ) . plugins ( ) ;
Object * obj = plugins - > object (
static_cast < unsigned int > ( reinterpret_cast < intptr_t > ( handle ) ) ) ;
if ( obj = = NULL )
return LDPS_ERR ;
Pluginobj * plugin_obj = obj - > pluginobj ( ) ;
if ( plugin_obj = = NULL )
return LDPS_ERR ;
return plugin_obj - > get_symbol_resolution_info ( nsyms , syms , 2 ) ;
Symbol_table * symtab = plugins - > symtab ( ) ;
return plugin_obj - > get_symbol_resolution_info ( symtab , nsyms , syms , 2 ) ;
}
// Add a new (real) input file generated by a plugin.