diff options
author | Adam Nemet <anemet@caviumnetworks.com> | 2007-07-22 16:45:06 +0000 |
---|---|---|
committer | Adam Nemet <anemet@caviumnetworks.com> | 2007-07-22 16:45:06 +0000 |
commit | 0e53d9daabf56b7aeb0d53484770bce73d0a4b75 (patch) | |
tree | ab59436c4dc04ec6638f3ca5325b5c5f86cc7d5c /bfd/elfxx-mips.c | |
parent | 9516781d06b815503176a3ea5fa7b0a65e982cfe (diff) | |
download | gdb-0e53d9daabf56b7aeb0d53484770bce73d0a4b75.zip gdb-0e53d9daabf56b7aeb0d53484770bce73d0a4b75.tar.gz gdb-0e53d9daabf56b7aeb0d53484770bce73d0a4b75.tar.bz2 |
* elfxx-mips.c (struct mips_elf_link_hash_table): Add new field
small_data_overflow_reported.
(_bfd_mips_elf_link_hash_table_create): Initialize it.
(_bfd_mips_elf_relocate_section) <bfd_reloc_overflow>: Report
small-data section overflow.
Diffstat (limited to 'bfd/elfxx-mips.c')
-rw-r--r-- | bfd/elfxx-mips.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c index 1345b3a..fb8e1f7 100644 --- a/bfd/elfxx-mips.c +++ b/bfd/elfxx-mips.c @@ -325,6 +325,8 @@ struct mips_elf_link_hash_table bfd_boolean mips16_stubs_seen; /* True if we're generating code for VxWorks. */ bfd_boolean is_vxworks; + /* True if we already reported the small-data section overflow. */ + bfd_boolean small_data_overflow_reported; /* Shortcuts to some dynamic sections, or NULL if they are not being used. */ asection *srelbss; @@ -8032,7 +8034,21 @@ _bfd_mips_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info, ; else { + struct mips_elf_link_hash_table *htab; + + htab = mips_elf_hash_table (info); BFD_ASSERT (name != NULL); + if (!htab->small_data_overflow_reported + && (howto->type == R_MIPS_GPREL16 + || howto->type == R_MIPS_LITERAL)) + { + const char *msg = + _("small-data section exceeds 64KB;" + " lower small-data size limit (see option -G)"); + + htab->small_data_overflow_reported = TRUE; + (*info->callbacks->einfo) ("%P: %s\n", msg); + } if (! ((*info->callbacks->reloc_overflow) (info, NULL, name, howto->name, (bfd_vma) 0, input_bfd, input_section, rel->r_offset))) @@ -10174,6 +10190,7 @@ _bfd_mips_elf_link_hash_table_create (bfd *abfd) ret->rld_value = 0; ret->mips16_stubs_seen = FALSE; ret->is_vxworks = FALSE; + ret->small_data_overflow_reported = FALSE; ret->srelbss = NULL; ret->sdynbss = NULL; ret->srelplt = NULL; |