* elfxx-mips.c (mips_elf_global_got_index): Avoid segfault if
authorThiemo Seufer <ths@networkno.de>
Fri, 9 Aug 2002 05:35:26 +0000 (05:35 +0000)
committerThiemo Seufer <ths@networkno.de>
Fri, 9 Aug 2002 05:35:26 +0000 (05:35 +0000)
g->global_gotsym is NULL.

bfd/ChangeLog
bfd/elfxx-mips.c

index c35541f6fd7ae8947f8ba718a820e221cc930ab3..ca3eb3f3e4169190f25a0d738c98935d78576965 100644 (file)
@@ -1,3 +1,8 @@
+2002-08-09  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
+
+       * elfxx-mips.c (mips_elf_global_got_index): Avoid segfault if
+       g->global_gotsym is NULL.
+
 2002-08-08  H.J. Lu <hjl@gnu.org>
 
        * elflink.h (elf_add_default_symbol): Don't warn a defintion
index 41bd5b702ca3936bf9789522efb6c2451f98b02e..df035315d3e6466d15218f272e8bc15f2569dfe1 100644 (file)
@@ -1446,15 +1446,18 @@ mips_elf_global_got_index (abfd, h)
   bfd_vma index;
   asection *sgot;
   struct mips_got_info *g;
+  long global_got_dynindx = 0;
 
   g = mips_elf_got_info (abfd, &sgot);
+  if (g->global_gotsym != NULL)
+    global_got_dynindx = g->global_gotsym->dynindx;
 
   /* Once we determine the global GOT entry with the lowest dynamic
      symbol table index, we must put all dynamic symbols with greater
      indices into the GOT.  That makes it easy to calculate the GOT
      offset.  */
-  BFD_ASSERT (h->dynindx >= g->global_gotsym->dynindx);
-  index = ((h->dynindx - g->global_gotsym->dynindx + g->local_gotno)
+  BFD_ASSERT (h->dynindx >= global_got_dynindx);
+  index = ((h->dynindx - global_got_dynindx + g->local_gotno)
           * MIPS_ELF_GOT_SIZE (abfd));
   BFD_ASSERT (index < sgot->_raw_size);