aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2011-05-26 04:28:20 +0000
committerAlan Modra <amodra@gmail.com>2011-05-26 04:28:20 +0000
commit2676a7d99177c857a9cf46543f961816e2650365 (patch)
treecedaddf73fffa34649c3629ec489ab5ffaf9b9b7
parentea1f7d4c8e76be752583e1829e94dc487d5f77f7 (diff)
downloadgdb-2676a7d99177c857a9cf46543f961816e2650365.zip
gdb-2676a7d99177c857a9cf46543f961816e2650365.tar.gz
gdb-2676a7d99177c857a9cf46543f961816e2650365.tar.bz2
* elf-bfd.h (SYMBOL_REFERENCES_LOCAL): Remove most of comment.
* elflink.c (_bfd_elf_symbol_refs_local_p): Expand local_protected comment.
-rw-r--r--bfd/ChangeLog6
-rw-r--r--bfd/elf-bfd.h6
-rw-r--r--bfd/elflink.c6
3 files changed, 11 insertions, 7 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 1b04999..82ac7f6 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2011-05-26 Alan Modra <amodra@gmail.com>
+
+ * elf-bfd.h (SYMBOL_REFERENCES_LOCAL): Remove most of comment.
+ * elflink.c (_bfd_elf_symbol_refs_local_p): Expand
+ local_protected comment.
+
2011-05-25 Tristan Gingold <gingold@adacore.com>
* configure.in (bfd_elf32_ia64_big_vec, bfd_elf32_ia64_hpux_big_vec)
diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h
index b34845b..59b6e72 100644
--- a/bfd/elf-bfd.h
+++ b/bfd/elf-bfd.h
@@ -232,11 +232,7 @@ struct elf_link_hash_entry
};
/* Will references to this symbol always reference the symbol
- in this object? STV_PROTECTED is excluded from the visibility test
- here so that function pointer comparisons work properly. Since
- function symbols not defined in an app are set to their .plt entry,
- it's necessary for shared libs to also reference the .plt even
- though the symbol is really local to the shared lib. */
+ in this object? */
#define SYMBOL_REFERENCES_LOCAL(INFO, H) \
_bfd_elf_symbol_refs_local_p (H, INFO, 0)
diff --git a/bfd/elflink.c b/bfd/elflink.c
index 4675aab..e8a6840 100644
--- a/bfd/elflink.c
+++ b/bfd/elflink.c
@@ -2881,8 +2881,10 @@ _bfd_elf_symbol_refs_local_p (struct elf_link_hash_entry *h,
return TRUE;
/* Function pointer equality tests may require that STV_PROTECTED
- symbols be treated as dynamic symbols, even when we know that the
- dynamic linker will resolve them locally. */
+ symbols be treated as dynamic symbols. If the address of a
+ function not defined in an executable is set to that function's
+ plt entry in the executable, then the address of the function in
+ a shared library must also be the plt entry in the executable. */
return local_protected;
}