* elf32-ppc.c (SYMBOL_REFERENCES_LOCAL): Expand comment.
authorAlan Modra <amodra@gmail.com>
Thu, 3 Apr 2003 04:02:02 +0000 (04:02 +0000)
committerAlan Modra <amodra@gmail.com>
Thu, 3 Apr 2003 04:02:02 +0000 (04:02 +0000)
bfd/ChangeLog
bfd/elf32-ppc.c

index 122369d89c4df2d3d25a0bb7493ecb5ea678ea9a..45632e537f38f420d6235482a29d1edd07184413 100644 (file)
@@ -3,6 +3,7 @@
        * elf32-ppc.c (ppc_elf_check_relocs): Don't use SYMBOL_REFERENCES_LOCAL
        here as it's too early to reliably determine locality.
        (ppc_elf_gc_sweep_hook): Likewise.
+       (SYMBOL_REFERENCES_LOCAL): Expand comment.
 
 2003-04-02  Bob Wilson  <bob.wilson@acm.org>
 
index 6fdfebe795f9d20196e0decf7f60a17ab18d791d..186f39d82b68248b17cb4bed489c267146c50e7e 100644 (file)
@@ -147,8 +147,12 @@ static bfd_boolean ppc_elf_grok_psinfo
 #define DTP_OFFSET     0x8000
 
 /* Will references to this symbol always reference the symbol
-   in this object?  */
-#define SYMBOL_REFERENCES_LOCAL(INFO, H)                               \
+   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.  */
+#define SYMBOL_REFERENCES_LOCAL(INFO, H)                               \
   ((! INFO->shared                                                     \
     || INFO->symbolic                                                  \
     || H->dynindx == -1                                                        \