* elflink.h (elf_adjust_dynamic_symbol): Warn on an attempt to
authorIan Lance Taylor <ian@airs.com>
Wed, 2 Dec 1998 05:59:07 +0000 (05:59 +0000)
committerIan Lance Taylor <ian@airs.com>
Wed, 2 Dec 1998 05:59:07 +0000 (05:59 +0000)
link against a dynamic symbol with no type or size.

bfd/elflink.h

index 40f45a0f245d0b18f52bf2c0363c1f19e205d457..841a8e728954c0d79a9d820cb7bf6c5697a0f020 100644 (file)
@@ -3119,6 +3119,18 @@ elf_adjust_dynamic_symbol (h, data)
        }
     }
 
+  /* If a symbol has no type and no size and does not require a PLT
+     entry, then we are probably about to do the wrong thing here: we
+     are probably going to create a COPY reloc for an empty object.
+     This case can arise when a shared object is built with assembly
+     code, and the assembly code fails to set the symbol type.  */
+  if (h->size == 0
+      && h->type == STT_NOTYPE
+      && (h->elf_link_hash_flags & ELF_LINK_HASH_NEEDS_PLT) == 0)
+    (*_bfd_error_handler)
+      (_("warning: type and size of dynamic symbol `%s' are not defined"),
+        h->root.root.string);
+
   dynobj = elf_hash_table (eif->info)->dynobj;
   bed = get_elf_backend_data (dynobj);
   if (! (*bed->elf_backend_adjust_dynamic_symbol) (eif->info, h))