This code in elf_link_add_object_symbols:
ret = elf_add_dt_needed_tag (abfd, info, soname, add_needed);
if (ret < 0)
goto error_return;
/* If we have already included this dynamic object in the
link, just ignore it. There is no reason to include a
particular dynamic object more than once. */
if (ret > 0)
return TRUE;
prevents a shared library from being loaded twice by ensuring that any
library soname doesn't match the soname of one already loaded. This
happens before sym_hashes are allocated, which leaves sym_hashes NULL.
cmse_scan looks at library symbols, and when attempting to look up a
global symbol will segfault if sym_hashes is zero.
* elf32-arm.c (elf32_arm_size_stubs): Exclude dynamic library
BFDs that have not been loaded.
+2019-11-21 Alan Modra <amodra@gmail.com>
+
+ * elf32-arm.c (elf32_arm_size_stubs): Exclude dynamic library
+ BFDs that have not been loaded.
+
2019-11-19 Alan Modra <amodra@gmail.com>
PR 25197
asection *section;
Elf_Internal_Sym *local_syms = NULL;
- if (!is_arm_elf (input_bfd)
- || (elf_dyn_lib_class (input_bfd) & DYN_AS_NEEDED) != 0)
+ if (!is_arm_elf (input_bfd))
+ continue;
+ if ((input_bfd->flags & DYNAMIC) != 0
+ && (elf_sym_hashes (input_bfd) == NULL
+ || (elf_dyn_lib_class (input_bfd) & DYN_AS_NEEDED) != 0))
continue;
num_a8_relocs = 0;