diff --git a/gas/ChangeLog b/gas/ChangeLog
index 0cd7f5df7ef..7b18a7d25b3 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,9 @@
+Mon Aug 17 13:18:51 1992  Ken Raeburn  (raeburn@cygnus.com)
+
+	* messages.c (as_tsktsk): Use correct ANSI form for stdarg
+	version.  Discard bogus DONTDEF version.
+	(as_warn, as_bad, as_fatal): Likewise.
+
 Fri Aug 14 18:31:14 1992  Ken Raeburn  (raeburn@cygnus.com)
 
 	* config/tc-m68k.c (m68k_ip): If instruction is invalid for the
diff --git a/gas/messages.c b/gas/messages.c
index 6a41dcad578..f8286b8f950 100644
--- a/gas/messages.c
+++ b/gas/messages.c
@@ -1,5 +1,5 @@
 /* messages.c - error reporter -
-   Copyright (C) 1987, 1991 Free Software Foundation, Inc.
+   Copyright (C) 1987, 1991, 1992 Free Software Foundation, Inc.
    
    This file is part of GAS, the GNU Assembler.
    
@@ -117,16 +117,13 @@ void as_perror(gripe, filename)
 char *gripe;		/* Unpunctuated error theme. */
 char *filename;
 {
-	extern int sys_nerr;
-	extern char *sys_errlist[];
-	
+#ifndef HAVE_STRERROR
+	extern char *strerror();
+#endif /* HAVE_STRERROR */
+
 	as_where();
-	fprintf(stderr,gripe,filename);
-	
-	if (errno > sys_nerr)
-	    fprintf(stderr, "Unknown error #%d.\n", errno);
-	else
-	    fprintf(stderr, "%s.\n", sys_errlist[errno]);
+	fprintf(stderr, gripe, filename);
+	fprintf(stderr, "%s.\n", strerror(errno));
 	errno = 0; /* After reporting, clear it. */
 } /* as_perror() */
 
@@ -140,8 +137,7 @@ char *filename;
  */
 
 #ifndef NO_STDARG
-void as_tsktsk(Format)
-const char *Format;
+void as_tsktsk(const char *Format, ...)
 {
 	va_list args;
 	
@@ -178,15 +174,6 @@ char *Format;
 #endif /* not NO_VARARGS */
 #endif /* not NO_STDARG */
 
-#ifdef DONTDEF
-void as_tsktsk(Format,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an)
-char *format;
-{
-	as_where();
-	fprintf(stderr,Format,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an);
-	(void)putc('\n',stderr);
-} /* as_tsktsk() */
-#endif
 /*
  *			a s _ w a r n ()
  *
@@ -197,8 +184,7 @@ char *format;
  */
 
 #ifndef NO_STDARG
-void as_warn(Format)
-const char *Format;
+void as_warn(const char *Format, ...)
 {
 	va_list args;
 	char buffer[200];
@@ -257,18 +243,6 @@ char *Format;
 #endif /* not NO_VARARGS */
 #endif /* not NO_STDARG */
 
-#ifdef DONTDEF
-void as_warn(Format,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an)
-char *format;
-{
-	if(!flagseen['W']) {
-		++warning_count;
-		as_where();
-		fprintf(stderr,Format,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an);
-		(void)putc('\n',stderr);
-	}
-} /* as_warn() */
-#endif
 /*
  *			a s _ b a d ()
  *
@@ -280,8 +254,7 @@ char *format;
  */
 
 #ifndef NO_STDARG
-void as_bad(Format)
-const char *Format;
+void as_bad(const char *Format, ...)
 {
 	va_list args;
 	char buffer[200];
@@ -336,17 +309,6 @@ char *Format;
 #endif /* not NO_VARARGS */
 #endif /* not NO_STDARG */
 
-#ifdef DONTDEF
-void as_bad(Format,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an)
-char *format;
-{
-	++error_count;
-	as_where();
-	fprintf(stderr,Format,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an);
-	(void)putc('\n',stderr);
-} /* as_bad() */
-#endif
-
 /*
  *			a s _ f a t a l ()
  *
@@ -357,8 +319,7 @@ char *format;
  */
 
 #ifndef NO_STDARG
-void as_fatal(Format)
-const char *Format;
+void as_fatal(const char *Format, ...)
 {
 	va_list args;
 	
@@ -401,16 +362,4 @@ char *Format;
 #endif /* not NO_VARARGS */
 #endif /* not NO_STDARG */
 
-#ifdef DONTDEF
-void as_fatal(Format,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an)
-char *Format;
-{
-	as_where();
-	fprintf (stderr, "FATAL:");
-	fprintf(stderr, Format,aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an);
-	(void) putc('\n', stderr);
-	exit(33);
-} /* as_fatal() */
-#endif
-
 /* end of messages.c */