Make bfd asserts cause linker errors.

* ldmain.c (default_bfd_assert_handler): New variable.
	(ld_bfd_assert_handler): New function.
	(main): Call bfd_set_assert_handler.
This commit is contained in:
Hans-Peter Nilsson
2012-04-26 13:51:14 +00:00
parent 2b56b3f35a
commit 3b66a14146
2 changed files with 25 additions and 0 deletions

View File

@@ -160,6 +160,8 @@ static struct bfd_link_callbacks link_callbacks =
ldlang_override_segment_assignment
};
static bfd_assert_handler_type default_bfd_assert_handler;
struct bfd_link_info link_info;
static void
@@ -173,6 +175,17 @@ ld_cleanup (void)
unlink_if_ordinary (output_filename);
}
/* If there's a BFD assertion, we'll notice and exit with an error
unless otherwise instructed. */
static void
ld_bfd_assert_handler (const char *fmt, const char *bfdver,
const char *file, int line)
{
(*default_bfd_assert_handler) (fmt, bfdver, file, line);
config.make_executable = FALSE;
}
int
main (int argc, char **argv)
{
@@ -199,6 +212,11 @@ main (int argc, char **argv)
bfd_set_error_program_name (program_name);
/* We want to notice and fail on those nasty BFD assertions which are
likely to signal incorrect output being generated but otherwise may
leave no trace. */
default_bfd_assert_handler = bfd_set_assert_handler (ld_bfd_assert_handler);
xatexit (ld_cleanup);
/* Set up the sysroot directory. */