* elf32-cris.c (cris_elf_relocate_section) <case R_CRIS_32_GOTREL>:
authorHans-Peter Nilsson <hp@axis.com>
Mon, 21 Jan 2002 21:57:48 +0000 (21:57 +0000)
committerHans-Peter Nilsson <hp@axis.com>
Mon, 21 Jan 2002 21:57:48 +0000 (21:57 +0000)
Check for and emit error if sgot is NULL at this point.

bfd/ChangeLog
bfd/elf32-cris.c

index bf19404d634cba9a7ca1edd4e17abec12c8cd037..f6a30259c71211c2bfe7a00714d82783e8cdd6ec 100644 (file)
@@ -1,3 +1,8 @@
+2002-01-21  Hans-Peter Nilsson  <hp@bitrange.com>
+
+       * elf32-cris.c (cris_elf_relocate_section) <case R_CRIS_32_GOTREL>:
+       Check for and emit error if sgot is NULL at this point.
+
 2002-01-21  Jason Thorpe  <thorpej@wasabisystems.com>
 
        * config.bfd (ia64*-*-netbsd*): New target.
index 2e3add10af6d31e743550edac2243d3a89e9d399..6feb292c191605faeba1a5a04f871b59e685c7b0 100644 (file)
@@ -1162,6 +1162,20 @@ cris_elf_relocate_section (output_bfd, info, input_bfd, input_section,
              return false;
            }
 
+         /* This can happen if we get a link error with the input ELF
+            variant mismatching the output variant.  Emit an error so
+            it's noticed if it happens elsewhere.  */
+         if (sgot == NULL)
+           {
+             (*_bfd_error_handler)
+               (_("%s: relocation %s in section %s with no GOT created"),
+                bfd_archive_filename (input_bfd),
+                cris_elf_howto_table[r_type].name,
+                bfd_get_section_name (input_bfd, input_section));
+             bfd_set_error (bfd_error_bad_value);
+             return false;
+           }
+
          /* This relocation is like a PC-relative one, except the
             reference point is the location of GOT.  Note that
             sgot->output_offset is not involved in this calculation.  We