* doc/binutils.texi (objdump): Fix typo: -reg-name-std should be -reg-names-std.
[binutils-gdb.git] / bfd / elf32-cris.c
index ced86c34d8a2a41760a516ba1135d7cd44c874f5..4580beabd9024e8fa395aaa070f507aeacf32218 100644 (file)
@@ -2078,9 +2078,6 @@ elf_cris_adjust_gotplt_to_got (h, p)
      PTR p;
 {
   struct bfd_link_info *info = (struct bfd_link_info *) p;
-  bfd *dynobj = elf_hash_table (info)->dynobj;
-
-  BFD_ASSERT (dynobj != NULL);
 
   if (h->root.root.type == bfd_link_hash_warning)
     h = (struct elf_cris_link_hash_entry *) h->root.root.u.i.link;
@@ -2100,9 +2097,13 @@ elf_cris_adjust_gotplt_to_got (h, p)
   else
     {
       /* No GOT entry for this symbol.  We need to create one.  */
-      asection *sgot = bfd_get_section_by_name (dynobj, ".got");
-      asection *srelgot
-       = bfd_get_section_by_name (dynobj, ".rela.got");
+      bfd *dynobj = elf_hash_table (info)->dynobj;
+      asection *sgot;
+      asection *srelgot;
+
+      BFD_ASSERT (dynobj != NULL);
+      sgot = bfd_get_section_by_name (dynobj, ".got");
+      srelgot = bfd_get_section_by_name (dynobj, ".rela.got");
 
       /* Put an accurate refcount there.  */
       h->root.got.refcount = h->gotplt_refcount;
@@ -2379,6 +2380,13 @@ elf_cris_adjust_dynamic_symbol (info, h)
   if (!h->non_got_ref)
     return TRUE;
 
+  if (h->size == 0)
+    {
+      (*_bfd_error_handler) (_("dynamic variable `%s' is zero size"),
+                            h->root.root.string);
+      return TRUE;
+    }
+
   /* We must allocate the symbol in our .dynbss section, which will
      become part of the .bss section of the executable.  There will be
      an entry for this symbol in the .dynsym section.  The dynamic