diff options
author | Mark Mitchell <mark@codesourcery.com> | 1999-08-01 22:38:53 +0000 |
---|---|---|
committer | Mark Mitchell <mark@codesourcery.com> | 1999-08-01 22:38:53 +0000 |
commit | 8b237a8965b9c4f4c0ec0bb13571b45fef6ed8ce (patch) | |
tree | d8a8d423385e6f3ed4ffa612d2cd2216e26eec5e | |
parent | 972875741c90668bcb6d0f5f78ffdc3f89d4ec19 (diff) | |
download | fsf-binutils-gdb-8b237a8965b9c4f4c0ec0bb13571b45fef6ed8ce.zip fsf-binutils-gdb-8b237a8965b9c4f4c0ec0bb13571b45fef6ed8ce.tar.gz fsf-binutils-gdb-8b237a8965b9c4f4c0ec0bb13571b45fef6ed8ce.tar.bz2 |
* elf32-mips.c (_bfd_mips_elf_final_link): Handle the case where
there are no global symbols requiring GOT entries.
(_bfd_mips_elf_size_dynamic_sections): Likewise.
(_bfd_mips_elf_finish_dynamic_symbol): Likewise.
(_bfd_mips_elf_finish_dynamic_sections): Likewise.
-rw-r--r-- | bfd/ChangeLog | 6 | ||||
-rw-r--r-- | bfd/elf32-mips.c | 22 |
2 files changed, 22 insertions, 6 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index bb7c409..13afd20 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,5 +1,11 @@ 1999-08-01 Mark Mitchell <mark@codesourcery.com> + * elf32-mips.c (_bfd_mips_elf_final_link): Handle the case where + there are no global symbols requiring GOT entries. + (_bfd_mips_elf_size_dynamic_sections): Likewise. + (_bfd_mips_elf_finish_dynamic_symbol): Likewise. + (_bfd_mips_elf_finish_dynamic_sections): Likewise. + * elf32-mips.c (mips_elf_calculate_relocation): Undefined weak symbols are considered to have the value zero. (_bfd_mips_elf_relocate_section): Don't try to perform a diff --git a/bfd/elf32-mips.c b/bfd/elf32-mips.c index 6cf85c8..21a765d 100644 --- a/bfd/elf32-mips.c +++ b/bfd/elf32-mips.c @@ -4363,9 +4363,10 @@ _bfd_mips_elf_final_link (abfd, info) got = bfd_get_section_by_name (dynobj, ".got"); g = (struct mips_got_info *) elf_section_data (got)->tdata; - BFD_ASSERT ((elf_hash_table (info)->dynsymcount - - g->global_gotsym->dynindx) - <= g->global_gotno); + if (g->global_gotsym != NULL) + BFD_ASSERT ((elf_hash_table (info)->dynsymcount + - g->global_gotsym->dynindx) + <= g->global_gotno); } /* On IRIX5, we omit the .options section. On IRIX6, however, we @@ -7896,7 +7897,12 @@ _bfd_mips_elf_size_dynamic_sections (output_bfd, info) if (!mips_elf_sort_hash_table (info, 1)) return false; - i = elf_hash_table (info)->dynsymcount - g->global_gotsym->dynindx; + if (g->global_gotsym != NULL) + i = elf_hash_table (info)->dynsymcount - g->global_gotsym->dynindx; + else + /* If there are no global symbols, or none requiring + relocations, then GLOBAL_GOTSYM will be NULL. */ + i = 0; g->global_gotno = i; s->_raw_size += i * MIPS_ELF_GOT_SIZE (dynobj); } @@ -8186,7 +8192,8 @@ _bfd_mips_elf_finish_dynamic_symbol (output_bfd, info, h, sym) /* Run through the global symbol table, creating GOT entries for all the symbols that need them. */ - if (h->dynindx >= g->global_gotsym->dynindx) + if (g->global_gotsym != NULL + && h->dynindx >= g->global_gotsym->dynindx) { bfd_vma offset; bfd_vma value; @@ -8452,7 +8459,10 @@ _bfd_mips_elf_finish_dynamic_sections (output_bfd, info) break; case DT_MIPS_GOTSYM: - dyn.d_un.d_val = g->global_gotsym->dynindx; + if (g->global_gotsym != NULL) + dyn.d_un.d_val = g->global_gotsym->dynindx; + else + dyn.d_un.d_val = 0; break; case DT_MIPS_HIPAGENO: |