mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-15 04:31:49 +08:00
ARM cmse_scan segfault
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.
This commit is contained in:
parent
65d1cd5f9c
commit
73d5efd7e1
@ -1,3 +1,8 @@
|
||||
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
|
||||
|
@ -6527,8 +6527,11 @@ elf32_arm_size_stubs (bfd *output_bfd,
|
||||
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;
|
||||
|
Loading…
Reference in New Issue
Block a user