]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Reinstate bfd_print_error as an extern function
authorAlan Modra <amodra@gmail.com>
Sat, 9 Mar 2024 09:57:32 +0000 (20:27 +1030)
committerAlan Modra <amodra@gmail.com>
Sat, 9 Mar 2024 10:30:02 +0000 (21:00 +1030)
* bfd.c (_bfd_print): Renamed from bfd_print_error.
(bfd_print_error): Reinstate previous code but using the above.
(error_handler_fprintf, error_handler_sprintf): Adjust.
* bfd-in2.h: Regenerate.

bfd/bfd-in2.h
bfd/bfd.c

index 76d450478a775700bd0e50f3910ac36fa23f3bec..79b24a7f6e9789422cb7f1b744e1af01a73fde52 100644 (file)
@@ -2558,6 +2558,9 @@ void bfd_perror (const char *message);
 typedef void (*bfd_error_handler_type) (const char *, va_list);
 
 typedef int (*bfd_print_callback) (void *, const char *, ...);
+void bfd_print_error (bfd_print_callback print_func,
+    void *stream, const char *fmt, va_list ap);
+
 void _bfd_error_handler (const char *fmt, ...) ATTRIBUTE_PRINTF_1;
 
 bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type);
index f40cf941edcdcff4faf85d4563a01b2048011296..54061a342403e657a75b32593c48d378de730e7b 100644 (file)
--- a/bfd/bfd.c
+++ b/bfd/bfd.c
@@ -1450,8 +1450,8 @@ _bfd_doprnt_scan (const char *format, va_list ap, union _bfd_doprnt_args *args)
 }
 
 static void
-bfd_print_error (bfd_print_callback print_func, void *stream,
-                const char *fmt, va_list ap)
+_bfd_print (bfd_print_callback print_func, void *stream,
+           const char *fmt, va_list ap)
 {
   union _bfd_doprnt_args args[MAX_ARGS];
 
@@ -1459,6 +1459,32 @@ bfd_print_error (bfd_print_callback print_func, void *stream,
   _bfd_doprnt (print_func, stream, fmt, args);
 }
 
+/*
+FUNCTION
+       bfd_print_error
+
+SYNOPSIS
+       void bfd_print_error (bfd_print_callback print_func,
+         void *stream, const char *fmt, va_list ap);
+
+DESCRIPTION
+
+       This formats FMT and AP according to BFD "printf" rules,
+       sending the output to STREAM by repeated calls to PRINT_FUNC.
+       PRINT_FUNC is a printf-like function; it does not need to
+       implement the BFD printf format extensions.  This can be used
+       in a callback that is set via bfd_set_error_handler to turn
+       the error into ordinary output.
+*/
+
+void
+bfd_print_error (bfd_print_callback print_func, void *stream,
+                const char *fmt, va_list ap)
+{
+  print_func (stream, "%s: ", _bfd_get_error_program_name ());
+  _bfd_print (print_func, stream, fmt, ap);
+}
+
 /* The standard error handler that prints to stderr.  */
 
 static void
@@ -1467,7 +1493,6 @@ error_handler_fprintf (const char *fmt, va_list ap)
   /* PR 4992: Don't interrupt output being sent to stdout.  */
   fflush (stdout);
 
-  fprintf (stderr, "%s: ", _bfd_get_error_program_name ());
   bfd_print_error ((bfd_print_callback) fprintf, stderr, fmt, ap);
 
   /* On AIX, putc is implemented as a macro that triggers a -Wunused-value
@@ -1526,7 +1551,7 @@ error_handler_sprintf (const char *fmt, va_list ap)
   error_stream.ptr = error_buf;
   error_stream.left = sizeof (error_buf);
 
-  bfd_print_error (err_sprintf, &error_stream, fmt, ap);
+  _bfd_print (err_sprintf, &error_stream, fmt, ap);
 
   size_t len = error_stream.ptr - error_buf;
   struct per_xvec_message **warn