diff options
Diffstat (limited to 'bfd/elf64-sh64.c')
-rw-r--r-- | bfd/elf64-sh64.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/bfd/elf64-sh64.c b/bfd/elf64-sh64.c index 15c29924d9..03196c57d9 100644 --- a/bfd/elf64-sh64.c +++ b/bfd/elf64-sh64.c @@ -1703,15 +1703,16 @@ sh_elf64_relocate_section (bfd *output_bfd ATTRIBUTE_UNUSED, } else if (h->root.type == bfd_link_hash_undefweak) relocation = 0; - else if (info->shared - && !info->symbolic - && info->unresolved_syms_in_objects == RM_IGNORE) + else if (info->unresolved_syms_in_objects == RM_IGNORE + && ELF_ST_VISIBILITY (h->other) == STV_DEFAULT) relocation = 0; else { if (! ((*info->callbacks->undefined_symbol) (info, h->root.root.string, input_bfd, - input_section, rel->r_offset, TRUE))) + input_section, rel->r_offset, + (info->unresolved_syms_in_objects == RM_GENERATE_ERROR + || ELF_ST_VISIBILITY (h->other))))) return FALSE; relocation = 0; } |