From 8aae64e67e5c1f9c371c1da643052c5efcf8d280 Mon Sep 17 00:00:00 2001 From: Alexandre Oliva Date: Wed, 7 May 2003 04:14:57 +0000 Subject: * 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) : Set cutoff to unlimited. --- ld/ldmain.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'ld/ldmain.c') 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); -- cgit v1.1