| Index: bfd/bfd.c
|
| diff --git a/bfd/bfd.c b/bfd/bfd.c
|
| index 7c14c7a00a6e885aa98443113456b240bd04c8b5..640b4205d162afc1c3776da33098792e7cb0d64b 100644
|
| --- a/bfd/bfd.c
|
| +++ b/bfd/bfd.c
|
| @@ -797,6 +797,88 @@ bfd_get_error_handler (void)
|
| {
|
| return _bfd_error_handler;
|
| }
|
| +
|
| +/*
|
| +SUBSECTION
|
| + BFD assert handler
|
| +
|
| + If BFD finds an internal inconsistency, the bfd assert
|
| + handler is called with information on the BFD version, BFD
|
| + source file and line. If this happens, most programs linked
|
| + against BFD are expected to want to exit with an error, or mark
|
| + the current BFD operation as failed, so it is recommended to
|
| + override the default handler, which just calls
|
| + _bfd_error_handler and continues.
|
| +
|
| +CODE_FRAGMENT
|
| +.
|
| +.typedef void (*bfd_assert_handler_type) (const char *bfd_formatmsg,
|
| +. const char *bfd_version,
|
| +. const char *bfd_file,
|
| +. int bfd_line);
|
| +.
|
| +*/
|
| +
|
| +/* Note the use of bfd_ prefix on the parameter names above: we want to
|
| + show which one is the message and which is the version by naming the
|
| + parameters, but avoid polluting the program-using-bfd namespace as
|
| + the typedef is visible in the exported headers that the program
|
| + includes. Below, it's just for consistency. */
|
| +
|
| +static void
|
| +_bfd_default_assert_handler (const char *bfd_formatmsg,
|
| + const char *bfd_version,
|
| + const char *bfd_file,
|
| + int 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;
|
| +
|
| +/*
|
| +FUNCTION
|
| + bfd_set_assert_handler
|
| +
|
| +SYNOPSIS
|
| + bfd_assert_handler_type bfd_set_assert_handler (bfd_assert_handler_type);
|
| +
|
| +DESCRIPTION
|
| + Set the BFD assert handler function. Returns the previous
|
| + function.
|
| +*/
|
| +
|
| +bfd_assert_handler_type
|
| +bfd_set_assert_handler (bfd_assert_handler_type pnew)
|
| +{
|
| + bfd_assert_handler_type pold;
|
| +
|
| + pold = _bfd_assert_handler;
|
| + _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;
|
| +}
|
|
|
| /*
|
| SECTION
|
| @@ -942,8 +1024,8 @@ bfd_set_file_flags (bfd *abfd, flagword flags)
|
| void
|
| bfd_assert (const char *file, int line)
|
| {
|
| - (*_bfd_error_handler) (_("BFD %s assertion fail %s:%d"),
|
| - BFD_VERSION_STRING, file, line);
|
| + (*_bfd_assert_handler) (_("BFD %s assertion fail %s:%d"),
|
| + BFD_VERSION_STRING, file, line);
|
| }
|
|
|
| /* A more or less friendly abort message. In libbfd.h abort is
|
| @@ -1374,8 +1456,8 @@ DESCRIPTION
|
| .#define bfd_gc_sections(abfd, link_info) \
|
| . BFD_SEND (abfd, _bfd_gc_sections, (abfd, link_info))
|
| .
|
| -.#define bfd_lookup_section_flags(link_info, flag_info) \
|
| -. BFD_SEND (abfd, _bfd_lookup_section_flags, (link_info, flag_info))
|
| +.#define bfd_lookup_section_flags(link_info, flag_info, section) \
|
| +. BFD_SEND (abfd, _bfd_lookup_section_flags, (link_info, flag_info, section))
|
| .
|
| .#define bfd_merge_sections(abfd, link_info) \
|
| . BFD_SEND (abfd, _bfd_merge_sections, (abfd, link_info))
|
|
|