* hppa-dis.c (print_insn_hppa): Change condition args to use
[deliverable/binutils-gdb.git] / ld / ldmisc.c
index 1e08efbebe7924885c281dc367347947a53522bc..8fab22825f7add6f3aa29f374bbf3a269a43685d 100644 (file)
@@ -1,5 +1,6 @@
 /* ldmisc.c
 /* ldmisc.c
-   Copyright (C) 1991, 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
+   Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 1999
+   Free Software Foundation, Inc.
    Written by Steve Chamberlain of Cygnus Support.
 
 This file is part of GLD, the Gnu Linker.
    Written by Steve Chamberlain of Cygnus Support.
 
 This file is part of GLD, the Gnu Linker.
@@ -15,8 +16,9 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
 GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
-along with GLD; see the file COPYING.  If not, write to
-the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+along with GLD; see the file COPYING.  If not, write to the Free
+Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+02111-1307, USA.  */
 
 #include "bfd.h"
 #include "sysdep.h"
 
 #include "bfd.h"
 #include "sysdep.h"
@@ -40,13 +42,7 @@ the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307
 #include "ldmain.h"
 #include "ldfile.h"
 
 #include "ldmain.h"
 #include "ldfile.h"
 
-
-#if USE_STDARG
-static void finfo PARAMS ((FILE *, const char *, ...));
-#else
-/* VARARGS*/
-static void finfo ();
-#endif
+static void vfinfo PARAMS ((FILE *, const char *, va_list));
 
 /*
  %% literal %
 
 /*
  %% literal %
@@ -60,6 +56,7 @@ static void finfo ();
  %X no object output, fail return
  %V hex bfd_vma
  %v hex bfd_vma, no leading zeros
  %X no object output, fail return
  %V hex bfd_vma
  %v hex bfd_vma, no leading zeros
+ %W hex bfd_vma with 0x with no leading zeros taking up 8 spaces
  %C clever filename:linenumber with function
  %D like %C, but no function name
  %G like %D, but only function name
  %C clever filename:linenumber with function
  %D like %C, but no function name
  %G like %D, but only function name
@@ -79,8 +76,10 @@ demangle (string)
       && bfd_get_symbol_leading_char (output_bfd) == string[0])
     ++string;
 
       && bfd_get_symbol_leading_char (output_bfd) == string[0])
     ++string;
 
-  /* This is a hack for better error reporting on XCOFF.  */
-  if (string[0] == '.')
+  /* This is a hack for better error reporting on XCOFF, or the MS PE   */
+  /* format.  Xcoff has a single '.', while the NT PE for PPC has '..'. */
+  /* So we remove all of them.                                          */
+  while(string[0] == '.')
     ++string;
 
   res = cplus_demangle (string, DMGL_ANSI | DMGL_PARAMS);
     ++string;
 
   res = cplus_demangle (string, DMGL_ANSI | DMGL_PARAMS);
@@ -145,13 +144,40 @@ vfinfo (fp, fmt, arg)
              }
              break;
 
              }
              break;
 
+           case 'W':
+             /* hex bfd_vma with 0x with no leading zeroes taking up
+                 8 spaces.  */
+             {
+               char buf[100];
+               bfd_vma value;
+               char *p;
+               int len;
+
+               value = va_arg (arg, bfd_vma);
+               sprintf_vma (buf, value);
+               for (p = buf; *p == '0'; ++p)
+                 ;
+               if (*p == '\0')
+                 --p;
+               len = strlen (p);
+               while (len < 8)
+                 {
+                   putc (' ', fp);
+                   ++len;
+                 }
+               fprintf (fp, "0x%s", p);
+             }
+             break;
+
            case 'T':
              /* Symbol name.  */
              {
                const char *name = va_arg (arg, const char *);
 
            case 'T':
              /* Symbol name.  */
              {
                const char *name = va_arg (arg, const char *);
 
-               if (name == (const char *) NULL)
-                 fprintf (fp, "no symbol");
+               if (name == (const char *) NULL || *name == 0)
+                 fprintf (fp, _("no symbol"));
+               else if (! demangling)
+                 fprintf (fp, "%s", name);
                else
                  {
                    char *demangled;
                else
                  {
                    char *demangled;
@@ -213,7 +239,7 @@ vfinfo (fp, fmt, arg)
              else if (ldfile_input_filename != NULL)
                fprintf (fp, "%s:%u", ldfile_input_filename, lineno);
              else
              else if (ldfile_input_filename != NULL)
                fprintf (fp, "%s:%u", ldfile_input_filename, lineno);
              else
-               fprintf (fp, "built in linker script:%u", lineno);
+               fprintf (fp, _("built in linker script:%u"), lineno);
              break;
 
            case 'R':
              break;
 
            case 'R':
@@ -221,10 +247,10 @@ vfinfo (fp, fmt, arg)
              {
                arelent *relent = va_arg (arg, arelent *);
        
              {
                arelent *relent = va_arg (arg, arelent *);
        
-               finfo (fp, "%s+0x%v (type %s)",
-                      (*(relent->sym_ptr_ptr))->name,
-                      relent->addend,
-                      relent->howto->name);
+               lfinfo (fp, "%s+0x%v (type %s)",
+                       (*(relent->sym_ptr_ptr))->name,
+                       relent->addend,
+                       relent->howto->name);
              }
              break;
        
              }
              break;
        
@@ -263,11 +289,11 @@ vfinfo (fp, fmt, arg)
 
                    symsize = bfd_get_symtab_upper_bound (abfd);
                    if (symsize < 0)
 
                    symsize = bfd_get_symtab_upper_bound (abfd);
                    if (symsize < 0)
-                     einfo ("%B%F: could not read symbols\n", abfd);
+                     einfo (_("%B%F: could not read symbols\n"), abfd);
                    asymbols = (asymbol **) xmalloc (symsize);
                    symbol_count = bfd_canonicalize_symtab (abfd, asymbols);
                    if (symbol_count < 0)
                    asymbols = (asymbol **) xmalloc (symsize);
                    symbol_count = bfd_canonicalize_symtab (abfd, asymbols);
                    if (symbol_count < 0)
-                     einfo ("%B%F: could not read symbols\n", abfd);
+                     einfo (_("%B%F: could not read symbols\n"), abfd);
                    if (entry != (lang_input_statement_type *) NULL)
                      {
                        entry->asymbols = asymbols;
                    if (entry != (lang_input_statement_type *) NULL)
                      {
                        entry->asymbols = asymbols;
@@ -282,11 +308,11 @@ vfinfo (fp, fmt, arg)
                  {
                    if (functionname != NULL && fmt[-1] == 'G')
                      {
                  {
                    if (functionname != NULL && fmt[-1] == 'G')
                      {
-                       finfo (fp, "%B:", abfd);
+                       lfinfo (fp, "%B:", abfd);
                        if (filename != NULL
                            && strcmp (filename, bfd_get_filename (abfd)) != 0)
                          fprintf (fp, "%s:", filename);
                        if (filename != NULL
                            && strcmp (filename, bfd_get_filename (abfd)) != 0)
                          fprintf (fp, "%s:", filename);
-                       finfo (fp, "%T", functionname);
+                       lfinfo (fp, "%T", functionname);
                      }
                    else if (functionname != NULL && fmt[-1] == 'C')
                      {
                      }
                    else if (functionname != NULL && fmt[-1] == 'C')
                      {
@@ -303,8 +329,8 @@ vfinfo (fp, fmt, arg)
                            /* We use abfd->filename in this initial line,
                               in case filename is a .h file or something
                               similarly unhelpful.  */
                            /* We use abfd->filename in this initial line,
                               in case filename is a .h file or something
                               similarly unhelpful.  */
-                           finfo (fp, "%B: In function `%T':\n",
-                                  abfd, functionname);
+                           lfinfo (fp, _("%B: In function `%T':\n"),
+                                   abfd, functionname);
 
                            last_bfd = abfd;
                            if (last_file != NULL)
 
                            last_bfd = abfd;
                            if (last_file != NULL)
@@ -318,24 +344,25 @@ vfinfo (fp, fmt, arg)
                        if (linenumber != 0)
                          fprintf (fp, "%s:%u", filename, linenumber);
                        else
                        if (linenumber != 0)
                          fprintf (fp, "%s:%u", filename, linenumber);
                        else
-                         finfo (fp, "%s(%s+0x%v)", filename, section->name,
-                                offset);
+                         lfinfo (fp, "%s(%s+0x%v)", filename, section->name,
+                                 offset);
                      }
                    else if (filename == NULL
                             || strcmp (filename, abfd->filename) == 0)
                      {
                      }
                    else if (filename == NULL
                             || strcmp (filename, abfd->filename) == 0)
                      {
-                       finfo (fp, "%B(%s+0x%v)", abfd, section->name, offset);
+                       lfinfo (fp, "%B(%s+0x%v)", abfd, section->name,
+                               offset);
                        if (linenumber != 0)
                        if (linenumber != 0)
-                         finfo (fp, ":%u", linenumber);
+                         lfinfo (fp, ":%u", linenumber);
                      }
                    else if (linenumber != 0) 
                      }
                    else if (linenumber != 0) 
-                     finfo (fp, "%B:%s:%u", abfd, filename, linenumber);
+                     lfinfo (fp, "%B:%s:%u", abfd, filename, linenumber);
                    else
                    else
-                     finfo (fp, "%B(%s+0x%v):%s", abfd, section->name, offset,
-                            filename);
+                     lfinfo (fp, "%B(%s+0x%v):%s", abfd, section->name,
+                             offset, filename);
                  }
                else
                  }
                else
-                 finfo (fp, "%B(%s+0x%v)", abfd, section->name, offset);
+                 lfinfo (fp, "%B(%s+0x%v)", abfd, section->name, offset);
 
                if (discard_last)
                  {
 
                if (discard_last)
                  {
@@ -434,7 +461,7 @@ info_assert (file, line)
      const char *file;
      unsigned int line;
 {
      const char *file;
      unsigned int line;
 {
-  einfo ("%F%P: internal error %s %d\n", file, line);
+  einfo (_("%F%P: internal error %s %d\n"), file, line);
 }
 
 char *
 }
 
 char *
@@ -471,11 +498,11 @@ minfo (va_alist)
   va_end (arg);
 }
 
   va_end (arg);
 }
 
-static void
+void
 #if USE_STDARG
 #if USE_STDARG
-finfo (FILE *file, const char *fmt, ...)
+lfinfo (FILE *file, const char *fmt, ...)
 #else
 #else
-finfo (va_alist)
+lfinfo (va_alist)
      va_dcl
 #endif
 {
      va_dcl
 #endif
 {
@@ -509,10 +536,3 @@ print_nl ()
 {
   fprintf (config.map_file, "\n");
 }
 {
   fprintf (config.map_file, "\n");
 }
-
-void 
-print_address (value)
-     bfd_vma value;
-{
-  fprintf_vma (config.map_file, value);
-}
This page took 0.026703 seconds and 4 git commands to generate.