From 73d5efd7e13ebd8fe87278224bc2ae777af3de52 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Thu, 21 Nov 2019 08:57:00 +1030 Subject: 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. --- bfd/ChangeLog | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'bfd/ChangeLog') diff --git a/bfd/ChangeLog b/bfd/ChangeLog index ffe527c..a1ef734 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2019-11-21 Alan Modra + + * elf32-arm.c (elf32_arm_size_stubs): Exclude dynamic library + BFDs that have not been loaded. + 2019-11-19 Alan Modra PR 25197 -- cgit v1.1