PR ld/13287
* plugin.c (plugin_should_reload): New function. * plugin.h (plugin_should_reload): Declare. * ldlang.c (open_input_bfds): Use above function.
This commit is contained in:
parent
4743b73565
commit
5468810dda
4 changed files with 23 additions and 1 deletions
|
@ -1,3 +1,10 @@
|
|||
2011-10-20 Alan Modra <amodra@gmail.com>
|
||||
|
||||
PR ld/13287
|
||||
* plugin.c (plugin_should_reload): New function.
|
||||
* plugin.h (plugin_should_reload): Declare.
|
||||
* ldlang.c (open_input_bfds): Use above function.
|
||||
|
||||
2011-10-19 Alan Modra <amodra@gmail.com>
|
||||
|
||||
PR ld/13254
|
||||
|
|
|
@ -3282,7 +3282,8 @@ open_input_bfds (lang_statement_union_type *s, enum open_bfd_mode mode)
|
|||
&& plugin_insert == NULL
|
||||
&& s->input_statement.loaded
|
||||
&& s->input_statement.add_DT_NEEDED_for_regular
|
||||
&& ((s->input_statement.the_bfd->flags) & DYNAMIC) != 0)
|
||||
&& ((s->input_statement.the_bfd->flags) & DYNAMIC) != 0
|
||||
&& plugin_should_reload (s->input_statement.the_bfd))
|
||||
{
|
||||
s->input_statement.loaded = FALSE;
|
||||
s->input_statement.reload = TRUE;
|
||||
|
|
11
ld/plugin.c
11
ld/plugin.c
|
@ -1014,3 +1014,14 @@ plugin_notice (struct bfd_link_info *info,
|
|||
abfd, section, value, flags, string);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* Return true if bfd is a dynamic library that should be reloaded. */
|
||||
|
||||
bfd_boolean
|
||||
plugin_should_reload (bfd *abfd)
|
||||
{
|
||||
return ((abfd->flags & DYNAMIC) != 0
|
||||
&& bfd_get_flavour (abfd) == bfd_target_elf_flavour
|
||||
&& bfd_get_format (abfd) == bfd_object
|
||||
&& (elf_dyn_lib_class (abfd) & DYN_AS_NEEDED) != 0);
|
||||
}
|
||||
|
|
|
@ -66,4 +66,7 @@ extern void plugin_call_cleanup (void);
|
|||
add_symbols hook has been called so that it can be read when linking. */
|
||||
extern bfd *plugin_get_ir_dummy_bfd (const char *name, bfd *template);
|
||||
|
||||
/* Return true if bfd is a dynamic library that should be reloaded. */
|
||||
extern bfd_boolean plugin_should_reload (bfd *);
|
||||
|
||||
#endif /* !def GLD_PLUGIN_H */
|
||||
|
|
Loading…
Add table
Reference in a new issue