* ldmisc.c (vfinfo): Handle %D as %C, but never print the function
authorIan Lance Taylor <ian@airs.com>
Wed, 14 Sep 1994 17:08:37 +0000 (17:08 +0000)
committerIan Lance Taylor <ian@airs.com>
Wed, 14 Sep 1994 17:08:37 +0000 (17:08 +0000)
name.  For %C, print the function name on a separate line, to keep
the length of error messages under control.
* ldmain.c (multiple_definition): Use %D for ``first defined
here.''
(undefined_symbol): Use %D for ``more undefined references
follow''.
PR 3770.

ld/ChangeLog
ld/ldmain.c
ld/ldmisc.c

index ae176da..f08b651 100644 (file)
@@ -1,5 +1,13 @@
 Wed Sep 14 12:48:09 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)
 
+       * ldmisc.c (vfinfo): Handle %D as %C, but never print the function
+       name.  For %C, print the function name on a separate line, to keep
+       the length of error messages under control.
+       * ldmain.c (multiple_definition): Use %D for ``first defined
+       here.''
+       (undefined_symbol): Use %D for ``more undefined references
+       follow''.
+
        * ldmisc.c (multiple_warn): Remove; no longer used.
        * ldmisc.h (multiple_warn): Don't declare.
 
index 7ee24f3..754813b 100644 (file)
@@ -163,6 +163,7 @@ main (argc, argv)
   config.dynamic_link = false;
   command_line.force_common_definition = false;
   command_line.interpreter = NULL;
+  command_line.rpath = NULL;
 
   link_info.callbacks = &link_callbacks;
   link_info.relocateable = false;
@@ -604,7 +605,7 @@ multiple_definition (info, name, obfd, osec, oval, nbfd, nsec, nval)
   einfo ("%X%C: multiple definition of `%T'\n",
         nbfd, nsec, nval, name);
   if (obfd != (bfd *) NULL)
-    einfo ("%C: first defined here\n", obfd, osec, oval);
+    einfo ("%D: first defined here\n", obfd, osec, oval);
   return true;
 }
 
@@ -798,7 +799,7 @@ undefined_symbol (info, name, abfd, section, address)
     einfo ("%X%C: undefined reference to `%T'\n",
           abfd, section, address, name);
   else if (error_count == MAX_ERRORS_IN_A_ROW)
-    einfo ("%C: more undefined references to `%T' follow\n",
+    einfo ("%D: more undefined references to `%T' follow\n",
           abfd, section, address, name);
 
   return true;
@@ -880,7 +881,7 @@ notice_ysym (info, name, abfd, section, value)
      bfd_vma value;
 {
   einfo ("%B: %s %s\n", abfd,
-        section != &bfd_und_section ? "definition of" : "reference to",
+        bfd_is_und_section (section) ? "reference to" : "definition of",
         name);
   return true;
 }
index 52dee61..9b3047b 100644 (file)
@@ -50,7 +50,8 @@ static const char *demangle PARAMS ((const char *string,
  %X no object output, fail return
  %V hex bfd_vma
  %v hex bfd_vma, no leading zeros
- %C Clever filename:linenumber 
+ %C clever filename:linenumber with function
+ %D like %C, but no function name
  %R info about a relent
  %s arbitrary string, like printf
  %d integer, like printf
@@ -208,6 +209,7 @@ vfinfo(fp, fmt, arg)
        break;
        
        case 'C':
+       case 'D':
        /* Clever filename:linenumber with function name if possible,
           or section name as a last resort.  The arguments are a BFD,
           a section, and an offset.  */
@@ -254,9 +256,12 @@ vfinfo(fp, fmt, arg)
              if (filename == (char *) NULL)
                filename = abfd->filename;
 
-             if (functionname != (char *)NULL) 
-               fprintf (fp, "%s:%u: %s", filename, linenumber,
-                        demangle (functionname, 1));
+             if (functionname != NULL && fmt[-1] == 'C')
+               {
+                 fprintf (fp, "%s: In function `%s':\n", filename,
+                          demangle (functionname, 1));
+                 fprintf (fp, "%s:%u", filename, linenumber);
+               }
              else if (linenumber != 0) 
                fprintf (fp, "%s:%u", filename, linenumber);
              else