aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThiemo Seufer <ths@networkno.de>2002-08-09 05:35:26 +0000
committerThiemo Seufer <ths@networkno.de>2002-08-09 05:35:26 +0000
commitd0c7ff072cbb13d2227bb757a2ff60eda4ef1f31 (patch)
treec1a5dc59aa5d0a8a2385b47082f59cbcc6535df0
parentea591d42c4ce7267819a0c9e33efbe4526ab3398 (diff)
downloadgdb-d0c7ff072cbb13d2227bb757a2ff60eda4ef1f31.zip
gdb-d0c7ff072cbb13d2227bb757a2ff60eda4ef1f31.tar.gz
gdb-d0c7ff072cbb13d2227bb757a2ff60eda4ef1f31.tar.bz2
* elfxx-mips.c (mips_elf_global_got_index): Avoid segfault if
g->global_gotsym is NULL.
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/elfxx-mips.c7
2 files changed, 10 insertions, 2 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index c35541f..ca3eb3f 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -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
diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c
index 41bd5b7..df03531 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);