aboutsummaryrefslogtreecommitdiff
path: root/ld/ldmain.c
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2003-05-07 04:14:57 +0000
committerAlexandre Oliva <aoliva@redhat.com>2003-05-07 04:14:57 +0000
commit8aae64e67e5c1f9c371c1da643052c5efcf8d280 (patch)
treef4e38876edc6afdd77481054d3435dc6ee93f32f /ld/ldmain.c
parenta5d63722abbd36361494765da515902c47b2bc99 (diff)
downloadfsf-binutils-gdb-8aae64e67e5c1f9c371c1da643052c5efcf8d280.zip
fsf-binutils-gdb-8aae64e67e5c1f9c371c1da643052c5efcf8d280.tar.gz
fsf-binutils-gdb-8aae64e67e5c1f9c371c1da643052c5efcf8d280.tar.bz2
* ldmain.h (overflow_cutoff_limit): Declare.
* ldmain.c (overflow_cutoff_limit): Define, initialized to 10. (reloc_overflow): Limit error messages based on it. * lexsup.c (parse_args) <OPTION_VERBOSE>: Set cutoff to unlimited.
Diffstat (limited to 'ld/ldmain.c')
-rw-r--r--ld/ldmain.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/ld/ldmain.c b/ld/ldmain.c
index 0b0b038..91818e0 100644
--- a/ld/ldmain.c
+++ b/ld/ldmain.c
@@ -1362,6 +1362,15 @@ undefined_symbol (info, name, abfd, section, address, fatal)
return TRUE;
}
+/* Counter to limit the number of relocation overflow error messages
+ to print. Errors are printed as it is decremented. When it's
+ called and the counter is zero, a final message is printed
+ indicating more relocations were omitted. When it gets to -1, no
+ such errors are printed. If it's initially set to a value less
+ than -1, all such errors will be printed (--verbose does this). */
+
+int overflow_cutoff_limit = 10;
+
/* This is called when a reloc overflows. */
static bfd_boolean
@@ -1374,10 +1383,21 @@ reloc_overflow (info, name, reloc_name, addend, abfd, section, address)
asection *section;
bfd_vma address;
{
+ if (overflow_cutoff_limit == -1)
+ return TRUE;
+
if (abfd == (bfd *) NULL)
einfo (_("%P%X: generated"));
else
einfo ("%X%C:", abfd, section, address);
+
+ if (overflow_cutoff_limit >= 0
+ && overflow_cutoff_limit-- == 0)
+ {
+ einfo (_(" additional relocation overflows omitted from the output\n"));
+ return TRUE;
+ }
+
einfo (_(" relocation truncated to fit: %s %T"), reloc_name, name);
if (addend != 0)
einfo ("+%v", addend);