diff options
-rw-r--r-- | ld/ChangeLog | 6 | ||||
-rw-r--r-- | ld/ldmain.c | 6 | ||||
-rw-r--r-- | ld/ldmisc.c | 20 |
3 files changed, 24 insertions, 8 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog index 2cce57b..8c44725 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,5 +1,11 @@ 2011-05-23 Alan Modra <amodra@gmail.com> + * ldmisc.c (vfinfo): Add %H. + * ldmain.c (reloc_overflow): Use %H rather than %C. + (reloc_dangerous, unattached_reloc): Likewise. + +2011-05-23 Alan Modra <amodra@gmail.com> + PR 12763 * ldlang.c (lang_output_section_find_by_flags): Match orphan .sdata2 like sections to existing .sdata2, and similarly for orphan TLS diff --git a/ld/ldmain.c b/ld/ldmain.c index 96f3bda..1b4afff 100644 --- a/ld/ldmain.c +++ b/ld/ldmain.c @@ -1399,7 +1399,7 @@ reloc_overflow (struct bfd_link_info *info ATTRIBUTE_UNUSED, if (overflow_cutoff_limit == -1) return TRUE; - einfo ("%X%C:", abfd, section, address); + einfo ("%X%H:", abfd, section, address); if (overflow_cutoff_limit >= 0 && overflow_cutoff_limit-- == 0) @@ -1451,7 +1451,7 @@ reloc_dangerous (struct bfd_link_info *info ATTRIBUTE_UNUSED, asection *section, bfd_vma address) { - einfo (_("%X%C: dangerous relocation: %s\n"), + einfo (_("%X%H: dangerous relocation: %s\n"), abfd, section, address, message); return TRUE; } @@ -1466,7 +1466,7 @@ unattached_reloc (struct bfd_link_info *info ATTRIBUTE_UNUSED, asection *section, bfd_vma address) { - einfo (_("%X%C: reloc refers to symbol `%T' which is not being output\n"), + einfo (_("%X%H: reloc refers to symbol `%T' which is not being output\n"), abfd, section, address, name); return TRUE; } diff --git a/ld/ldmisc.c b/ld/ldmisc.c index d5001d1..12cb726 100644 --- a/ld/ldmisc.c +++ b/ld/ldmisc.c @@ -47,6 +47,7 @@ %E current bfd error or errno %F error is fatal %G like %D, but only function name + %H like %C but in addition emit section+offset %I filename from a lang_input_statement_type %P print program name %R info about a relent @@ -262,6 +263,7 @@ vfinfo (FILE *fp, const char *fmt, va_list arg, bfd_boolean is_warning) case 'C': case 'D': case 'G': + case 'H': /* Clever filename:linenumber with function name if possible. The arguments are a BFD, a section, and an offset. */ { @@ -276,6 +278,7 @@ vfinfo (FILE *fp, const char *fmt, va_list arg, bfd_boolean is_warning) const char *functionname; unsigned int linenumber; bfd_boolean discard_last; + bfd_boolean done; abfd = va_arg (arg, bfd *); section = va_arg (arg, asection *); @@ -296,14 +299,15 @@ vfinfo (FILE *fp, const char *fmt, va_list arg, bfd_boolean is_warning) We do not always have a line number available so if we cannot find them we print out the section name and - offset instread. */ + offset instead. */ discard_last = TRUE; if (abfd != NULL && bfd_find_nearest_line (abfd, section, asymbols, offset, &filename, &functionname, &linenumber)) { - if (functionname != NULL && fmt[-1] == 'C') + if (functionname != NULL + && (fmt[-1] == 'C' || fmt[-1] == 'H')) { /* Detect the case where we are printing out a message for the same function as the last @@ -343,15 +347,21 @@ vfinfo (FILE *fp, const char *fmt, va_list arg, bfd_boolean is_warning) if (filename != NULL) fprintf (fp, "%s:", filename); + done = fmt[-1] != 'H'; if (functionname != NULL && fmt[-1] == 'G') lfinfo (fp, "%T", functionname); else if (filename != NULL && linenumber != 0) - fprintf (fp, "%u", linenumber); + fprintf (fp, "%u%s", linenumber, ":" + done); else - lfinfo (fp, "(%A+0x%v)", section, offset); + done = FALSE; } else - lfinfo (fp, "%B:(%A+0x%v)", abfd, section, offset); + { + lfinfo (fp, "%B:", abfd); + done = FALSE; + } + if (!done) + lfinfo (fp, "(%A+0x%v)", section, offset); if (discard_last) { |