PR binutils/15106
authorAlan Modra <amodra@gmail.com>
Thu, 7 Feb 2013 04:20:31 +0000 (04:20 +0000)
committerAlan Modra <amodra@gmail.com>
Thu, 7 Feb 2013 04:20:31 +0000 (04:20 +0000)
* elf.c (elf_find_function): Don't cache if symbols change.

bfd/ChangeLog
bfd/elf.c

index c13b5bc712bab781a70569a0ee516ca6312b00c9..c652c3523d78a974a2033f22ff8f083dc52485d9 100644 (file)
@@ -1,3 +1,8 @@
+2013-02-07  Roberto Agostino Vitillo  <ra.vitillo@gmail.com>
+
+       PR binutils/15106
+       * elf.c (elf_find_function): Don't cache if symbols change.
+
 2013-02-07  Alan Modra  <amodra@gmail.com>
 
        PR binutils/14873
index 7ab3683dc7aa2f73a97f0c08bca57f7e2dc42e6d..9d6ff318924a3ca3ef0eb1deddd709c35b465e50 100644 (file)
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -7505,6 +7505,7 @@ elf_find_function (bfd *abfd,
                   const char **functionname_ptr)
 {
   static asection *last_section;
+  static asymbol **last_symbols;
   static asymbol *func;
   static const char *filename;
   static bfd_size_type func_size;
@@ -7513,6 +7514,7 @@ elf_find_function (bfd *abfd,
     return FALSE;
 
   if (last_section != section
+      || last_symbols != symbols
       || func == NULL
       || offset < func->value
       || offset >= func->value + func_size)
@@ -7538,6 +7540,7 @@ elf_find_function (bfd *abfd,
       state = nothing_seen;
       func_size = 0;
       last_section = section;
+      last_symbols = symbols;
 
       for (p = symbols; *p != NULL; p++)
        {