* elf32-cris.c (cris_elf_check_relocs): Don't assume
authorHans-Peter Nilsson <hp@axis.com>
Fri, 18 Oct 2013 02:37:51 +0000 (02:37 +0000)
committerHans-Peter Nilsson <hp@axis.com>
Fri, 18 Oct 2013 02:37:51 +0000 (02:37 +0000)
a registered dynobj means that a .got has been created.

bfd/ChangeLog
bfd/elf32-cris.c

index 1f9b6989618abaf1749b69eb290d09b34d4c1809..89774001c1bb7f0a6675005536e49bcfbd79faea 100644 (file)
@@ -1,3 +1,8 @@
+2013-10-18  Hans-Peter Nilsson  <hp@axis.com>
+
+       * elf32-cris.c (cris_elf_check_relocs): Don't assume
+       a registered dynobj means that a .got has been created.
+
 2013-10-17  Alan Modra  <amodra@gmail.com>
 
        PR 16056
index f40a07963be1a943a827fd4a1f4649b222ec058f..f35292ed6245155b11f016594123a90101ea3832 100644 (file)
@@ -3236,15 +3236,20 @@ cris_elf_check_relocs (bfd *abfd,
                     abfd, sec);
                  return FALSE;
                }
+           }
 
-             /* Create the .got section, so we can assume it's always
-                present whenever there's a dynobj.  */
+         if (sgot == NULL)
+           {
+             /* We may have a dynobj but no .got section, if machine-
+                independent parts of the linker found a reason to create
+                a dynobj.  We want to create the .got section now, so we
+                can assume it's always present whenever there's a dynobj.
+                It's ok to call this function more than once.  */
              if (!_bfd_elf_create_got_section (dynobj, info))
                return FALSE;
-           }
 
-         if (sgot == NULL)
-           sgot = bfd_get_linker_section (dynobj, ".got");
+             sgot = bfd_get_linker_section (dynobj, ".got");
+           }
 
          if (local_got_refcounts == NULL)
            {