Fix "PowerPC64 ELFv2 entry code" for big-endian
[deliverable/binutils-gdb.git] / gas / messages.c
index b1b94cdf7c6eccf118be48e11a6a16ad0fbe3deb..f161dc38d72f30e92e3451ff350569da3e547625 100644 (file)
@@ -1,12 +1,10 @@
 /* messages.c - error reporter -
 /* messages.c - error reporter -
-   Copyright 1987, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 2000, 2001,
-   2003, 2004, 2005
-   Free Software Foundation, Inc.
+   Copyright (C) 1987-2016 Free Software Foundation, Inc.
    This file is part of GAS, the GNU Assembler.
 
    GAS is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    This file is part of GAS, the GNU Assembler.
 
    GAS is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
+   the Free Software Foundation; either version 3, or (at your option)
    any later version.
 
    GAS is distributed in the hope that it will be useful,
    any later version.
 
    GAS is distributed in the hope that it will be useful,
@@ -113,25 +111,12 @@ as_show_where (void)
   as_where (&file, &line);
   identify (file);
   if (file)
   as_where (&file, &line);
   identify (file);
   if (file)
-    fprintf (stderr, "%s:%u: ", file, line);
-}
-
-/* Like perror(3), but with more info.  */
-
-void
-as_perror (const char *gripe,          /* Unpunctuated error theme.  */
-          const char *filename)
-{
-  const char *errtxt;
-  int saved_errno = errno;
-
-  as_show_where ();
-  fprintf (stderr, gripe, filename);
-  errno = saved_errno;
-  errtxt = bfd_errmsg (bfd_get_error ());
-  fprintf (stderr, ": %s\n", errtxt);
-  errno = 0;
-  bfd_set_error (bfd_error_no_error);
+    {
+      if (line != 0)
+       fprintf (stderr, "%s:%u: ", file, line);
+      else
+       fprintf (stderr, "%s: ", file);
+    }
 }
 
 /* Send to stderr a string as a warning, and locate warning
 }
 
 /* Send to stderr a string as a warning, and locate warning
@@ -140,7 +125,6 @@ as_perror (const char *gripe,               /* Unpunctuated error theme.  */
    Please explain in string (which may have '\n's) what recovery was
    done.  */
 
    Please explain in string (which may have '\n's) what recovery was
    done.  */
 
-#ifdef USE_STDARG
 void
 as_tsktsk (const char *format, ...)
 {
 void
 as_tsktsk (const char *format, ...)
 {
@@ -152,21 +136,6 @@ as_tsktsk (const char *format, ...)
   va_end (args);
   (void) putc ('\n', stderr);
 }
   va_end (args);
   (void) putc ('\n', stderr);
 }
-#else
-void
-as_tsktsk (format, va_alist)
-     const char *format;
-     va_dcl
-{
-  va_list args;
-
-  as_show_where ();
-  va_start (args);
-  vfprintf (stderr, format, args);
-  va_end (args);
-  (void) putc ('\n', stderr);
-}
-#endif /* not NO_STDARG */
 
 /* The common portion of as_warn and as_warn_where.  */
 
 
 /* The common portion of as_warn and as_warn_where.  */
 
@@ -180,10 +149,14 @@ as_warn_internal (char *file, unsigned int line, char *buffer)
 
   identify (file);
   if (file)
 
   identify (file);
   if (file)
-    fprintf (stderr, "%s:%u: ", file, line);
-  fprintf (stderr, _("Warning: "));
-  fputs (buffer, stderr);
-  (void) putc ('\n', stderr);
+    {
+      if (line != 0)
+       fprintf (stderr, "%s:%u: %s%s\n", file, line, _("Warning: "), buffer);
+      else
+       fprintf (stderr, "%s: %s%s\n", file, _("Warning: "), buffer);
+    }
+  else
+    fprintf (stderr, "%s%s\n", _("Warning: "), buffer);
 #ifndef NO_LISTING
   listing_warning (buffer);
 #endif
 #ifndef NO_LISTING
   listing_warning (buffer);
 #endif
@@ -195,7 +168,6 @@ as_warn_internal (char *file, unsigned int line, char *buffer)
    Please explain in string (which may have '\n's) what recovery was
    done.  */
 
    Please explain in string (which may have '\n's) what recovery was
    done.  */
 
-#ifdef USE_STDARG
 void
 as_warn (const char *format, ...)
 {
 void
 as_warn (const char *format, ...)
 {
@@ -210,30 +182,11 @@ as_warn (const char *format, ...)
       as_warn_internal ((char *) NULL, 0, buffer);
     }
 }
       as_warn_internal ((char *) NULL, 0, buffer);
     }
 }
-#else
-void
-as_warn (format, va_alist)
-     const char *format;
-     va_dcl
-{
-  va_list args;
-  char buffer[2000];
-
-  if (!flag_no_warnings)
-    {
-      va_start (args);
-      vsnprintf (buffer, sizeof (buffer), format, args);
-      va_end (args);
-      as_warn_internal ((char *) NULL, 0, buffer);
-    }
-}
-#endif /* not NO_STDARG */
 
 /* Like as_bad but the file name and line number are passed in.
    Unfortunately, we have to repeat the function in order to handle
    the varargs correctly and portably.  */
 
 
 /* Like as_bad but the file name and line number are passed in.
    Unfortunately, we have to repeat the function in order to handle
    the varargs correctly and portably.  */
 
-#ifdef USE_STDARG
 void
 as_warn_where (char *file, unsigned int line, const char *format, ...)
 {
 void
 as_warn_where (char *file, unsigned int line, const char *format, ...)
 {
@@ -248,26 +201,6 @@ as_warn_where (char *file, unsigned int line, const char *format, ...)
       as_warn_internal (file, line, buffer);
     }
 }
       as_warn_internal (file, line, buffer);
     }
 }
-#else
-void
-as_warn_where (file, line, format, va_alist)
-     char *file;
-     unsigned int line;
-     const char *format;
-     va_dcl
-{
-  va_list args;
-  char buffer[2000];
-
-  if (!flag_no_warnings)
-    {
-      va_start (args);
-      vsnprintf (buffer, sizeof (buffer), format, args);
-      va_end (args);
-      as_warn_internal (file, line, buffer);
-    }
-}
-#endif /* not NO_STDARG */
 
 /* The common portion of as_bad and as_bad_where.  */
 
 
 /* The common portion of as_bad and as_bad_where.  */
 
@@ -281,10 +214,14 @@ as_bad_internal (char *file, unsigned int line, char *buffer)
 
   identify (file);
   if (file)
 
   identify (file);
   if (file)
-    fprintf (stderr, "%s:%u: ", file, line);
-  fprintf (stderr, _("Error: "));
-  fputs (buffer, stderr);
-  (void) putc ('\n', stderr);
+    {
+      if (line != 0)
+       fprintf (stderr, "%s:%u: %s%s\n", file, line, _("Error: "), buffer);
+      else
+       fprintf (stderr, "%s: %s%s\n", file, _("Error: "), buffer);
+    }
+  else
+    fprintf (stderr, "%s%s\n", _("Error: "), buffer);
 #ifndef NO_LISTING
   listing_error (buffer);
 #endif
 #ifndef NO_LISTING
   listing_error (buffer);
 #endif
@@ -296,7 +233,6 @@ as_bad_internal (char *file, unsigned int line, char *buffer)
    Please explain in string (which may have '\n's) what recovery was
    done.  */
 
    Please explain in string (which may have '\n's) what recovery was
    done.  */
 
-#ifdef USE_STDARG
 void
 as_bad (const char *format, ...)
 {
 void
 as_bad (const char *format, ...)
 {
@@ -310,28 +246,10 @@ as_bad (const char *format, ...)
   as_bad_internal ((char *) NULL, 0, buffer);
 }
 
   as_bad_internal ((char *) NULL, 0, buffer);
 }
 
-#else
-void
-as_bad (format, va_alist)
-     const char *format;
-     va_dcl
-{
-  va_list args;
-  char buffer[2000];
-
-  va_start (args);
-  vsnprintf (buffer, sizeof (buffer), format, args);
-  va_end (args);
-
-  as_bad_internal ((char *) NULL, 0, buffer);
-}
-#endif /* not NO_STDARG */
-
 /* Like as_bad but the file name and line number are passed in.
    Unfortunately, we have to repeat the function in order to handle
    the varargs correctly and portably.  */
 
 /* Like as_bad but the file name and line number are passed in.
    Unfortunately, we have to repeat the function in order to handle
    the varargs correctly and portably.  */
 
-#ifdef USE_STDARG
 void
 as_bad_where (char *file, unsigned int line, const char *format, ...)
 {
 void
 as_bad_where (char *file, unsigned int line, const char *format, ...)
 {
@@ -345,31 +263,11 @@ as_bad_where (char *file, unsigned int line, const char *format, ...)
   as_bad_internal (file, line, buffer);
 }
 
   as_bad_internal (file, line, buffer);
 }
 
-#else
-void
-as_bad_where (file, line, format, va_alist)
-     char *file;
-     unsigned int line;
-     const char *format;
-     va_dcl
-{
-  va_list args;
-  char buffer[2000];
-
-  va_start (args);
-  vsnprintf (buffer, sizeof (buffer), format, args);
-  va_end (args);
-
-  as_bad_internal (file, line, buffer);
-}
-#endif /* not NO_STDARG */
-
 /* Send to stderr a string as a fatal message, and print location of
    error in input file(s).
    Please only use this for when we DON'T have some recovery action.
    It xexit()s with a warning status.  */
 
 /* Send to stderr a string as a fatal message, and print location of
    error in input file(s).
    Please only use this for when we DON'T have some recovery action.
    It xexit()s with a warning status.  */
 
-#ifdef USE_STDARG
 void
 as_fatal (const char *format, ...)
 {
 void
 as_fatal (const char *format, ...)
 {
@@ -387,23 +285,6 @@ as_fatal (const char *format, ...)
     unlink_if_ordinary (out_file_name);
   xexit (EXIT_FAILURE);
 }
     unlink_if_ordinary (out_file_name);
   xexit (EXIT_FAILURE);
 }
-#else
-void
-as_fatal (format, va_alist)
-     char *format;
-     va_dcl
-{
-  va_list args;
-
-  as_show_where ();
-  va_start (args);
-  fprintf (stderr, _("Fatal error: "));
-  vfprintf (stderr, format, args);
-  (void) putc ('\n', stderr);
-  va_end (args);
-  xexit (EXIT_FAILURE);
-}
-#endif /* not NO_STDARG */
 
 /* Indicate assertion failure.
    Arguments: Filename, line number, optional function name.  */
 
 /* Indicate assertion failure.
    Arguments: Filename, line number, optional function name.  */
@@ -414,10 +295,10 @@ as_assert (const char *file, int line, const char *fn)
   as_show_where ();
   fprintf (stderr, _("Internal error!\n"));
   if (fn)
   as_show_where ();
   fprintf (stderr, _("Internal error!\n"));
   if (fn)
-    fprintf (stderr, _("Assertion failure in %s at %s line %d.\n"),
+    fprintf (stderr, _("Assertion failure in %s at %s:%d.\n"),
             fn, file, line);
   else
             fn, file, line);
   else
-    fprintf (stderr, _("Assertion failure at %s line %d.\n"), file, line);
+    fprintf (stderr, _("Assertion failure at %s:%d.\n"), file, line);
   fprintf (stderr, _("Please report this bug.\n"));
   xexit (EXIT_FAILURE);
 }
   fprintf (stderr, _("Please report this bug.\n"));
   xexit (EXIT_FAILURE);
 }
@@ -430,10 +311,10 @@ as_abort (const char *file, int line, const char *fn)
 {
   as_show_where ();
   if (fn)
 {
   as_show_where ();
   if (fn)
-    fprintf (stderr, _("Internal error, aborting at %s line %d in %s\n"),
+    fprintf (stderr, _("Internal error, aborting at %s:%d in %s\n"),
             file, line, fn);
   else
             file, line, fn);
   else
-    fprintf (stderr, _("Internal error, aborting at %s line %d\n"),
+    fprintf (stderr, _("Internal error, aborting at %s:%d\n"),
             file, line);
   fprintf (stderr, _("Please report this bug.\n"));
   xexit (EXIT_FAILURE);
             file, line);
   fprintf (stderr, _("Please report this bug.\n"));
   xexit (EXIT_FAILURE);
@@ -474,6 +355,24 @@ as_internal_value_out_of_range (char *    prefix,
   if (prefix == NULL)
     prefix = "";
 
   if (prefix == NULL)
     prefix = "";
 
+  if (val >= min && val <= max)
+    {
+      addressT right = max & -max;
+
+      if (max <= 1)
+       abort ();
+
+      /* xgettext:c-format  */
+      err = _("%s out of domain (%d is not a multiple of %d)");
+      if (bad)
+       as_bad_where (file, line, err,
+                     prefix, (int) val, (int) right);
+      else
+       as_warn_where (file, line, err,
+                      prefix, (int) val, (int) right);
+      return;
+    }
+
   if (   val < HEX_MAX_THRESHOLD
       && min < HEX_MAX_THRESHOLD
       && max < HEX_MAX_THRESHOLD
   if (   val < HEX_MAX_THRESHOLD
       && min < HEX_MAX_THRESHOLD
       && max < HEX_MAX_THRESHOLD
@@ -500,9 +399,9 @@ as_internal_value_out_of_range (char *    prefix,
       if (sizeof (val) > sizeof (bfd_vma))
        abort ();
 
       if (sizeof (val) > sizeof (bfd_vma))
        abort ();
 
-      sprintf_vma (val_buf, val);
-      sprintf_vma (min_buf, min);
-      sprintf_vma (max_buf, max);
+      sprintf_vma (val_buf, (bfd_vma) val);
+      sprintf_vma (min_buf, (bfd_vma) min);
+      sprintf_vma (max_buf, (bfd_vma) max);
 
       /* xgettext:c-format.  */
       err = _("%s out of range (0x%s is not between 0x%s and 0x%s)");
 
       /* xgettext:c-format.  */
       err = _("%s out of range (0x%s is not between 0x%s and 0x%s)");
This page took 0.026737 seconds and 4 git commands to generate.