+2016-09-30 Alan Modra <amodra@gmail.com>
+
+ * bfd-in.h: Include stdarg.h.
+ * bfd.c (bfd_error_handler_type): Make like vprintf.
+ (_bfd_error_internal): Rename from _bfd_error_handler. Make static.
+ (error_handler_internal): New function, split out from..
+ (_bfd_default_error_handler): ..here. Rename to _bfd_error_handler.
+ (bfd_set_error_handler): Update.
+ (bfd_get_error_handler, bfd_get_assert_handler): Delete.
+ (_bfd_assert_handler): Make static.
+ * coffgen.c (null_error_handler): Update params.
+ * elf-bfd.h (struct elf_backend_data <link_order_error_handler>):
+ Don't use bfd_error_handler_type.
+ * elf64-mmix.c (mmix_dump_bpo_gregs): Likewise.
+ * elfxx-target.h (elf_backend_link_order_error_handler): Default
+ to _bfd_error_handler.
+ * libbfd-in.h (_bfd_default_error_handler): Don't declare.
+ (bfd_assert_handler_type): Likewise.
+ (_bfd_error_handler): Update.
+ * bfd-in2.h: Regenerate.
+ * libbfd.h: Regenerate.
+
2016-09-28 Akihiko Odaki <akihiko.odaki.4i@stu.hosei.ac.jp>
PR ld/20636
#include "ansidecl.h"
#include "symcat.h"
+#include <stdarg.h>
#include <sys/stat.h>
#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
#include "ansidecl.h"
#include "symcat.h"
+#include <stdarg.h>
#include <sys/stat.h>
#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
void bfd_perror (const char *message);
-typedef void (*bfd_error_handler_type) (const char *, ...);
+typedef void (*bfd_error_handler_type) (const char *, va_list);
bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type);
void bfd_set_error_program_name (const char *);
-bfd_error_handler_type bfd_get_error_handler (void);
-
typedef void (*bfd_assert_handler_type) (const char *bfd_formatmsg,
const char *bfd_version,
bfd_assert_handler_type bfd_set_assert_handler (bfd_assert_handler_type);
-bfd_assert_handler_type bfd_get_assert_handler (void);
-
long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect);
long bfd_canonicalize_reloc
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);
.
*/
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;
else
fprintf (stderr, "BFD: ");
- va_start (ap, fmt);
new_fmt = fmt;
bufp = buf;
}
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. */
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
{
bfd_error_handler_type pold;
- pold = _bfd_error_handler;
- _bfd_error_handler = pnew;
+ pold = _bfd_error_internal;
+ _bfd_error_internal = pnew;
return pold;
}
_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
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
_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
}
static void
-null_error_handler (const char * fmt ATTRIBUTE_UNUSED, ...)
+null_error_handler (const char *fmt ATTRIBUTE_UNUSED,
+ va_list ap ATTRIBUTE_UNUSED)
{
}
Elf_Internal_Shdr *osection);
/* Used to handle bad SHF_LINK_ORDER input. */
- bfd_error_handler_type link_order_error_handler;
+ void (*link_order_error_handler) (const char *, ...);
/* Name of the PLT relocation section. */
const char *relplt_name;
/* Only intended to be called from a debugger. */
extern void mmix_dump_bpo_gregs
- (struct bfd_link_info *, bfd_error_handler_type);
+ (struct bfd_link_info *, void (*) (const char *, ...));
static void
mmix_set_relaxable_size (bfd *, asection *, void *);
void
mmix_dump_bpo_gregs (struct bfd_link_info *link_info,
- bfd_error_handler_type pf)
+ void (*pf) (const char *fmt, ...))
{
bfd *bpo_greg_owner;
asection *bpo_gregs_section;
#endif
#ifndef elf_backend_link_order_error_handler
-#define elf_backend_link_order_error_handler _bfd_default_error_handler
+#define elf_backend_link_order_error_handler _bfd_error_handler
#endif
#ifndef elf_backend_common_definition
extern void *bfd_zmalloc2
(bfd_size_type, bfd_size_type);
-extern void _bfd_default_error_handler (const char *s, ...);
-extern bfd_error_handler_type _bfd_error_handler;
-extern bfd_assert_handler_type _bfd_assert_handler;
+extern void _bfd_error_handler (const char *s, ...);
/* These routines allocate and free things on the BFD's objalloc. */
extern void *bfd_zmalloc2
(bfd_size_type, bfd_size_type);
-extern void _bfd_default_error_handler (const char *s, ...);
-extern bfd_error_handler_type _bfd_error_handler;
-extern bfd_assert_handler_type _bfd_assert_handler;
+extern void _bfd_error_handler (const char *s, ...);
/* These routines allocate and free things on the BFD's objalloc. */
+2016-09-30 Alan Modra <amodra@gmail.com>
+
+ * ldlang.c (ignore_bfd_errors): Update params.
+
2016-09-29 H.J. Lu <hongjiu.lu@intel.com>
PR ld/20528
BFD. */
static void
-ignore_bfd_errors (const char *s ATTRIBUTE_UNUSED, ...)
+ignore_bfd_errors (const char *fmt ATTRIBUTE_UNUSED,
+ va_list ap ATTRIBUTE_UNUSED)
{
/* Don't do anything. */
}