aboutsummaryrefslogtreecommitdiff
path: root/bfd/elfxx-mips.c
diff options
context:
space:
mode:
authorAdam Nemet <anemet@caviumnetworks.com>2007-07-22 16:45:06 +0000
committerAdam Nemet <anemet@caviumnetworks.com>2007-07-22 16:45:06 +0000
commit0e53d9daabf56b7aeb0d53484770bce73d0a4b75 (patch)
treeab59436c4dc04ec6638f3ca5325b5c5f86cc7d5c /bfd/elfxx-mips.c
parent9516781d06b815503176a3ea5fa7b0a65e982cfe (diff)
downloadgdb-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.c17
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;