gdb/doc: Clarify vCont packet description
[binutils-gdb.git] / bfd / bfd.c
index 7400c4ed5d24d69aba6c5f6a9e036b93f7c03915..87c311a40fa10a5393faabd87fb1468c09e71c74 100644 (file)
--- a/bfd/bfd.c
+++ b/bfd/bfd.c
@@ -46,7 +46,7 @@ CODE_FRAGMENT
 .
 .enum bfd_plugin_format
 .  {
-.    bfd_plugin_uknown = 0,
+.    bfd_plugin_unknown = 0,
 .    bfd_plugin_yes = 1,
 .    bfd_plugin_no = 2
 .  };
@@ -598,11 +598,11 @@ SUBSECTION
        problem.  They call a BFD error handler function.  This
        function may be overridden by the program.
 
-       The BFD error handler acts like printf.
+       The BFD error handler acts like vprintf.
 
 CODE_FRAGMENT
 .
-.typedef void (*bfd_error_handler_type) (const char *, ...);
+.typedef void (*bfd_error_handler_type) (const char *, va_list);
 .
 */
 
@@ -634,10 +634,9 @@ static const char *_bfd_error_program_name;
        integer_for_the_%d);
  */
 
-void
-_bfd_default_error_handler (const char *fmt, ...)
+static void
+error_handler_internal (const char *fmt, va_list ap)
 {
-  va_list ap;
   char *bufp;
   const char *new_fmt, *p;
   size_t avail = 1000;
@@ -651,7 +650,6 @@ _bfd_default_error_handler (const char *fmt, ...)
   else
     fprintf (stderr, "BFD: ");
 
-  va_start (ap, fmt);
   new_fmt = fmt;
   bufp = buf;
 
@@ -703,7 +701,8 @@ _bfd_default_error_handler (const char *fmt, ...)
                  if (abfd == NULL)
                    /* Invoking %B with a null bfd pointer is an internal error.  */
                    abort ();
-                 else if (abfd->my_archive)
+                 else if (abfd->my_archive
+                          && !bfd_is_thin_archive (abfd->my_archive))
                    snprintf (bufp, avail, "%s(%s)",
                              abfd->my_archive->filename, abfd->filename);
                  else
@@ -781,7 +780,6 @@ _bfd_default_error_handler (const char *fmt, ...)
     }
 
   vfprintf (stderr, new_fmt, ap);
-  va_end (ap);
 
   /* On AIX, putc is implemented as a macro that triggers a -Wunused-value
      warning, so use the fputc function to avoid it.  */
@@ -795,7 +793,17 @@ _bfd_default_error_handler (const char *fmt, ...)
    function pointer permits a program linked against BFD to intercept
    the messages and deal with them itself.  */
 
-bfd_error_handler_type _bfd_error_handler = _bfd_default_error_handler;
+static bfd_error_handler_type _bfd_error_internal = error_handler_internal;
+
+void
+_bfd_error_handler (const char *fmt, ...)
+{
+  va_list ap;
+
+  va_start (ap, fmt);
+  _bfd_error_internal (fmt, ap);
+  va_end (ap);
+}
 
 /*
 FUNCTION
@@ -814,8 +822,8 @@ bfd_set_error_handler (bfd_error_handler_type pnew)
 {
   bfd_error_handler_type pold;
 
-  pold = _bfd_error_handler;
-  _bfd_error_handler = pnew;
+  pold = _bfd_error_internal;
+  _bfd_error_internal = pnew;
   return pold;
 }
 
@@ -839,23 +847,6 @@ bfd_set_error_program_name (const char *name)
   _bfd_error_program_name = name;
 }
 
-/*
-FUNCTION
-       bfd_get_error_handler
-
-SYNOPSIS
-       bfd_error_handler_type bfd_get_error_handler (void);
-
-DESCRIPTION
-       Return the BFD error handler function.
-*/
-
-bfd_error_handler_type
-bfd_get_error_handler (void)
-{
-  return _bfd_error_handler;
-}
-
 /*
 SUBSECTION
        BFD assert handler
@@ -890,14 +881,14 @@ _bfd_default_assert_handler (const char *bfd_formatmsg,
                             int bfd_line)
 
 {
-  (*_bfd_error_handler) (bfd_formatmsg, bfd_version, bfd_file, bfd_line);
+  _bfd_error_handler (bfd_formatmsg, bfd_version, bfd_file, bfd_line);
 }
 
 /* Similar to _bfd_error_handler, a program can decide to exit on an
    internal BFD error.  We use a non-variadic type to simplify passing
    on parameters to other functions, e.g. _bfd_error_handler.  */
 
-bfd_assert_handler_type _bfd_assert_handler = _bfd_default_assert_handler;
+static bfd_assert_handler_type _bfd_assert_handler = _bfd_default_assert_handler;
 
 /*
 FUNCTION
@@ -920,23 +911,6 @@ bfd_set_assert_handler (bfd_assert_handler_type pnew)
   _bfd_assert_handler = pnew;
   return pold;
 }
-
-/*
-FUNCTION
-       bfd_get_assert_handler
-
-SYNOPSIS
-       bfd_assert_handler_type bfd_get_assert_handler (void);
-
-DESCRIPTION
-       Return the BFD assert handler function.
-*/
-
-bfd_assert_handler_type
-bfd_get_assert_handler (void)
-{
-  return _bfd_assert_handler;
-}
 \f
 /*
 INODE
@@ -1085,6 +1059,7 @@ bfd_set_file_flags (bfd *abfd, flagword flags)
 void
 bfd_assert (const char *file, int line)
 {
+  /* xgettext:c-format */
   (*_bfd_assert_handler) (_("BFD %s assertion fail %s:%d"),
                          BFD_VERSION_STRING, file, line);
 }
@@ -1096,14 +1071,16 @@ void
 _bfd_abort (const char *file, int line, const char *fn)
 {
   if (fn != NULL)
-    (*_bfd_error_handler)
+    _bfd_error_handler
+      /* xgettext:c-format */
       (_("BFD %s internal error, aborting at %s:%d in %s\n"),
        BFD_VERSION_STRING, file, line, fn);
   else
-    (*_bfd_error_handler)
+    _bfd_error_handler
+      /* xgettext:c-format */
       (_("BFD %s internal error, aborting at %s:%d\n"),
        BFD_VERSION_STRING, file, line);
-  (*_bfd_error_handler) (_("Please report this bug.\n"));
+  _bfd_error_handler (_("Please report this bug.\n"));
   _exit (EXIT_FAILURE);
 }
 
@@ -1432,27 +1409,6 @@ DESCRIPTION
 
 */
 
-/*
-FUNCTION
-       bfd_merge_private_bfd_data
-
-SYNOPSIS
-       bfd_boolean bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd);
-
-DESCRIPTION
-       Merge private BFD information from the BFD @var{ibfd} to the
-       the output file BFD @var{obfd} when linking.  Return <<TRUE>>
-       on success, <<FALSE>> on error.  Possible error returns are:
-
-       o <<bfd_error_no_memory>> -
-       Not enough memory exists to create private data for @var{obfd}.
-
-.#define bfd_merge_private_bfd_data(ibfd, obfd) \
-.     BFD_SEND (obfd, _bfd_merge_private_bfd_data, \
-.              (ibfd, obfd))
-
-*/
-
 /*
 FUNCTION
        bfd_set_private_flags