diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 0207bec278..940300f95a 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,7 @@ +2018-10-30 Tom Tromey + + * main.c (captured_main_1): Check return value of bfd_init. + 2018-10-29 Sergio Durigan Junior * common/offset-type.h (DEFINE_OFFSET_REL_OP): Delete. diff --git a/gdb/main.c b/gdb/main.c index 8709357e92..c71d5b557f 100644 --- a/gdb/main.c +++ b/gdb/main.c @@ -506,7 +506,6 @@ captured_main_1 (struct captured_main_args *context) textdomain (PACKAGE); #endif - bfd_init (); notice_open_fds (); saved_command_line = (char *) xstrdup (""); @@ -517,12 +516,17 @@ captured_main_1 (struct captured_main_args *context) setvbuf (stderr, NULL, _IONBF, BUFSIZ); #endif + /* Note: `error' cannot be called before this point, because the + caller will crash when trying to print the exception. */ main_ui = new ui (stdin, stdout, stderr); current_ui = main_ui; gdb_stdtargerr = gdb_stderr; /* for moment */ gdb_stdtargin = gdb_stdin; /* for moment */ + if (bfd_init () != BFD_INIT_MAGIC) + error (_("fatal error: libbfd ABI mismatch")); + #ifdef __MINGW32__ /* On Windows, argv[0] is not necessarily set to absolute form when GDB is found along PATH, without which relocation doesn't work. */