X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gas%2Fmessages.c;h=c1743fb7db4e7174c5b696816257160e4e1a4e16;hb=0d495746bb7ac93f3270443cae4117d6ae69ea05;hp=21381b47e968a6cd8b627ebbcc2f0b729390481f;hpb=885afe7b6fda4324ac445cfdd9e37630f5061dc0;p=deliverable%2Fbinutils-gdb.git diff --git a/gas/messages.c b/gas/messages.c index 21381b47e9..c1743fb7db 100644 --- a/gas/messages.c +++ b/gas/messages.c @@ -1,12 +1,10 @@ /* messages.c - error reporter - - Copyright 1987, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 2000, 2001, - 2003, 2004, 2005, 2006 - Free Software Foundation, Inc. + Copyright (C) 1987-2015 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 - 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, @@ -113,7 +111,12 @@ as_show_where (void) as_where (&file, &line); identify (file); if (file) - fprintf (stderr, "%s:%u: ", file, line); + { + 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 @@ -122,7 +125,6 @@ as_show_where (void) Please explain in string (which may have '\n's) what recovery was done. */ -#ifdef USE_STDARG void as_tsktsk (const char *format, ...) { @@ -134,21 +136,6 @@ as_tsktsk (const char *format, ...) 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. */ @@ -162,10 +149,14 @@ as_warn_internal (char *file, unsigned int line, char *buffer) 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 @@ -177,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. */ -#ifdef USE_STDARG void as_warn (const char *format, ...) { @@ -192,30 +182,11 @@ as_warn (const char *format, ...) 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. */ -#ifdef USE_STDARG void as_warn_where (char *file, unsigned int line, const char *format, ...) { @@ -230,26 +201,6 @@ as_warn_where (char *file, unsigned int line, const char *format, ...) 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. */ @@ -263,10 +214,14 @@ as_bad_internal (char *file, unsigned int line, char *buffer) 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 @@ -278,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. */ -#ifdef USE_STDARG void as_bad (const char *format, ...) { @@ -292,28 +246,10 @@ as_bad (const char *format, ...) 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. */ -#ifdef USE_STDARG void as_bad_where (char *file, unsigned int line, const char *format, ...) { @@ -327,31 +263,11 @@ as_bad_where (char *file, unsigned int line, const char *format, ...) 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. */ -#ifdef USE_STDARG void as_fatal (const char *format, ...) { @@ -369,23 +285,6 @@ as_fatal (const char *format, ...) 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. */ @@ -456,6 +355,24 @@ as_internal_value_out_of_range (char * 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 @@ -482,9 +399,9 @@ as_internal_value_out_of_range (char * prefix, 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)");