From d0c7ff072cbb13d2227bb757a2ff60eda4ef1f31 Mon Sep 17 00:00:00 2001 From: Thiemo Seufer Date: Fri, 9 Aug 2002 05:35:26 +0000 Subject: [PATCH] * elfxx-mips.c (mips_elf_global_got_index): Avoid segfault if g->global_gotsym is NULL. --- bfd/ChangeLog | 5 +++++ bfd/elfxx-mips.c | 7 +++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index c35541f6fd7..ca3eb3f3e41 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2002-08-09 Thiemo Seufer + + * elfxx-mips.c (mips_elf_global_got_index): Avoid segfault if + g->global_gotsym is NULL. + 2002-08-08 H.J. Lu * elflink.h (elf_add_default_symbol): Don't warn a defintion diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c index 41bd5b702ca..df035315d3e 100644 --- a/bfd/elfxx-mips.c +++ b/bfd/elfxx-mips.c @@ -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); -- 2.30.2