Message ID | 20250429125456.4035090-1-Deepesh.Varatharajan@windriver.com |
---|---|
State | New |
Headers | show |
Series | binutils: stable 2.44 branch updates | expand |
looks good. On Tue, Apr 29, 2025 at 5:55 AM Varatharajan, Deepesh via lists.openembedded.org <deepesh.varatharajan=windriver.com@lists.openembedded.org> wrote: > > From: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com> > > Below commits on binutils-2.44 stable branch are updated. > > fe459e33c67 PR 32603, revert message changes in 0b7f992b78fe and 31e9e2e8d109 > 37d12dd25d8 gdb/compile: add missing entry in bfd_link_callbacks array > 31e9e2e8d10 PR 32603, more ld -w misbehaviour > 0b7f992b78f PR 32603, ld -w misbehaviour > 8cb98edf123 s390: Add support for z17 as CPU name > ed70d86b491 x86: Remove AVX10.2 256 bit rounding support > e1af7e590a5 elf: Clear the SEC_ALLOC bit for NOLOAD note sections > 35db8c6dd2f ld: Pass -Wl,-z,lazy to compiler for i386 lazy binding tests > cc7ec316a45 Updated translations for bfd and gold > bf088ee09a7 PR 32731 ub sanitizer accessing filenames_reversed > 78082591ec7 score-elf gas SEGV > d4c7ee9fbc1 gas: fix rs_fill_nop listing > a68d096a0ab Open the 2.44 branch for further development > > Dropped: 0015-CVE-2025-1153.patch > > Testing was done and there were no regressions found > > Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com> > --- > .../binutils/binutils-2.44.inc | 3 +- > .../binutils/0015-CVE-2025-1153.patch | 3355 ----------------- > 2 files changed, 1 insertion(+), 3357 deletions(-) > delete mode 100644 meta/recipes-devtools/binutils/binutils/0015-CVE-2025-1153.patch > > diff --git a/meta/recipes-devtools/binutils/binutils-2.44.inc b/meta/recipes-devtools/binutils/binutils-2.44.inc > index 1aafbd5285..4680248f83 100644 > --- a/meta/recipes-devtools/binutils/binutils-2.44.inc > +++ b/meta/recipes-devtools/binutils/binutils-2.44.inc > @@ -20,7 +20,7 @@ UPSTREAM_CHECK_GITTAGREGEX = "binutils-(?P<pver>\d+_(\d_?)*)" > > CVE_STATUS[CVE-2023-25584] = "cpe-incorrect: Applies only for version 2.40 and earlier" > > -SRCREV ?= "815d9a14cbbb3b81843f7566222c87fb22e7255d" > +SRCREV ?= "96bc9e8081a5dbe8329c1d5b0c94191fd5bed840" > BINUTILS_GIT_URI ?= "git://sourceware.org/git/binutils-gdb.git;branch=${SRCBRANCH};protocol=https" > SRC_URI = "\ > ${BINUTILS_GIT_URI} \ > @@ -35,6 +35,5 @@ SRC_URI = "\ > file://0012-Only-generate-an-RPATH-entry-if-LD_RUN_PATH-is-not-e.patch \ > file://0013-Define-alignof-using-_Alignof-when-using-C11-or-newe.patch \ > file://0014-Remove-duplicate-pe-dll.o-entry-deom-targ_extra_ofil.patch \ > - file://0015-CVE-2025-1153.patch \ > " > S = "${WORKDIR}/git" > diff --git a/meta/recipes-devtools/binutils/binutils/0015-CVE-2025-1153.patch b/meta/recipes-devtools/binutils/binutils/0015-CVE-2025-1153.patch > deleted file mode 100644 > index e75df08fd4..0000000000 > --- a/meta/recipes-devtools/binutils/binutils/0015-CVE-2025-1153.patch > +++ /dev/null > @@ -1,3355 +0,0 @@ > -From 8d97c1a53f3dc9fd8e1ccdb039b8a33d50133150 Mon Sep 17 00:00:00 2001 > -From: Alan Modra <amodra@gmail.com> > -Date: Thu, 6 Feb 2025 21:46:22 +1030 > -Subject: [PATCH] PR 32603, ld -w misbehaviour > - > -ld -w currently causes segmentation faults and other misbehaviour > -since it changes einfo with %F in the format string (fatal error) to > -not exit. This patch fixes that by introducing a new variant of einfo > -called "fatal" that always exits, and replaces all einfo calls using > -%F with a call to fatal without the %F. I considered modifying einfo > -to inspect the first 2 or 4 chars in the format string, looking for > -%F, but decided that was probably a bad idea given that translators > -might have moved the %F. It's also a little nicer to inform the > -compiler of a function that doesn't return. > - > -The patch also fixes some formatting nits, and makes use of %pA > -to print section names in a couple of places in aix.em. > - > -CVE: CVE-2025-1153 > -Upstream-Status: Backport [https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=8d97c1a53f3dc9fd8e1ccdb039b8a33d50133150] > -Signed-off-by: Peter Marko <peter.marko@siemens.com> > ---- > - ld/emulparams/call_nop.sh | 6 +- > - ld/emulparams/cet.sh | 2 +- > - ld/emulparams/elf32mcore.sh | 2 +- > - ld/emulparams/x86-64-lam.sh | 6 +- > - ld/emulparams/x86-64-level-report.sh | 2 +- > - ld/emulparams/x86-64-level.sh | 2 +- > - ld/emultempl/aarch64elf.em | 6 +- > - ld/emultempl/aix.em | 41 +++++---- > - ld/emultempl/armelf.em | 10 +-- > - ld/emultempl/avrelf.em | 2 +- > - ld/emultempl/beos.em | 24 ++--- > - ld/emultempl/cr16elf.em | 4 +- > - ld/emultempl/cskyelf.em | 4 +- > - ld/emultempl/elf.em | 16 ++-- > - ld/emultempl/hppaelf.em | 4 +- > - ld/emultempl/kvxelf.em | 7 +- > - ld/emultempl/loongarchelf.em | 4 +- > - ld/emultempl/m68hc1xelf.em | 2 +- > - ld/emultempl/m68kelf.em | 4 +- > - ld/emultempl/metagelf.em | 4 +- > - ld/emultempl/mipself.em | 2 +- > - ld/emultempl/mmix-elfnmmo.em | 5 +- > - ld/emultempl/nds32elf.em | 6 +- > - ld/emultempl/nto.em | 28 +++--- > - ld/emultempl/pe.em | 20 ++--- > - ld/emultempl/pep.em | 16 ++-- > - ld/emultempl/ppc32elf.em | 4 +- > - ld/emultempl/ppc64elf.em | 10 +-- > - ld/emultempl/riscvelf.em | 2 +- > - ld/emultempl/s390.em | 2 +- > - ld/emultempl/scoreelf.em | 2 +- > - ld/emultempl/spuelf.em | 20 ++--- > - ld/emultempl/tic6xdsbt.em | 10 +-- > - ld/emultempl/ticoff.em | 4 +- > - ld/emultempl/v850elf.em | 2 +- > - ld/emultempl/vms.em | 2 +- > - ld/emultempl/xtensaelf.em | 12 +-- > - ld/emultempl/z80.em | 2 +- > - ld/ldcref.c | 8 +- > - ld/ldelf.c | 34 ++++---- > - ld/ldelfgen.c | 17 ++-- > - ld/ldemul.c | 2 +- > - ld/ldexp.c | 42 ++++----- > - ld/ldfile.c | 14 +-- > - ld/ldgram.y | 6 +- > - ld/ldlang.c | 126 +++++++++++++-------------- > - ld/ldlex.l | 14 ++- > - ld/ldmain.c | 44 +++++----- > - ld/ldmisc.c | 28 ++++-- > - ld/ldmisc.h | 1 + > - ld/ldwrite.c | 22 +++-- > - ld/lexsup.c | 72 ++++++++------- > - ld/mri.c | 2 +- > - ld/pe-dll.c | 12 +-- > - ld/plugin.c | 27 +++--- > - 55 files changed, 379 insertions(+), 393 deletions(-) > - > -diff --git a/ld/emulparams/call_nop.sh b/ld/emulparams/call_nop.sh > -index 2c3c305f0e8..7dd6dfb130c 100644 > ---- a/ld/emulparams/call_nop.sh > -+++ b/ld/emulparams/call_nop.sh > -@@ -20,7 +20,7 @@ PARSE_AND_LIST_ARGS_CASE_Z_CALL_NOP=' > - char *end; > - params.call_nop_byte = strtoul (optarg + 16 , &end, 0); > - if (*end) > -- einfo (_("%F%P: invalid number for -z call-nop=prefix-: %s\n"), > -+ fatal (_("%P: invalid number for -z call-nop=prefix-: %s\n"), > - optarg + 16); > - params.call_nop_as_suffix = false; > - } > -@@ -29,12 +29,12 @@ PARSE_AND_LIST_ARGS_CASE_Z_CALL_NOP=' > - char *end; > - params.call_nop_byte = strtoul (optarg + 16, &end, 0); > - if (*end) > -- einfo (_("%F%P: invalid number for -z call-nop=suffix-: %s\n"), > -+ fatal (_("%P: invalid number for -z call-nop=suffix-: %s\n"), > - optarg + 16); > - params.call_nop_as_suffix = true; > - } > - else > -- einfo (_("%F%P: unsupported option: -z %s\n"), optarg); > -+ fatal (_("%P: unsupported option: -z %s\n"), optarg); > - } > - ' > - > -diff --git a/ld/emulparams/cet.sh b/ld/emulparams/cet.sh > -index 2c627994501..e463441d176 100644 > ---- a/ld/emulparams/cet.sh > -+++ b/ld/emulparams/cet.sh > -@@ -29,7 +29,7 @@ PARSE_AND_LIST_ARGS_CASE_Z_CET=' > - | prop_report_ibt > - | prop_report_shstk); > - else > -- einfo (_("%F%P: invalid option for -z cet-report=: %s\n"), > -+ fatal (_("%P: invalid option for -z cet-report=: %s\n"), > - optarg + 11); > - } > - ' > -diff --git a/ld/emulparams/elf32mcore.sh b/ld/emulparams/elf32mcore.sh > -index 7d433fc0f2d..dc0f5d042e7 100644 > ---- a/ld/emulparams/elf32mcore.sh > -+++ b/ld/emulparams/elf32mcore.sh > -@@ -42,6 +42,6 @@ PARSE_AND_LIST_ARGS_CASES=' > - case OPTION_BASE_FILE: > - link_info.base_file = fopen (optarg, FOPEN_WB); > - if (link_info.base_file == NULL) > -- einfo (_("%F%P: cannot open base file %s\n"), optarg); > -+ fatal (_("%P: cannot open base file %s\n"), optarg); > - break; > - ' > -diff --git a/ld/emulparams/x86-64-lam.sh b/ld/emulparams/x86-64-lam.sh > -index fab42ff1df2..6e629ebbac8 100644 > ---- a/ld/emulparams/x86-64-lam.sh > -+++ b/ld/emulparams/x86-64-lam.sh > -@@ -25,7 +25,7 @@ PARSE_AND_LIST_ARGS_CASE_Z_LAM=' > - else if (strcmp (optarg + 15, "error") == 0) > - params.lam_u48_report = prop_report_error; > - else > -- einfo (_("%F%P: invalid option for -z lam-u48-report=: %s\n"), > -+ fatal (_("%P: invalid option for -z lam-u48-report=: %s\n"), > - optarg + 15); > - } > - else if (strcmp (optarg, "lam-u57") == 0) > -@@ -39,7 +39,7 @@ PARSE_AND_LIST_ARGS_CASE_Z_LAM=' > - else if (strcmp (optarg + 15, "error") == 0) > - params.lam_u57_report = prop_report_error; > - else > -- einfo (_("%F%P: invalid option for -z lam-u57-report=: %s\n"), > -+ fatal (_("%P: invalid option for -z lam-u57-report=: %s\n"), > - optarg + 15); > - } > - else if (strncmp (optarg, "lam-report=", 11) == 0) > -@@ -60,7 +60,7 @@ PARSE_AND_LIST_ARGS_CASE_Z_LAM=' > - params.lam_u57_report = prop_report_error; > - } > - else > -- einfo (_("%F%P: invalid option for -z lam-report=: %s\n"), > -+ fatal (_("%P: invalid option for -z lam-report=: %s\n"), > - optarg + 11); > - } > - ' > -diff --git a/ld/emulparams/x86-64-level-report.sh b/ld/emulparams/x86-64-level-report.sh > -index 518527767a4..0463ad95269 100644 > ---- a/ld/emulparams/x86-64-level-report.sh > -+++ b/ld/emulparams/x86-64-level-report.sh > -@@ -16,7 +16,7 @@ PARSE_AND_LIST_ARGS_CASE_Z_X86_64_LEVEL_REPORT=' > - else if (strcmp (optarg + 17, "used") == 0) > - params.isa_level_report = isa_level_report_used; > - else > -- einfo (_("%F%P: invalid option for -z isa-level-report=: %s\n"), > -+ fatal (_("%P: invalid option for -z isa-level-report=: %s\n"), > - optarg + 17); > - } > - ' > -diff --git a/ld/emulparams/x86-64-level.sh b/ld/emulparams/x86-64-level.sh > -index c46aacf3aff..7e27cf1ea45 100644 > ---- a/ld/emulparams/x86-64-level.sh > -+++ b/ld/emulparams/x86-64-level.sh > -@@ -10,7 +10,7 @@ PARSE_AND_LIST_ARGS_CASE_Z_X86_64_LEVEL=' > - char *end; > - unsigned int level = strtoul (optarg + 8 , &end, 10); > - if (*end != '\0' || level < 2 || level > 4) > -- einfo (_("%F%P: invalid x86-64 ISA level: %s\n"), optarg); > -+ fatal (_("%P: invalid x86-64 ISA level: %s\n"), optarg); > - params.isa_level = level; > - } > - ' > -diff --git a/ld/emultempl/aarch64elf.em b/ld/emultempl/aarch64elf.em > -index 7791aabf16d..afa91afb608 100644 > ---- a/ld/emultempl/aarch64elf.em > -+++ b/ld/emultempl/aarch64elf.em > -@@ -324,7 +324,7 @@ aarch64_elf_create_output_section_statements (void) > - These will only be created if the output format is an AArch64 format, > - hence we do not support linking and changing output formats at the > - same time. Use a link followed by objcopy to change output formats. */ > -- einfo (_("%F%P: error: cannot change output format " > -+ fatal (_("%P: error: cannot change output format " > - "whilst linking %s binaries\n"), "AArch64"); > - return; > - } > -@@ -346,7 +346,7 @@ aarch64_elf_create_output_section_statements (void) > - bfd_get_arch (link_info.output_bfd), > - bfd_get_mach (link_info.output_bfd))) > - { > -- einfo (_("%F%P: can not create BFD: %E\n")); > -+ fatal (_("%P: can not create BFD: %E\n")); > - return; > - } > - > -@@ -583,7 +583,7 @@ PARSE_AND_LIST_ARGS_CASES=' > - > - group_size = bfd_scan_vma (optarg, &end, 0); > - if (*end) > -- einfo (_("%F%P: invalid number `%s'\''\n"), optarg); > -+ fatal (_("%P: invalid number `%s'\''\n"), optarg); > - } > - break; > - ' > -diff --git a/ld/emultempl/aix.em b/ld/emultempl/aix.em > -index d69e13cfa91..7754c1607b3 100644 > ---- a/ld/emultempl/aix.em > -+++ b/ld/emultempl/aix.em > -@@ -307,7 +307,7 @@ read_file_list (const char *filename) > - f = fopen (filename, FOPEN_RT); > - if (f == NULL) > - { > -- einfo (_("%F%P: cannot open %s\n"), filename); > -+ fatal (_("%P: cannot open %s\n"), filename); > - return; > - } > - if (fseek (f, 0L, SEEK_END) == -1) > -@@ -354,8 +354,8 @@ read_file_list (const char *filename) > - return; > - > - error: > -- einfo (_("%F%P: cannot read %s\n"), optarg); > - fclose (f); > -+ fatal (_("%P: cannot read %s\n"), optarg); > - } > - > - static bool > -@@ -706,7 +706,7 @@ gld${EMULATION_NAME}_after_open (void) > - size = (p->count + 2) * 4; > - if (!bfd_xcoff_link_record_set (link_info.output_bfd, &link_info, > - p->h, size)) > -- einfo (_("%F%P: bfd_xcoff_link_record_set failed: %E\n")); > -+ fatal (_("%P: bfd_xcoff_link_record_set failed: %E\n")); > - } > - } > - > -@@ -736,9 +736,9 @@ gld${EMULATION_NAME}_before_allocation (void) > - > - h = bfd_link_hash_lookup (link_info.hash, el->name, false, false, false); > - if (h == NULL) > -- einfo (_("%F%P: bfd_link_hash_lookup of export symbol failed: %E\n")); > -+ fatal (_("%P: bfd_link_hash_lookup of export symbol failed: %E\n")); > - if (!bfd_xcoff_export_symbol (link_info.output_bfd, &link_info, h)) > -- einfo (_("%F%P: bfd_xcoff_export_symbol failed: %E\n")); > -+ fatal (_("%P: bfd_xcoff_export_symbol failed: %E\n")); > - } > - > - /* Track down all relocations called for by the linker script (these > -@@ -821,7 +821,7 @@ gld${EMULATION_NAME}_before_allocation (void) > - (link_info.output_bfd, &link_info, libpath, entry_symbol.name, > - file_align, maxstack, maxdata, gc && !unix_ld, > - modtype, textro, flags, special_sections, rtld)) > -- einfo (_("%F%P: failed to set dynamic section sizes: %E\n")); > -+ fatal (_("%P: failed to set dynamic section sizes: %E\n")); > - > - /* Look through the special sections, and put them in the right > - place in the link ordering. This is especially magic. */ > -@@ -843,8 +843,8 @@ gld${EMULATION_NAME}_before_allocation (void) > - is = NULL; > - os = lang_output_section_get (sec->output_section); > - if (os == NULL) > -- einfo (_("%F%P: can't find output section %s\n"), > -- sec->output_section->name); > -+ fatal (_("%P: can't find output section %pA\n"), > -+ sec->output_section); > - > - for (pls = &os->children.head; *pls != NULL; pls = &(*pls)->header.next) > - { > -@@ -880,8 +880,7 @@ gld${EMULATION_NAME}_before_allocation (void) > - > - if (is == NULL) > - { > -- einfo (_("%F%P: can't find %s in output section\n"), > -- bfd_section_name (sec)); > -+ fatal (_("%P: can't find %pA in output section\n"), sec); > - } > - > - /* Now figure out where the section should go. */ > -@@ -1134,7 +1133,7 @@ gld${EMULATION_NAME}_after_allocation (void) > - > - /* Now that everything is in place, finalize the dynamic sections. */ > - if (!bfd_xcoff_build_dynamic_sections (link_info.output_bfd, &link_info)) > -- einfo (_("%F%P: failed to layout dynamic sections: %E\n")); > -+ fatal (_("%P: failed to layout dynamic sections: %E\n")); > - > - if (!bfd_link_relocatable (&link_info)) > - { > -@@ -1285,7 +1284,7 @@ gld${EMULATION_NAME}_read_file (const char *filename, bool import) > - if (f == NULL) > - { > - bfd_set_error (bfd_error_system_call); > -- einfo ("%F%P: %s: %E\n", filename); > -+ fatal ("%P: %s: %E\n", filename); > - return; > - } > - > -@@ -1347,7 +1346,7 @@ gld${EMULATION_NAME}_read_file (const char *filename, bool import) > - obstack_free (o, obstack_base (o)); > - } > - else if (*s == '(') > -- einfo (_("%F%P:%s:%d: #! ([member]) is not supported " > -+ fatal (_("%P:%s:%d: #! ([member]) is not supported " > - "in import files\n"), > - filename, linenumber); > - else > -@@ -1364,7 +1363,7 @@ gld${EMULATION_NAME}_read_file (const char *filename, bool import) > - *s = '\0'; > - if (!bfd_xcoff_split_import_path (link_info.output_bfd, > - start, &imppath, &impfile)) > -- einfo (_("%F%P: could not parse import path: %E\n")); > -+ fatal (_("%P: could not parse import path: %E\n")); > - while (ISSPACE (cs)) > - { > - ++s; > -@@ -1519,10 +1518,10 @@ gld${EMULATION_NAME}_find_relocs (lang_statement_union_type *s) > - > - rs = &s->reloc_statement; > - if (rs->name == NULL) > -- einfo (_("%F%P: only relocations against symbols are permitted\n")); > -+ fatal (_("%P: only relocations against symbols are permitted\n")); > - if (!bfd_xcoff_link_count_reloc (link_info.output_bfd, &link_info, > - rs->name)) > -- einfo (_("%F%P: bfd_xcoff_link_count_reloc failed: %E\n")); > -+ fatal (_("%P: bfd_xcoff_link_count_reloc failed: %E\n")); > - } > - > - if (s->header.type == lang_assignment_statement_enum) > -@@ -1551,7 +1550,7 @@ gld${EMULATION_NAME}_find_exp_assignment (etree_type *exp) > - if (!bfd_xcoff_record_link_assignment (link_info.output_bfd, > - &link_info, > - exp->assign.dst)) > -- einfo (_("%F%P: failed to record assignment to %s: %E\n"), > -+ fatal (_("%P: failed to record assignment to %s: %E\n"), > - exp->assign.dst); > - } > - gld${EMULATION_NAME}_find_exp_assignment (exp->assign.src); > -@@ -1646,7 +1645,7 @@ gld${EMULATION_NAME}_create_output_section_statements (void) > - bfd_get_arch (link_info.output_bfd), > - bfd_get_mach (link_info.output_bfd))) > - { > -- einfo (_("%F%P: can not create stub BFD: %E\n")); > -+ fatal (_("%P: can not create stub BFD: %E\n")); > - return; > - } > - > -@@ -1656,7 +1655,7 @@ gld${EMULATION_NAME}_create_output_section_statements (void) > - > - /* Pass linker params to the back-end. */ > - if (!bfd_xcoff_link_init (&link_info, ¶ms)) > -- einfo (_("%F%P: can not init BFD: %E\n")); > -+ fatal (_("%P: can not init BFD: %E\n")); > - > - /* __rtinit */ > - if (link_info.init_function != NULL > -@@ -1673,7 +1672,7 @@ gld${EMULATION_NAME}_create_output_section_statements (void) > - bfd_get_arch (link_info.output_bfd), > - bfd_get_mach (link_info.output_bfd))) > - { > -- einfo (_("%F%P: can not create BFD: %E\n")); > -+ fatal (_("%P: can not create BFD: %E\n")); > - return; > - } > - > -@@ -1683,7 +1682,7 @@ gld${EMULATION_NAME}_create_output_section_statements (void) > - link_info.fini_function, > - rtld)) > - { > -- einfo (_("%F%P: can not create BFD: %E\n")); > -+ fatal (_("%P: can not create BFD: %E\n")); > - return; > - } > - > -diff --git a/ld/emultempl/armelf.em b/ld/emultempl/armelf.em > -index 02a97e7c1ff..6f652c59a3c 100644 > ---- a/ld/emultempl/armelf.em > -+++ b/ld/emultempl/armelf.em > -@@ -521,7 +521,7 @@ arm_elf_create_output_section_statements (void) > - These will only be created if the output format is an arm format, > - hence we do not support linking and changing output formats at the > - same time. Use a link followed by objcopy to change output formats. */ > -- einfo (_("%F%P: error: cannot change output format " > -+ fatal (_("%P: error: cannot change output format " > - "whilst linking %s binaries\n"), "ARM"); > - return; > - } > -@@ -532,10 +532,10 @@ arm_elf_create_output_section_statements (void) > - bfd_get_target (link_info.output_bfd)); > - > - if (params.in_implib_bfd == NULL) > -- einfo (_("%F%P: %s: can't open: %E\n"), in_implib_filename); > -+ fatal (_("%P: %s: can't open: %E\n"), in_implib_filename); > - > - if (!bfd_check_format (params.in_implib_bfd, bfd_object)) > -- einfo (_("%F%P: %s: not a relocatable file: %E\n"), in_implib_filename); > -+ fatal (_("%P: %s: not a relocatable file: %E\n"), in_implib_filename); > - } > - > - bfd_elf32_arm_set_target_params (link_info.output_bfd, &link_info, ¶ms); > -@@ -549,7 +549,7 @@ arm_elf_create_output_section_statements (void) > - bfd_get_arch (link_info.output_bfd), > - bfd_get_mach (link_info.output_bfd))) > - { > -- einfo (_("%F%P: can not create BFD: %E\n")); > -+ fatal (_("%P: can not create BFD: %E\n")); > - return; > - } > - > -@@ -709,7 +709,7 @@ PARSE_AND_LIST_ARGS_CASES=' > - > - group_size = bfd_scan_vma (optarg, &end, 0); > - if (*end) > -- einfo (_("%F%P: invalid number `%s'\''\n"), optarg); > -+ fatal (_("%P: invalid number `%s'\''\n"), optarg); > - } > - break; > - > -diff --git a/ld/emultempl/avrelf.em b/ld/emultempl/avrelf.em > -index 0945702bfb6..ad2de99feee 100644 > ---- a/ld/emultempl/avrelf.em > -+++ b/ld/emultempl/avrelf.em > -@@ -116,7 +116,7 @@ avr_elf_create_output_section_statements (void) > - > - if (bfd_get_flavour (link_info.output_bfd) != bfd_target_elf_flavour) > - { > -- einfo (_("%F%P: error: cannot change output format " > -+ fatal (_("%P: error: cannot change output format " > - "whilst linking %s binaries\n"), "AVR"); > - return; > - } > -diff --git a/ld/emultempl/beos.em b/ld/emultempl/beos.em > -index 52e615b8b1f..4082449f461 100644 > ---- a/ld/emultempl/beos.em > -+++ b/ld/emultempl/beos.em > -@@ -210,7 +210,7 @@ set_pe_subsystem (void) > - return; > - } > - } > -- einfo (_("%F%P: invalid subsystem type %s\n"), optarg); > -+ fatal (_("%P: invalid subsystem type %s\n"), optarg); > - } > - > - > -@@ -220,9 +220,7 @@ set_pe_value (char *name) > - char *end; > - set_pe_name (name, strtoul (optarg, &end, 0)); > - if (end == optarg) > -- { > -- einfo (_("%F%P: invalid hex number for PE parameter '%s'\n"), optarg); > -- } > -+ fatal (_("%P: invalid hex number for PE parameter '%s'\n"), optarg); > - > - optarg = end; > - } > -@@ -237,9 +235,7 @@ set_pe_stack_heap (char *resname, char *comname) > - set_pe_value (comname); > - } > - else if (*optarg) > -- { > -- einfo (_("%F%P: strange hex info for PE parameter '%s'\n"), optarg); > -- } > -+ fatal (_("%P: strange hex info for PE parameter '%s'\n"), optarg); > - } > - > - > -@@ -254,7 +250,7 @@ gld${EMULATION_NAME}_handle_option (int optc) > - case OPTION_BASE_FILE: > - link_info.base_file = fopen (optarg, FOPEN_WB); > - if (link_info.base_file == NULL) > -- einfo (_("%F%P: cannot open base file %s\n"), optarg); > -+ fatal (_("%P: cannot open base file %s\n"), optarg); > - break; > - > - /* PE options */ > -@@ -363,9 +359,7 @@ gld${EMULATION_NAME}_after_open (void) > - FIXME: This should be done via a function, rather than by > - including an internal BFD header. */ > - if (!obj_pe (link_info.output_bfd)) > -- { > -- einfo (_("%F%P: PE operations on non PE file\n")); > -- } > -+ fatal (_("%P: PE operations on non PE file\n")); > - > - pe_data(link_info.output_bfd)->pe_opthdr = pe; > - pe_data(link_info.output_bfd)->dll = init[DLLOFF].value; > -@@ -414,12 +408,12 @@ sort_by_file_name (const void *a, const void *b) > - > - if (!bfd_get_section_contents (sa->owner, sa, &a_sec, (file_ptr) 0, > - (bfd_size_type) sizeof (a_sec))) > -- einfo (_("%F%P: %pB: can't read contents of section .idata: %E\n"), > -+ fatal (_("%P: %pB: can't read contents of section .idata: %E\n"), > - sa->owner); > - > - if (!bfd_get_section_contents (sb->owner, sb, &b_sec, (file_ptr) 0, > - (bfd_size_type) sizeof (b_sec))) > -- einfo (_("%F%P: %pB: can't read contents of section .idata: %E\n"), > -+ fatal (_("%P: %pB: can't read contents of section .idata: %E\n"), > - sb->owner); > - > - i = a_sec < b_sec ? -1 : 0; > -@@ -651,7 +645,7 @@ gld${EMULATION_NAME}_place_orphan (asection *s, > - /* Everything from the '\$' on gets deleted so don't allow '\$' as the > - first character. */ > - if (*secname == '\$') > -- einfo (_("%F%P: section %s has '\$' as first character\n"), secname); > -+ fatal (_("%P: section %s has '\$' as first character\n"), secname); > - if (strchr (secname + 1, '\$') == NULL) > - return NULL; > - > -@@ -681,7 +675,7 @@ gld${EMULATION_NAME}_place_orphan (asection *s, > - } > - ps[0] = 0; > - if (l == NULL) > -- einfo (_("%F%P: *(%s\$) missing from linker script\n"), output_secname); > -+ fatal (_("%P: *(%s\$) missing from linker script\n"), output_secname); > - > - /* Link the input section in and we're done for now. > - The sections still have to be sorted, but that has to wait until > -diff --git a/ld/emultempl/cr16elf.em b/ld/emultempl/cr16elf.em > -index 27e616a823f..69ad393f124 100644 > ---- a/ld/emultempl/cr16elf.em > -+++ b/ld/emultempl/cr16elf.em > -@@ -58,7 +58,7 @@ cr16_elf_after_open (void) > - COFF and ELF. */ > - if (bfd_get_flavour (abfd) != bfd_target_coff_flavour > - && bfd_get_flavour (abfd) != bfd_target_elf_flavour) > -- einfo (_("%F%P: %pB: all input objects must be COFF or ELF " > -+ fatal (_("%P: %pB: all input objects must be COFF or ELF " > - "for --embedded-relocs\n")); > - > - datasec = bfd_get_section_by_name (abfd, ".data.rel"); > -@@ -82,7 +82,7 @@ cr16_elf_after_open (void) > - | SEC_IN_MEMORY)) > - || !bfd_set_section_alignment (relsec, 2) > - || !bfd_set_section_size (relsec, datasec->reloc_count * 8)) > -- einfo (_("%F%P: %pB: can not create .emreloc section: %E\n")); > -+ fatal (_("%P: %pB: can not create .emreloc section: %E\n")); > - } > - > - /* Double check that all other data sections are empty, as is > -diff --git a/ld/emultempl/cskyelf.em b/ld/emultempl/cskyelf.em > -index ab7f9656889..525e99b68fe 100644 > ---- a/ld/emultempl/cskyelf.em > -+++ b/ld/emultempl/cskyelf.em > -@@ -151,7 +151,7 @@ csky_elf_create_output_section_statements (void) > - bfd_get_arch (link_info.output_bfd), > - bfd_get_mach (link_info.output_bfd))) > - { > -- einfo (_("%F%P: can not create BFD: %E\n")); > -+ fatal (_("%P: can not create BFD: %E\n")); > - return; > - } > - > -@@ -318,7 +318,7 @@ PARSE_AND_LIST_ARGS_CASES=' > - > - group_size = bfd_scan_vma (optarg, &end, 0); > - if (*end) > -- einfo (_("%F%P: invalid number `%s'\''\n"), optarg); > -+ fatal (_("%P: invalid number `%s'\''\n"), optarg); > - } > - break; > - ' > -diff --git a/ld/emultempl/elf.em b/ld/emultempl/elf.em > -index 9dcb52e7514..431205fe644 100644 > ---- a/ld/emultempl/elf.em > -+++ b/ld/emultempl/elf.em > -@@ -886,12 +886,12 @@ gld${EMULATION_NAME}_handle_option (int optc) > - { > - #ifndef HAVE_ZSTD > - if (config.compress_debug == COMPRESS_DEBUG_ZSTD) > -- einfo (_ ("%F%P: --compress-debug-sections=zstd: ld is not built " > -- "with zstd support\n")); > -+ fatal (_("%P: --compress-debug-sections=zstd: ld is not built " > -+ "with zstd support\n")); > - #endif > - } > - if (config.compress_debug == COMPRESS_UNKNOWN) > -- einfo (_("%F%P: invalid --compress-debug-sections option: \`%s'\n"), > -+ fatal (_("%P: invalid --compress-debug-sections option: \`%s'\n"), > - optarg); > - break; > - > -@@ -953,7 +953,7 @@ fragment <<EOF > - link_info.emit_gnu_hash = true; > - } > - else > -- einfo (_("%F%P: invalid hash style \`%s'\n"), optarg); > -+ fatal (_("%P: invalid hash style \`%s'\n"), optarg); > - break; > - > - EOF > -@@ -973,7 +973,7 @@ fragment <<EOF > - link_info.maxpagesize = strtoul (optarg + 14, &end, 0); > - if (*end > - || (link_info.maxpagesize & (link_info.maxpagesize - 1)) != 0) > -- einfo (_("%F%P: invalid maximum page size \`%s'\n"), > -+ fatal (_("%P: invalid maximum page size \`%s'\n"), > - optarg + 14); > - link_info.maxpagesize_is_set = true; > - } > -@@ -983,7 +983,7 @@ fragment <<EOF > - link_info.commonpagesize = strtoul (optarg + 17, &end, 0); > - if (*end > - || (link_info.commonpagesize & (link_info.commonpagesize - 1)) != 0) > -- einfo (_("%F%P: invalid common page size \`%s'\n"), > -+ fatal (_("%P: invalid common page size \`%s'\n"), > - optarg + 17); > - link_info.commonpagesize_is_set = true; > - } > -@@ -992,7 +992,7 @@ fragment <<EOF > - char *end; > - link_info.stacksize = strtoul (optarg + 11, &end, 0); > - if (*end || link_info.stacksize < 0) > -- einfo (_("%F%P: invalid stack size \`%s'\n"), optarg + 11); > -+ fatal (_("%P: invalid stack size \`%s'\n"), optarg + 11); > - if (!link_info.stacksize) > - /* Use -1 for explicit no-stack, because zero means > - 'default'. */ > -@@ -1031,7 +1031,7 @@ fragment <<EOF > - else if (strcmp (optarg, "start-stop-visibility=protected") == 0) > - link_info.start_stop_visibility = STV_PROTECTED; > - else > -- einfo (_("%F%P: invalid visibility in \`-z %s'; " > -+ fatal (_("%P: invalid visibility in \`-z %s'; " > - "must be default, internal, hidden, or protected"), > - optarg); > - } > -diff --git a/ld/emultempl/hppaelf.em b/ld/emultempl/hppaelf.em > -index 512f7d9dd44..8dfa257b304 100644 > ---- a/ld/emultempl/hppaelf.em > -+++ b/ld/emultempl/hppaelf.em > -@@ -82,7 +82,7 @@ hppaelf_create_output_section_statements (void) > - bfd_get_arch (link_info.output_bfd), > - bfd_get_mach (link_info.output_bfd))) > - { > -- einfo (_("%F%P: can not create BFD: %E\n")); > -+ fatal (_("%P: can not create BFD: %E\n")); > - return; > - } > - > -@@ -346,7 +346,7 @@ PARSE_AND_LIST_ARGS_CASES=' > - const char *end; > - group_size = bfd_scan_vma (optarg, &end, 0); > - if (*end) > -- einfo (_("%F%P: invalid number `%s'\''\n"), optarg); > -+ fatal (_("%P: invalid number `%s'\''\n"), optarg); > - } > - break; > - ' > -diff --git a/ld/emultempl/kvxelf.em b/ld/emultempl/kvxelf.em > -index cbfde0ed24c..186f1483037 100644 > ---- a/ld/emultempl/kvxelf.em > -+++ b/ld/emultempl/kvxelf.em > -@@ -35,9 +35,8 @@ elf${ELFSIZE}_kvx_before_allocation (void) > - EOF > - if test x"${EMULATION_NAME}" != x"elf64kvx_linux"; then > - fragment <<EOF > -- if (bfd_link_pie (&link_info)) { > -- einfo (_("%F:%P: -pie not supported\n")); > -- } > -+ if (bfd_link_pie (&link_info)) > -+ fatal (_(":%P: -pie not supported\n")); > - EOF > - fi > - fragment <<EOF > -@@ -300,7 +299,7 @@ kvx_elf_create_output_section_statements (void) > - ldlang_add_file (stub_file); > - > - if (!kvx_elf${ELFSIZE}_init_stub_bfd (&link_info, stub_file->the_bfd)) > -- einfo ("%F%P: can not init BFD: %E\n"); > -+ einfo ("%P: can not init BFD: %E\n"); > - } > - > - > -diff --git a/ld/emultempl/loongarchelf.em b/ld/emultempl/loongarchelf.em > -index de64b1d30de..928fd83ab15 100644 > ---- a/ld/emultempl/loongarchelf.em > -+++ b/ld/emultempl/loongarchelf.em > -@@ -83,11 +83,11 @@ gld${EMULATION_NAME}_after_allocation (void) > - && !bfd_link_relocatable (&link_info)) > - { > - if (lang_phdr_list == NULL) > -- elf_seg_map (link_info.output_bfd) = NULL; > -+ elf_seg_map (link_info.output_bfd) = NULL; > - if (!_bfd_elf_map_sections_to_segments (link_info.output_bfd, > - &link_info, > - NULL)) > -- einfo (_("%F%P: map sections to segments failed: %E\n")); > -+ fatal (_("%P: map sections to segments failed: %E\n")); > - } > - > - /* Adjust program header size and .eh_frame_hdr size before > -diff --git a/ld/emultempl/m68hc1xelf.em b/ld/emultempl/m68hc1xelf.em > -index a7c3a3eec48..155b95349ab 100644 > ---- a/ld/emultempl/m68hc1xelf.em > -+++ b/ld/emultempl/m68hc1xelf.em > -@@ -159,7 +159,7 @@ m68hc11elf_create_output_section_statements (void) > - bfd_get_arch (link_info.output_bfd), > - bfd_get_mach (link_info.output_bfd))) > - { > -- einfo (_("%F%P: can not create BFD: %E\n")); > -+ fatal (_("%P: can not create BFD: %E\n")); > - return; > - } > - > -diff --git a/ld/emultempl/m68kelf.em b/ld/emultempl/m68kelf.em > -index c195812b85a..91fb3f8502a 100644 > ---- a/ld/emultempl/m68kelf.em > -+++ b/ld/emultempl/m68kelf.em > -@@ -82,7 +82,7 @@ m68k_elf_after_open (void) > - asection *datasec; > - > - if (bfd_get_flavour (abfd) != bfd_target_elf_flavour) > -- einfo (_("%F%P: %pB: all input objects must be ELF " > -+ fatal (_("%P: %pB: all input objects must be ELF " > - "for --embedded-relocs\n")); > - > - datasec = bfd_get_section_by_name (abfd, ".data"); > -@@ -106,7 +106,7 @@ m68k_elf_after_open (void) > - if (relsec == NULL > - || !bfd_set_section_alignment (relsec, 2) > - || !bfd_set_section_size (relsec, datasec->reloc_count * 12)) > -- einfo (_("%F%P: %pB: can not create .emreloc section: %E\n")); > -+ fatal (_("%P: %pB: can not create .emreloc section: %E\n")); > - } > - > - /* Double check that all other data sections are empty, as is > -diff --git a/ld/emultempl/metagelf.em b/ld/emultempl/metagelf.em > -index 85b8d379435..b6e59273dda 100644 > ---- a/ld/emultempl/metagelf.em > -+++ b/ld/emultempl/metagelf.em > -@@ -59,7 +59,7 @@ metagelf_create_output_section_statements (void) > - bfd_get_arch (link_info.output_bfd), > - bfd_get_mach (link_info.output_bfd))) > - { > -- einfo (_("%F%P: can not create BFD: %E\n")); > -+ fatal (_("%P: can not create BFD: %E\n")); > - return; > - } > - > -@@ -305,7 +305,7 @@ PARSE_AND_LIST_ARGS_CASES=' > - const char *end; > - group_size = bfd_scan_vma (optarg, &end, 0); > - if (*end) > -- einfo (_("%F%P: invalid number `%s'\''\n"), optarg); > -+ fatal (_("%P: invalid number `%s'\''\n"), optarg); > - } > - break; > - ' > -diff --git a/ld/emultempl/mipself.em b/ld/emultempl/mipself.em > -index 89e7a8945be..9aa15bda6e9 100644 > ---- a/ld/emultempl/mipself.em > -+++ b/ld/emultempl/mipself.em > -@@ -152,7 +152,7 @@ mips_add_stub_section (const char *stub_sec_name, asection *input_section, > - bfd_get_arch (link_info.output_bfd), > - bfd_get_mach (link_info.output_bfd))) > - { > -- einfo (_("%F%P: can not create BFD: %E\n")); > -+ fatal (_("%P: can not create BFD: %E\n")); > - return NULL; > - } > - stub_bfd->flags |= BFD_LINKER_CREATED; > -diff --git a/ld/emultempl/mmix-elfnmmo.em b/ld/emultempl/mmix-elfnmmo.em > -index 8c62bf8274d..72589416ef0 100644 > ---- a/ld/emultempl/mmix-elfnmmo.em > -+++ b/ld/emultempl/mmix-elfnmmo.em > -@@ -113,10 +113,7 @@ mmix_after_allocation (void) > - bfd_set_section_vma (sec, 0); > - > - if (!_bfd_mmix_after_linker_allocation (link_info.output_bfd, &link_info)) > -- { > -- /* This is a fatal error; make einfo call not return. */ > -- einfo (_("%F%P: can't finalize linker-allocated global registers\n")); > -- } > -+ fatal (_("%P: can't finalize linker-allocated global registers\n")); > - } > - EOF > - > -diff --git a/ld/emultempl/nds32elf.em b/ld/emultempl/nds32elf.em > -index 9d596838078..e8c72d934f8 100644 > ---- a/ld/emultempl/nds32elf.em > -+++ b/ld/emultempl/nds32elf.em > -@@ -44,7 +44,7 @@ nds32_elf_create_output_section_statements (void) > - if (strstr (bfd_get_target (link_info.output_bfd), "nds32") == NULL) > - { > - /* Check the output target is nds32. */ > -- einfo (_("%F%P: error: cannot change output format whilst " > -+ fatal (_("%P: error: cannot change output format whilst " > - "linking %s binaries\n"), "NDS32"); > - return; > - } > -@@ -96,7 +96,7 @@ nds32_elf_after_open (void) > - && abi_ver != (elf_elfheader (abfd)->e_flags & EF_NDS_ABI)) > - { > - /* Incompatible objects. */ > -- einfo (_("%F%P: %pB: ABI version of object files mismatched\n"), > -+ fatal (_("%P: %pB: ABI version of object files mismatched\n"), > - abfd); > - } > - } > -@@ -183,7 +183,7 @@ PARSE_AND_LIST_ARGS_CASES=' > - { > - sym_ld_script = fopen (optarg, FOPEN_WT); > - if(sym_ld_script == NULL) > -- einfo (_("%F%P: cannot open map file %s: %E\n"), optarg); > -+ fatal (_("%P: cannot open map file %s: %E\n"), optarg); > - } > - break; > - case OPTION_HYPER_RELAX: > -diff --git a/ld/emultempl/nto.em b/ld/emultempl/nto.em > -index 873b943c45d..ee00c79c3cd 100644 > ---- a/ld/emultempl/nto.em > -+++ b/ld/emultempl/nto.em > -@@ -51,7 +51,7 @@ nto_create_QNX_note_section(int type) > - is called before this function, stub_file should already be defined. */ > - if (!stub_file) > - { > -- einfo (_("%F%P: cannot create .note section in stub BFD.\n")); > -+ fatal (_("%P: cannot create .note section in stub BFD.\n")); > - return NULL; > - } > - > -@@ -60,7 +60,7 @@ nto_create_QNX_note_section(int type) > - note_sec = bfd_make_section_anyway_with_flags (stub_file->the_bfd, ".note", flags); > - if (! note_sec) > - { > -- einfo (_("%F%P: failed to create .note section\n")); > -+ fatal (_("%P: failed to create .note section\n")); > - return NULL; > - } > - > -@@ -101,7 +101,7 @@ nto_lookup_QNX_note_section(int type) > - sec->contents = xmalloc(sec->size); > - if (!bfd_get_section_contents (sec->owner, sec, sec->contents, (file_ptr) 0, > - sec->size)) > -- einfo (_("%F%P: %pB: can't read contents of section .note: %E\n"), > -+ fatal (_("%P: %pB: can't read contents of section .note: %E\n"), > - sec->owner); > - > - e_note = (Elf_External_Note *) sec->contents; > -@@ -144,7 +144,7 @@ nto_add_note_section (void) { > - > - if (nto_lazy_stack && !link_info.stacksize) > - { > -- einfo (_("%F%P: error: --lazy-stack must follow -zstack-size=<size>\n")); > -+ fatal (_("%P: error: --lazy-stack must follow -zstack-size=<size>\n")); > - return; > - } > - > -@@ -198,22 +198,22 @@ PARSE_AND_LIST_LONGOPTS=${PARSE_AND_LIST_LONGOPTS}' > - PARSE_AND_LIST_OPTIONS=${PARSE_AND_LIST_OPTIONS}' > - fprintf (file, _("\ > - --stack <size> Set size of the initial stack\n\ > -- --lazy-stack Set lazy allocation of stack\n\ > -+ --lazy-stack Set lazy allocation of stack\n\ > - ")); > - ' > - > - PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}' > - case OPTION_STACK: > - { > -- char *end; > -- link_info.stacksize = strtoul (optarg, &end, 0); > -- if (*end || link_info.stacksize < 0) > -- einfo (_("%F%P: invalid stack size `%s'\''\n"), optarg + 11); > -- if (!link_info.stacksize) > -- /* Use -1 for explicit no-stack, because zero means > -- 'default'. */ > -- link_info.stacksize = -1; > -- break; > -+ char *end; > -+ link_info.stacksize = strtoul (optarg, &end, 0); > -+ if (*end || link_info.stacksize < 0) > -+ fatal (_("%P: invalid stack size `%s'\''\n"), optarg + 11); > -+ if (!link_info.stacksize) > -+ /* Use -1 for explicit no-stack, because zero means > -+ 'default'. */ > -+ link_info.stacksize = -1; > -+ break; > - } > - case OPTION_LAZY_STACK: > - nto_lazy_stack = true; > -diff --git a/ld/emultempl/pe.em b/ld/emultempl/pe.em > -index 5fb14c9a4a6..9a2b576a6ac 100644 > ---- a/ld/emultempl/pe.em > -+++ b/ld/emultempl/pe.em > -@@ -648,7 +648,7 @@ set_pe_subsystem (void) > - > - if (v[i].name == NULL) > - { > -- einfo (_("%F%P: invalid subsystem type %s\n"), optarg); > -+ fatal (_("%P: invalid subsystem type %s\n"), optarg); > - return; > - } > - > -@@ -669,7 +669,7 @@ set_pe_value (char *name) > - set_pe_name (name, strtoul (optarg, &end, 0)); > - > - if (end == optarg) > -- einfo (_("%F%P: invalid hex number for PE parameter '%s'\n"), optarg); > -+ fatal (_("%P: invalid hex number for PE parameter '%s'\n"), optarg); > - > - optarg = end; > - } > -@@ -686,7 +686,7 @@ set_pe_stack_heap (char *resname, char *comname) > - set_pe_value (comname); > - } > - else if (*optarg) > -- einfo (_("%F%P: strange hex info for PE parameter '%s'\n"), optarg); > -+ fatal (_("%P: strange hex info for PE parameter '%s'\n"), optarg); > - } > - > - #define DEFAULT_BUILD_ID_STYLE "md5" > -@@ -702,7 +702,7 @@ gld${EMULATION_NAME}_handle_option (int optc) > - case OPTION_BASE_FILE: > - link_info.base_file = fopen (optarg, FOPEN_WB); > - if (link_info.base_file == NULL) > -- einfo (_("%F%P: cannot open base file %s\n"), optarg); > -+ fatal (_("%P: cannot open base file %s\n"), optarg); > - break; > - > - /* PE options. */ > -@@ -1231,7 +1231,7 @@ make_runtime_ref (void) > - = bfd_wrapped_link_hash_lookup (link_info.output_bfd, &link_info, > - rr, true, false, true); > - if (!h) > -- einfo (_("%F%P: bfd_link_hash_lookup failed: %E\n")); > -+ fatal (_("%P: bfd_link_hash_lookup failed: %E\n")); > - else > - { > - if (h->type == bfd_link_hash_new) > -@@ -1529,7 +1529,7 @@ gld${EMULATION_NAME}_after_open (void) > - if (bfd_get_flavour (link_info.output_bfd) != bfd_target_coff_flavour > - || coff_data (link_info.output_bfd) == NULL > - || !obj_pe (link_info.output_bfd)) > -- einfo (_("%F%P: cannot perform PE operations on non PE output file '%pB'\n"), > -+ fatal (_("%P: cannot perform PE operations on non PE output file '%pB'\n"), > - link_info.output_bfd); > - > - pe_data (link_info.output_bfd)->pe_opthdr = pe; > -@@ -1602,7 +1602,7 @@ gld${EMULATION_NAME}_after_open (void) > - These will only be created if the output format is an arm format, > - hence we do not support linking and changing output formats at the > - same time. Use a link followed by objcopy to change output formats. */ > -- einfo (_("%F%P: error: cannot change output format " > -+ fatal (_("%P: error: cannot change output format " > - "whilst linking %s binaries\n"), "ARM"); > - return; > - } > -@@ -1662,7 +1662,7 @@ gld${EMULATION_NAME}_after_open (void) > - > - if (!bfd_generic_link_read_symbols (is->the_bfd)) > - { > -- einfo (_("%F%P: %pB: could not read symbols: %E\n"), > -+ fatal (_("%P: %pB: could not read symbols: %E\n"), > - is->the_bfd); > - return; > - } > -@@ -1849,7 +1849,7 @@ gld${EMULATION_NAME}_after_open (void) > - > - if (!bfd_generic_link_read_symbols (is->the_bfd)) > - { > -- einfo (_("%F%P: %pB: could not read symbols: %E\n"), > -+ fatal (_("%P: %pB: could not read symbols: %E\n"), > - is->the_bfd); > - return; > - } > -@@ -1960,7 +1960,7 @@ gld${EMULATION_NAME}_unrecognized_file (lang_input_statement_type *entry ATTRIBU > - > - h = bfd_link_hash_lookup (link_info.hash, buf, true, true, true); > - if (h == (struct bfd_link_hash_entry *) NULL) > -- einfo (_("%F%P: bfd_link_hash_lookup failed: %E\n")); > -+ fatal (_("%P: bfd_link_hash_lookup failed: %E\n")); > - if (h->type == bfd_link_hash_new) > - { > - h->type = bfd_link_hash_undefined; > -diff --git a/ld/emultempl/pep.em b/ld/emultempl/pep.em > -index df74352e4df..440c0bf5fc4 100644 > ---- a/ld/emultempl/pep.em > -+++ b/ld/emultempl/pep.em > -@@ -625,7 +625,7 @@ set_pep_subsystem (void) > - > - if (v[i].name == NULL) > - { > -- einfo (_("%F%P: invalid subsystem type %s\n"), optarg); > -+ fatal (_("%P: invalid subsystem type %s\n"), optarg); > - return; > - } > - > -@@ -646,7 +646,7 @@ set_pep_value (char *name) > - set_pep_name (name, (bfd_vma) strtoull (optarg, &end, 0)); > - > - if (end == optarg) > -- einfo (_("%F%P: invalid hex number for PE parameter '%s'\n"), optarg); > -+ fatal (_("%P: invalid hex number for PE parameter '%s'\n"), optarg); > - > - optarg = end; > - } > -@@ -663,7 +663,7 @@ set_pep_stack_heap (char *resname, char *comname) > - set_pep_value (comname); > - } > - else if (*optarg) > -- einfo (_("%F%P: strange hex info for PE parameter '%s'\n"), optarg); > -+ fatal (_("%P: strange hex info for PE parameter '%s'\n"), optarg); > - } > - > - #define DEFAULT_BUILD_ID_STYLE "md5" > -@@ -680,7 +680,7 @@ gld${EMULATION_NAME}_handle_option (int optc) > - case OPTION_BASE_FILE: > - link_info.base_file = fopen (optarg, FOPEN_WB); > - if (link_info.base_file == NULL) > -- einfo (_("%F%P: cannot open base file %s\n"), optarg); > -+ fatal (_("%P: cannot open base file %s\n"), optarg); > - break; > - > - /* PE options. */ > -@@ -1233,7 +1233,7 @@ make_runtime_ref (void) > - = bfd_wrapped_link_hash_lookup (link_info.output_bfd, &link_info, > - rr, true, false, true); > - if (!h) > -- einfo (_("%F%P: bfd_link_hash_lookup failed: %E\n")); > -+ fatal (_("%P: bfd_link_hash_lookup failed: %E\n")); > - else > - { > - if (h->type == bfd_link_hash_new) > -@@ -1533,7 +1533,7 @@ gld${EMULATION_NAME}_after_open (void) > - if (bfd_get_flavour (link_info.output_bfd) != bfd_target_coff_flavour > - || coff_data (link_info.output_bfd) == NULL > - || !obj_pe (link_info.output_bfd)) > -- einfo (_("%F%P: cannot perform PE operations on non PE output file '%pB'\n"), > -+ fatal (_("%P: cannot perform PE operations on non PE output file '%pB'\n"), > - link_info.output_bfd); > - > - pe_data (link_info.output_bfd)->pe_opthdr = pep; > -@@ -1645,7 +1645,7 @@ gld${EMULATION_NAME}_after_open (void) > - > - if (!bfd_generic_link_read_symbols (is->the_bfd)) > - { > -- einfo (_("%F%P: %pB: could not read symbols: %E\n"), > -+ fatal (_("%P: %pB: could not read symbols: %E\n"), > - is->the_bfd); > - return; > - } > -@@ -1849,7 +1849,7 @@ gld${EMULATION_NAME}_unrecognized_file (lang_input_statement_type *entry ATTRIBU > - > - h = bfd_link_hash_lookup (link_info.hash, buf, true, true, true); > - if (h == (struct bfd_link_hash_entry *) NULL) > -- einfo (_("%F%P: bfd_link_hash_lookup failed: %E\n")); > -+ fatal (_("%P: bfd_link_hash_lookup failed: %E\n")); > - if (h->type == bfd_link_hash_new) > - { > - h->type = bfd_link_hash_undefined; > -diff --git a/ld/emultempl/ppc32elf.em b/ld/emultempl/ppc32elf.em > -index 529a5920920..ae11bc9a072 100644 > ---- a/ld/emultempl/ppc32elf.em > -+++ b/ld/emultempl/ppc32elf.em > -@@ -366,7 +366,7 @@ PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}' > - char *end; > - unsigned long val = strtoul (optarg, &end, 0); > - if (*end || val > 5) > -- einfo (_("%F%P: invalid --plt-align `%s'\''\n"), optarg); > -+ fatal (_("%P: invalid --plt-align `%s'\''\n"), optarg); > - params.plt_stub_align = val; > - } > - else > -@@ -399,7 +399,7 @@ PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}' > - if (*end > - || (params.pagesize < 4096 && params.pagesize != 0) > - || params.pagesize != (params.pagesize & -params.pagesize)) > -- einfo (_("%F%P: invalid pagesize `%s'\''\n"), optarg); > -+ fatal (_("%P: invalid pagesize `%s'\''\n"), optarg); > - } > - break; > - > -diff --git a/ld/emultempl/ppc64elf.em b/ld/emultempl/ppc64elf.em > -index 1e6ae7af738..f7a8f1eb259 100644 > ---- a/ld/emultempl/ppc64elf.em > -+++ b/ld/emultempl/ppc64elf.em > -@@ -91,7 +91,7 @@ ppc_create_output_section_statements (void) > - bfd_get_arch (link_info.output_bfd), > - bfd_get_mach (link_info.output_bfd))) > - { > -- einfo (_("%F%P: can not create BFD: %E\n")); > -+ fatal (_("%P: can not create BFD: %E\n")); > - return; > - } > - > -@@ -101,7 +101,7 @@ ppc_create_output_section_statements (void) > - if (params.save_restore_funcs < 0) > - params.save_restore_funcs = !bfd_link_relocatable (&link_info); > - if (!ppc64_elf_init_stub_bfd (&link_info, ¶ms)) > -- einfo (_("%F%P: can not init BFD: %E\n")); > -+ fatal (_("%P: can not init BFD: %E\n")); > - } > - > - /* Called after opening files but before mapping sections. */ > -@@ -825,7 +825,7 @@ PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}' > - const char *end; > - params.group_size = bfd_scan_vma (optarg, &end, 0); > - if (*end) > -- einfo (_("%F%P: invalid number `%s'\''\n"), optarg); > -+ fatal (_("%P: invalid number `%s'\''\n"), optarg); > - } > - break; > - > -@@ -851,7 +851,7 @@ PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}' > - char *end; > - long val = strtol (optarg, &end, 0); > - if (*end || (unsigned long) val + 8 > 16) > -- einfo (_("%F%P: invalid --plt-align `%s'\''\n"), optarg); > -+ fatal (_("%P: invalid --plt-align `%s'\''\n"), optarg); > - params.plt_stub_align = val; > - } > - else > -@@ -880,7 +880,7 @@ PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}' > - else if (strcasecmp (optarg, "no") == 0) > - params.power10_stubs = 0; > - else > -- einfo (_("%F%P: invalid --power10-stubs argument `%s'\''\n"), > -+ fatal (_("%P: invalid --power10-stubs argument `%s'\''\n"), > - optarg); > - } > - else > -diff --git a/ld/emultempl/riscvelf.em b/ld/emultempl/riscvelf.em > -index 6b67c7faa72..78e1fcde68e 100644 > ---- a/ld/emultempl/riscvelf.em > -+++ b/ld/emultempl/riscvelf.em > -@@ -131,7 +131,7 @@ riscv_create_output_section_statements (void) > - These will only be created if the output format is a RISC-V format, > - hence we do not support linking and changing output formats at the > - same time. Use a link followed by objcopy to change output formats. */ > -- einfo (_("%F%P: error: cannot change output format" > -+ fatal (_("%P: error: cannot change output format" > - " whilst linking %s binaries\n"), "RISC-V"); > - return; > - } > -diff --git a/ld/emultempl/s390.em b/ld/emultempl/s390.em > -index 8548768cc5f..a2296627bad 100644 > ---- a/ld/emultempl/s390.em > -+++ b/ld/emultempl/s390.em > -@@ -34,7 +34,7 @@ static void > - s390_elf_create_output_section_statements (void) > - { > - if (!bfd_elf_s390_set_options (&link_info, ¶ms)) > -- einfo (_("%F%P: can not init BFD: %E\n")); > -+ fatal (_("%P: can not init BFD: %E\n")); > - } > - > - EOF > -diff --git a/ld/emultempl/scoreelf.em b/ld/emultempl/scoreelf.em > -index d3a2205115b..fd67d5ceb94 100644 > ---- a/ld/emultempl/scoreelf.em > -+++ b/ld/emultempl/scoreelf.em > -@@ -62,7 +62,7 @@ score_elf_after_open (void) > - These will only be created if the output format is an score format, > - hence we do not support linking and changing output formats at the > - same time. Use a link followed by objcopy to change output formats. */ > -- einfo (_("%F%P: error: cannot change output format " > -+ fatal (_("%P: error: cannot change output format " > - "whilst linking %s binaries\n"), "S+core"); > - return; > - } > -diff --git a/ld/emultempl/spuelf.em b/ld/emultempl/spuelf.em > -index 76776ba2555..cda9a06ac08 100644 > ---- a/ld/emultempl/spuelf.em > -+++ b/ld/emultempl/spuelf.em > -@@ -202,7 +202,7 @@ spu_elf_load_ovl_mgr (void) > - /* User supplied __ovly_load. */ > - } > - else if (mgr_stream->start == mgr_stream->end) > -- einfo (_("%F%P: no built-in overlay manager\n")); > -+ fatal (_("%P: no built-in overlay manager\n")); > - else > - { > - lang_input_statement_type *ovl_is; > -@@ -379,7 +379,7 @@ spu_elf_open_overlay_script (void) > - if (script == NULL) > - { > - file_err: > -- einfo (_("%F%P: can not open script: %E\n")); > -+ fatal (_("%P: can not open script: %E\n")); > - } > - return script; > - } > -@@ -695,7 +695,7 @@ PARSE_AND_LIST_ARGS_CASES=' > - if (*end == 0) > - break; > - } > -- einfo (_("%F%P: invalid --local-store address range `%s'\''\n"), optarg); > -+ fatal (_("%P: invalid --local-store address range `%s'\''\n"), optarg); > - } > - break; > - > -@@ -731,12 +731,12 @@ PARSE_AND_LIST_ARGS_CASES=' > - if (!num_lines_set) > - params.num_lines = 32; > - else if ((params.num_lines & -params.num_lines) != params.num_lines) > -- einfo (_("%F%P: invalid --num-lines/--num-regions `%u'\''\n"), > -+ fatal (_("%P: invalid --num-lines/--num-regions `%u'\''\n"), > - params.num_lines); > - if (!line_size_set) > - params.line_size = 1024; > - else if ((params.line_size & -params.line_size) != params.line_size) > -- einfo (_("%F%P: invalid --line-size/--region-size `%u'\''\n"), > -+ fatal (_("%P: invalid --line-size/--region-size `%u'\''\n"), > - params.line_size); > - break; > - > -@@ -757,7 +757,7 @@ PARSE_AND_LIST_ARGS_CASES=' > - && (params.ovly_flavour != ovly_soft_icache > - || (params.num_lines & -params.num_lines) == params.num_lines)) > - break; > -- einfo (_("%F%P: invalid --num-lines/--num-regions `%s'\''\n"), optarg); > -+ fatal (_("%P: invalid --num-lines/--num-regions `%s'\''\n"), optarg); > - } > - break; > - > -@@ -770,7 +770,7 @@ PARSE_AND_LIST_ARGS_CASES=' > - && (params.ovly_flavour != ovly_soft_icache > - || (params.line_size & -params.line_size) == params.line_size)) > - break; > -- einfo (_("%F%P: invalid --line-size/--region-size `%s'\''\n"), optarg); > -+ fatal (_("%P: invalid --line-size/--region-size `%s'\''\n"), optarg); > - } > - break; > - > -@@ -779,7 +779,7 @@ PARSE_AND_LIST_ARGS_CASES=' > - char *end; > - params.auto_overlay_fixed = strtoul (optarg, &end, 0); > - if (*end != 0) > -- einfo (_("%F%P: invalid --fixed-space value `%s'\''\n"), optarg); > -+ fatal (_("%P: invalid --fixed-space value `%s'\''\n"), optarg); > - } > - break; > - > -@@ -788,7 +788,7 @@ PARSE_AND_LIST_ARGS_CASES=' > - char *end; > - params.auto_overlay_reserved = strtoul (optarg, &end, 0); > - if (*end != 0) > -- einfo (_("%F%P: invalid --reserved-space value `%s'\''\n"), optarg); > -+ fatal (_("%P: invalid --reserved-space value `%s'\''\n"), optarg); > - } > - break; > - > -@@ -797,7 +797,7 @@ PARSE_AND_LIST_ARGS_CASES=' > - char *end; > - params.extra_stack_space = strtol (optarg, &end, 0); > - if (*end != 0) > -- einfo (_("%F%P: invalid --extra-stack-space value `%s'\''\n"), optarg); > -+ fatal (_("%P: invalid --extra-stack-space value `%s'\''\n"), optarg); > - } > - break; > - > -diff --git a/ld/emultempl/tic6xdsbt.em b/ld/emultempl/tic6xdsbt.em > -index 0680bc81112..4aec9aebe6f 100644 > ---- a/ld/emultempl/tic6xdsbt.em > -+++ b/ld/emultempl/tic6xdsbt.em > -@@ -59,10 +59,8 @@ tic6x_after_open (void) > - if (is_tic6x_target ()) > - { > - if (params.dsbt_index >= params.dsbt_size) > -- { > -- einfo (_("%F%P: invalid --dsbt-index %d, outside DSBT size\n"), > -- params.dsbt_index); > -- } > -+ fatal (_("%P: invalid --dsbt-index %d, outside DSBT size\n"), > -+ params.dsbt_index); > - elf32_tic6x_setup (&link_info, ¶ms); > - } > - > -@@ -186,7 +184,7 @@ PARSE_AND_LIST_ARGS_CASES=' > - if (*end == 0 > - && params.dsbt_index >= 0 && params.dsbt_index < 0x7fff) > - break; > -- einfo (_("%F%P: invalid --dsbt-index %s\n"), optarg); > -+ fatal (_("%P: invalid --dsbt-index %s\n"), optarg); > - } > - break; > - case OPTION_DSBT_SIZE: > -@@ -196,7 +194,7 @@ PARSE_AND_LIST_ARGS_CASES=' > - if (*end == 0 > - && params.dsbt_size >= 0 && params.dsbt_size < 0x7fff) > - break; > -- einfo (_("%F%P: invalid --dsbt-size %s\n"), optarg); > -+ fatal (_("%P: invalid --dsbt-size %s\n"), optarg); > - } > - break; > - case OPTION_NO_MERGE_EXIDX_ENTRIES: > -diff --git a/ld/emultempl/ticoff.em b/ld/emultempl/ticoff.em > -index d4ef91f7af2..2e6a4a0ae6f 100644 > ---- a/ld/emultempl/ticoff.em > -+++ b/ld/emultempl/ticoff.em > -@@ -88,9 +88,7 @@ gld${EMULATION_NAME}_handle_option (int optc) > - lang_add_output_format (buf, NULL, NULL, 0); > - } > - else > -- { > -- einfo (_("%F%P: invalid COFF format version %s\n"), optarg); > -- } > -+ fatal (_("%P: invalid COFF format version %s\n"), optarg); > - break; > - } > - return false; > -diff --git a/ld/emultempl/v850elf.em b/ld/emultempl/v850elf.em > -index 84cd589a057..92a1ac4d784 100644 > ---- a/ld/emultempl/v850elf.em > -+++ b/ld/emultempl/v850elf.em > -@@ -63,7 +63,7 @@ v850_create_output_section_statements (void) > - These will only be created if the output format is an arm format, > - hence we do not support linking and changing output formats at the > - same time. Use a link followed by objcopy to change output formats. */ > -- einfo (_("%F%P: error: cannot change output format" > -+ fatal (_("%P: error: cannot change output format" > - " whilst linking %s binaries\n"), "V850"); > - return; > - } > -diff --git a/ld/emultempl/vms.em b/ld/emultempl/vms.em > -index 1b68b0db64f..5bb6ae2a430 100644 > ---- a/ld/emultempl/vms.em > -+++ b/ld/emultempl/vms.em > -@@ -200,7 +200,7 @@ gld${EMULATION_NAME}_before_allocation (void) > - if (bed->elf_backend_late_size_sections > - && !bed->elf_backend_late_size_sections (link_info.output_bfd, > - &link_info)) > -- einfo (_("%F%P: failed to set dynamic section sizes: %E\n")); > -+ fatal (_("%P: failed to set dynamic section sizes: %E\n")); > - > - before_allocation_default (); > - } > -diff --git a/ld/emultempl/xtensaelf.em b/ld/emultempl/xtensaelf.em > -index e3a9b2e6cf8..027b7732d2d 100644 > ---- a/ld/emultempl/xtensaelf.em > -+++ b/ld/emultempl/xtensaelf.em > -@@ -390,7 +390,7 @@ check_xtensa_info (bfd *abfd, asection *info_sec) > - > - data = xmalloc (info_sec->size); > - if (! bfd_get_section_contents (abfd, info_sec, data, 0, info_sec->size)) > -- einfo (_("%F%P: %pB: cannot read contents of section %pA\n"), abfd, info_sec); > -+ fatal (_("%P: %pB: cannot read contents of section %pA\n"), abfd, info_sec); > - > - if (info_sec->size > 24 > - && info_sec->size >= 24 + bfd_get_32 (abfd, data + 4) > -@@ -431,13 +431,13 @@ elf_xtensa_before_allocation (void) > - if (is_big_endian > - && link_info.output_bfd->xvec->byteorder == BFD_ENDIAN_LITTLE) > - { > -- einfo (_("%F%P: little endian output does not match " > -+ fatal (_("%P: little endian output does not match " > - "Xtensa configuration\n")); > - } > - if (!is_big_endian > - && link_info.output_bfd->xvec->byteorder == BFD_ENDIAN_BIG) > - { > -- einfo (_("%F%P: big endian output does not match " > -+ fatal (_("%P: big endian output does not match " > - "Xtensa configuration\n")); > - } > - > -@@ -456,7 +456,7 @@ elf_xtensa_before_allocation (void) > - cannot go any further if there are any mismatches. */ > - if ((is_big_endian && f->the_bfd->xvec->byteorder == BFD_ENDIAN_LITTLE) > - || (!is_big_endian && f->the_bfd->xvec->byteorder == BFD_ENDIAN_BIG)) > -- einfo (_("%F%P: cross-endian linking for %pB not supported\n"), > -+ fatal (_("%P: cross-endian linking for %pB not supported\n"), > - f->the_bfd); > - > - if (! first_bfd) > -@@ -487,7 +487,7 @@ elf_xtensa_before_allocation (void) > - info_sec = bfd_make_section_with_flags (first_bfd, ".xtensa.info", > - SEC_HAS_CONTENTS | SEC_READONLY); > - if (! info_sec) > -- einfo (_("%F%P: failed to create .xtensa.info section\n")); > -+ fatal (_("%P: failed to create .xtensa.info section\n")); > - } > - if (info_sec) > - { > -@@ -1226,7 +1226,7 @@ ld_build_required_section_dependence (lang_statement_union_type *s) > - lang_statement_union_type *l = iter_stack_current (&stack); > - > - if (l == NULL && link_info.non_contiguous_regions) > -- einfo (_("%F%P: Relaxation not supported with " > -+ fatal (_("%P: Relaxation not supported with " > - "--enable-non-contiguous-regions.\n")); > - > - if (l->header.type == lang_input_section_enum) > -diff --git a/ld/emultempl/z80.em b/ld/emultempl/z80.em > -index a2a7f28aa89..d566b9ac398 100644 > ---- a/ld/emultempl/z80.em > -+++ b/ld/emultempl/z80.em > -@@ -48,7 +48,7 @@ z80_after_open (void) > - const bfd_arch_info_type *info; > - info = bfd_arch_get_compatible (link_info.output_bfd, abfd, false); > - if (info == NULL) > -- einfo (_("%F%P: %pB: Instruction sets of object files incompatible\n"), > -+ fatal (_("%P: %pB: Instruction sets of object files incompatible\n"), > - abfd); > - else > - bfd_set_arch_info (link_info.output_bfd, info); > -diff --git a/ld/ldcref.c b/ld/ldcref.c > -index 226d4e67adf..5d7891f6321 100644 > ---- a/ld/ldcref.c > -+++ b/ld/ldcref.c > -@@ -514,7 +514,7 @@ check_local_sym_xref (lang_input_statement_type *statement) > - return; > - > - if (!bfd_generic_link_read_symbols (abfd)) > -- einfo (_("%F%P: %pB: could not read symbols: %E\n"), abfd); > -+ fatal (_("%P: %pB: could not read symbols: %E\n"), abfd); > - > - for (syms = bfd_get_outsymbols (abfd); *syms; ++syms) > - { > -@@ -625,7 +625,7 @@ check_refs (const char *name, > - BFD might contain a prohibited cross reference. */ > - > - if (!bfd_generic_link_read_symbols (abfd)) > -- einfo (_("%F%P: %pB: could not read symbols: %E\n"), abfd); > -+ fatal (_("%P: %pB: could not read symbols: %E\n"), abfd); > - > - info.sym_name = name; > - info.global = global; > -@@ -687,14 +687,14 @@ check_reloc_refs (bfd *abfd, asection *sec, void *iarg) > - > - relsize = bfd_get_reloc_upper_bound (abfd, sec); > - if (relsize < 0) > -- einfo (_("%F%P: %pB: could not read relocs: %E\n"), abfd); > -+ fatal (_("%P: %pB: could not read relocs: %E\n"), abfd); > - if (relsize == 0) > - return; > - > - relpp = (arelent **) xmalloc (relsize); > - relcount = bfd_canonicalize_reloc (abfd, sec, relpp, info->asymbols); > - if (relcount < 0) > -- einfo (_("%F%P: %pB: could not read relocs: %E\n"), abfd); > -+ fatal (_("%P: %pB: could not read relocs: %E\n"), abfd); > - > - p = relpp; > - pend = p + relcount; > -diff --git a/ld/ldelf.c b/ld/ldelf.c > -index efa654c843c..f4f27fc3873 100644 > ---- a/ld/ldelf.c > -+++ b/ld/ldelf.c > -@@ -95,7 +95,7 @@ ldelf_after_parse (void) > - else if (!link_info.maxpagesize_is_set) > - link_info.maxpagesize = link_info.commonpagesize; > - else > -- einfo (_("%F%P: common page size (0x%v) > maximum page size (0x%v)\n"), > -+ fatal (_("%P: common page size (0x%v) > maximum page size (0x%v)\n"), > - link_info.commonpagesize, link_info.maxpagesize); > - } > - } > -@@ -121,7 +121,7 @@ ldelf_load_symbols (lang_input_statement_type *entry) > - > - if (entry->flags.just_syms > - && (bfd_get_file_flags (entry->the_bfd) & DYNAMIC) != 0) > -- einfo (_("%F%P: %pB: --just-symbols may not be used on DSO\n"), > -+ fatal (_("%P: %pB: --just-symbols may not be used on DSO\n"), > - entry->the_bfd); > - > - if (link_class == 0 > -@@ -321,7 +321,7 @@ ldelf_try_needed (struct dt_needed *needed, int force, int is_linux) > - struct bfd_link_needed_list *needs; > - > - if (! bfd_elf_get_bfd_needed_list (abfd, &needs)) > -- einfo (_("%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n"), abfd); > -+ fatal (_("%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n"), abfd); > - > - if (needs != NULL) > - { > -@@ -369,7 +369,7 @@ ldelf_try_needed (struct dt_needed *needed, int force, int is_linux) > - can only check that using stat. */ > - > - if (bfd_stat (abfd, &global_stat) != 0) > -- einfo (_("%F%P: %pB: bfd_stat failed: %E\n"), abfd); > -+ fatal (_("%P: %pB: bfd_stat failed: %E\n"), abfd); > - > - /* First strip off everything before the last '/'. */ > - soname = lbasename (bfd_get_filename (abfd)); > -@@ -408,7 +408,7 @@ ldelf_try_needed (struct dt_needed *needed, int force, int is_linux) > - > - /* Add this file into the symbol table. */ > - if (! bfd_link_add_symbols (abfd, &link_info)) > -- einfo (_("%F%P: %pB: error adding symbols: %E\n"), abfd); > -+ fatal (_("%P: %pB: error adding symbols: %E\n"), abfd); > - > - return true; > - } > -@@ -1209,7 +1209,7 @@ ldelf_handle_dt_needed (struct elf_link_hash_table *htab, > - && elf_dt_name (abfd) != NULL) > - { > - if (bfd_elf_add_dt_needed_tag (abfd, &link_info) < 0) > -- einfo (_("%F%P: failed to add DT_NEEDED dynamic tag\n")); > -+ fatal (_("%P: failed to add DT_NEEDED dynamic tag\n")); > - } > - > - link_info.input_bfds_tail = save_input_bfd_tail; > -@@ -1260,10 +1260,8 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd, > - bfd_get_target (link_info.output_bfd)); > - > - if (link_info.out_implib_bfd == NULL) > -- { > -- einfo (_("%F%P: %s: can't open for writing: %E\n"), > -- command_line.out_implib_filename); > -- } > -+ fatal (_("%P: %s: can't open for writing: %E\n"), > -+ command_line.out_implib_filename); > - } > - > - if (ldelf_emit_note_gnu_build_id != NULL > -@@ -1317,7 +1315,7 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd, > - && (elf_tdata (abfd)->elf_header->e_type == ET_EXEC > - || (elf_tdata (abfd)->elf_header->e_type == ET_DYN > - && elf_tdata (abfd)->is_pie))) > -- einfo (_("%F%P: cannot use executable file '%pB' as input to a link\n"), > -+ fatal (_("%P: cannot use executable file '%pB' as input to a link\n"), > - abfd); > - } > - > -@@ -1371,7 +1369,7 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd, > - } > - else if (seen_type != type) > - { > -- einfo (_("%F%P: compact frame descriptions incompatible with" > -+ fatal (_("%P: compact frame descriptions incompatible with" > - " DWARF2 .eh_frame from %pB\n"), > - type == DWARF2_EH_HDR ? abfd : elfbfd); > - break; > -@@ -1413,7 +1411,7 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd, > - > - if (link_info.eh_frame_hdr_type == COMPACT_EH_HDR) > - if (!bfd_elf_parse_eh_frame_entries (NULL, &link_info)) > -- einfo (_("%F%P: failed to parse EH frame entries\n")); > -+ fatal (_("%P: failed to parse EH frame entries\n")); > - > - ldelf_handle_dt_needed (htab, use_libpath, native, is_linux, > - is_freebsd, elfsize, prefix); > -@@ -1672,7 +1670,7 @@ ldelf_find_exp_assignment (etree_type *exp) > - &link_info, > - exp->assign.dst, provide, > - exp->assign.hidden)) > -- einfo (_("%F%P: failed to record assignment to %s: %E\n"), > -+ fatal (_("%P: failed to record assignment to %s: %E\n"), > - exp->assign.dst); > - } > - ldelf_find_exp_assignment (exp->assign.src); > -@@ -1852,7 +1850,7 @@ ldelf_before_allocation (char *audit, char *depaudit, > - command_line.filter_shlib, audit, depaudit, > - (const char * const *) command_line.auxiliary_filters, > - &link_info, &sinterp))) > -- einfo (_("%F%P: failed to set dynamic section sizes: %E\n")); > -+ fatal (_("%P: failed to set dynamic section sizes: %E\n")); > - > - if (sinterp != NULL) > - { > -@@ -1889,8 +1887,8 @@ ldelf_before_allocation (char *audit, char *depaudit, > - msg = (char *) xmalloc ((size_t) (sz + 1)); > - if (! bfd_get_section_contents (is->the_bfd, s, msg, > - (file_ptr) 0, sz)) > -- einfo (_("%F%P: %pB: can't read contents of section .gnu.warning: %E\n"), > -- is->the_bfd); > -+ fatal (_("%P: %pB: can't read contents of section %pA: %E\n"), > -+ is->the_bfd, s); > - msg[sz] = '\0'; > - (*link_info.callbacks->warning) (&link_info, msg, > - (const char *) NULL, is->the_bfd, > -@@ -1917,7 +1915,7 @@ ldelf_before_allocation (char *audit, char *depaudit, > - before_allocation_default (); > - > - if (!bfd_elf_size_dynsym_hash_dynstr (link_info.output_bfd, &link_info)) > -- einfo (_("%F%P: failed to set dynamic section sizes: %E\n")); > -+ fatal (_("%P: failed to set dynamic section sizes: %E\n")); > - > - if (ehdr_start != NULL) > - { > -diff --git a/ld/ldelfgen.c b/ld/ldelfgen.c > -index c649768634c..8e84b7a5b3f 100644 > ---- a/ld/ldelfgen.c > -+++ b/ld/ldelfgen.c > -@@ -282,7 +282,7 @@ ldelf_map_segments (bool need_layout) > - if (os_info->ordered != os_info->count > - && bfd_link_relocatable (&link_info)) > - { > -- einfo (_("%F%P: " > -+ fatal (_("%P: " > - "%pA has both ordered and unordered sections\n"), > - os->bfd_section); > - return; > -@@ -307,7 +307,7 @@ ldelf_map_segments (bool need_layout) > - if (!_bfd_elf_map_sections_to_segments (link_info.output_bfd, > - &link_info, > - &need_layout)) > -- einfo (_("%F%P: map sections to segments failed: %E\n")); > -+ fatal (_("%P: map sections to segments failed: %E\n")); > - > - if (phdr_size != elf_program_header_size (link_info.output_bfd)) > - { > -@@ -327,7 +327,7 @@ ldelf_map_segments (bool need_layout) > - while (need_layout && --tries); > - > - if (tries == 0) > -- einfo (_("%F%P: looping in map_segments\n")); > -+ fatal (_("%P: looping in map_segments\n")); > - > - if (bfd_get_flavour (link_info.output_bfd) == bfd_target_elf_flavour > - && lang_phdr_list == NULL) > -@@ -337,9 +337,8 @@ ldelf_map_segments (bool need_layout) > - const struct elf_backend_data *bed > - = get_elf_backend_data (link_info.output_bfd); > - if (bed->elf_backend_strip_zero_sized_dynamic_sections > -- && !bed->elf_backend_strip_zero_sized_dynamic_sections > -- (&link_info)) > -- einfo (_("%F%P: failed to strip zero-sized dynamic sections\n")); > -+ && !bed->elf_backend_strip_zero_sized_dynamic_sections (&link_info)) > -+ fatal (_("%P: failed to strip zero-sized dynamic sections\n")); > - } > - } > - > -@@ -417,7 +416,7 @@ ldelf_acquire_strings_for_ctf > - { > - if (ctf_link_add_strtab (ctf_output, ldelf_ctf_strtab_iter_cb, > - &args) < 0) > -- einfo (_("%F%P: warning: CTF strtab association failed; strings will " > -+ fatal (_("%P: warning: CTF strtab association failed; strings will " > - "not be shared: %s\n"), > - ctf_errmsg (ctf_errno (ctf_output))); > - } > -@@ -444,7 +443,7 @@ ldelf_new_dynsym_for_ctf (struct ctf_dict *ctf_output, int symidx, > - lsym.st_value = sym->st_value; > - if (ctf_link_add_linker_symbol (ctf_output, &lsym) < 0) > - { > -- einfo (_("%F%P: warning: CTF symbol addition failed; CTF will " > -+ fatal (_("%P: warning: CTF symbol addition failed; CTF will " > - "not be tied to symbols: %s\n"), > - ctf_errmsg (ctf_errno (ctf_output))); > - } > -@@ -454,7 +453,7 @@ ldelf_new_dynsym_for_ctf (struct ctf_dict *ctf_output, int symidx, > - /* Shuffle all the symbols. */ > - > - if (ctf_link_shuffle_syms (ctf_output) < 0) > -- einfo (_("%F%P: warning: CTF symbol shuffling failed; CTF will " > -+ fatal (_("%P: warning: CTF symbol shuffling failed; CTF will " > - "not be tied to symbols: %s\n"), > - ctf_errmsg (ctf_errno (ctf_output))); > - } > -diff --git a/ld/ldemul.c b/ld/ldemul.c > -index 0f3cb1a0125..dce0d385fe0 100644 > ---- a/ld/ldemul.c > -+++ b/ld/ldemul.c > -@@ -349,7 +349,7 @@ ldemul_choose_mode (char *target) > - einfo (_("%P: unrecognised emulation mode: %s\n"), target); > - einfo (_("Supported emulations: ")); > - ldemul_list_emulations (stderr); > -- einfo ("%F\n"); > -+ fatal ("\n"); > - } > - > - void > -diff --git a/ld/ldexp.c b/ld/ldexp.c > -index 87d882e5066..fd741ec7e42 100644 > ---- a/ld/ldexp.c > -+++ b/ld/ldexp.c > -@@ -282,7 +282,7 @@ definedness_newfunc (struct bfd_hash_entry *entry, > - bfd_hash_allocate (table, sizeof (struct definedness_hash_entry)); > - > - if (ret == NULL) > -- einfo (_("%F%P: bfd_hash_allocate failed creating symbol %s\n"), name); > -+ fatal (_("%P: bfd_hash_allocate failed creating symbol %s\n"), name); > - > - ret->by_object = 0; > - ret->iteration = 0; > -@@ -313,7 +313,7 @@ update_definedness (const char *name, struct bfd_link_hash_entry *h) > - bfd_hash_lookup (&definedness_table, name, true, false); > - > - if (defentry == NULL) > -- einfo (_("%F%P: bfd_hash_lookup failed creating symbol %s\n"), name); > -+ fatal (_("%P: bfd_hash_lookup failed creating symbol %s\n"), name); > - > - /* If the symbol was already defined, and not by a script, then it > - must be defined by an object file or by the linker target code. */ > -@@ -638,7 +638,7 @@ fold_binary (etree_type *tree) > - expld.result.value = ((bfd_signed_vma) lhs.value > - % (bfd_signed_vma) expld.result.value); > - else if (expld.phase != lang_mark_phase_enum) > -- einfo (_("%F%P:%pS %% by zero\n"), tree->binary.rhs); > -+ fatal (_("%P:%pS %% by zero\n"), tree->binary.rhs); > - arith_result_section (&lhs); > - break; > - > -@@ -647,7 +647,7 @@ fold_binary (etree_type *tree) > - expld.result.value = ((bfd_signed_vma) lhs.value > - / (bfd_signed_vma) expld.result.value); > - else if (expld.phase != lang_mark_phase_enum) > -- einfo (_("%F%P:%pS / by zero\n"), tree->binary.rhs); > -+ fatal (_("%P:%pS / by zero\n"), tree->binary.rhs); > - arith_result_section (&lhs); > - break; > - > -@@ -761,7 +761,7 @@ fold_name (etree_type *tree) > - if (!h) > - { > - if (expld.phase != lang_first_phase_enum) > -- einfo (_("%F%P: bfd_link_hash_lookup failed: %E\n")); > -+ fatal (_("%P: bfd_link_hash_lookup failed: %E\n")); > - } > - else if (h->type == bfd_link_hash_defined > - || h->type == bfd_link_hash_defweak) > -@@ -789,7 +789,7 @@ fold_name (etree_type *tree) > - else if (expld.phase == lang_final_phase_enum > - || (expld.phase != lang_mark_phase_enum > - && expld.assigning_to_dot)) > -- einfo (_("%F%P:%pS: undefined symbol `%s'" > -+ fatal (_("%P:%pS: undefined symbol `%s'" > - " referenced in expression\n"), > - tree, tree->name.name); > - else if (h->type == bfd_link_hash_new) > -@@ -827,7 +827,7 @@ fold_name (etree_type *tree) > - if (os == NULL) > - { > - if (expld.phase == lang_final_phase_enum) > -- einfo (_("%F%P:%pS: undefined section `%s'" > -+ fatal (_("%P:%pS: undefined section `%s'" > - " referenced in expression\n"), > - tree, tree->name.name); > - } > -@@ -845,7 +845,7 @@ fold_name (etree_type *tree) > - if (os == NULL) > - { > - if (expld.phase == lang_final_phase_enum) > -- einfo (_("%F%P:%pS: undefined section `%s'" > -+ fatal (_("%P:%pS: undefined section `%s'" > - " referenced in expression\n"), > - tree, tree->name.name); > - } > -@@ -873,7 +873,7 @@ fold_name (etree_type *tree) > - if (os == NULL) > - { > - if (expld.phase == lang_final_phase_enum) > -- einfo (_("%F%P:%pS: undefined section `%s'" > -+ fatal (_("%P:%pS: undefined section `%s'" > - " referenced in expression\n"), > - tree, tree->name.name); > - new_number (0); > -@@ -912,7 +912,7 @@ fold_name (etree_type *tree) > - if (mem != NULL) > - new_number (mem->length); > - else > -- einfo (_("%F%P:%pS: undefined MEMORY region `%s'" > -+ fatal (_("%P:%pS: undefined MEMORY region `%s'" > - " referenced in expression\n"), > - tree, tree->name.name); > - } > -@@ -926,7 +926,7 @@ fold_name (etree_type *tree) > - if (mem != NULL) > - new_rel_from_abs (mem->origin); > - else > -- einfo (_("%F%P:%pS: undefined MEMORY region `%s'" > -+ fatal (_("%P:%pS: undefined MEMORY region `%s'" > - " referenced in expression\n"), > - tree, tree->name.name); > - } > -@@ -938,7 +938,7 @@ fold_name (etree_type *tree) > - else if (strcmp (tree->name.name, "COMMONPAGESIZE") == 0) > - new_number (link_info.commonpagesize); > - else > -- einfo (_("%F%P:%pS: unknown constant `%s' referenced in expression\n"), > -+ fatal (_("%P:%pS: unknown constant `%s' referenced in expression\n"), > - tree, tree->name.name); > - break; > - > -@@ -1086,7 +1086,7 @@ exp_fold_tree_1 (etree_type *tree) > - if (tree->assign.dst[0] == '.' && tree->assign.dst[1] == 0) > - { > - if (tree->type.node_class != etree_assign) > -- einfo (_("%F%P:%pS can not PROVIDE assignment to" > -+ fatal (_("%P:%pS can not PROVIDE assignment to" > - " location counter\n"), tree); > - if (expld.phase != lang_first_phase_enum) > - { > -@@ -1119,11 +1119,11 @@ exp_fold_tree_1 (etree_type *tree) > - || expld.section == bfd_und_section_ptr) > - { > - if (expld.phase != lang_mark_phase_enum) > -- einfo (_("%F%P:%pS invalid assignment to" > -+ fatal (_("%P:%pS invalid assignment to" > - " location counter\n"), tree); > - } > - else if (expld.dotp == NULL) > -- einfo (_("%F%P:%pS assignment to location counter" > -+ fatal (_("%P:%pS assignment to location counter" > - " invalid outside of SECTIONS\n"), tree); > - > - /* After allocation, assignment to dot should not be > -@@ -1142,7 +1142,7 @@ exp_fold_tree_1 (etree_type *tree) > - nextdot += expld.section->vma; > - if (nextdot < expld.dot > - && expld.section != bfd_abs_section_ptr) > -- einfo (_("%F%P:%pS cannot move location counter backwards" > -+ fatal (_("%P:%pS cannot move location counter backwards" > - " (from %V to %V)\n"), > - tree, expld.dot, nextdot); > - else > -@@ -1202,7 +1202,7 @@ exp_fold_tree_1 (etree_type *tree) > - h = bfd_link_hash_lookup (link_info.hash, tree->assign.dst, > - true, false, true); > - if (h == NULL) > -- einfo (_("%F%P:%s: hash creation failed\n"), > -+ fatal (_("%P:%s: hash creation failed\n"), > - tree->assign.dst); > - } > - > -@@ -1578,7 +1578,7 @@ exp_get_vma (etree_type *tree, lang_output_section_statement_type *os, > - if (expld.result.valid_p) > - return expld.result.value; > - else if (name != NULL && expld.phase != lang_mark_phase_enum) > -- einfo (_("%F%P:%pS: nonconstant expression for %s\n"), > -+ fatal (_("%P:%pS: nonconstant expression for %s\n"), > - tree, name); > - } > - return def; > -@@ -1621,7 +1621,7 @@ exp_get_fill (etree_type *tree, fill_type *def, char *name) > - if (!expld.result.valid_p) > - { > - if (name != NULL && expld.phase != lang_mark_phase_enum) > -- einfo (_("%F%P:%pS: nonconstant expression for %s\n"), > -+ fatal (_("%P:%pS: nonconstant expression for %s\n"), > - tree, name); > - return def; > - } > -@@ -1681,7 +1681,7 @@ exp_get_abs_int (etree_type *tree, int def, char *name) > - } > - else if (name != NULL && expld.phase != lang_mark_phase_enum) > - { > -- einfo (_("%F%P:%pS: nonconstant expression for %s\n"), > -+ fatal (_("%P:%pS: nonconstant expression for %s\n"), > - tree, name); > - } > - } > -@@ -1708,7 +1708,7 @@ ldexp_init (bool object_only) > - definedness_newfunc, > - sizeof (struct definedness_hash_entry), > - 13)) > -- einfo (_("%F%P: can not create hash table: %E\n")); > -+ fatal (_("%P: can not create hash table: %E\n")); > - } > - > - /* Convert absolute symbols defined by a script from "dot" (also > -diff --git a/ld/ldfile.c b/ld/ldfile.c > -index 404af5fba14..75fd360d5e3 100644 > ---- a/ld/ldfile.c > -+++ b/ld/ldfile.c > -@@ -184,7 +184,7 @@ ldfile_add_remap_file (const char * file) > - > - if (*p == '\0') > - { > -- einfo ("%F%P: malformed remap file entry: %s\n", line); > -+ fatal ("%P: malformed remap file entry: %s\n", line); > - continue; > - } > - > -@@ -196,7 +196,7 @@ ldfile_add_remap_file (const char * file) > - > - if (*p == '\0') > - { > -- einfo ("%F%P: malformed remap file entry: %s\n", line); > -+ fatal ("%P: malformed remap file entry: %s\n", line); > - continue; > - } > - > -@@ -378,7 +378,7 @@ ldfile_try_open_bfd (const char *attempt, > - if (entry->the_bfd == NULL) > - { > - if (bfd_get_error () == bfd_error_invalid_target) > -- einfo (_("%F%P: invalid BFD target `%s'\n"), entry->target); > -+ fatal (_("%P: invalid BFD target `%s'\n"), entry->target); > - return false; > - } > - > -@@ -521,7 +521,7 @@ ldfile_try_open_bfd (const char *attempt, > - > - if (!entry->flags.dynamic && (entry->the_bfd->flags & DYNAMIC) != 0) > - { > -- einfo (_("%F%P: attempted static link of dynamic object `%s'\n"), > -+ fatal (_("%P: attempted static link of dynamic object `%s'\n"), > - attempt); > - bfd_close (entry->the_bfd); > - entry->the_bfd = NULL; > -@@ -927,7 +927,7 @@ ldfile_open_command_file_1 (const char *name, enum script_open_style open_how) > - if ((open_how != script_nonT || script->open_how != script_nonT) > - && strcmp (name, script->name) == 0) > - { > -- einfo (_("%F%P: error: linker script file '%s'" > -+ fatal (_("%P: error: linker script file '%s'" > - " appears multiple times\n"), name); > - return; > - } > -@@ -946,7 +946,7 @@ ldfile_open_command_file_1 (const char *name, enum script_open_style open_how) > - if (ldlex_input_stack == NULL) > - { > - bfd_set_error (bfd_error_system_call); > -- einfo (_("%F%P: cannot open linker script file %s: %E\n"), name); > -+ fatal (_("%P: cannot open linker script file %s: %E\n"), name); > - return; > - } > - > -@@ -1040,7 +1040,7 @@ ldfile_set_output_arch (const char *string, enum bfd_architecture defarch) > - else if (defarch != bfd_arch_unknown) > - ldfile_output_architecture = defarch; > - else > -- einfo (_("%F%P: cannot represent machine `%s'\n"), string); > -+ fatal (_("%P: cannot represent machine `%s'\n"), string); > - } > - > - /* Tidy up memory. */ > -diff --git a/ld/ldgram.y b/ld/ldgram.y > -index 9bb98de2f0a..6635e598562 100644 > ---- a/ld/ldgram.y > -+++ b/ld/ldgram.y > -@@ -210,7 +210,7 @@ mri_script_command: > - CHIP exp > - | CHIP exp ',' exp > - | NAME { > -- einfo(_("%F%P: unrecognised keyword in MRI style script '%s'\n"),$1); > -+ fatal (_("%P: unrecognised keyword in MRI style script '%s'\n"), $1); > - } > - | LIST { > - config.map_filename = "-"; > -@@ -1581,7 +1581,7 @@ yyerror (const char *arg) > - einfo (_("%P:%s: file format not recognized; treating as linker script\n"), > - ldlex_filename ()); > - if (error_index > 0 && error_index < ERROR_NAME_MAX) > -- einfo (_("%F%P:%pS: %s in %s\n"), NULL, arg, error_names[error_index - 1]); > -+ fatal (_("%P:%pS: %s in %s\n"), NULL, arg, error_names[error_index - 1]); > - else > -- einfo ("%F%P:%pS: %s\n", NULL, arg); > -+ fatal ("%P:%pS: %s\n", NULL, arg); > - } > -diff --git a/ld/ldlang.c b/ld/ldlang.c > -index 4a4acaa5493..d2c9b96bfa0 100644 > ---- a/ld/ldlang.c > -+++ b/ld/ldlang.c > -@@ -1352,7 +1352,7 @@ output_section_statement_table_init (void) > - output_section_statement_newfunc, > - sizeof (struct out_section_hash_entry), > - 61)) > -- einfo (_("%F%P: can not create hash table: %E\n")); > -+ fatal (_("%P: can not create hash table: %E\n")); > - } > - > - static void > -@@ -1485,7 +1485,7 @@ lang_memory_region_alias (const char *alias, const char *region_name) > - the default memory region. */ > - if (strcmp (region_name, DEFAULT_MEMORY_REGION) == 0 > - || strcmp (alias, DEFAULT_MEMORY_REGION) == 0) > -- einfo (_("%F%P:%pS: error: alias for default memory region\n"), NULL); > -+ fatal (_("%P:%pS: error: alias for default memory region\n"), NULL); > - > - /* Look for the target region and check if the alias is not already > - in use. */ > -@@ -1496,14 +1496,14 @@ lang_memory_region_alias (const char *alias, const char *region_name) > - if (region == NULL && strcmp (n->name, region_name) == 0) > - region = r; > - if (strcmp (n->name, alias) == 0) > -- einfo (_("%F%P:%pS: error: redefinition of memory region " > -+ fatal (_("%P:%pS: error: redefinition of memory region " > - "alias `%s'\n"), > - NULL, alias); > - } > - > - /* Check if the target region exists. */ > - if (region == NULL) > -- einfo (_("%F%P:%pS: error: memory region `%s' " > -+ fatal (_("%P:%pS: error: memory region `%s' " > - "for alias `%s' does not exist\n"), > - NULL, region_name, alias); > - > -@@ -1564,7 +1564,7 @@ lang_output_section_statement_lookup (const char *name, > - if (entry == NULL) > - { > - if (create) > -- einfo (_("%F%P: failed creating section `%s': %E\n"), name); > -+ fatal (_("%P: failed creating section `%s': %E\n"), name); > - return NULL; > - } > - > -@@ -1607,7 +1607,7 @@ lang_output_section_statement_lookup (const char *name, > - name); > - if (entry == NULL) > - { > -- einfo (_("%F%P: failed creating section `%s': %E\n"), name); > -+ fatal (_("%P: failed creating section `%s': %E\n"), name); > - return NULL; > - } > - entry->root = last_ent->root; > -@@ -2479,7 +2479,7 @@ static void > - init_os (lang_output_section_statement_type *s, flagword flags) > - { > - if (strcmp (s->name, DISCARD_SECTION_NAME) == 0) > -- einfo (_("%F%P: illegal use of `%s' section\n"), DISCARD_SECTION_NAME); > -+ fatal (_("%P: illegal use of `%s' section\n"), DISCARD_SECTION_NAME); > - > - if (!s->dup_output) > - s->bfd_section = bfd_get_section_by_name (link_info.output_bfd, s->name); > -@@ -2488,7 +2488,7 @@ init_os (lang_output_section_statement_type *s, flagword flags) > - s->name, flags); > - if (s->bfd_section == NULL) > - { > -- einfo (_("%F%P: output format %s cannot represent section" > -+ fatal (_("%P: output format %s cannot represent section" > - " called %s: %E\n"), > - link_info.output_bfd->xvec->name, s->name); > - } > -@@ -3076,11 +3076,11 @@ load_symbols (lang_input_statement_type *entry, > - for (p = matching; *p != NULL; p++) > - einfo (" %s", *p); > - free (matching); > -- einfo ("%F\n"); > -+ fatal ("\n"); > - } > - else if (err != bfd_error_file_not_recognized > - || place == NULL) > -- einfo (_("%F%P: %pB: file not recognized: %E\n"), entry->the_bfd); > -+ fatal (_("%P: %pB: file not recognized: %E\n"), entry->the_bfd); > - > - bfd_close (entry->the_bfd); > - entry->the_bfd = NULL; > -@@ -3153,7 +3153,7 @@ load_symbols (lang_input_statement_type *entry, > - > - if (!bfd_check_format (member, bfd_object)) > - { > -- einfo (_("%F%P: %pB: member %pB in archive is not an object\n"), > -+ fatal (_("%P: %pB: member %pB in archive is not an object\n"), > - entry->the_bfd, member); > - loaded = false; > - } > -@@ -3174,7 +3174,7 @@ load_symbols (lang_input_statement_type *entry, > - substitute BFD for us. */ > - if (!bfd_link_add_symbols (subsbfd, &link_info)) > - { > -- einfo (_("%F%P: %pB: error adding symbols: %E\n"), member); > -+ fatal (_("%P: %pB: error adding symbols: %E\n"), member); > - loaded = false; > - } > - } > -@@ -3188,7 +3188,7 @@ load_symbols (lang_input_statement_type *entry, > - if (bfd_link_add_symbols (entry->the_bfd, &link_info)) > - entry->flags.loaded = true; > - else > -- einfo (_("%F%P: %pB: error adding symbols: %E\n"), entry->the_bfd); > -+ fatal (_("%P: %pB: error adding symbols: %E\n"), entry->the_bfd); > - > - return entry->flags.loaded; > - } > -@@ -3429,7 +3429,7 @@ open_output (const char *name) > - { > - char *in = lrealpath (f->local_sym_name); > - if (filename_cmp (in, out) == 0) > -- einfo (_("%F%P: input file '%s' is the same as output file\n"), > -+ fatal (_("%P: input file '%s' is the same as output file\n"), > - f->filename); > - free (in); > - } > -@@ -3491,23 +3491,23 @@ open_output (const char *name) > - if (link_info.output_bfd == NULL) > - { > - if (bfd_get_error () == bfd_error_invalid_target) > -- einfo (_("%F%P: target %s not found\n"), output_target); > -+ fatal (_("%P: target %s not found\n"), output_target); > - > -- einfo (_("%F%P: cannot open output file %s: %E\n"), name); > -+ fatal (_("%P: cannot open output file %s: %E\n"), name); > - } > - > - delete_output_file_on_failure = true; > - > - if (!bfd_set_format (link_info.output_bfd, bfd_object)) > -- einfo (_("%F%P: %s: can not make object file: %E\n"), name); > -+ fatal (_("%P: %s: can not make object file: %E\n"), name); > - if (!bfd_set_arch_mach (link_info.output_bfd, > -- ldfile_output_architecture, > -- ldfile_output_machine)) > -- einfo (_("%F%P: %s: can not set architecture: %E\n"), name); > -+ ldfile_output_architecture, > -+ ldfile_output_machine)) > -+ fatal (_("%P: %s: can not set architecture: %E\n"), name); > - > - link_info.hash = bfd_link_hash_table_create (link_info.output_bfd); > - if (link_info.hash == NULL) > -- einfo (_("%F%P: can not create hash table: %E\n")); > -+ fatal (_("%P: can not create hash table: %E\n")); > - > - bfd_set_gp_size (link_info.output_bfd, g_switch_value); > - } > -@@ -3721,7 +3721,7 @@ open_input_bfds (lang_statement_union_type *s, > - > - /* Exit if any of the files were missing. */ > - if (input_flags.missing_file) > -- einfo ("%F"); > -+ fatal (""); > - } > - > - #ifdef ENABLE_LIBCTF > -@@ -4032,7 +4032,7 @@ insert_undefined (const char *name) > - > - h = bfd_link_hash_lookup (link_info.hash, name, true, false, true); > - if (h == NULL) > -- einfo (_("%F%P: bfd_link_hash_lookup failed: %E\n")); > -+ fatal (_("%P: bfd_link_hash_lookup failed: %E\n")); > - if (h->type == bfd_link_hash_new) > - { > - h->type = bfd_link_hash_undefined; > -@@ -4318,7 +4318,7 @@ map_input_to_output_sections > - else if (strcmp (name, "SHT_PREINIT_ARRAY") == 0) > - type = SHT_PREINIT_ARRAY; > - else > -- einfo (_ ("%F%P: invalid type for output section `%s'\n"), > -+ fatal (_ ("%P: invalid type for output section `%s'\n"), > - os->name); > - } > - else > -@@ -4327,7 +4327,7 @@ map_input_to_output_sections > - if (expld.result.valid_p) > - type = expld.result.value; > - else > -- einfo (_ ("%F%P: invalid type for output section `%s'\n"), > -+ fatal (_ ("%P: invalid type for output section `%s'\n"), > - os->name); > - } > - break; > -@@ -4476,7 +4476,7 @@ process_insert_statements (lang_statement_union_type **start) > - } > - if (where == NULL) > - { > -- einfo (_("%F%P: %s not found for insert\n"), i->where); > -+ fatal (_("%P: %s not found for insert\n"), i->where); > - return; > - } > - > -@@ -5558,12 +5558,12 @@ size_input_section > - if (dot + TO_ADDR (i->size) > end) > - { > - if (i->flags & SEC_LINKER_CREATED) > -- einfo (_("%F%P: Output section `%pA' not large enough for " > -+ fatal (_("%P: Output section `%pA' not large enough for " > - "the linker-created stubs section `%pA'.\n"), > - i->output_section, i); > - > - if (i->rawsize && i->rawsize != i->size) > -- einfo (_("%F%P: Relaxation not supported with " > -+ fatal (_("%P: Relaxation not supported with " > - "--enable-non-contiguous-regions (section `%pA' " > - "would overflow `%pA' after it changed size).\n"), > - i, i->output_section); > -@@ -5919,7 +5919,7 @@ lang_size_sections_1 > - dot += expld.result.section->vma; > - } > - else if (expld.phase != lang_mark_phase_enum) > -- einfo (_("%F%P:%pS: non constant or forward reference" > -+ fatal (_("%P:%pS: non constant or forward reference" > - " address expression for section %s\n"), > - os->addr_tree, os->name); > - } > -@@ -6002,7 +6002,7 @@ lang_size_sections_1 > - overridden by the using the --no-check-sections > - switch. */ > - if (command_line.check_section_addresses) > -- einfo (_("%F%P: error: no memory region specified" > -+ fatal (_("%P: error: no memory region specified" > - " for loadable section `%s'\n"), > - bfd_section_name (os->bfd_section)); > - else > -@@ -6309,7 +6309,7 @@ lang_size_sections_1 > - bool again; > - > - if (!bfd_relax_section (i->owner, i, &link_info, &again)) > -- einfo (_("%F%P: can't relax section: %E\n")); > -+ fatal (_("%P: can't relax section: %E\n")); > - if (again) > - *relax = true; > - } > -@@ -6718,7 +6718,7 @@ lang_do_assignments_1 (lang_statement_union_type *s, > - s->data_statement.value += expld.result.section->vma; > - } > - else if (expld.phase == lang_final_phase_enum) > -- einfo (_("%F%P: invalid data statement\n")); > -+ fatal (_("%P: invalid data statement\n")); > - { > - unsigned int size; > - switch (s->data_statement.type) > -@@ -6751,7 +6751,7 @@ lang_do_assignments_1 (lang_statement_union_type *s, > - if (expld.result.valid_p) > - s->reloc_statement.addend_value = expld.result.value; > - else if (expld.phase == lang_final_phase_enum) > -- einfo (_("%F%P: invalid reloc statement\n")); > -+ fatal (_("%P: invalid reloc statement\n")); > - dot += TO_ADDR (bfd_get_reloc_size (s->reloc_statement.howto)); > - break; > - > -@@ -7169,7 +7169,7 @@ lang_end (void) > - break; > - } > - if (!sym) > -- einfo (_("%F%P: --gc-sections requires a defined symbol root " > -+ fatal (_("%P: --gc-sections requires a defined symbol root " > - "specified by -e or -u\n")); > - } > - > -@@ -7194,7 +7194,7 @@ lang_end (void) > - + bfd_section_vma (h->u.def.section->output_section) > - + h->u.def.section->output_offset); > - if (!bfd_set_start_address (link_info.output_bfd, val)) > -- einfo (_("%F%P: %s: can't set start address\n"), entry_symbol.name); > -+ fatal (_("%P: %s: can't set start address\n"), entry_symbol.name); > - } > - else > - { > -@@ -7207,7 +7207,7 @@ lang_end (void) > - if (*send == '\0') > - { > - if (!bfd_set_start_address (link_info.output_bfd, val)) > -- einfo (_("%F%P: can't set start address\n")); > -+ fatal (_("%P: can't set start address\n")); > - } > - /* BZ 2004952: Only use the start of the entry section for executables. */ > - else if bfd_link_executable (&link_info) > -@@ -7226,7 +7226,7 @@ lang_end (void) > - bfd_section_vma (ts)); > - if (!bfd_set_start_address (link_info.output_bfd, > - bfd_section_vma (ts))) > -- einfo (_("%F%P: can't set start address\n")); > -+ fatal (_("%P: can't set start address\n")); > - } > - else > - { > -@@ -7295,11 +7295,10 @@ lang_check (void) > - != bfd_get_flavour (link_info.output_bfd))) > - && (bfd_get_file_flags (input_bfd) & HAS_RELOC) != 0) > - { > -- einfo (_("%F%P: relocatable linking with relocations from" > -+ fatal (_("%P: relocatable linking with relocations from" > - " format %s (%pB) to format %s (%pB) is not supported\n"), > - bfd_get_target (input_bfd), input_bfd, > - bfd_get_target (link_info.output_bfd), link_info.output_bfd); > -- /* einfo with %F exits. */ > - } > - > - if (compatible == NULL) > -@@ -7400,7 +7399,7 @@ lang_one_common (struct bfd_link_hash_entry *h, void *info) > - > - section = h->u.c.p->section; > - if (!bfd_define_common_symbol (link_info.output_bfd, &link_info, h)) > -- einfo (_("%F%P: could not define common symbol `%pT': %E\n"), > -+ fatal (_("%P: could not define common symbol `%pT': %E\n"), > - h->root.string); > - > - if (config.map_file != NULL) > -@@ -7578,7 +7577,7 @@ lang_set_flags (lang_memory_region_type *ptr, const char *flags, int invert) > - break; > - > - default: > -- einfo (_("%F%P: invalid character %c (%d) in flags\n"), > -+ fatal (_("%P: invalid character %c (%d) in flags\n"), > - *flags, *flags); > - break; > - } > -@@ -7672,7 +7671,7 @@ lang_enter_output_section_statement (const char *output_section_statement_name, > - constraint, > - in_section_ordering ? 0 : 2); > - if (os == NULL) /* && in_section_ordering */ > -- einfo (_("%F%P:%pS: error: output section '%s' must already exist\n"), > -+ fatal (_("%P:%pS: error: output section '%s' must already exist\n"), > - NULL, output_section_statement_name); > - current_section = os; > - > -@@ -7696,7 +7695,7 @@ lang_enter_output_section_statement (const char *output_section_statement_name, > - > - os->align_lma_with_input = align_with_input == ALIGN_WITH_INPUT; > - if (os->align_lma_with_input && align != NULL) > -- einfo (_("%F%P:%pS: error: align with input and explicit align specified\n"), > -+ fatal (_("%P:%pS: error: align with input and explicit align specified\n"), > - NULL); > - > - os->subsection_alignment = subalign; > -@@ -8233,7 +8232,7 @@ lang_process (void) > - lang_place_undefineds (); > - > - if (!bfd_section_already_linked_table_init ()) > -- einfo (_("%F%P: can not create hash table: %E\n")); > -+ fatal (_("%P: can not create hash table: %E\n")); > - > - /* A first pass through the memory regions ensures that if any region > - references a symbol for its origin or length then this symbol will be > -@@ -8271,7 +8270,7 @@ lang_process (void) > - files = file_chain; > - inputfiles = input_file_chain; > - if (plugin_call_all_symbols_read ()) > -- einfo (_("%F%P: %s: plugin reported error after all symbols read\n"), > -+ fatal (_("%P: %s: plugin reported error after all symbols read\n"), > - plugin_error_plugin ()); > - link_info.lto_all_symbols_read = true; > - /* Open any newly added files, updating the file chains. */ > -@@ -8508,7 +8507,7 @@ lang_process (void) > - assigning dynamic symbols, since removing whole input sections > - is hard then. */ > - if (!bfd_merge_sections (link_info.output_bfd, &link_info)) > -- einfo (_("%F%P: bfd_merge_sections failed: %E\n")); > -+ fatal (_("%P: bfd_merge_sections failed: %E\n")); > - > - /* Look for a text section and set the readonly attribute in it. */ > - found = bfd_get_section_by_name (link_info.output_bfd, ".text"); > -@@ -8884,9 +8883,7 @@ void > - lang_startup (const char *name) > - { > - if (first_file->filename != NULL) > -- { > -- einfo (_("%F%P: multiple STARTUP files\n")); > -- } > -+ fatal (_("%P: multiple STARTUP files\n")); > - first_file->filename = name; > - first_file->local_sym_name = name; > - first_file->flags.real = true; > -@@ -9113,7 +9110,7 @@ lang_record_phdrs (void) > - break; > - } > - if (last == NULL) > -- einfo (_("%F%P: no sections assigned to phdrs\n")); > -+ fatal (_("%P: no sections assigned to phdrs\n")); > - } > - pl = last; > - } > -@@ -9151,7 +9148,7 @@ lang_record_phdrs (void) > - if (!bfd_record_phdr (link_info.output_bfd, l->type, > - l->flags != NULL, flags, l->at != NULL, > - at, l->filehdr, l->phdrs, c, secs)) > -- einfo (_("%F%P: bfd_record_phdr failed: %E\n")); > -+ fatal (_("%P: bfd_record_phdr failed: %E\n")); > - } > - > - free (secs); > -@@ -10441,7 +10438,7 @@ setup_section (bfd *ibfd, sec_ptr isection, void *p) > - > - loser: > - arg->status = 1; > -- einfo (_("%P%F: setup_section: %s: %s\n"), err, name); > -+ fatal (_("%P: setup_section: %s: %s\n"), err, name); > - } > - > - /* Copy the data of input section ISECTION of IBFD > -@@ -10536,7 +10533,7 @@ copy_section (bfd *ibfd, sec_ptr isection, void *p) > - return; > - > - loser: > -- einfo (_("%P%F: copy_section: %s: %s\n"), err, isection->name); > -+ fatal (_("%P: copy_section: %s: %s\n"), err, isection->name); > - } > - /* Open the temporary bfd created in the same directory as PATH. */ > - > -@@ -10773,7 +10770,7 @@ cmdline_add_object_only_section (bfd_byte *contents, size_t size) > - if (!bfd_close (obfd)) > - { > - unlink (ofilename); > -- einfo (_("%P%F: failed to finish output with object-only section\n")); > -+ fatal (_("%P: failed to finish output with object-only section\n")); > - } > - > - /* Must be freed after bfd_close (). */ > -@@ -10783,7 +10780,7 @@ cmdline_add_object_only_section (bfd_byte *contents, size_t size) > - if (rename (ofilename, output_filename)) > - { > - unlink (ofilename); > -- einfo (_("%P%F: failed to rename output with object-only section\n")); > -+ fatal (_("%P: failed to rename output with object-only section\n")); > - } > - > - free (ofilename); > -@@ -10799,7 +10796,7 @@ loser: > - unlink (ofilename); > - free (ofilename); > - } > -- einfo (_("%P%F: failed to add object-only section: %s\n"), err); > -+ fatal (_("%P: failed to add object-only section: %s\n"), err); > - } > - > - /* Emit the final output with object-only section. */ > -@@ -10832,7 +10829,7 @@ cmdline_emit_object_only_section (void) > - ldemul_create_output_section_statements (); > - > - if (!bfd_section_already_linked_table_init ()) > -- einfo (_("%P%F: Failed to create hash table\n")); > -+ fatal (_("%P: Failed to create hash table\n")); > - > - /* Call cmdline_on_object_only_archive_list_p to check which member > - should be loaded. */ > -@@ -10896,8 +10893,8 @@ cmdline_emit_object_only_section (void) > - lang_finish (); > - > - if (! bfd_close (link_info.output_bfd)) > -- einfo (_("%P%F:%s: final close failed on object-only output: %E\n"), > -- output_filename); > -+ fatal (_("%P:%s: final close failed on object-only output: %E\n"), > -+ output_filename); > - > - link_info.output_bfd = NULL; > - > -@@ -10906,7 +10903,7 @@ cmdline_emit_object_only_section (void) > - if (fd < 0) > - { > - bfd_set_error (bfd_error_system_call); > -- einfo (_("%P%F:%s: cannot open object-only output: %E\n"), > -+ fatal (_("%P:%s: cannot open object-only output: %E\n"), > - output_filename); > - } > - > -@@ -10914,7 +10911,7 @@ cmdline_emit_object_only_section (void) > - if (fstat (fd, &st) != 0) > - { > - bfd_set_error (bfd_error_system_call); > -- einfo (_("%P%F:%s: cannot stat object-only output: %E\n"), > -+ fatal (_("%P:%s: cannot stat object-only output: %E\n"), > - output_filename); > - } > - > -@@ -10929,7 +10926,7 @@ cmdline_emit_object_only_section (void) > - if (got < 0) > - { > - bfd_set_error (bfd_error_system_call); > -- einfo (_("%P%F:%s: read failed on object-only output: %E\n"), > -+ fatal (_("%P:%s: read failed on object-only output: %E\n"), > - output_filename); > - } > - > -@@ -10956,8 +10953,7 @@ cmdline_extract_object_only_section (bfd *abfd) > - const char *name = bfd_extract_object_only_section (abfd); > - > - if (name == NULL) > -- einfo (_("%P%F: cannot extract object-only section from %B: %E\n"), > -- abfd); > -+ fatal (_("%P: cannot extract object-only section from %B: %E\n"), abfd); > - > - /* It should be removed after it is done. */ > - cmdline_list_append (&cmdline_temp_object_only_list, > -@@ -10991,7 +10987,7 @@ cmdline_load_object_only_section (const char *name) > - if (bfd_link_add_symbols (entry->the_bfd, &link_info)) > - entry->flags.loaded = true; > - else > -- einfo (_("%F%P: %pB: error adding symbols: %E\n"), entry->the_bfd); > -+ fatal (_("%P: %pB: error adding symbols: %E\n"), entry->the_bfd); > - } > - > - /* Check and handle the object-only section. */ > -diff --git a/ld/ldlex.l b/ld/ldlex.l > -index 58eca1b2fe7..a7bf4917642 100644 > ---- a/ld/ldlex.l > -+++ b/ld/ldlex.l > -@@ -506,9 +506,7 @@ void > - lex_push_file (FILE *file, const char *name, unsigned int sysrooted) > - { > - if (include_stack_ptr >= MAX_INCLUDE_DEPTH) > -- { > -- einfo (_("%F:includes nested too deeply\n")); > -- } > -+ fatal (_("%P: includes nested too deeply\n")); > - file_name_stack[include_stack_ptr] = name; > - lineno_stack[include_stack_ptr] = lineno; > - sysrooted_stack[include_stack_ptr] = input_flags.sysrooted; > -@@ -570,9 +568,7 @@ lex_redirect (const char *string, const char *fake_filename, unsigned int count) > - > - yy_init = 0; > - if (include_stack_ptr >= MAX_INCLUDE_DEPTH) > -- { > -- einfo (_("%F: macros nested too deeply\n")); > -- } > -+ fatal (_("%P: macros nested too deeply\n")); > - file_name_stack[include_stack_ptr] = fake_filename; > - lineno_stack[include_stack_ptr] = lineno; > - include_stack[include_stack_ptr] = YY_CURRENT_BUFFER; > -@@ -676,7 +672,7 @@ yy_input (char *buf, int max_size) > - { > - result = fread (buf, 1, max_size, yyin); > - if (result < max_size && ferror (yyin)) > -- einfo (_("%F%P: read in flex scanner failed\n")); > -+ fatal (_("%P: read in flex scanner failed\n")); > - } > - } > - return result; > -@@ -713,7 +709,7 @@ comment (void) > - > - if (c == 0) > - { > -- einfo (_("%F%P: EOF in comment\n")); > -+ fatal (_("%P: EOF in comment\n")); > - break; > - } > - } > -@@ -734,7 +730,7 @@ lex_warn_invalid (char *where, char *what) > - if (ldfile_assumed_script) > - { > - bfd_set_error (bfd_error_file_not_recognized); > -- einfo (_("%F%s: file not recognized: %E\n"), ldlex_filename ()); > -+ fatal (_("%s: file not recognized: %E\n"), ldlex_filename ()); > - } > - > - if (! ISPRINT (*what)) > -diff --git a/ld/ldmain.c b/ld/ldmain.c > -index f1c5f7035c5..cb5e58d8f36 100644 > ---- a/ld/ldmain.c > -+++ b/ld/ldmain.c > -@@ -195,7 +195,7 @@ write_dependency_file (void) > - if (out == NULL) > - { > - bfd_set_error (bfd_error_system_call); > -- einfo (_("%F%P: cannot open dependency file %s: %E\n"), > -+ fatal (_("%P: cannot open dependency file %s: %E\n"), > - config.dependency_file); > - } > - > -@@ -288,7 +288,7 @@ main (int argc, char **argv) > - expandargv (&argc, &argv); > - > - if (bfd_init () != BFD_INIT_MAGIC) > -- einfo (_("%F%P: fatal error: libbfd ABI mismatch\n")); > -+ fatal (_("%P: fatal error: libbfd ABI mismatch\n")); > - > - bfd_set_error_program_name (program_name); > - > -@@ -496,14 +496,14 @@ main (int argc, char **argv) > - xexit (0); > - > - if (link_info.inhibit_common_definition && !bfd_link_dll (&link_info)) > -- einfo (_("%F%P: --no-define-common may not be used without -shared\n")); > -+ fatal (_("%P: --no-define-common may not be used without -shared\n")); > - > - if (!lang_has_input_file) > - { > - if (version_printed || command_line.print_output_format) > - xexit (0); > - output_unknown_cmdline_warnings (); > -- einfo (_("%F%P: no input files\n")); > -+ fatal (_("%P: no input files\n")); > - } > - > - if (verbose) > -@@ -525,7 +525,7 @@ main (int argc, char **argv) > - if (config.map_file == (FILE *) NULL) > - { > - bfd_set_error (bfd_error_system_call); > -- einfo (_("%F%P: cannot open map file %s: %E\n"), > -+ einfo (_("%P: cannot open map file %s: %E\n"), > - config.map_filename); > - } > - } > -@@ -600,7 +600,7 @@ main (int argc, char **argv) > - bfd *obfd = link_info.output_bfd; > - link_info.output_bfd = NULL; > - if (!bfd_close (obfd)) > -- einfo (_("%F%P: %s: final close failed: %E\n"), output_filename); > -+ fatal (_("%P: %s: final close failed: %E\n"), output_filename); > - > - link_info.output_bfd = NULL; > - > -@@ -629,10 +629,10 @@ main (int argc, char **argv) > - dst = fopen (dst_name, FOPEN_WB); > - > - if (!src) > -- einfo (_("%F%P: unable to open for source of copy `%s'\n"), > -+ fatal (_("%P: unable to open for source of copy `%s'\n"), > - output_filename); > - if (!dst) > -- einfo (_("%F%P: unable to open for destination of copy `%s'\n"), > -+ fatal (_("%P: unable to open for destination of copy `%s'\n"), > - dst_name); > - while ((l = fread (buf, 1, bsize, src)) > 0) > - { > -@@ -746,7 +746,7 @@ get_emulation (int argc, char **argv) > - i++; > - } > - else > -- einfo (_("%F%P: missing argument to -m\n")); > -+ fatal (_("%P: missing argument to -m\n")); > - } > - else if (strcmp (argv[i], "-mips1") == 0 > - || strcmp (argv[i], "-mips2") == 0 > -@@ -800,11 +800,11 @@ add_ysym (const char *name) > - bfd_hash_newfunc, > - sizeof (struct bfd_hash_entry), > - 61)) > -- einfo (_("%F%P: bfd_hash_table_init failed: %E\n")); > -+ fatal (_("%P: bfd_hash_table_init failed: %E\n")); > - } > - > - if (bfd_hash_lookup (link_info.notice_hash, name, true, true) == NULL) > -- einfo (_("%F%P: bfd_hash_lookup failed: %E\n")); > -+ fatal (_("%P: bfd_hash_lookup failed: %E\n")); > - } > - > - void > -@@ -817,11 +817,11 @@ add_ignoresym (struct bfd_link_info *info, const char *name) > - bfd_hash_newfunc, > - sizeof (struct bfd_hash_entry), > - 61)) > -- einfo (_("%F%P: bfd_hash_table_init failed: %E\n")); > -+ fatal (_("%P: bfd_hash_table_init failed: %E\n")); > - } > - > - if (bfd_hash_lookup (info->ignore_hash, name, true, true) == NULL) > -- einfo (_("%F%P: bfd_hash_lookup failed: %E\n")); > -+ fatal (_("%P: bfd_hash_lookup failed: %E\n")); > - } > - > - /* Record a symbol to be wrapped, from the --wrap option. */ > -@@ -837,11 +837,11 @@ add_wrap (const char *name) > - bfd_hash_newfunc, > - sizeof (struct bfd_hash_entry), > - 61)) > -- einfo (_("%F%P: bfd_hash_table_init failed: %E\n")); > -+ fatal (_("%P: bfd_hash_table_init failed: %E\n")); > - } > - > - if (bfd_hash_lookup (link_info.wrap_hash, name, true, true) == NULL) > -- einfo (_("%F%P: bfd_hash_lookup failed: %E\n")); > -+ fatal (_("%P: bfd_hash_lookup failed: %E\n")); > - } > - > - /* Handle the -retain-symbols-file option. */ > -@@ -869,7 +869,7 @@ add_keepsyms_file (const char *filename) > - xmalloc (sizeof (struct bfd_hash_table)); > - if (!bfd_hash_table_init (link_info.keep_hash, bfd_hash_newfunc, > - sizeof (struct bfd_hash_entry))) > -- einfo (_("%F%P: bfd_hash_table_init failed: %E\n")); > -+ fatal (_("%P: bfd_hash_table_init failed: %E\n")); > - > - bufsize = 100; > - buf = (char *) xmalloc (bufsize); > -@@ -899,7 +899,7 @@ add_keepsyms_file (const char *filename) > - buf[len] = '\0'; > - > - if (bfd_hash_lookup (link_info.keep_hash, buf, true, true) == NULL) > -- einfo (_("%F%P: bfd_hash_lookup for insertion failed: %E\n")); > -+ fatal (_("%P: bfd_hash_lookup for insertion failed: %E\n")); > - } > - } > - > -@@ -1311,7 +1311,7 @@ constructor_callback (struct bfd_link_info *info, > - if (bfd_reloc_type_lookup (info->output_bfd, BFD_RELOC_CTOR) == NULL > - && (bfd_link_relocatable (info) > - || bfd_reloc_type_lookup (abfd, BFD_RELOC_CTOR) == NULL)) > -- einfo (_("%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n")); > -+ fatal (_("%P: BFD backend error: BFD_RELOC_CTOR unsupported\n")); > - > - s = set_name; > - if (bfd_get_symbol_leading_char (abfd) != '\0') > -@@ -1323,7 +1323,7 @@ constructor_callback (struct bfd_link_info *info, > - > - h = bfd_link_hash_lookup (info->hash, set_name, true, true, true); > - if (h == (struct bfd_link_hash_entry *) NULL) > -- einfo (_("%F%P: bfd_link_hash_lookup failed: %E\n")); > -+ fatal (_("%P: bfd_link_hash_lookup failed: %E\n")); > - if (h->type == bfd_link_hash_new) > - { > - h->type = bfd_link_hash_undefined; > -@@ -1356,7 +1356,7 @@ symbol_warning (const char *warning, const char *symbol, bfd *abfd) > - struct warning_callback_info cinfo; > - > - if (!bfd_generic_link_read_symbols (abfd)) > -- einfo (_("%F%P: %pB: could not read symbols: %E\n"), abfd); > -+ fatal (_("%P: %pB: could not read symbols: %E\n"), abfd); > - > - cinfo.found = false; > - cinfo.warning = warning; > -@@ -1418,14 +1418,14 @@ warning_find_reloc (bfd *abfd, asection *sec, void *iarg) > - > - relsize = bfd_get_reloc_upper_bound (abfd, sec); > - if (relsize < 0) > -- einfo (_("%F%P: %pB: could not read relocs: %E\n"), abfd); > -+ fatal (_("%P: %pB: could not read relocs: %E\n"), abfd); > - if (relsize == 0) > - return; > - > - relpp = (arelent **) xmalloc (relsize); > - relcount = bfd_canonicalize_reloc (abfd, sec, relpp, info->asymbols); > - if (relcount < 0) > -- einfo (_("%F%P: %pB: could not read relocs: %E\n"), abfd); > -+ fatal (_("%P: %pB: could not read relocs: %E\n"), abfd); > - > - p = relpp; > - pend = p + relcount; > -diff --git a/ld/ldmisc.c b/ld/ldmisc.c > -index f18a6b5c3c6..9ee0781b4de 100644 > ---- a/ld/ldmisc.c > -+++ b/ld/ldmisc.c > -@@ -70,7 +70,7 @@ > - void > - vfinfo (FILE *fp, const char *fmt, va_list ap, bool is_warning) > - { > -- bool fatal = false; > -+ bool isfatal = false; > - const char *scan; > - int arg_type; > - unsigned int arg_count = 0; > -@@ -282,7 +282,7 @@ vfinfo (FILE *fp, const char *fmt, va_list ap, bool is_warning) > - > - case 'F': > - /* Error is fatal. */ > -- fatal = true; > -+ isfatal = true; > - break; > - > - case 'P': > -@@ -324,7 +324,7 @@ vfinfo (FILE *fp, const char *fmt, va_list ap, bool is_warning) > - if (abfd != NULL) > - { > - if (!bfd_generic_link_read_symbols (abfd)) > -- einfo (_("%F%P: %pB: could not read symbols: %E\n"), abfd); > -+ fatal (_("%P: %pB: could not read symbols: %E\n"), abfd); > - > - asymbols = bfd_get_outsymbols (abfd); > - } > -@@ -587,7 +587,7 @@ vfinfo (FILE *fp, const char *fmt, va_list ap, bool is_warning) > - if (is_warning && config.fatal_warnings) > - config.make_executable = false; > - > -- if (fatal) > -+ if (isfatal) > - xexit (1); > - } > - > -@@ -620,6 +620,21 @@ einfo (const char *fmt, ...) > - fflush (stderr); > - } > - > -+/* Fatal error. */ > -+ > -+void > -+fatal (const char *fmt, ...) > -+{ > -+ va_list arg; > -+ > -+ fflush (stdout); > -+ va_start (arg, fmt); > -+ vfinfo (stderr, fmt, arg, true); > -+ va_end (arg); > -+ fflush (stderr); > -+ xexit (1); > -+} > -+ > - /* The buffer size for each command-line option warning. */ > - #define CMDLINE_WARNING_SIZE 256 > - > -@@ -698,7 +713,7 @@ output_unknown_cmdline_warnings (void) > - void > - info_assert (const char *file, unsigned int line) > - { > -- einfo (_("%F%P: internal error %s %d\n"), file, line); > -+ fatal (_("%P: internal error %s %d\n"), file, line); > - } > - > - /* ('m' for map) Format info message and print on map. */ > -@@ -767,8 +782,7 @@ ld_abort (const char *file, int line, const char *fn) > - else > - einfo (_("%P: internal error: aborting at %s:%d\n"), > - file, line); > -- einfo (_("%F%P: please report this bug\n")); > -- xexit (1); > -+ fatal (_("%P: please report this bug\n")); > - } > - > - /* Decode a hexadecimal character. Return -1 on error. */ > -diff --git a/ld/ldmisc.h b/ld/ldmisc.h > -index cac36f01114..7103b537108 100644 > ---- a/ld/ldmisc.h > -+++ b/ld/ldmisc.h > -@@ -23,6 +23,7 @@ > - > - extern void vfinfo (FILE *fp, const char *fmt, va_list arg, bool is_warning); > - extern void einfo (const char *, ...); > -+extern void fatal (const char *, ...) ATTRIBUTE_NORETURN; > - extern void minfo (const char *, ...); > - extern void info_msg (const char *, ...); > - extern void lfinfo (FILE *, const char *, ...); > -diff --git a/ld/ldwrite.c b/ld/ldwrite.c > -index b8b9ff176a4..7613def6767 100644 > ---- a/ld/ldwrite.c > -+++ b/ld/ldwrite.c > -@@ -57,14 +57,14 @@ build_link_order (lang_statement_union_type *statement) > - > - link_order = bfd_new_link_order (link_info.output_bfd, output_section); > - if (link_order == NULL) > -- einfo (_("%F%P: bfd_new_link_order failed: %E\n")); > -+ fatal (_("%P: bfd_new_link_order failed: %E\n")); > - > - link_order->type = bfd_data_link_order; > - link_order->offset = statement->data_statement.output_offset; > - link_order->u.data.contents = bfd_alloc (link_info.output_bfd, > - QUAD_SIZE); > - if (link_order->u.data.contents == NULL) > -- einfo (_("%F%P: bfd_new_link_order failed: %E\n")); > -+ fatal (_("%P: bfd_new_link_order failed: %E\n")); > - > - value = statement->data_statement.value; > - > -@@ -170,7 +170,7 @@ build_link_order (lang_statement_union_type *statement) > - > - link_order = bfd_new_link_order (link_info.output_bfd, output_section); > - if (link_order == NULL) > -- einfo (_("%F%P: bfd_new_link_order failed: %E\n")); > -+ fatal (_("%P: bfd_new_link_order failed: %E\n")); > - > - link_order->offset = rs->output_offset; > - link_order->size = bfd_get_reloc_size (rs->howto); > -@@ -178,7 +178,7 @@ build_link_order (lang_statement_union_type *statement) > - link_order->u.reloc.p = (struct bfd_link_order_reloc *) > - bfd_alloc (link_info.output_bfd, sizeof (struct bfd_link_order_reloc)); > - if (link_order->u.reloc.p == NULL) > -- einfo (_("%F%P: bfd_new_link_order failed: %E\n")); > -+ fatal (_("%P: bfd_new_link_order failed: %E\n")); > - > - link_order->u.reloc.p->reloc = rs->reloc; > - link_order->u.reloc.p->addend = rs->addend_value; > -@@ -224,7 +224,7 @@ build_link_order (lang_statement_union_type *statement) > - link_order = bfd_new_link_order (link_info.output_bfd, > - output_section); > - if (link_order == NULL) > -- einfo (_("%F%P: bfd_new_link_order failed: %E\n")); > -+ fatal (_("%P: bfd_new_link_order failed: %E\n")); > - > - if ((i->flags & SEC_NEVER_LOAD) != 0 > - && (i->flags & SEC_DEBUGGING) == 0) > -@@ -265,7 +265,7 @@ build_link_order (lang_statement_union_type *statement) > - link_order = bfd_new_link_order (link_info.output_bfd, > - output_section); > - if (link_order == NULL) > -- einfo (_("%F%P: bfd_new_link_order failed: %E\n")); > -+ fatal (_("%P: bfd_new_link_order failed: %E\n")); > - link_order->type = bfd_data_link_order; > - link_order->size = statement->padding_statement.size; > - link_order->offset = statement->padding_statement.output_offset; > -@@ -334,8 +334,7 @@ clone_section (bfd *abfd, asection *s, const char *name, int *count) > - if (startswith (name, ".stab") > - || strcmp (name, "$GDB_SYMBOLS$") == 0) > - { > -- einfo (_ ("%F%P: cannot create split section name for %s\n"), name); > -- /* Silence gcc warnings. einfo exits, so we never reach here. */ > -+ fatal (_ ("%P: cannot create split section name for %s\n"), name); > - return NULL; > - } > - tname[5] = 0; > -@@ -346,8 +345,7 @@ clone_section (bfd *abfd, asection *s, const char *name, int *count) > - || (h = bfd_link_hash_lookup (link_info.hash, > - sname, true, true, false)) == NULL) > - { > -- einfo (_("%F%P: clone section failed: %E\n")); > -- /* Silence gcc warnings. einfo exits, so we never reach here. */ > -+ fatal (_("%P: clone section failed: %E\n")); > - return NULL; > - } > - free (tname); > -@@ -550,8 +548,8 @@ ldwrite (void) > - if (!bfd_final_link (link_info.output_bfd, &link_info)) > - { > - if (bfd_get_error () != bfd_error_no_error) > -- einfo (_("%F%P: final link failed: %E\n")); > -+ fatal (_("%P: final link failed: %E\n")); > - else > -- einfo (_("%F%P: final link failed\n")); > -+ fatal (_("%P: final link failed\n")); > - } > - } > -diff --git a/ld/lexsup.c b/ld/lexsup.c > -index 58b9bdd4974..7de6e257ad0 100644 > ---- a/ld/lexsup.c > -+++ b/ld/lexsup.c > -@@ -818,7 +818,8 @@ parse_args (unsigned argc, char **argv) > - && optc != argv[last_optind][1]) > - { > - if (optarg) > -- einfo (_("%F%P: Error: unable to disambiguate: %s (did you mean -%s ?)\n"), > -+ fatal (_("%P: Error: unable to disambiguate: " > -+ "%s (did you mean -%s ?)\n"), > - argv[last_optind], argv[last_optind]); > - else > - einfo (_("%P: Warning: grouped short command line options are deprecated: %s\n"), argv[last_optind]); > -@@ -858,7 +859,7 @@ parse_args (unsigned argc, char **argv) > - /* Fall through. */ > - > - default: > -- einfo (_("%F%P: use the --help option for usage information\n")); > -+ fatal (_("%P: use the --help option for usage information\n")); > - break; > - > - case 1: /* File name. */ > -@@ -877,7 +878,7 @@ parse_args (unsigned argc, char **argv) > - || strcmp (optarg, "default") == 0) > - input_flags.dynamic = true; > - else > -- einfo (_("%F%P: unrecognized -a option `%s'\n"), optarg); > -+ fatal (_("%P: unrecognized -a option `%s'\n"), optarg); > - break; > - case OPTION_ASSERT: > - /* FIXME: We just ignore these, but we should handle them. */ > -@@ -890,7 +891,7 @@ parse_args (unsigned argc, char **argv) > - else if (strcmp (optarg, "pure-text") == 0) > - ; > - else > -- einfo (_("%F%P: unrecognized -assert option `%s'\n"), optarg); > -+ fatal (_("%P: unrecognized -assert option `%s'\n"), optarg); > - break; > - case 'A': > - ldfile_add_arch (optarg); > -@@ -934,8 +935,7 @@ parse_args (unsigned argc, char **argv) > - > - style = cplus_demangle_name_to_style (optarg); > - if (style == unknown_demangling) > -- einfo (_("%F%P: unknown demangling style `%s'\n"), > -- optarg); > -+ fatal (_("%P: unknown demangling style `%s'\n"), optarg); > - > - cplus_demangle_set_style (style); > - } > -@@ -1042,7 +1042,7 @@ parse_args (unsigned argc, char **argv) > - char *end; > - g_switch_value = strtoul (optarg, &end, 0); > - if (*end) > -- einfo (_("%F%P: invalid number `%s'\n"), optarg); > -+ fatal (_("%P: invalid number `%s'\n"), optarg); > - } > - break; > - case 'g': > -@@ -1138,7 +1138,7 @@ parse_args (unsigned argc, char **argv) > - link_info.unresolved_syms_in_shared_libs = RM_IGNORE; > - } > - else > -- einfo (_("%F%P: bad --unresolved-symbols option: %s\n"), optarg); > -+ fatal (_("%P: bad --unresolved-symbols option: %s\n"), optarg); > - break; > - case OPTION_WARN_UNRESOLVED_SYMBOLS: > - link_info.warn_unresolved_syms = true; > -@@ -1225,7 +1225,7 @@ parse_args (unsigned argc, char **argv) > - break; > - case OPTION_PLUGIN_OPT: > - if (plugin_opt_plugin_arg (optarg)) > -- einfo (_("%F%P: bad -plugin-opt option\n")); > -+ fatal (_("%P: bad -plugin-opt option\n")); > - break; > - case OPTION_PLUGIN_SAVE_TEMPS: > - config.plugin_save_temps = true; > -@@ -1245,11 +1245,11 @@ parse_args (unsigned argc, char **argv) > - an error message here. We cannot just make this a warning, > - increment optind, and continue because getopt is too confused > - and will seg-fault the next time around. */ > -- einfo(_("%F%P: unrecognised option: %s\n"), argv[optind]); > -+ fatal(_("%P: unrecognised option: %s\n"), argv[optind]); > - > - if (bfd_link_pic (&link_info)) > -- einfo (_("%F%P: -r and %s may not be used together\n"), > -- bfd_link_dll (&link_info) ? "-shared" : "-pie"); > -+ fatal (_("%P: -r and %s may not be used together\n"), > -+ bfd_link_dll (&link_info) ? "-shared" : "-pie"); > - > - link_info.type = type_relocatable; > - config.build_constructors = false; > -@@ -1358,7 +1358,7 @@ parse_args (unsigned argc, char **argv) > - if (config.has_shared) > - { > - if (bfd_link_relocatable (&link_info)) > -- einfo (_("%F%P: -r and %s may not be used together\n"), > -+ fatal (_("%P: -r and %s may not be used together\n"), > - "-shared"); > - > - link_info.type = type_dll; > -@@ -1370,7 +1370,7 @@ parse_args (unsigned argc, char **argv) > - link_info.unresolved_syms_in_shared_libs = RM_IGNORE; > - } > - else > -- einfo (_("%F%P: -shared not supported\n")); > -+ fatal (_("%P: -shared not supported\n")); > - break; > - case OPTION_NO_PIE: > - link_info.type = type_pde; > -@@ -1379,12 +1379,12 @@ parse_args (unsigned argc, char **argv) > - if (config.has_shared) > - { > - if (bfd_link_relocatable (&link_info)) > -- einfo (_("%F%P: -r and %s may not be used together\n"), "-pie"); > -+ fatal (_("%P: -r and %s may not be used together\n"), "-pie"); > - > - link_info.type = type_pie; > - } > - else > -- einfo (_("%F%P: -pie not supported\n")); > -+ fatal (_("%P: -pie not supported\n")); > - break; > - case 'h': /* Used on Solaris. */ > - case OPTION_SONAME: > -@@ -1401,7 +1401,7 @@ parse_args (unsigned argc, char **argv) > - else if (strcmp (optarg, N_("ascending")) == 0) > - config.sort_common = sort_ascending; > - else > -- einfo (_("%F%P: invalid common section sorting option: %s\n"), > -+ fatal (_("%P: invalid common section sorting option: %s\n"), > - optarg); > - break; > - case OPTION_SORT_SECTION: > -@@ -1410,8 +1410,7 @@ parse_args (unsigned argc, char **argv) > - else if (strcmp (optarg, N_("alignment")) == 0) > - sort_section = by_alignment; > - else > -- einfo (_("%F%P: invalid section sorting option: %s\n"), > -- optarg); > -+ fatal (_("%P: invalid section sorting option: %s\n"), optarg); > - break; > - case OPTION_SECTION_ORDERING_FILE: > - if (command_line.section_ordering_file != NULL > -@@ -1453,14 +1452,14 @@ parse_args (unsigned argc, char **argv) > - /* Check for <something>=<somthing>... */ > - optarg2 = strchr (optarg, '='); > - if (optarg2 == NULL) > -- einfo (_("%F%P: invalid argument to option" > -+ fatal (_("%P: invalid argument to option" > - " \"--section-start\"\n")); > - > - optarg2++; > - > - /* So far so good. Are all the args present? */ > - if ((*optarg == '\0') || (*optarg2 == '\0')) > -- einfo (_("%F%P: missing argument(s) to option" > -+ fatal (_("%P: missing argument(s) to option" > - " \"--section-start\"\n")); > - > - /* We must copy the section name as set_section_start > -@@ -1507,8 +1506,8 @@ parse_args (unsigned argc, char **argv) > - /* Fall through. */ > - case OPTION_UR: > - if (bfd_link_pic (&link_info)) > -- einfo (_("%F%P: -r and %s may not be used together\n"), > -- bfd_link_dll (&link_info) ? "-shared" : "-pie"); > -+ fatal (_("%P: -r and %s may not be used together\n"), > -+ bfd_link_dll (&link_info) ? "-shared" : "-pie"); > - > - link_info.type = type_relocatable; > - config.build_constructors = true; > -@@ -1538,7 +1537,7 @@ parse_args (unsigned argc, char **argv) > - char *end; > - int level ATTRIBUTE_UNUSED = strtoul (optarg, &end, 0); > - if (*end) > -- einfo (_("%F%P: invalid number `%s'\n"), optarg); > -+ fatal (_("%P: invalid number `%s'\n"), optarg); > - #if BFD_SUPPORTS_PLUGINS > - report_plugin_symbols = level > 1; > - #endif /* BFD_SUPPORTS_PLUGINS */ > -@@ -1733,7 +1732,7 @@ parse_args (unsigned argc, char **argv) > - break; > - case ')': > - if (! ingroup) > -- einfo (_("%F%P: group ended before it began (--help for usage)\n")); > -+ fatal (_("%P: group ended before it began (--help for usage)\n")); > - > - lang_leave_group (); > - ingroup--; > -@@ -1749,7 +1748,7 @@ parse_args (unsigned argc, char **argv) > - > - case OPTION_REMAP_INPUTS_FILE: > - if (! ldfile_add_remap_file (optarg)) > -- einfo (_("%F%P: failed to add remap file %s\n"), optarg); > -+ fatal (_("%P: failed to add remap file %s\n"), optarg); > - break; > - > - case OPTION_REMAP_INPUTS: > -@@ -1758,7 +1757,7 @@ parse_args (unsigned argc, char **argv) > - if (optarg2 == NULL) > - /* FIXME: Should we allow --remap-inputs=@myfile as a synonym > - for --remap-inputs-file=myfile ? */ > -- einfo (_("%F%P: invalid argument to option --remap-inputs\n")); > -+ fatal (_("%P: invalid argument to option --remap-inputs\n")); > - size_t len = optarg2 - optarg; > - char * pattern = xmalloc (len + 1); > - memcpy (pattern, optarg, len); > -@@ -1779,8 +1778,7 @@ parse_args (unsigned argc, char **argv) > - char *end; > - bfd_size_type cache_size = strtoul (optarg, &end, 0); > - if (*end != '\0') > -- einfo (_("%F%P: invalid cache memory size: %s\n"), > -- optarg); > -+ fatal (_("%P: invalid cache memory size: %s\n"), optarg); > - link_info.max_cache_size = cache_size; > - } > - break; > -@@ -1805,7 +1803,7 @@ parse_args (unsigned argc, char **argv) > - > - case OPTION_POP_STATE: > - if (input_flags.pushed == NULL) > -- einfo (_("%F%P: no state pushed before popping\n")); > -+ fatal (_("%P: no state pushed before popping\n")); > - else > - { > - struct lang_input_statement_flags *oldp = input_flags.pushed; > -@@ -1828,7 +1826,7 @@ parse_args (unsigned argc, char **argv) > - else if (strcasecmp (optarg, "discard") == 0) > - config.orphan_handling = orphan_handling_discard; > - else > -- einfo (_("%F%P: invalid argument to option" > -+ fatal (_("%P: invalid argument to option" > - " \"--orphan-handling\"\n")); > - break; > - > -@@ -1873,7 +1871,7 @@ parse_args (unsigned argc, char **argv) > - else if (strcmp (optarg, "share-duplicated") == 0) > - config.ctf_share_duplicated = true; > - else > -- einfo (_("%F%P: bad --ctf-share-types option: %s\n"), optarg); > -+ fatal (_("%P: bad --ctf-share-types option: %s\n"), optarg); > - break; > - } > - } > -@@ -2059,7 +2057,7 @@ parse_args (unsigned argc, char **argv) > - if (config.no_section_header) > - { > - if (bfd_link_relocatable (&link_info)) > -- einfo (_("%F%P: -r and -z nosectionheader may not be used together\n")); > -+ fatal (_("%P: -r and -z nosectionheader may not be used together\n")); > - > - link_info.strip = strip_all; > - } > -@@ -2067,9 +2065,9 @@ parse_args (unsigned argc, char **argv) > - if (!bfd_link_dll (&link_info)) > - { > - if (command_line.filter_shlib) > -- einfo (_("%F%P: -F may not be used without -shared\n")); > -+ fatal (_("%P: -F may not be used without -shared\n")); > - if (command_line.auxiliary_filters) > -- einfo (_("%F%P: -f may not be used without -shared\n")); > -+ fatal (_("%P: -f may not be used without -shared\n")); > - } > - > - /* Treat ld -r -s as ld -r -S -x (i.e., strip all local symbols). I > -@@ -2110,7 +2108,7 @@ set_section_start (char *sect, char *valstr) > - const char *end; > - bfd_vma val = bfd_scan_vma (valstr, &end, 16); > - if (*end) > -- einfo (_("%F%P: invalid hex number `%s'\n"), valstr); > -+ fatal (_("%P: invalid hex number `%s'\n"), valstr); > - lang_section_start (sect, exp_intop (val), NULL); > - } > - > -@@ -2123,7 +2121,7 @@ set_segment_start (const char *section, char *valstr) > - > - bfd_vma val = bfd_scan_vma (valstr, &end, 16); > - if (*end) > -- einfo (_("%F%P: invalid hex number `%s'\n"), valstr); > -+ fatal (_("%P: invalid hex number `%s'\n"), valstr); > - /* If we already have an entry for this segment, update the existing > - value. */ > - name = section + 1; > -diff --git a/ld/mri.c b/ld/mri.c > -index 68c024a83e4..586d23d2743 100644 > ---- a/ld/mri.c > -+++ b/ld/mri.c > -@@ -288,7 +288,7 @@ mri_format (const char *name) > - lang_add_output_format ("srec", NULL, NULL, 1); > - > - else > -- einfo (_("%F%P: unknown format type %s\n"), name); > -+ fatal (_("%P: unknown format type %s\n"), name); > - } > - > - void > -diff --git a/ld/pe-dll.c b/ld/pe-dll.c > -index f24b8716ae2..4e72f1b8d8d 100644 > ---- a/ld/pe-dll.c > -+++ b/ld/pe-dll.c > -@@ -777,7 +777,7 @@ process_def_file_and_drectve (bfd *abfd ATTRIBUTE_UNUSED, struct bfd_link_info * > - > - if (!bfd_generic_link_read_symbols (b)) > - { > -- einfo (_("%F%P: %pB: could not read symbols: %E\n"), b); > -+ fatal (_("%P: %pB: could not read symbols: %E\n"), b); > - return; > - } > - > -@@ -1069,7 +1069,7 @@ build_filler_bfd (bool include_edata) > - bfd_get_arch (link_info.output_bfd), > - bfd_get_mach (link_info.output_bfd))) > - { > -- einfo (_("%F%P: can not create BFD: %E\n")); > -+ fatal (_("%P: can not create BFD: %E\n")); > - return; > - } > - > -@@ -1347,7 +1347,7 @@ pe_walk_relocs (struct bfd_link_info *info, > - > - if (!bfd_generic_link_read_symbols (b)) > - { > -- einfo (_("%F%P: %pB: could not read symbols: %E\n"), b); > -+ fatal (_("%P: %pB: could not read symbols: %E\n"), b); > - return; > - } > - > -@@ -1428,7 +1428,7 @@ pe_find_data_imports (const char *symhead, > - if (!bfd_hash_table_init (import_hash, > - bfd_hash_newfunc, > - sizeof (struct bfd_hash_entry))) > -- einfo (_("%F%P: bfd_hash_table_init failed: %E\n")); > -+ fatal (_("%P: bfd_hash_table_init failed: %E\n")); > - } > - else > - import_hash = NULL; > -@@ -1468,7 +1468,7 @@ pe_find_data_imports (const char *symhead, > - > - if (!bfd_generic_link_read_symbols (b)) > - { > -- einfo (_("%F%P: %pB: could not read symbols: %E\n"), b); > -+ fatal (_("%P: %pB: could not read symbols: %E\n"), b); > - return; > - } > - > -@@ -1570,7 +1570,7 @@ generate_reloc (bfd *abfd, struct bfd_link_info *info) > - > - if (!bfd_generic_link_read_symbols (b)) > - { > -- einfo (_("%F%P: %pB: could not read symbols: %E\n"), b); > -+ fatal (_("%P: %pB: could not read symbols: %E\n"), b); > - return; > - } > - > -diff --git a/ld/plugin.c b/ld/plugin.c > -index 8aec84852c0..dedd1a08b30 100644 > ---- a/ld/plugin.c > -+++ b/ld/plugin.c > -@@ -252,7 +252,7 @@ plugin_opt_plugin (const char *plugin) > - newplug->name = plugin; > - newplug->dlhandle = dlopen (plugin, RTLD_NOW); > - if (!newplug->dlhandle) > -- einfo (_("%F%P: %s: error loading plugin: %s\n"), plugin, dlerror ()); > -+ fatal (_("%P: %s: error loading plugin: %s\n"), plugin, dlerror ()); > - > - /* Check if plugin has been loaded already. */ > - while (curplug) > -@@ -343,7 +343,7 @@ plugin_get_ir_dummy_bfd (const char *name, bfd *srctemplate) > - } > - } > - report_error: > -- einfo (_("%F%P: could not create dummy IR bfd: %E\n")); > -+ fatal (_("%P: could not create dummy IR bfd: %E\n")); > - return NULL; > - } > - > -@@ -424,7 +424,7 @@ asymbol_from_plugin_symbol (bfd *abfd, asymbol *asym, > - unsigned char visibility; > - > - if (!elfsym) > -- einfo (_("%F%P: %s: non-ELF symbol in ELF BFD!\n"), asym->name); > -+ fatal (_("%P: %s: non-ELF symbol in ELF BFD!\n"), asym->name); > - > - if (ldsym->def == LDPK_COMMON) > - { > -@@ -435,7 +435,7 @@ asymbol_from_plugin_symbol (bfd *abfd, asymbol *asym, > - switch (ldsym->visibility) > - { > - default: > -- einfo (_("%F%P: unknown ELF symbol visibility: %d!\n"), > -+ fatal (_("%P: unknown ELF symbol visibility: %d!\n"), > - ldsym->visibility); > - return LDPS_ERR; > - > -@@ -557,7 +557,7 @@ get_view (const void *handle, const void **viewp) > - > - /* FIXME: einfo should support %lld. */ > - if ((off_t) size != input->filesize) > -- einfo (_("%F%P: unsupported input file size: %s (%ld bytes)\n"), > -+ fatal (_("%P: unsupported input file size: %s (%ld bytes)\n"), > - input->name, (long) input->filesize); > - > - /* Check the cached view buffer. */ > -@@ -833,7 +833,7 @@ get_symbols (const void *handle, int nsyms, struct ld_plugin_symbol *syms, > - && blhe->type != bfd_link_hash_common) > - { > - /* We should not have a new, indirect or warning symbol here. */ > -- einfo (_("%F%P: %s: plugin symbol table corrupt (sym type %d)\n"), > -+ fatal (_("%P: %s: plugin symbol table corrupt (sym type %d)\n"), > - called_plugin->name, blhe->type); > - } > - > -@@ -985,13 +985,14 @@ message (int level, const char *format, ...) > - case LDPL_ERROR: > - default: > - { > -- char *newfmt = concat (level == LDPL_FATAL ? "%F" : "%X", > -- _("%P: error: "), format, "\n", > -+ char *newfmt = concat (_("%X%P: error: "), format, "\n", > - (const char *) NULL); > - fflush (stdout); > - vfinfo (stderr, newfmt, args, true); > - fflush (stderr); > - free (newfmt); > -+ if (level == LDPL_FATAL) > -+ fatal (""); > - } > - break; > - } > -@@ -1134,14 +1135,14 @@ plugin_load_plugins (void) > - if (!onloadfn) > - onloadfn = (ld_plugin_onload) dlsym (curplug->dlhandle, "_onload"); > - if (!onloadfn) > -- einfo (_("%F%P: %s: error loading plugin: %s\n"), > -+ fatal (_("%P: %s: error loading plugin: %s\n"), > - curplug->name, dlerror ()); > - set_tv_plugin_args (curplug, &my_tv[tv_header_size]); > - called_plugin = curplug; > - rv = (*onloadfn) (my_tv); > - called_plugin = NULL; > - if (rv != LDPS_OK) > -- einfo (_("%F%P: %s: plugin error: %d\n"), curplug->name, rv); > -+ fatal (_("%P: %s: plugin error: %d\n"), curplug->name, rv); > - curplug = curplug->next; > - } > - > -@@ -1205,7 +1206,7 @@ plugin_strdup (bfd *abfd, const char *str) > - strlength = strlen (str) + 1; > - copy = bfd_alloc (abfd, strlength); > - if (copy == NULL) > -- einfo (_("%F%P: plugin_strdup failed to allocate memory: %s\n"), > -+ fatal (_("%P: plugin_strdup failed to allocate memory: %s\n"), > - bfd_get_error ()); > - memcpy (copy, str, strlength); > - return copy; > -@@ -1247,7 +1248,7 @@ plugin_object_p (bfd *ibfd, bool known_used) > - > - input = bfd_alloc (abfd, sizeof (*input)); > - if (input == NULL) > -- einfo (_("%F%P: plugin failed to allocate memory for input: %s\n"), > -+ fatal (_("%P: plugin failed to allocate memory for input: %s\n"), > - bfd_get_error ()); > - > - if (!bfd_plugin_open_input (ibfd, &file)) > -@@ -1276,7 +1277,7 @@ plugin_object_p (bfd *ibfd, bool known_used) > - > - if (plugin_call_claim_file (&file, &claimed, &claim_file_handler_v2, > - known_used)) > -- einfo (_("%F%P: %s: plugin reported error claiming file\n"), > -+ fatal (_("%P: %s: plugin reported error claiming file\n"), > - plugin_error_plugin ()); > - > - if (input->fd != -1 > -- > 2.31.3 > > > -=-=-=-=-=-=-=-=-=-=-=- > Links: You receive all messages sent to this group. > View/Reply Online (#215661): https://lists.openembedded.org/g/openembedded-core/message/215661 > Mute This Topic: https://lists.openembedded.org/mt/112519322/1997914 > Group Owner: openembedded-core+owner@lists.openembedded.org > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [raj.khem@gmail.com] > -=-=-=-=-=-=-=-=-=-=-=- >
diff --git a/meta/recipes-devtools/binutils/binutils-2.44.inc b/meta/recipes-devtools/binutils/binutils-2.44.inc index 1aafbd5285..4680248f83 100644 --- a/meta/recipes-devtools/binutils/binutils-2.44.inc +++ b/meta/recipes-devtools/binutils/binutils-2.44.inc @@ -20,7 +20,7 @@ UPSTREAM_CHECK_GITTAGREGEX = "binutils-(?P<pver>\d+_(\d_?)*)" CVE_STATUS[CVE-2023-25584] = "cpe-incorrect: Applies only for version 2.40 and earlier" -SRCREV ?= "815d9a14cbbb3b81843f7566222c87fb22e7255d" +SRCREV ?= "96bc9e8081a5dbe8329c1d5b0c94191fd5bed840" BINUTILS_GIT_URI ?= "git://sourceware.org/git/binutils-gdb.git;branch=${SRCBRANCH};protocol=https" SRC_URI = "\ ${BINUTILS_GIT_URI} \ @@ -35,6 +35,5 @@ SRC_URI = "\ file://0012-Only-generate-an-RPATH-entry-if-LD_RUN_PATH-is-not-e.patch \ file://0013-Define-alignof-using-_Alignof-when-using-C11-or-newe.patch \ file://0014-Remove-duplicate-pe-dll.o-entry-deom-targ_extra_ofil.patch \ - file://0015-CVE-2025-1153.patch \ " S = "${WORKDIR}/git" diff --git a/meta/recipes-devtools/binutils/binutils/0015-CVE-2025-1153.patch b/meta/recipes-devtools/binutils/binutils/0015-CVE-2025-1153.patch deleted file mode 100644 index e75df08fd4..0000000000 --- a/meta/recipes-devtools/binutils/binutils/0015-CVE-2025-1153.patch +++ /dev/null @@ -1,3355 +0,0 @@ -From 8d97c1a53f3dc9fd8e1ccdb039b8a33d50133150 Mon Sep 17 00:00:00 2001 -From: Alan Modra <amodra@gmail.com> -Date: Thu, 6 Feb 2025 21:46:22 +1030 -Subject: [PATCH] PR 32603, ld -w misbehaviour - -ld -w currently causes segmentation faults and other misbehaviour -since it changes einfo with %F in the format string (fatal error) to -not exit. This patch fixes that by introducing a new variant of einfo -called "fatal" that always exits, and replaces all einfo calls using -%F with a call to fatal without the %F. I considered modifying einfo -to inspect the first 2 or 4 chars in the format string, looking for -%F, but decided that was probably a bad idea given that translators -might have moved the %F. It's also a little nicer to inform the -compiler of a function that doesn't return. - -The patch also fixes some formatting nits, and makes use of %pA -to print section names in a couple of places in aix.em. - -CVE: CVE-2025-1153 -Upstream-Status: Backport [https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=8d97c1a53f3dc9fd8e1ccdb039b8a33d50133150] -Signed-off-by: Peter Marko <peter.marko@siemens.com> ---- - ld/emulparams/call_nop.sh | 6 +- - ld/emulparams/cet.sh | 2 +- - ld/emulparams/elf32mcore.sh | 2 +- - ld/emulparams/x86-64-lam.sh | 6 +- - ld/emulparams/x86-64-level-report.sh | 2 +- - ld/emulparams/x86-64-level.sh | 2 +- - ld/emultempl/aarch64elf.em | 6 +- - ld/emultempl/aix.em | 41 +++++---- - ld/emultempl/armelf.em | 10 +-- - ld/emultempl/avrelf.em | 2 +- - ld/emultempl/beos.em | 24 ++--- - ld/emultempl/cr16elf.em | 4 +- - ld/emultempl/cskyelf.em | 4 +- - ld/emultempl/elf.em | 16 ++-- - ld/emultempl/hppaelf.em | 4 +- - ld/emultempl/kvxelf.em | 7 +- - ld/emultempl/loongarchelf.em | 4 +- - ld/emultempl/m68hc1xelf.em | 2 +- - ld/emultempl/m68kelf.em | 4 +- - ld/emultempl/metagelf.em | 4 +- - ld/emultempl/mipself.em | 2 +- - ld/emultempl/mmix-elfnmmo.em | 5 +- - ld/emultempl/nds32elf.em | 6 +- - ld/emultempl/nto.em | 28 +++--- - ld/emultempl/pe.em | 20 ++--- - ld/emultempl/pep.em | 16 ++-- - ld/emultempl/ppc32elf.em | 4 +- - ld/emultempl/ppc64elf.em | 10 +-- - ld/emultempl/riscvelf.em | 2 +- - ld/emultempl/s390.em | 2 +- - ld/emultempl/scoreelf.em | 2 +- - ld/emultempl/spuelf.em | 20 ++--- - ld/emultempl/tic6xdsbt.em | 10 +-- - ld/emultempl/ticoff.em | 4 +- - ld/emultempl/v850elf.em | 2 +- - ld/emultempl/vms.em | 2 +- - ld/emultempl/xtensaelf.em | 12 +-- - ld/emultempl/z80.em | 2 +- - ld/ldcref.c | 8 +- - ld/ldelf.c | 34 ++++---- - ld/ldelfgen.c | 17 ++-- - ld/ldemul.c | 2 +- - ld/ldexp.c | 42 ++++----- - ld/ldfile.c | 14 +-- - ld/ldgram.y | 6 +- - ld/ldlang.c | 126 +++++++++++++-------------- - ld/ldlex.l | 14 ++- - ld/ldmain.c | 44 +++++----- - ld/ldmisc.c | 28 ++++-- - ld/ldmisc.h | 1 + - ld/ldwrite.c | 22 +++-- - ld/lexsup.c | 72 ++++++++------- - ld/mri.c | 2 +- - ld/pe-dll.c | 12 +-- - ld/plugin.c | 27 +++--- - 55 files changed, 379 insertions(+), 393 deletions(-) - -diff --git a/ld/emulparams/call_nop.sh b/ld/emulparams/call_nop.sh -index 2c3c305f0e8..7dd6dfb130c 100644 ---- a/ld/emulparams/call_nop.sh -+++ b/ld/emulparams/call_nop.sh -@@ -20,7 +20,7 @@ PARSE_AND_LIST_ARGS_CASE_Z_CALL_NOP=' - char *end; - params.call_nop_byte = strtoul (optarg + 16 , &end, 0); - if (*end) -- einfo (_("%F%P: invalid number for -z call-nop=prefix-: %s\n"), -+ fatal (_("%P: invalid number for -z call-nop=prefix-: %s\n"), - optarg + 16); - params.call_nop_as_suffix = false; - } -@@ -29,12 +29,12 @@ PARSE_AND_LIST_ARGS_CASE_Z_CALL_NOP=' - char *end; - params.call_nop_byte = strtoul (optarg + 16, &end, 0); - if (*end) -- einfo (_("%F%P: invalid number for -z call-nop=suffix-: %s\n"), -+ fatal (_("%P: invalid number for -z call-nop=suffix-: %s\n"), - optarg + 16); - params.call_nop_as_suffix = true; - } - else -- einfo (_("%F%P: unsupported option: -z %s\n"), optarg); -+ fatal (_("%P: unsupported option: -z %s\n"), optarg); - } - ' - -diff --git a/ld/emulparams/cet.sh b/ld/emulparams/cet.sh -index 2c627994501..e463441d176 100644 ---- a/ld/emulparams/cet.sh -+++ b/ld/emulparams/cet.sh -@@ -29,7 +29,7 @@ PARSE_AND_LIST_ARGS_CASE_Z_CET=' - | prop_report_ibt - | prop_report_shstk); - else -- einfo (_("%F%P: invalid option for -z cet-report=: %s\n"), -+ fatal (_("%P: invalid option for -z cet-report=: %s\n"), - optarg + 11); - } - ' -diff --git a/ld/emulparams/elf32mcore.sh b/ld/emulparams/elf32mcore.sh -index 7d433fc0f2d..dc0f5d042e7 100644 ---- a/ld/emulparams/elf32mcore.sh -+++ b/ld/emulparams/elf32mcore.sh -@@ -42,6 +42,6 @@ PARSE_AND_LIST_ARGS_CASES=' - case OPTION_BASE_FILE: - link_info.base_file = fopen (optarg, FOPEN_WB); - if (link_info.base_file == NULL) -- einfo (_("%F%P: cannot open base file %s\n"), optarg); -+ fatal (_("%P: cannot open base file %s\n"), optarg); - break; - ' -diff --git a/ld/emulparams/x86-64-lam.sh b/ld/emulparams/x86-64-lam.sh -index fab42ff1df2..6e629ebbac8 100644 ---- a/ld/emulparams/x86-64-lam.sh -+++ b/ld/emulparams/x86-64-lam.sh -@@ -25,7 +25,7 @@ PARSE_AND_LIST_ARGS_CASE_Z_LAM=' - else if (strcmp (optarg + 15, "error") == 0) - params.lam_u48_report = prop_report_error; - else -- einfo (_("%F%P: invalid option for -z lam-u48-report=: %s\n"), -+ fatal (_("%P: invalid option for -z lam-u48-report=: %s\n"), - optarg + 15); - } - else if (strcmp (optarg, "lam-u57") == 0) -@@ -39,7 +39,7 @@ PARSE_AND_LIST_ARGS_CASE_Z_LAM=' - else if (strcmp (optarg + 15, "error") == 0) - params.lam_u57_report = prop_report_error; - else -- einfo (_("%F%P: invalid option for -z lam-u57-report=: %s\n"), -+ fatal (_("%P: invalid option for -z lam-u57-report=: %s\n"), - optarg + 15); - } - else if (strncmp (optarg, "lam-report=", 11) == 0) -@@ -60,7 +60,7 @@ PARSE_AND_LIST_ARGS_CASE_Z_LAM=' - params.lam_u57_report = prop_report_error; - } - else -- einfo (_("%F%P: invalid option for -z lam-report=: %s\n"), -+ fatal (_("%P: invalid option for -z lam-report=: %s\n"), - optarg + 11); - } - ' -diff --git a/ld/emulparams/x86-64-level-report.sh b/ld/emulparams/x86-64-level-report.sh -index 518527767a4..0463ad95269 100644 ---- a/ld/emulparams/x86-64-level-report.sh -+++ b/ld/emulparams/x86-64-level-report.sh -@@ -16,7 +16,7 @@ PARSE_AND_LIST_ARGS_CASE_Z_X86_64_LEVEL_REPORT=' - else if (strcmp (optarg + 17, "used") == 0) - params.isa_level_report = isa_level_report_used; - else -- einfo (_("%F%P: invalid option for -z isa-level-report=: %s\n"), -+ fatal (_("%P: invalid option for -z isa-level-report=: %s\n"), - optarg + 17); - } - ' -diff --git a/ld/emulparams/x86-64-level.sh b/ld/emulparams/x86-64-level.sh -index c46aacf3aff..7e27cf1ea45 100644 ---- a/ld/emulparams/x86-64-level.sh -+++ b/ld/emulparams/x86-64-level.sh -@@ -10,7 +10,7 @@ PARSE_AND_LIST_ARGS_CASE_Z_X86_64_LEVEL=' - char *end; - unsigned int level = strtoul (optarg + 8 , &end, 10); - if (*end != '\0' || level < 2 || level > 4) -- einfo (_("%F%P: invalid x86-64 ISA level: %s\n"), optarg); -+ fatal (_("%P: invalid x86-64 ISA level: %s\n"), optarg); - params.isa_level = level; - } - ' -diff --git a/ld/emultempl/aarch64elf.em b/ld/emultempl/aarch64elf.em -index 7791aabf16d..afa91afb608 100644 ---- a/ld/emultempl/aarch64elf.em -+++ b/ld/emultempl/aarch64elf.em -@@ -324,7 +324,7 @@ aarch64_elf_create_output_section_statements (void) - These will only be created if the output format is an AArch64 format, - hence we do not support linking and changing output formats at the - same time. Use a link followed by objcopy to change output formats. */ -- einfo (_("%F%P: error: cannot change output format " -+ fatal (_("%P: error: cannot change output format " - "whilst linking %s binaries\n"), "AArch64"); - return; - } -@@ -346,7 +346,7 @@ aarch64_elf_create_output_section_statements (void) - bfd_get_arch (link_info.output_bfd), - bfd_get_mach (link_info.output_bfd))) - { -- einfo (_("%F%P: can not create BFD: %E\n")); -+ fatal (_("%P: can not create BFD: %E\n")); - return; - } - -@@ -583,7 +583,7 @@ PARSE_AND_LIST_ARGS_CASES=' - - group_size = bfd_scan_vma (optarg, &end, 0); - if (*end) -- einfo (_("%F%P: invalid number `%s'\''\n"), optarg); -+ fatal (_("%P: invalid number `%s'\''\n"), optarg); - } - break; - ' -diff --git a/ld/emultempl/aix.em b/ld/emultempl/aix.em -index d69e13cfa91..7754c1607b3 100644 ---- a/ld/emultempl/aix.em -+++ b/ld/emultempl/aix.em -@@ -307,7 +307,7 @@ read_file_list (const char *filename) - f = fopen (filename, FOPEN_RT); - if (f == NULL) - { -- einfo (_("%F%P: cannot open %s\n"), filename); -+ fatal (_("%P: cannot open %s\n"), filename); - return; - } - if (fseek (f, 0L, SEEK_END) == -1) -@@ -354,8 +354,8 @@ read_file_list (const char *filename) - return; - - error: -- einfo (_("%F%P: cannot read %s\n"), optarg); - fclose (f); -+ fatal (_("%P: cannot read %s\n"), optarg); - } - - static bool -@@ -706,7 +706,7 @@ gld${EMULATION_NAME}_after_open (void) - size = (p->count + 2) * 4; - if (!bfd_xcoff_link_record_set (link_info.output_bfd, &link_info, - p->h, size)) -- einfo (_("%F%P: bfd_xcoff_link_record_set failed: %E\n")); -+ fatal (_("%P: bfd_xcoff_link_record_set failed: %E\n")); - } - } - -@@ -736,9 +736,9 @@ gld${EMULATION_NAME}_before_allocation (void) - - h = bfd_link_hash_lookup (link_info.hash, el->name, false, false, false); - if (h == NULL) -- einfo (_("%F%P: bfd_link_hash_lookup of export symbol failed: %E\n")); -+ fatal (_("%P: bfd_link_hash_lookup of export symbol failed: %E\n")); - if (!bfd_xcoff_export_symbol (link_info.output_bfd, &link_info, h)) -- einfo (_("%F%P: bfd_xcoff_export_symbol failed: %E\n")); -+ fatal (_("%P: bfd_xcoff_export_symbol failed: %E\n")); - } - - /* Track down all relocations called for by the linker script (these -@@ -821,7 +821,7 @@ gld${EMULATION_NAME}_before_allocation (void) - (link_info.output_bfd, &link_info, libpath, entry_symbol.name, - file_align, maxstack, maxdata, gc && !unix_ld, - modtype, textro, flags, special_sections, rtld)) -- einfo (_("%F%P: failed to set dynamic section sizes: %E\n")); -+ fatal (_("%P: failed to set dynamic section sizes: %E\n")); - - /* Look through the special sections, and put them in the right - place in the link ordering. This is especially magic. */ -@@ -843,8 +843,8 @@ gld${EMULATION_NAME}_before_allocation (void) - is = NULL; - os = lang_output_section_get (sec->output_section); - if (os == NULL) -- einfo (_("%F%P: can't find output section %s\n"), -- sec->output_section->name); -+ fatal (_("%P: can't find output section %pA\n"), -+ sec->output_section); - - for (pls = &os->children.head; *pls != NULL; pls = &(*pls)->header.next) - { -@@ -880,8 +880,7 @@ gld${EMULATION_NAME}_before_allocation (void) - - if (is == NULL) - { -- einfo (_("%F%P: can't find %s in output section\n"), -- bfd_section_name (sec)); -+ fatal (_("%P: can't find %pA in output section\n"), sec); - } - - /* Now figure out where the section should go. */ -@@ -1134,7 +1133,7 @@ gld${EMULATION_NAME}_after_allocation (void) - - /* Now that everything is in place, finalize the dynamic sections. */ - if (!bfd_xcoff_build_dynamic_sections (link_info.output_bfd, &link_info)) -- einfo (_("%F%P: failed to layout dynamic sections: %E\n")); -+ fatal (_("%P: failed to layout dynamic sections: %E\n")); - - if (!bfd_link_relocatable (&link_info)) - { -@@ -1285,7 +1284,7 @@ gld${EMULATION_NAME}_read_file (const char *filename, bool import) - if (f == NULL) - { - bfd_set_error (bfd_error_system_call); -- einfo ("%F%P: %s: %E\n", filename); -+ fatal ("%P: %s: %E\n", filename); - return; - } - -@@ -1347,7 +1346,7 @@ gld${EMULATION_NAME}_read_file (const char *filename, bool import) - obstack_free (o, obstack_base (o)); - } - else if (*s == '(') -- einfo (_("%F%P:%s:%d: #! ([member]) is not supported " -+ fatal (_("%P:%s:%d: #! ([member]) is not supported " - "in import files\n"), - filename, linenumber); - else -@@ -1364,7 +1363,7 @@ gld${EMULATION_NAME}_read_file (const char *filename, bool import) - *s = '\0'; - if (!bfd_xcoff_split_import_path (link_info.output_bfd, - start, &imppath, &impfile)) -- einfo (_("%F%P: could not parse import path: %E\n")); -+ fatal (_("%P: could not parse import path: %E\n")); - while (ISSPACE (cs)) - { - ++s; -@@ -1519,10 +1518,10 @@ gld${EMULATION_NAME}_find_relocs (lang_statement_union_type *s) - - rs = &s->reloc_statement; - if (rs->name == NULL) -- einfo (_("%F%P: only relocations against symbols are permitted\n")); -+ fatal (_("%P: only relocations against symbols are permitted\n")); - if (!bfd_xcoff_link_count_reloc (link_info.output_bfd, &link_info, - rs->name)) -- einfo (_("%F%P: bfd_xcoff_link_count_reloc failed: %E\n")); -+ fatal (_("%P: bfd_xcoff_link_count_reloc failed: %E\n")); - } - - if (s->header.type == lang_assignment_statement_enum) -@@ -1551,7 +1550,7 @@ gld${EMULATION_NAME}_find_exp_assignment (etree_type *exp) - if (!bfd_xcoff_record_link_assignment (link_info.output_bfd, - &link_info, - exp->assign.dst)) -- einfo (_("%F%P: failed to record assignment to %s: %E\n"), -+ fatal (_("%P: failed to record assignment to %s: %E\n"), - exp->assign.dst); - } - gld${EMULATION_NAME}_find_exp_assignment (exp->assign.src); -@@ -1646,7 +1645,7 @@ gld${EMULATION_NAME}_create_output_section_statements (void) - bfd_get_arch (link_info.output_bfd), - bfd_get_mach (link_info.output_bfd))) - { -- einfo (_("%F%P: can not create stub BFD: %E\n")); -+ fatal (_("%P: can not create stub BFD: %E\n")); - return; - } - -@@ -1656,7 +1655,7 @@ gld${EMULATION_NAME}_create_output_section_statements (void) - - /* Pass linker params to the back-end. */ - if (!bfd_xcoff_link_init (&link_info, ¶ms)) -- einfo (_("%F%P: can not init BFD: %E\n")); -+ fatal (_("%P: can not init BFD: %E\n")); - - /* __rtinit */ - if (link_info.init_function != NULL -@@ -1673,7 +1672,7 @@ gld${EMULATION_NAME}_create_output_section_statements (void) - bfd_get_arch (link_info.output_bfd), - bfd_get_mach (link_info.output_bfd))) - { -- einfo (_("%F%P: can not create BFD: %E\n")); -+ fatal (_("%P: can not create BFD: %E\n")); - return; - } - -@@ -1683,7 +1682,7 @@ gld${EMULATION_NAME}_create_output_section_statements (void) - link_info.fini_function, - rtld)) - { -- einfo (_("%F%P: can not create BFD: %E\n")); -+ fatal (_("%P: can not create BFD: %E\n")); - return; - } - -diff --git a/ld/emultempl/armelf.em b/ld/emultempl/armelf.em -index 02a97e7c1ff..6f652c59a3c 100644 ---- a/ld/emultempl/armelf.em -+++ b/ld/emultempl/armelf.em -@@ -521,7 +521,7 @@ arm_elf_create_output_section_statements (void) - These will only be created if the output format is an arm format, - hence we do not support linking and changing output formats at the - same time. Use a link followed by objcopy to change output formats. */ -- einfo (_("%F%P: error: cannot change output format " -+ fatal (_("%P: error: cannot change output format " - "whilst linking %s binaries\n"), "ARM"); - return; - } -@@ -532,10 +532,10 @@ arm_elf_create_output_section_statements (void) - bfd_get_target (link_info.output_bfd)); - - if (params.in_implib_bfd == NULL) -- einfo (_("%F%P: %s: can't open: %E\n"), in_implib_filename); -+ fatal (_("%P: %s: can't open: %E\n"), in_implib_filename); - - if (!bfd_check_format (params.in_implib_bfd, bfd_object)) -- einfo (_("%F%P: %s: not a relocatable file: %E\n"), in_implib_filename); -+ fatal (_("%P: %s: not a relocatable file: %E\n"), in_implib_filename); - } - - bfd_elf32_arm_set_target_params (link_info.output_bfd, &link_info, ¶ms); -@@ -549,7 +549,7 @@ arm_elf_create_output_section_statements (void) - bfd_get_arch (link_info.output_bfd), - bfd_get_mach (link_info.output_bfd))) - { -- einfo (_("%F%P: can not create BFD: %E\n")); -+ fatal (_("%P: can not create BFD: %E\n")); - return; - } - -@@ -709,7 +709,7 @@ PARSE_AND_LIST_ARGS_CASES=' - - group_size = bfd_scan_vma (optarg, &end, 0); - if (*end) -- einfo (_("%F%P: invalid number `%s'\''\n"), optarg); -+ fatal (_("%P: invalid number `%s'\''\n"), optarg); - } - break; - -diff --git a/ld/emultempl/avrelf.em b/ld/emultempl/avrelf.em -index 0945702bfb6..ad2de99feee 100644 ---- a/ld/emultempl/avrelf.em -+++ b/ld/emultempl/avrelf.em -@@ -116,7 +116,7 @@ avr_elf_create_output_section_statements (void) - - if (bfd_get_flavour (link_info.output_bfd) != bfd_target_elf_flavour) - { -- einfo (_("%F%P: error: cannot change output format " -+ fatal (_("%P: error: cannot change output format " - "whilst linking %s binaries\n"), "AVR"); - return; - } -diff --git a/ld/emultempl/beos.em b/ld/emultempl/beos.em -index 52e615b8b1f..4082449f461 100644 ---- a/ld/emultempl/beos.em -+++ b/ld/emultempl/beos.em -@@ -210,7 +210,7 @@ set_pe_subsystem (void) - return; - } - } -- einfo (_("%F%P: invalid subsystem type %s\n"), optarg); -+ fatal (_("%P: invalid subsystem type %s\n"), optarg); - } - - -@@ -220,9 +220,7 @@ set_pe_value (char *name) - char *end; - set_pe_name (name, strtoul (optarg, &end, 0)); - if (end == optarg) -- { -- einfo (_("%F%P: invalid hex number for PE parameter '%s'\n"), optarg); -- } -+ fatal (_("%P: invalid hex number for PE parameter '%s'\n"), optarg); - - optarg = end; - } -@@ -237,9 +235,7 @@ set_pe_stack_heap (char *resname, char *comname) - set_pe_value (comname); - } - else if (*optarg) -- { -- einfo (_("%F%P: strange hex info for PE parameter '%s'\n"), optarg); -- } -+ fatal (_("%P: strange hex info for PE parameter '%s'\n"), optarg); - } - - -@@ -254,7 +250,7 @@ gld${EMULATION_NAME}_handle_option (int optc) - case OPTION_BASE_FILE: - link_info.base_file = fopen (optarg, FOPEN_WB); - if (link_info.base_file == NULL) -- einfo (_("%F%P: cannot open base file %s\n"), optarg); -+ fatal (_("%P: cannot open base file %s\n"), optarg); - break; - - /* PE options */ -@@ -363,9 +359,7 @@ gld${EMULATION_NAME}_after_open (void) - FIXME: This should be done via a function, rather than by - including an internal BFD header. */ - if (!obj_pe (link_info.output_bfd)) -- { -- einfo (_("%F%P: PE operations on non PE file\n")); -- } -+ fatal (_("%P: PE operations on non PE file\n")); - - pe_data(link_info.output_bfd)->pe_opthdr = pe; - pe_data(link_info.output_bfd)->dll = init[DLLOFF].value; -@@ -414,12 +408,12 @@ sort_by_file_name (const void *a, const void *b) - - if (!bfd_get_section_contents (sa->owner, sa, &a_sec, (file_ptr) 0, - (bfd_size_type) sizeof (a_sec))) -- einfo (_("%F%P: %pB: can't read contents of section .idata: %E\n"), -+ fatal (_("%P: %pB: can't read contents of section .idata: %E\n"), - sa->owner); - - if (!bfd_get_section_contents (sb->owner, sb, &b_sec, (file_ptr) 0, - (bfd_size_type) sizeof (b_sec))) -- einfo (_("%F%P: %pB: can't read contents of section .idata: %E\n"), -+ fatal (_("%P: %pB: can't read contents of section .idata: %E\n"), - sb->owner); - - i = a_sec < b_sec ? -1 : 0; -@@ -651,7 +645,7 @@ gld${EMULATION_NAME}_place_orphan (asection *s, - /* Everything from the '\$' on gets deleted so don't allow '\$' as the - first character. */ - if (*secname == '\$') -- einfo (_("%F%P: section %s has '\$' as first character\n"), secname); -+ fatal (_("%P: section %s has '\$' as first character\n"), secname); - if (strchr (secname + 1, '\$') == NULL) - return NULL; - -@@ -681,7 +675,7 @@ gld${EMULATION_NAME}_place_orphan (asection *s, - } - ps[0] = 0; - if (l == NULL) -- einfo (_("%F%P: *(%s\$) missing from linker script\n"), output_secname); -+ fatal (_("%P: *(%s\$) missing from linker script\n"), output_secname); - - /* Link the input section in and we're done for now. - The sections still have to be sorted, but that has to wait until -diff --git a/ld/emultempl/cr16elf.em b/ld/emultempl/cr16elf.em -index 27e616a823f..69ad393f124 100644 ---- a/ld/emultempl/cr16elf.em -+++ b/ld/emultempl/cr16elf.em -@@ -58,7 +58,7 @@ cr16_elf_after_open (void) - COFF and ELF. */ - if (bfd_get_flavour (abfd) != bfd_target_coff_flavour - && bfd_get_flavour (abfd) != bfd_target_elf_flavour) -- einfo (_("%F%P: %pB: all input objects must be COFF or ELF " -+ fatal (_("%P: %pB: all input objects must be COFF or ELF " - "for --embedded-relocs\n")); - - datasec = bfd_get_section_by_name (abfd, ".data.rel"); -@@ -82,7 +82,7 @@ cr16_elf_after_open (void) - | SEC_IN_MEMORY)) - || !bfd_set_section_alignment (relsec, 2) - || !bfd_set_section_size (relsec, datasec->reloc_count * 8)) -- einfo (_("%F%P: %pB: can not create .emreloc section: %E\n")); -+ fatal (_("%P: %pB: can not create .emreloc section: %E\n")); - } - - /* Double check that all other data sections are empty, as is -diff --git a/ld/emultempl/cskyelf.em b/ld/emultempl/cskyelf.em -index ab7f9656889..525e99b68fe 100644 ---- a/ld/emultempl/cskyelf.em -+++ b/ld/emultempl/cskyelf.em -@@ -151,7 +151,7 @@ csky_elf_create_output_section_statements (void) - bfd_get_arch (link_info.output_bfd), - bfd_get_mach (link_info.output_bfd))) - { -- einfo (_("%F%P: can not create BFD: %E\n")); -+ fatal (_("%P: can not create BFD: %E\n")); - return; - } - -@@ -318,7 +318,7 @@ PARSE_AND_LIST_ARGS_CASES=' - - group_size = bfd_scan_vma (optarg, &end, 0); - if (*end) -- einfo (_("%F%P: invalid number `%s'\''\n"), optarg); -+ fatal (_("%P: invalid number `%s'\''\n"), optarg); - } - break; - ' -diff --git a/ld/emultempl/elf.em b/ld/emultempl/elf.em -index 9dcb52e7514..431205fe644 100644 ---- a/ld/emultempl/elf.em -+++ b/ld/emultempl/elf.em -@@ -886,12 +886,12 @@ gld${EMULATION_NAME}_handle_option (int optc) - { - #ifndef HAVE_ZSTD - if (config.compress_debug == COMPRESS_DEBUG_ZSTD) -- einfo (_ ("%F%P: --compress-debug-sections=zstd: ld is not built " -- "with zstd support\n")); -+ fatal (_("%P: --compress-debug-sections=zstd: ld is not built " -+ "with zstd support\n")); - #endif - } - if (config.compress_debug == COMPRESS_UNKNOWN) -- einfo (_("%F%P: invalid --compress-debug-sections option: \`%s'\n"), -+ fatal (_("%P: invalid --compress-debug-sections option: \`%s'\n"), - optarg); - break; - -@@ -953,7 +953,7 @@ fragment <<EOF - link_info.emit_gnu_hash = true; - } - else -- einfo (_("%F%P: invalid hash style \`%s'\n"), optarg); -+ fatal (_("%P: invalid hash style \`%s'\n"), optarg); - break; - - EOF -@@ -973,7 +973,7 @@ fragment <<EOF - link_info.maxpagesize = strtoul (optarg + 14, &end, 0); - if (*end - || (link_info.maxpagesize & (link_info.maxpagesize - 1)) != 0) -- einfo (_("%F%P: invalid maximum page size \`%s'\n"), -+ fatal (_("%P: invalid maximum page size \`%s'\n"), - optarg + 14); - link_info.maxpagesize_is_set = true; - } -@@ -983,7 +983,7 @@ fragment <<EOF - link_info.commonpagesize = strtoul (optarg + 17, &end, 0); - if (*end - || (link_info.commonpagesize & (link_info.commonpagesize - 1)) != 0) -- einfo (_("%F%P: invalid common page size \`%s'\n"), -+ fatal (_("%P: invalid common page size \`%s'\n"), - optarg + 17); - link_info.commonpagesize_is_set = true; - } -@@ -992,7 +992,7 @@ fragment <<EOF - char *end; - link_info.stacksize = strtoul (optarg + 11, &end, 0); - if (*end || link_info.stacksize < 0) -- einfo (_("%F%P: invalid stack size \`%s'\n"), optarg + 11); -+ fatal (_("%P: invalid stack size \`%s'\n"), optarg + 11); - if (!link_info.stacksize) - /* Use -1 for explicit no-stack, because zero means - 'default'. */ -@@ -1031,7 +1031,7 @@ fragment <<EOF - else if (strcmp (optarg, "start-stop-visibility=protected") == 0) - link_info.start_stop_visibility = STV_PROTECTED; - else -- einfo (_("%F%P: invalid visibility in \`-z %s'; " -+ fatal (_("%P: invalid visibility in \`-z %s'; " - "must be default, internal, hidden, or protected"), - optarg); - } -diff --git a/ld/emultempl/hppaelf.em b/ld/emultempl/hppaelf.em -index 512f7d9dd44..8dfa257b304 100644 ---- a/ld/emultempl/hppaelf.em -+++ b/ld/emultempl/hppaelf.em -@@ -82,7 +82,7 @@ hppaelf_create_output_section_statements (void) - bfd_get_arch (link_info.output_bfd), - bfd_get_mach (link_info.output_bfd))) - { -- einfo (_("%F%P: can not create BFD: %E\n")); -+ fatal (_("%P: can not create BFD: %E\n")); - return; - } - -@@ -346,7 +346,7 @@ PARSE_AND_LIST_ARGS_CASES=' - const char *end; - group_size = bfd_scan_vma (optarg, &end, 0); - if (*end) -- einfo (_("%F%P: invalid number `%s'\''\n"), optarg); -+ fatal (_("%P: invalid number `%s'\''\n"), optarg); - } - break; - ' -diff --git a/ld/emultempl/kvxelf.em b/ld/emultempl/kvxelf.em -index cbfde0ed24c..186f1483037 100644 ---- a/ld/emultempl/kvxelf.em -+++ b/ld/emultempl/kvxelf.em -@@ -35,9 +35,8 @@ elf${ELFSIZE}_kvx_before_allocation (void) - EOF - if test x"${EMULATION_NAME}" != x"elf64kvx_linux"; then - fragment <<EOF -- if (bfd_link_pie (&link_info)) { -- einfo (_("%F:%P: -pie not supported\n")); -- } -+ if (bfd_link_pie (&link_info)) -+ fatal (_(":%P: -pie not supported\n")); - EOF - fi - fragment <<EOF -@@ -300,7 +299,7 @@ kvx_elf_create_output_section_statements (void) - ldlang_add_file (stub_file); - - if (!kvx_elf${ELFSIZE}_init_stub_bfd (&link_info, stub_file->the_bfd)) -- einfo ("%F%P: can not init BFD: %E\n"); -+ einfo ("%P: can not init BFD: %E\n"); - } - - -diff --git a/ld/emultempl/loongarchelf.em b/ld/emultempl/loongarchelf.em -index de64b1d30de..928fd83ab15 100644 ---- a/ld/emultempl/loongarchelf.em -+++ b/ld/emultempl/loongarchelf.em -@@ -83,11 +83,11 @@ gld${EMULATION_NAME}_after_allocation (void) - && !bfd_link_relocatable (&link_info)) - { - if (lang_phdr_list == NULL) -- elf_seg_map (link_info.output_bfd) = NULL; -+ elf_seg_map (link_info.output_bfd) = NULL; - if (!_bfd_elf_map_sections_to_segments (link_info.output_bfd, - &link_info, - NULL)) -- einfo (_("%F%P: map sections to segments failed: %E\n")); -+ fatal (_("%P: map sections to segments failed: %E\n")); - } - - /* Adjust program header size and .eh_frame_hdr size before -diff --git a/ld/emultempl/m68hc1xelf.em b/ld/emultempl/m68hc1xelf.em -index a7c3a3eec48..155b95349ab 100644 ---- a/ld/emultempl/m68hc1xelf.em -+++ b/ld/emultempl/m68hc1xelf.em -@@ -159,7 +159,7 @@ m68hc11elf_create_output_section_statements (void) - bfd_get_arch (link_info.output_bfd), - bfd_get_mach (link_info.output_bfd))) - { -- einfo (_("%F%P: can not create BFD: %E\n")); -+ fatal (_("%P: can not create BFD: %E\n")); - return; - } - -diff --git a/ld/emultempl/m68kelf.em b/ld/emultempl/m68kelf.em -index c195812b85a..91fb3f8502a 100644 ---- a/ld/emultempl/m68kelf.em -+++ b/ld/emultempl/m68kelf.em -@@ -82,7 +82,7 @@ m68k_elf_after_open (void) - asection *datasec; - - if (bfd_get_flavour (abfd) != bfd_target_elf_flavour) -- einfo (_("%F%P: %pB: all input objects must be ELF " -+ fatal (_("%P: %pB: all input objects must be ELF " - "for --embedded-relocs\n")); - - datasec = bfd_get_section_by_name (abfd, ".data"); -@@ -106,7 +106,7 @@ m68k_elf_after_open (void) - if (relsec == NULL - || !bfd_set_section_alignment (relsec, 2) - || !bfd_set_section_size (relsec, datasec->reloc_count * 12)) -- einfo (_("%F%P: %pB: can not create .emreloc section: %E\n")); -+ fatal (_("%P: %pB: can not create .emreloc section: %E\n")); - } - - /* Double check that all other data sections are empty, as is -diff --git a/ld/emultempl/metagelf.em b/ld/emultempl/metagelf.em -index 85b8d379435..b6e59273dda 100644 ---- a/ld/emultempl/metagelf.em -+++ b/ld/emultempl/metagelf.em -@@ -59,7 +59,7 @@ metagelf_create_output_section_statements (void) - bfd_get_arch (link_info.output_bfd), - bfd_get_mach (link_info.output_bfd))) - { -- einfo (_("%F%P: can not create BFD: %E\n")); -+ fatal (_("%P: can not create BFD: %E\n")); - return; - } - -@@ -305,7 +305,7 @@ PARSE_AND_LIST_ARGS_CASES=' - const char *end; - group_size = bfd_scan_vma (optarg, &end, 0); - if (*end) -- einfo (_("%F%P: invalid number `%s'\''\n"), optarg); -+ fatal (_("%P: invalid number `%s'\''\n"), optarg); - } - break; - ' -diff --git a/ld/emultempl/mipself.em b/ld/emultempl/mipself.em -index 89e7a8945be..9aa15bda6e9 100644 ---- a/ld/emultempl/mipself.em -+++ b/ld/emultempl/mipself.em -@@ -152,7 +152,7 @@ mips_add_stub_section (const char *stub_sec_name, asection *input_section, - bfd_get_arch (link_info.output_bfd), - bfd_get_mach (link_info.output_bfd))) - { -- einfo (_("%F%P: can not create BFD: %E\n")); -+ fatal (_("%P: can not create BFD: %E\n")); - return NULL; - } - stub_bfd->flags |= BFD_LINKER_CREATED; -diff --git a/ld/emultempl/mmix-elfnmmo.em b/ld/emultempl/mmix-elfnmmo.em -index 8c62bf8274d..72589416ef0 100644 ---- a/ld/emultempl/mmix-elfnmmo.em -+++ b/ld/emultempl/mmix-elfnmmo.em -@@ -113,10 +113,7 @@ mmix_after_allocation (void) - bfd_set_section_vma (sec, 0); - - if (!_bfd_mmix_after_linker_allocation (link_info.output_bfd, &link_info)) -- { -- /* This is a fatal error; make einfo call not return. */ -- einfo (_("%F%P: can't finalize linker-allocated global registers\n")); -- } -+ fatal (_("%P: can't finalize linker-allocated global registers\n")); - } - EOF - -diff --git a/ld/emultempl/nds32elf.em b/ld/emultempl/nds32elf.em -index 9d596838078..e8c72d934f8 100644 ---- a/ld/emultempl/nds32elf.em -+++ b/ld/emultempl/nds32elf.em -@@ -44,7 +44,7 @@ nds32_elf_create_output_section_statements (void) - if (strstr (bfd_get_target (link_info.output_bfd), "nds32") == NULL) - { - /* Check the output target is nds32. */ -- einfo (_("%F%P: error: cannot change output format whilst " -+ fatal (_("%P: error: cannot change output format whilst " - "linking %s binaries\n"), "NDS32"); - return; - } -@@ -96,7 +96,7 @@ nds32_elf_after_open (void) - && abi_ver != (elf_elfheader (abfd)->e_flags & EF_NDS_ABI)) - { - /* Incompatible objects. */ -- einfo (_("%F%P: %pB: ABI version of object files mismatched\n"), -+ fatal (_("%P: %pB: ABI version of object files mismatched\n"), - abfd); - } - } -@@ -183,7 +183,7 @@ PARSE_AND_LIST_ARGS_CASES=' - { - sym_ld_script = fopen (optarg, FOPEN_WT); - if(sym_ld_script == NULL) -- einfo (_("%F%P: cannot open map file %s: %E\n"), optarg); -+ fatal (_("%P: cannot open map file %s: %E\n"), optarg); - } - break; - case OPTION_HYPER_RELAX: -diff --git a/ld/emultempl/nto.em b/ld/emultempl/nto.em -index 873b943c45d..ee00c79c3cd 100644 ---- a/ld/emultempl/nto.em -+++ b/ld/emultempl/nto.em -@@ -51,7 +51,7 @@ nto_create_QNX_note_section(int type) - is called before this function, stub_file should already be defined. */ - if (!stub_file) - { -- einfo (_("%F%P: cannot create .note section in stub BFD.\n")); -+ fatal (_("%P: cannot create .note section in stub BFD.\n")); - return NULL; - } - -@@ -60,7 +60,7 @@ nto_create_QNX_note_section(int type) - note_sec = bfd_make_section_anyway_with_flags (stub_file->the_bfd, ".note", flags); - if (! note_sec) - { -- einfo (_("%F%P: failed to create .note section\n")); -+ fatal (_("%P: failed to create .note section\n")); - return NULL; - } - -@@ -101,7 +101,7 @@ nto_lookup_QNX_note_section(int type) - sec->contents = xmalloc(sec->size); - if (!bfd_get_section_contents (sec->owner, sec, sec->contents, (file_ptr) 0, - sec->size)) -- einfo (_("%F%P: %pB: can't read contents of section .note: %E\n"), -+ fatal (_("%P: %pB: can't read contents of section .note: %E\n"), - sec->owner); - - e_note = (Elf_External_Note *) sec->contents; -@@ -144,7 +144,7 @@ nto_add_note_section (void) { - - if (nto_lazy_stack && !link_info.stacksize) - { -- einfo (_("%F%P: error: --lazy-stack must follow -zstack-size=<size>\n")); -+ fatal (_("%P: error: --lazy-stack must follow -zstack-size=<size>\n")); - return; - } - -@@ -198,22 +198,22 @@ PARSE_AND_LIST_LONGOPTS=${PARSE_AND_LIST_LONGOPTS}' - PARSE_AND_LIST_OPTIONS=${PARSE_AND_LIST_OPTIONS}' - fprintf (file, _("\ - --stack <size> Set size of the initial stack\n\ -- --lazy-stack Set lazy allocation of stack\n\ -+ --lazy-stack Set lazy allocation of stack\n\ - ")); - ' - - PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}' - case OPTION_STACK: - { -- char *end; -- link_info.stacksize = strtoul (optarg, &end, 0); -- if (*end || link_info.stacksize < 0) -- einfo (_("%F%P: invalid stack size `%s'\''\n"), optarg + 11); -- if (!link_info.stacksize) -- /* Use -1 for explicit no-stack, because zero means -- 'default'. */ -- link_info.stacksize = -1; -- break; -+ char *end; -+ link_info.stacksize = strtoul (optarg, &end, 0); -+ if (*end || link_info.stacksize < 0) -+ fatal (_("%P: invalid stack size `%s'\''\n"), optarg + 11); -+ if (!link_info.stacksize) -+ /* Use -1 for explicit no-stack, because zero means -+ 'default'. */ -+ link_info.stacksize = -1; -+ break; - } - case OPTION_LAZY_STACK: - nto_lazy_stack = true; -diff --git a/ld/emultempl/pe.em b/ld/emultempl/pe.em -index 5fb14c9a4a6..9a2b576a6ac 100644 ---- a/ld/emultempl/pe.em -+++ b/ld/emultempl/pe.em -@@ -648,7 +648,7 @@ set_pe_subsystem (void) - - if (v[i].name == NULL) - { -- einfo (_("%F%P: invalid subsystem type %s\n"), optarg); -+ fatal (_("%P: invalid subsystem type %s\n"), optarg); - return; - } - -@@ -669,7 +669,7 @@ set_pe_value (char *name) - set_pe_name (name, strtoul (optarg, &end, 0)); - - if (end == optarg) -- einfo (_("%F%P: invalid hex number for PE parameter '%s'\n"), optarg); -+ fatal (_("%P: invalid hex number for PE parameter '%s'\n"), optarg); - - optarg = end; - } -@@ -686,7 +686,7 @@ set_pe_stack_heap (char *resname, char *comname) - set_pe_value (comname); - } - else if (*optarg) -- einfo (_("%F%P: strange hex info for PE parameter '%s'\n"), optarg); -+ fatal (_("%P: strange hex info for PE parameter '%s'\n"), optarg); - } - - #define DEFAULT_BUILD_ID_STYLE "md5" -@@ -702,7 +702,7 @@ gld${EMULATION_NAME}_handle_option (int optc) - case OPTION_BASE_FILE: - link_info.base_file = fopen (optarg, FOPEN_WB); - if (link_info.base_file == NULL) -- einfo (_("%F%P: cannot open base file %s\n"), optarg); -+ fatal (_("%P: cannot open base file %s\n"), optarg); - break; - - /* PE options. */ -@@ -1231,7 +1231,7 @@ make_runtime_ref (void) - = bfd_wrapped_link_hash_lookup (link_info.output_bfd, &link_info, - rr, true, false, true); - if (!h) -- einfo (_("%F%P: bfd_link_hash_lookup failed: %E\n")); -+ fatal (_("%P: bfd_link_hash_lookup failed: %E\n")); - else - { - if (h->type == bfd_link_hash_new) -@@ -1529,7 +1529,7 @@ gld${EMULATION_NAME}_after_open (void) - if (bfd_get_flavour (link_info.output_bfd) != bfd_target_coff_flavour - || coff_data (link_info.output_bfd) == NULL - || !obj_pe (link_info.output_bfd)) -- einfo (_("%F%P: cannot perform PE operations on non PE output file '%pB'\n"), -+ fatal (_("%P: cannot perform PE operations on non PE output file '%pB'\n"), - link_info.output_bfd); - - pe_data (link_info.output_bfd)->pe_opthdr = pe; -@@ -1602,7 +1602,7 @@ gld${EMULATION_NAME}_after_open (void) - These will only be created if the output format is an arm format, - hence we do not support linking and changing output formats at the - same time. Use a link followed by objcopy to change output formats. */ -- einfo (_("%F%P: error: cannot change output format " -+ fatal (_("%P: error: cannot change output format " - "whilst linking %s binaries\n"), "ARM"); - return; - } -@@ -1662,7 +1662,7 @@ gld${EMULATION_NAME}_after_open (void) - - if (!bfd_generic_link_read_symbols (is->the_bfd)) - { -- einfo (_("%F%P: %pB: could not read symbols: %E\n"), -+ fatal (_("%P: %pB: could not read symbols: %E\n"), - is->the_bfd); - return; - } -@@ -1849,7 +1849,7 @@ gld${EMULATION_NAME}_after_open (void) - - if (!bfd_generic_link_read_symbols (is->the_bfd)) - { -- einfo (_("%F%P: %pB: could not read symbols: %E\n"), -+ fatal (_("%P: %pB: could not read symbols: %E\n"), - is->the_bfd); - return; - } -@@ -1960,7 +1960,7 @@ gld${EMULATION_NAME}_unrecognized_file (lang_input_statement_type *entry ATTRIBU - - h = bfd_link_hash_lookup (link_info.hash, buf, true, true, true); - if (h == (struct bfd_link_hash_entry *) NULL) -- einfo (_("%F%P: bfd_link_hash_lookup failed: %E\n")); -+ fatal (_("%P: bfd_link_hash_lookup failed: %E\n")); - if (h->type == bfd_link_hash_new) - { - h->type = bfd_link_hash_undefined; -diff --git a/ld/emultempl/pep.em b/ld/emultempl/pep.em -index df74352e4df..440c0bf5fc4 100644 ---- a/ld/emultempl/pep.em -+++ b/ld/emultempl/pep.em -@@ -625,7 +625,7 @@ set_pep_subsystem (void) - - if (v[i].name == NULL) - { -- einfo (_("%F%P: invalid subsystem type %s\n"), optarg); -+ fatal (_("%P: invalid subsystem type %s\n"), optarg); - return; - } - -@@ -646,7 +646,7 @@ set_pep_value (char *name) - set_pep_name (name, (bfd_vma) strtoull (optarg, &end, 0)); - - if (end == optarg) -- einfo (_("%F%P: invalid hex number for PE parameter '%s'\n"), optarg); -+ fatal (_("%P: invalid hex number for PE parameter '%s'\n"), optarg); - - optarg = end; - } -@@ -663,7 +663,7 @@ set_pep_stack_heap (char *resname, char *comname) - set_pep_value (comname); - } - else if (*optarg) -- einfo (_("%F%P: strange hex info for PE parameter '%s'\n"), optarg); -+ fatal (_("%P: strange hex info for PE parameter '%s'\n"), optarg); - } - - #define DEFAULT_BUILD_ID_STYLE "md5" -@@ -680,7 +680,7 @@ gld${EMULATION_NAME}_handle_option (int optc) - case OPTION_BASE_FILE: - link_info.base_file = fopen (optarg, FOPEN_WB); - if (link_info.base_file == NULL) -- einfo (_("%F%P: cannot open base file %s\n"), optarg); -+ fatal (_("%P: cannot open base file %s\n"), optarg); - break; - - /* PE options. */ -@@ -1233,7 +1233,7 @@ make_runtime_ref (void) - = bfd_wrapped_link_hash_lookup (link_info.output_bfd, &link_info, - rr, true, false, true); - if (!h) -- einfo (_("%F%P: bfd_link_hash_lookup failed: %E\n")); -+ fatal (_("%P: bfd_link_hash_lookup failed: %E\n")); - else - { - if (h->type == bfd_link_hash_new) -@@ -1533,7 +1533,7 @@ gld${EMULATION_NAME}_after_open (void) - if (bfd_get_flavour (link_info.output_bfd) != bfd_target_coff_flavour - || coff_data (link_info.output_bfd) == NULL - || !obj_pe (link_info.output_bfd)) -- einfo (_("%F%P: cannot perform PE operations on non PE output file '%pB'\n"), -+ fatal (_("%P: cannot perform PE operations on non PE output file '%pB'\n"), - link_info.output_bfd); - - pe_data (link_info.output_bfd)->pe_opthdr = pep; -@@ -1645,7 +1645,7 @@ gld${EMULATION_NAME}_after_open (void) - - if (!bfd_generic_link_read_symbols (is->the_bfd)) - { -- einfo (_("%F%P: %pB: could not read symbols: %E\n"), -+ fatal (_("%P: %pB: could not read symbols: %E\n"), - is->the_bfd); - return; - } -@@ -1849,7 +1849,7 @@ gld${EMULATION_NAME}_unrecognized_file (lang_input_statement_type *entry ATTRIBU - - h = bfd_link_hash_lookup (link_info.hash, buf, true, true, true); - if (h == (struct bfd_link_hash_entry *) NULL) -- einfo (_("%F%P: bfd_link_hash_lookup failed: %E\n")); -+ fatal (_("%P: bfd_link_hash_lookup failed: %E\n")); - if (h->type == bfd_link_hash_new) - { - h->type = bfd_link_hash_undefined; -diff --git a/ld/emultempl/ppc32elf.em b/ld/emultempl/ppc32elf.em -index 529a5920920..ae11bc9a072 100644 ---- a/ld/emultempl/ppc32elf.em -+++ b/ld/emultempl/ppc32elf.em -@@ -366,7 +366,7 @@ PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}' - char *end; - unsigned long val = strtoul (optarg, &end, 0); - if (*end || val > 5) -- einfo (_("%F%P: invalid --plt-align `%s'\''\n"), optarg); -+ fatal (_("%P: invalid --plt-align `%s'\''\n"), optarg); - params.plt_stub_align = val; - } - else -@@ -399,7 +399,7 @@ PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}' - if (*end - || (params.pagesize < 4096 && params.pagesize != 0) - || params.pagesize != (params.pagesize & -params.pagesize)) -- einfo (_("%F%P: invalid pagesize `%s'\''\n"), optarg); -+ fatal (_("%P: invalid pagesize `%s'\''\n"), optarg); - } - break; - -diff --git a/ld/emultempl/ppc64elf.em b/ld/emultempl/ppc64elf.em -index 1e6ae7af738..f7a8f1eb259 100644 ---- a/ld/emultempl/ppc64elf.em -+++ b/ld/emultempl/ppc64elf.em -@@ -91,7 +91,7 @@ ppc_create_output_section_statements (void) - bfd_get_arch (link_info.output_bfd), - bfd_get_mach (link_info.output_bfd))) - { -- einfo (_("%F%P: can not create BFD: %E\n")); -+ fatal (_("%P: can not create BFD: %E\n")); - return; - } - -@@ -101,7 +101,7 @@ ppc_create_output_section_statements (void) - if (params.save_restore_funcs < 0) - params.save_restore_funcs = !bfd_link_relocatable (&link_info); - if (!ppc64_elf_init_stub_bfd (&link_info, ¶ms)) -- einfo (_("%F%P: can not init BFD: %E\n")); -+ fatal (_("%P: can not init BFD: %E\n")); - } - - /* Called after opening files but before mapping sections. */ -@@ -825,7 +825,7 @@ PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}' - const char *end; - params.group_size = bfd_scan_vma (optarg, &end, 0); - if (*end) -- einfo (_("%F%P: invalid number `%s'\''\n"), optarg); -+ fatal (_("%P: invalid number `%s'\''\n"), optarg); - } - break; - -@@ -851,7 +851,7 @@ PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}' - char *end; - long val = strtol (optarg, &end, 0); - if (*end || (unsigned long) val + 8 > 16) -- einfo (_("%F%P: invalid --plt-align `%s'\''\n"), optarg); -+ fatal (_("%P: invalid --plt-align `%s'\''\n"), optarg); - params.plt_stub_align = val; - } - else -@@ -880,7 +880,7 @@ PARSE_AND_LIST_ARGS_CASES=${PARSE_AND_LIST_ARGS_CASES}' - else if (strcasecmp (optarg, "no") == 0) - params.power10_stubs = 0; - else -- einfo (_("%F%P: invalid --power10-stubs argument `%s'\''\n"), -+ fatal (_("%P: invalid --power10-stubs argument `%s'\''\n"), - optarg); - } - else -diff --git a/ld/emultempl/riscvelf.em b/ld/emultempl/riscvelf.em -index 6b67c7faa72..78e1fcde68e 100644 ---- a/ld/emultempl/riscvelf.em -+++ b/ld/emultempl/riscvelf.em -@@ -131,7 +131,7 @@ riscv_create_output_section_statements (void) - These will only be created if the output format is a RISC-V format, - hence we do not support linking and changing output formats at the - same time. Use a link followed by objcopy to change output formats. */ -- einfo (_("%F%P: error: cannot change output format" -+ fatal (_("%P: error: cannot change output format" - " whilst linking %s binaries\n"), "RISC-V"); - return; - } -diff --git a/ld/emultempl/s390.em b/ld/emultempl/s390.em -index 8548768cc5f..a2296627bad 100644 ---- a/ld/emultempl/s390.em -+++ b/ld/emultempl/s390.em -@@ -34,7 +34,7 @@ static void - s390_elf_create_output_section_statements (void) - { - if (!bfd_elf_s390_set_options (&link_info, ¶ms)) -- einfo (_("%F%P: can not init BFD: %E\n")); -+ fatal (_("%P: can not init BFD: %E\n")); - } - - EOF -diff --git a/ld/emultempl/scoreelf.em b/ld/emultempl/scoreelf.em -index d3a2205115b..fd67d5ceb94 100644 ---- a/ld/emultempl/scoreelf.em -+++ b/ld/emultempl/scoreelf.em -@@ -62,7 +62,7 @@ score_elf_after_open (void) - These will only be created if the output format is an score format, - hence we do not support linking and changing output formats at the - same time. Use a link followed by objcopy to change output formats. */ -- einfo (_("%F%P: error: cannot change output format " -+ fatal (_("%P: error: cannot change output format " - "whilst linking %s binaries\n"), "S+core"); - return; - } -diff --git a/ld/emultempl/spuelf.em b/ld/emultempl/spuelf.em -index 76776ba2555..cda9a06ac08 100644 ---- a/ld/emultempl/spuelf.em -+++ b/ld/emultempl/spuelf.em -@@ -202,7 +202,7 @@ spu_elf_load_ovl_mgr (void) - /* User supplied __ovly_load. */ - } - else if (mgr_stream->start == mgr_stream->end) -- einfo (_("%F%P: no built-in overlay manager\n")); -+ fatal (_("%P: no built-in overlay manager\n")); - else - { - lang_input_statement_type *ovl_is; -@@ -379,7 +379,7 @@ spu_elf_open_overlay_script (void) - if (script == NULL) - { - file_err: -- einfo (_("%F%P: can not open script: %E\n")); -+ fatal (_("%P: can not open script: %E\n")); - } - return script; - } -@@ -695,7 +695,7 @@ PARSE_AND_LIST_ARGS_CASES=' - if (*end == 0) - break; - } -- einfo (_("%F%P: invalid --local-store address range `%s'\''\n"), optarg); -+ fatal (_("%P: invalid --local-store address range `%s'\''\n"), optarg); - } - break; - -@@ -731,12 +731,12 @@ PARSE_AND_LIST_ARGS_CASES=' - if (!num_lines_set) - params.num_lines = 32; - else if ((params.num_lines & -params.num_lines) != params.num_lines) -- einfo (_("%F%P: invalid --num-lines/--num-regions `%u'\''\n"), -+ fatal (_("%P: invalid --num-lines/--num-regions `%u'\''\n"), - params.num_lines); - if (!line_size_set) - params.line_size = 1024; - else if ((params.line_size & -params.line_size) != params.line_size) -- einfo (_("%F%P: invalid --line-size/--region-size `%u'\''\n"), -+ fatal (_("%P: invalid --line-size/--region-size `%u'\''\n"), - params.line_size); - break; - -@@ -757,7 +757,7 @@ PARSE_AND_LIST_ARGS_CASES=' - && (params.ovly_flavour != ovly_soft_icache - || (params.num_lines & -params.num_lines) == params.num_lines)) - break; -- einfo (_("%F%P: invalid --num-lines/--num-regions `%s'\''\n"), optarg); -+ fatal (_("%P: invalid --num-lines/--num-regions `%s'\''\n"), optarg); - } - break; - -@@ -770,7 +770,7 @@ PARSE_AND_LIST_ARGS_CASES=' - && (params.ovly_flavour != ovly_soft_icache - || (params.line_size & -params.line_size) == params.line_size)) - break; -- einfo (_("%F%P: invalid --line-size/--region-size `%s'\''\n"), optarg); -+ fatal (_("%P: invalid --line-size/--region-size `%s'\''\n"), optarg); - } - break; - -@@ -779,7 +779,7 @@ PARSE_AND_LIST_ARGS_CASES=' - char *end; - params.auto_overlay_fixed = strtoul (optarg, &end, 0); - if (*end != 0) -- einfo (_("%F%P: invalid --fixed-space value `%s'\''\n"), optarg); -+ fatal (_("%P: invalid --fixed-space value `%s'\''\n"), optarg); - } - break; - -@@ -788,7 +788,7 @@ PARSE_AND_LIST_ARGS_CASES=' - char *end; - params.auto_overlay_reserved = strtoul (optarg, &end, 0); - if (*end != 0) -- einfo (_("%F%P: invalid --reserved-space value `%s'\''\n"), optarg); -+ fatal (_("%P: invalid --reserved-space value `%s'\''\n"), optarg); - } - break; - -@@ -797,7 +797,7 @@ PARSE_AND_LIST_ARGS_CASES=' - char *end; - params.extra_stack_space = strtol (optarg, &end, 0); - if (*end != 0) -- einfo (_("%F%P: invalid --extra-stack-space value `%s'\''\n"), optarg); -+ fatal (_("%P: invalid --extra-stack-space value `%s'\''\n"), optarg); - } - break; - -diff --git a/ld/emultempl/tic6xdsbt.em b/ld/emultempl/tic6xdsbt.em -index 0680bc81112..4aec9aebe6f 100644 ---- a/ld/emultempl/tic6xdsbt.em -+++ b/ld/emultempl/tic6xdsbt.em -@@ -59,10 +59,8 @@ tic6x_after_open (void) - if (is_tic6x_target ()) - { - if (params.dsbt_index >= params.dsbt_size) -- { -- einfo (_("%F%P: invalid --dsbt-index %d, outside DSBT size\n"), -- params.dsbt_index); -- } -+ fatal (_("%P: invalid --dsbt-index %d, outside DSBT size\n"), -+ params.dsbt_index); - elf32_tic6x_setup (&link_info, ¶ms); - } - -@@ -186,7 +184,7 @@ PARSE_AND_LIST_ARGS_CASES=' - if (*end == 0 - && params.dsbt_index >= 0 && params.dsbt_index < 0x7fff) - break; -- einfo (_("%F%P: invalid --dsbt-index %s\n"), optarg); -+ fatal (_("%P: invalid --dsbt-index %s\n"), optarg); - } - break; - case OPTION_DSBT_SIZE: -@@ -196,7 +194,7 @@ PARSE_AND_LIST_ARGS_CASES=' - if (*end == 0 - && params.dsbt_size >= 0 && params.dsbt_size < 0x7fff) - break; -- einfo (_("%F%P: invalid --dsbt-size %s\n"), optarg); -+ fatal (_("%P: invalid --dsbt-size %s\n"), optarg); - } - break; - case OPTION_NO_MERGE_EXIDX_ENTRIES: -diff --git a/ld/emultempl/ticoff.em b/ld/emultempl/ticoff.em -index d4ef91f7af2..2e6a4a0ae6f 100644 ---- a/ld/emultempl/ticoff.em -+++ b/ld/emultempl/ticoff.em -@@ -88,9 +88,7 @@ gld${EMULATION_NAME}_handle_option (int optc) - lang_add_output_format (buf, NULL, NULL, 0); - } - else -- { -- einfo (_("%F%P: invalid COFF format version %s\n"), optarg); -- } -+ fatal (_("%P: invalid COFF format version %s\n"), optarg); - break; - } - return false; -diff --git a/ld/emultempl/v850elf.em b/ld/emultempl/v850elf.em -index 84cd589a057..92a1ac4d784 100644 ---- a/ld/emultempl/v850elf.em -+++ b/ld/emultempl/v850elf.em -@@ -63,7 +63,7 @@ v850_create_output_section_statements (void) - These will only be created if the output format is an arm format, - hence we do not support linking and changing output formats at the - same time. Use a link followed by objcopy to change output formats. */ -- einfo (_("%F%P: error: cannot change output format" -+ fatal (_("%P: error: cannot change output format" - " whilst linking %s binaries\n"), "V850"); - return; - } -diff --git a/ld/emultempl/vms.em b/ld/emultempl/vms.em -index 1b68b0db64f..5bb6ae2a430 100644 ---- a/ld/emultempl/vms.em -+++ b/ld/emultempl/vms.em -@@ -200,7 +200,7 @@ gld${EMULATION_NAME}_before_allocation (void) - if (bed->elf_backend_late_size_sections - && !bed->elf_backend_late_size_sections (link_info.output_bfd, - &link_info)) -- einfo (_("%F%P: failed to set dynamic section sizes: %E\n")); -+ fatal (_("%P: failed to set dynamic section sizes: %E\n")); - - before_allocation_default (); - } -diff --git a/ld/emultempl/xtensaelf.em b/ld/emultempl/xtensaelf.em -index e3a9b2e6cf8..027b7732d2d 100644 ---- a/ld/emultempl/xtensaelf.em -+++ b/ld/emultempl/xtensaelf.em -@@ -390,7 +390,7 @@ check_xtensa_info (bfd *abfd, asection *info_sec) - - data = xmalloc (info_sec->size); - if (! bfd_get_section_contents (abfd, info_sec, data, 0, info_sec->size)) -- einfo (_("%F%P: %pB: cannot read contents of section %pA\n"), abfd, info_sec); -+ fatal (_("%P: %pB: cannot read contents of section %pA\n"), abfd, info_sec); - - if (info_sec->size > 24 - && info_sec->size >= 24 + bfd_get_32 (abfd, data + 4) -@@ -431,13 +431,13 @@ elf_xtensa_before_allocation (void) - if (is_big_endian - && link_info.output_bfd->xvec->byteorder == BFD_ENDIAN_LITTLE) - { -- einfo (_("%F%P: little endian output does not match " -+ fatal (_("%P: little endian output does not match " - "Xtensa configuration\n")); - } - if (!is_big_endian - && link_info.output_bfd->xvec->byteorder == BFD_ENDIAN_BIG) - { -- einfo (_("%F%P: big endian output does not match " -+ fatal (_("%P: big endian output does not match " - "Xtensa configuration\n")); - } - -@@ -456,7 +456,7 @@ elf_xtensa_before_allocation (void) - cannot go any further if there are any mismatches. */ - if ((is_big_endian && f->the_bfd->xvec->byteorder == BFD_ENDIAN_LITTLE) - || (!is_big_endian && f->the_bfd->xvec->byteorder == BFD_ENDIAN_BIG)) -- einfo (_("%F%P: cross-endian linking for %pB not supported\n"), -+ fatal (_("%P: cross-endian linking for %pB not supported\n"), - f->the_bfd); - - if (! first_bfd) -@@ -487,7 +487,7 @@ elf_xtensa_before_allocation (void) - info_sec = bfd_make_section_with_flags (first_bfd, ".xtensa.info", - SEC_HAS_CONTENTS | SEC_READONLY); - if (! info_sec) -- einfo (_("%F%P: failed to create .xtensa.info section\n")); -+ fatal (_("%P: failed to create .xtensa.info section\n")); - } - if (info_sec) - { -@@ -1226,7 +1226,7 @@ ld_build_required_section_dependence (lang_statement_union_type *s) - lang_statement_union_type *l = iter_stack_current (&stack); - - if (l == NULL && link_info.non_contiguous_regions) -- einfo (_("%F%P: Relaxation not supported with " -+ fatal (_("%P: Relaxation not supported with " - "--enable-non-contiguous-regions.\n")); - - if (l->header.type == lang_input_section_enum) -diff --git a/ld/emultempl/z80.em b/ld/emultempl/z80.em -index a2a7f28aa89..d566b9ac398 100644 ---- a/ld/emultempl/z80.em -+++ b/ld/emultempl/z80.em -@@ -48,7 +48,7 @@ z80_after_open (void) - const bfd_arch_info_type *info; - info = bfd_arch_get_compatible (link_info.output_bfd, abfd, false); - if (info == NULL) -- einfo (_("%F%P: %pB: Instruction sets of object files incompatible\n"), -+ fatal (_("%P: %pB: Instruction sets of object files incompatible\n"), - abfd); - else - bfd_set_arch_info (link_info.output_bfd, info); -diff --git a/ld/ldcref.c b/ld/ldcref.c -index 226d4e67adf..5d7891f6321 100644 ---- a/ld/ldcref.c -+++ b/ld/ldcref.c -@@ -514,7 +514,7 @@ check_local_sym_xref (lang_input_statement_type *statement) - return; - - if (!bfd_generic_link_read_symbols (abfd)) -- einfo (_("%F%P: %pB: could not read symbols: %E\n"), abfd); -+ fatal (_("%P: %pB: could not read symbols: %E\n"), abfd); - - for (syms = bfd_get_outsymbols (abfd); *syms; ++syms) - { -@@ -625,7 +625,7 @@ check_refs (const char *name, - BFD might contain a prohibited cross reference. */ - - if (!bfd_generic_link_read_symbols (abfd)) -- einfo (_("%F%P: %pB: could not read symbols: %E\n"), abfd); -+ fatal (_("%P: %pB: could not read symbols: %E\n"), abfd); - - info.sym_name = name; - info.global = global; -@@ -687,14 +687,14 @@ check_reloc_refs (bfd *abfd, asection *sec, void *iarg) - - relsize = bfd_get_reloc_upper_bound (abfd, sec); - if (relsize < 0) -- einfo (_("%F%P: %pB: could not read relocs: %E\n"), abfd); -+ fatal (_("%P: %pB: could not read relocs: %E\n"), abfd); - if (relsize == 0) - return; - - relpp = (arelent **) xmalloc (relsize); - relcount = bfd_canonicalize_reloc (abfd, sec, relpp, info->asymbols); - if (relcount < 0) -- einfo (_("%F%P: %pB: could not read relocs: %E\n"), abfd); -+ fatal (_("%P: %pB: could not read relocs: %E\n"), abfd); - - p = relpp; - pend = p + relcount; -diff --git a/ld/ldelf.c b/ld/ldelf.c -index efa654c843c..f4f27fc3873 100644 ---- a/ld/ldelf.c -+++ b/ld/ldelf.c -@@ -95,7 +95,7 @@ ldelf_after_parse (void) - else if (!link_info.maxpagesize_is_set) - link_info.maxpagesize = link_info.commonpagesize; - else -- einfo (_("%F%P: common page size (0x%v) > maximum page size (0x%v)\n"), -+ fatal (_("%P: common page size (0x%v) > maximum page size (0x%v)\n"), - link_info.commonpagesize, link_info.maxpagesize); - } - } -@@ -121,7 +121,7 @@ ldelf_load_symbols (lang_input_statement_type *entry) - - if (entry->flags.just_syms - && (bfd_get_file_flags (entry->the_bfd) & DYNAMIC) != 0) -- einfo (_("%F%P: %pB: --just-symbols may not be used on DSO\n"), -+ fatal (_("%P: %pB: --just-symbols may not be used on DSO\n"), - entry->the_bfd); - - if (link_class == 0 -@@ -321,7 +321,7 @@ ldelf_try_needed (struct dt_needed *needed, int force, int is_linux) - struct bfd_link_needed_list *needs; - - if (! bfd_elf_get_bfd_needed_list (abfd, &needs)) -- einfo (_("%F%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n"), abfd); -+ fatal (_("%P: %pB: bfd_elf_get_bfd_needed_list failed: %E\n"), abfd); - - if (needs != NULL) - { -@@ -369,7 +369,7 @@ ldelf_try_needed (struct dt_needed *needed, int force, int is_linux) - can only check that using stat. */ - - if (bfd_stat (abfd, &global_stat) != 0) -- einfo (_("%F%P: %pB: bfd_stat failed: %E\n"), abfd); -+ fatal (_("%P: %pB: bfd_stat failed: %E\n"), abfd); - - /* First strip off everything before the last '/'. */ - soname = lbasename (bfd_get_filename (abfd)); -@@ -408,7 +408,7 @@ ldelf_try_needed (struct dt_needed *needed, int force, int is_linux) - - /* Add this file into the symbol table. */ - if (! bfd_link_add_symbols (abfd, &link_info)) -- einfo (_("%F%P: %pB: error adding symbols: %E\n"), abfd); -+ fatal (_("%P: %pB: error adding symbols: %E\n"), abfd); - - return true; - } -@@ -1209,7 +1209,7 @@ ldelf_handle_dt_needed (struct elf_link_hash_table *htab, - && elf_dt_name (abfd) != NULL) - { - if (bfd_elf_add_dt_needed_tag (abfd, &link_info) < 0) -- einfo (_("%F%P: failed to add DT_NEEDED dynamic tag\n")); -+ fatal (_("%P: failed to add DT_NEEDED dynamic tag\n")); - } - - link_info.input_bfds_tail = save_input_bfd_tail; -@@ -1260,10 +1260,8 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd, - bfd_get_target (link_info.output_bfd)); - - if (link_info.out_implib_bfd == NULL) -- { -- einfo (_("%F%P: %s: can't open for writing: %E\n"), -- command_line.out_implib_filename); -- } -+ fatal (_("%P: %s: can't open for writing: %E\n"), -+ command_line.out_implib_filename); - } - - if (ldelf_emit_note_gnu_build_id != NULL -@@ -1317,7 +1315,7 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd, - && (elf_tdata (abfd)->elf_header->e_type == ET_EXEC - || (elf_tdata (abfd)->elf_header->e_type == ET_DYN - && elf_tdata (abfd)->is_pie))) -- einfo (_("%F%P: cannot use executable file '%pB' as input to a link\n"), -+ fatal (_("%P: cannot use executable file '%pB' as input to a link\n"), - abfd); - } - -@@ -1371,7 +1369,7 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd, - } - else if (seen_type != type) - { -- einfo (_("%F%P: compact frame descriptions incompatible with" -+ fatal (_("%P: compact frame descriptions incompatible with" - " DWARF2 .eh_frame from %pB\n"), - type == DWARF2_EH_HDR ? abfd : elfbfd); - break; -@@ -1413,7 +1411,7 @@ ldelf_after_open (int use_libpath, int native, int is_linux, int is_freebsd, - - if (link_info.eh_frame_hdr_type == COMPACT_EH_HDR) - if (!bfd_elf_parse_eh_frame_entries (NULL, &link_info)) -- einfo (_("%F%P: failed to parse EH frame entries\n")); -+ fatal (_("%P: failed to parse EH frame entries\n")); - - ldelf_handle_dt_needed (htab, use_libpath, native, is_linux, - is_freebsd, elfsize, prefix); -@@ -1672,7 +1670,7 @@ ldelf_find_exp_assignment (etree_type *exp) - &link_info, - exp->assign.dst, provide, - exp->assign.hidden)) -- einfo (_("%F%P: failed to record assignment to %s: %E\n"), -+ fatal (_("%P: failed to record assignment to %s: %E\n"), - exp->assign.dst); - } - ldelf_find_exp_assignment (exp->assign.src); -@@ -1852,7 +1850,7 @@ ldelf_before_allocation (char *audit, char *depaudit, - command_line.filter_shlib, audit, depaudit, - (const char * const *) command_line.auxiliary_filters, - &link_info, &sinterp))) -- einfo (_("%F%P: failed to set dynamic section sizes: %E\n")); -+ fatal (_("%P: failed to set dynamic section sizes: %E\n")); - - if (sinterp != NULL) - { -@@ -1889,8 +1887,8 @@ ldelf_before_allocation (char *audit, char *depaudit, - msg = (char *) xmalloc ((size_t) (sz + 1)); - if (! bfd_get_section_contents (is->the_bfd, s, msg, - (file_ptr) 0, sz)) -- einfo (_("%F%P: %pB: can't read contents of section .gnu.warning: %E\n"), -- is->the_bfd); -+ fatal (_("%P: %pB: can't read contents of section %pA: %E\n"), -+ is->the_bfd, s); - msg[sz] = '\0'; - (*link_info.callbacks->warning) (&link_info, msg, - (const char *) NULL, is->the_bfd, -@@ -1917,7 +1915,7 @@ ldelf_before_allocation (char *audit, char *depaudit, - before_allocation_default (); - - if (!bfd_elf_size_dynsym_hash_dynstr (link_info.output_bfd, &link_info)) -- einfo (_("%F%P: failed to set dynamic section sizes: %E\n")); -+ fatal (_("%P: failed to set dynamic section sizes: %E\n")); - - if (ehdr_start != NULL) - { -diff --git a/ld/ldelfgen.c b/ld/ldelfgen.c -index c649768634c..8e84b7a5b3f 100644 ---- a/ld/ldelfgen.c -+++ b/ld/ldelfgen.c -@@ -282,7 +282,7 @@ ldelf_map_segments (bool need_layout) - if (os_info->ordered != os_info->count - && bfd_link_relocatable (&link_info)) - { -- einfo (_("%F%P: " -+ fatal (_("%P: " - "%pA has both ordered and unordered sections\n"), - os->bfd_section); - return; -@@ -307,7 +307,7 @@ ldelf_map_segments (bool need_layout) - if (!_bfd_elf_map_sections_to_segments (link_info.output_bfd, - &link_info, - &need_layout)) -- einfo (_("%F%P: map sections to segments failed: %E\n")); -+ fatal (_("%P: map sections to segments failed: %E\n")); - - if (phdr_size != elf_program_header_size (link_info.output_bfd)) - { -@@ -327,7 +327,7 @@ ldelf_map_segments (bool need_layout) - while (need_layout && --tries); - - if (tries == 0) -- einfo (_("%F%P: looping in map_segments\n")); -+ fatal (_("%P: looping in map_segments\n")); - - if (bfd_get_flavour (link_info.output_bfd) == bfd_target_elf_flavour - && lang_phdr_list == NULL) -@@ -337,9 +337,8 @@ ldelf_map_segments (bool need_layout) - const struct elf_backend_data *bed - = get_elf_backend_data (link_info.output_bfd); - if (bed->elf_backend_strip_zero_sized_dynamic_sections -- && !bed->elf_backend_strip_zero_sized_dynamic_sections -- (&link_info)) -- einfo (_("%F%P: failed to strip zero-sized dynamic sections\n")); -+ && !bed->elf_backend_strip_zero_sized_dynamic_sections (&link_info)) -+ fatal (_("%P: failed to strip zero-sized dynamic sections\n")); - } - } - -@@ -417,7 +416,7 @@ ldelf_acquire_strings_for_ctf - { - if (ctf_link_add_strtab (ctf_output, ldelf_ctf_strtab_iter_cb, - &args) < 0) -- einfo (_("%F%P: warning: CTF strtab association failed; strings will " -+ fatal (_("%P: warning: CTF strtab association failed; strings will " - "not be shared: %s\n"), - ctf_errmsg (ctf_errno (ctf_output))); - } -@@ -444,7 +443,7 @@ ldelf_new_dynsym_for_ctf (struct ctf_dict *ctf_output, int symidx, - lsym.st_value = sym->st_value; - if (ctf_link_add_linker_symbol (ctf_output, &lsym) < 0) - { -- einfo (_("%F%P: warning: CTF symbol addition failed; CTF will " -+ fatal (_("%P: warning: CTF symbol addition failed; CTF will " - "not be tied to symbols: %s\n"), - ctf_errmsg (ctf_errno (ctf_output))); - } -@@ -454,7 +453,7 @@ ldelf_new_dynsym_for_ctf (struct ctf_dict *ctf_output, int symidx, - /* Shuffle all the symbols. */ - - if (ctf_link_shuffle_syms (ctf_output) < 0) -- einfo (_("%F%P: warning: CTF symbol shuffling failed; CTF will " -+ fatal (_("%P: warning: CTF symbol shuffling failed; CTF will " - "not be tied to symbols: %s\n"), - ctf_errmsg (ctf_errno (ctf_output))); - } -diff --git a/ld/ldemul.c b/ld/ldemul.c -index 0f3cb1a0125..dce0d385fe0 100644 ---- a/ld/ldemul.c -+++ b/ld/ldemul.c -@@ -349,7 +349,7 @@ ldemul_choose_mode (char *target) - einfo (_("%P: unrecognised emulation mode: %s\n"), target); - einfo (_("Supported emulations: ")); - ldemul_list_emulations (stderr); -- einfo ("%F\n"); -+ fatal ("\n"); - } - - void -diff --git a/ld/ldexp.c b/ld/ldexp.c -index 87d882e5066..fd741ec7e42 100644 ---- a/ld/ldexp.c -+++ b/ld/ldexp.c -@@ -282,7 +282,7 @@ definedness_newfunc (struct bfd_hash_entry *entry, - bfd_hash_allocate (table, sizeof (struct definedness_hash_entry)); - - if (ret == NULL) -- einfo (_("%F%P: bfd_hash_allocate failed creating symbol %s\n"), name); -+ fatal (_("%P: bfd_hash_allocate failed creating symbol %s\n"), name); - - ret->by_object = 0; - ret->iteration = 0; -@@ -313,7 +313,7 @@ update_definedness (const char *name, struct bfd_link_hash_entry *h) - bfd_hash_lookup (&definedness_table, name, true, false); - - if (defentry == NULL) -- einfo (_("%F%P: bfd_hash_lookup failed creating symbol %s\n"), name); -+ fatal (_("%P: bfd_hash_lookup failed creating symbol %s\n"), name); - - /* If the symbol was already defined, and not by a script, then it - must be defined by an object file or by the linker target code. */ -@@ -638,7 +638,7 @@ fold_binary (etree_type *tree) - expld.result.value = ((bfd_signed_vma) lhs.value - % (bfd_signed_vma) expld.result.value); - else if (expld.phase != lang_mark_phase_enum) -- einfo (_("%F%P:%pS %% by zero\n"), tree->binary.rhs); -+ fatal (_("%P:%pS %% by zero\n"), tree->binary.rhs); - arith_result_section (&lhs); - break; - -@@ -647,7 +647,7 @@ fold_binary (etree_type *tree) - expld.result.value = ((bfd_signed_vma) lhs.value - / (bfd_signed_vma) expld.result.value); - else if (expld.phase != lang_mark_phase_enum) -- einfo (_("%F%P:%pS / by zero\n"), tree->binary.rhs); -+ fatal (_("%P:%pS / by zero\n"), tree->binary.rhs); - arith_result_section (&lhs); - break; - -@@ -761,7 +761,7 @@ fold_name (etree_type *tree) - if (!h) - { - if (expld.phase != lang_first_phase_enum) -- einfo (_("%F%P: bfd_link_hash_lookup failed: %E\n")); -+ fatal (_("%P: bfd_link_hash_lookup failed: %E\n")); - } - else if (h->type == bfd_link_hash_defined - || h->type == bfd_link_hash_defweak) -@@ -789,7 +789,7 @@ fold_name (etree_type *tree) - else if (expld.phase == lang_final_phase_enum - || (expld.phase != lang_mark_phase_enum - && expld.assigning_to_dot)) -- einfo (_("%F%P:%pS: undefined symbol `%s'" -+ fatal (_("%P:%pS: undefined symbol `%s'" - " referenced in expression\n"), - tree, tree->name.name); - else if (h->type == bfd_link_hash_new) -@@ -827,7 +827,7 @@ fold_name (etree_type *tree) - if (os == NULL) - { - if (expld.phase == lang_final_phase_enum) -- einfo (_("%F%P:%pS: undefined section `%s'" -+ fatal (_("%P:%pS: undefined section `%s'" - " referenced in expression\n"), - tree, tree->name.name); - } -@@ -845,7 +845,7 @@ fold_name (etree_type *tree) - if (os == NULL) - { - if (expld.phase == lang_final_phase_enum) -- einfo (_("%F%P:%pS: undefined section `%s'" -+ fatal (_("%P:%pS: undefined section `%s'" - " referenced in expression\n"), - tree, tree->name.name); - } -@@ -873,7 +873,7 @@ fold_name (etree_type *tree) - if (os == NULL) - { - if (expld.phase == lang_final_phase_enum) -- einfo (_("%F%P:%pS: undefined section `%s'" -+ fatal (_("%P:%pS: undefined section `%s'" - " referenced in expression\n"), - tree, tree->name.name); - new_number (0); -@@ -912,7 +912,7 @@ fold_name (etree_type *tree) - if (mem != NULL) - new_number (mem->length); - else -- einfo (_("%F%P:%pS: undefined MEMORY region `%s'" -+ fatal (_("%P:%pS: undefined MEMORY region `%s'" - " referenced in expression\n"), - tree, tree->name.name); - } -@@ -926,7 +926,7 @@ fold_name (etree_type *tree) - if (mem != NULL) - new_rel_from_abs (mem->origin); - else -- einfo (_("%F%P:%pS: undefined MEMORY region `%s'" -+ fatal (_("%P:%pS: undefined MEMORY region `%s'" - " referenced in expression\n"), - tree, tree->name.name); - } -@@ -938,7 +938,7 @@ fold_name (etree_type *tree) - else if (strcmp (tree->name.name, "COMMONPAGESIZE") == 0) - new_number (link_info.commonpagesize); - else -- einfo (_("%F%P:%pS: unknown constant `%s' referenced in expression\n"), -+ fatal (_("%P:%pS: unknown constant `%s' referenced in expression\n"), - tree, tree->name.name); - break; - -@@ -1086,7 +1086,7 @@ exp_fold_tree_1 (etree_type *tree) - if (tree->assign.dst[0] == '.' && tree->assign.dst[1] == 0) - { - if (tree->type.node_class != etree_assign) -- einfo (_("%F%P:%pS can not PROVIDE assignment to" -+ fatal (_("%P:%pS can not PROVIDE assignment to" - " location counter\n"), tree); - if (expld.phase != lang_first_phase_enum) - { -@@ -1119,11 +1119,11 @@ exp_fold_tree_1 (etree_type *tree) - || expld.section == bfd_und_section_ptr) - { - if (expld.phase != lang_mark_phase_enum) -- einfo (_("%F%P:%pS invalid assignment to" -+ fatal (_("%P:%pS invalid assignment to" - " location counter\n"), tree); - } - else if (expld.dotp == NULL) -- einfo (_("%F%P:%pS assignment to location counter" -+ fatal (_("%P:%pS assignment to location counter" - " invalid outside of SECTIONS\n"), tree); - - /* After allocation, assignment to dot should not be -@@ -1142,7 +1142,7 @@ exp_fold_tree_1 (etree_type *tree) - nextdot += expld.section->vma; - if (nextdot < expld.dot - && expld.section != bfd_abs_section_ptr) -- einfo (_("%F%P:%pS cannot move location counter backwards" -+ fatal (_("%P:%pS cannot move location counter backwards" - " (from %V to %V)\n"), - tree, expld.dot, nextdot); - else -@@ -1202,7 +1202,7 @@ exp_fold_tree_1 (etree_type *tree) - h = bfd_link_hash_lookup (link_info.hash, tree->assign.dst, - true, false, true); - if (h == NULL) -- einfo (_("%F%P:%s: hash creation failed\n"), -+ fatal (_("%P:%s: hash creation failed\n"), - tree->assign.dst); - } - -@@ -1578,7 +1578,7 @@ exp_get_vma (etree_type *tree, lang_output_section_statement_type *os, - if (expld.result.valid_p) - return expld.result.value; - else if (name != NULL && expld.phase != lang_mark_phase_enum) -- einfo (_("%F%P:%pS: nonconstant expression for %s\n"), -+ fatal (_("%P:%pS: nonconstant expression for %s\n"), - tree, name); - } - return def; -@@ -1621,7 +1621,7 @@ exp_get_fill (etree_type *tree, fill_type *def, char *name) - if (!expld.result.valid_p) - { - if (name != NULL && expld.phase != lang_mark_phase_enum) -- einfo (_("%F%P:%pS: nonconstant expression for %s\n"), -+ fatal (_("%P:%pS: nonconstant expression for %s\n"), - tree, name); - return def; - } -@@ -1681,7 +1681,7 @@ exp_get_abs_int (etree_type *tree, int def, char *name) - } - else if (name != NULL && expld.phase != lang_mark_phase_enum) - { -- einfo (_("%F%P:%pS: nonconstant expression for %s\n"), -+ fatal (_("%P:%pS: nonconstant expression for %s\n"), - tree, name); - } - } -@@ -1708,7 +1708,7 @@ ldexp_init (bool object_only) - definedness_newfunc, - sizeof (struct definedness_hash_entry), - 13)) -- einfo (_("%F%P: can not create hash table: %E\n")); -+ fatal (_("%P: can not create hash table: %E\n")); - } - - /* Convert absolute symbols defined by a script from "dot" (also -diff --git a/ld/ldfile.c b/ld/ldfile.c -index 404af5fba14..75fd360d5e3 100644 ---- a/ld/ldfile.c -+++ b/ld/ldfile.c -@@ -184,7 +184,7 @@ ldfile_add_remap_file (const char * file) - - if (*p == '\0') - { -- einfo ("%F%P: malformed remap file entry: %s\n", line); -+ fatal ("%P: malformed remap file entry: %s\n", line); - continue; - } - -@@ -196,7 +196,7 @@ ldfile_add_remap_file (const char * file) - - if (*p == '\0') - { -- einfo ("%F%P: malformed remap file entry: %s\n", line); -+ fatal ("%P: malformed remap file entry: %s\n", line); - continue; - } - -@@ -378,7 +378,7 @@ ldfile_try_open_bfd (const char *attempt, - if (entry->the_bfd == NULL) - { - if (bfd_get_error () == bfd_error_invalid_target) -- einfo (_("%F%P: invalid BFD target `%s'\n"), entry->target); -+ fatal (_("%P: invalid BFD target `%s'\n"), entry->target); - return false; - } - -@@ -521,7 +521,7 @@ ldfile_try_open_bfd (const char *attempt, - - if (!entry->flags.dynamic && (entry->the_bfd->flags & DYNAMIC) != 0) - { -- einfo (_("%F%P: attempted static link of dynamic object `%s'\n"), -+ fatal (_("%P: attempted static link of dynamic object `%s'\n"), - attempt); - bfd_close (entry->the_bfd); - entry->the_bfd = NULL; -@@ -927,7 +927,7 @@ ldfile_open_command_file_1 (const char *name, enum script_open_style open_how) - if ((open_how != script_nonT || script->open_how != script_nonT) - && strcmp (name, script->name) == 0) - { -- einfo (_("%F%P: error: linker script file '%s'" -+ fatal (_("%P: error: linker script file '%s'" - " appears multiple times\n"), name); - return; - } -@@ -946,7 +946,7 @@ ldfile_open_command_file_1 (const char *name, enum script_open_style open_how) - if (ldlex_input_stack == NULL) - { - bfd_set_error (bfd_error_system_call); -- einfo (_("%F%P: cannot open linker script file %s: %E\n"), name); -+ fatal (_("%P: cannot open linker script file %s: %E\n"), name); - return; - } - -@@ -1040,7 +1040,7 @@ ldfile_set_output_arch (const char *string, enum bfd_architecture defarch) - else if (defarch != bfd_arch_unknown) - ldfile_output_architecture = defarch; - else -- einfo (_("%F%P: cannot represent machine `%s'\n"), string); -+ fatal (_("%P: cannot represent machine `%s'\n"), string); - } - - /* Tidy up memory. */ -diff --git a/ld/ldgram.y b/ld/ldgram.y -index 9bb98de2f0a..6635e598562 100644 ---- a/ld/ldgram.y -+++ b/ld/ldgram.y -@@ -210,7 +210,7 @@ mri_script_command: - CHIP exp - | CHIP exp ',' exp - | NAME { -- einfo(_("%F%P: unrecognised keyword in MRI style script '%s'\n"),$1); -+ fatal (_("%P: unrecognised keyword in MRI style script '%s'\n"), $1); - } - | LIST { - config.map_filename = "-"; -@@ -1581,7 +1581,7 @@ yyerror (const char *arg) - einfo (_("%P:%s: file format not recognized; treating as linker script\n"), - ldlex_filename ()); - if (error_index > 0 && error_index < ERROR_NAME_MAX) -- einfo (_("%F%P:%pS: %s in %s\n"), NULL, arg, error_names[error_index - 1]); -+ fatal (_("%P:%pS: %s in %s\n"), NULL, arg, error_names[error_index - 1]); - else -- einfo ("%F%P:%pS: %s\n", NULL, arg); -+ fatal ("%P:%pS: %s\n", NULL, arg); - } -diff --git a/ld/ldlang.c b/ld/ldlang.c -index 4a4acaa5493..d2c9b96bfa0 100644 ---- a/ld/ldlang.c -+++ b/ld/ldlang.c -@@ -1352,7 +1352,7 @@ output_section_statement_table_init (void) - output_section_statement_newfunc, - sizeof (struct out_section_hash_entry), - 61)) -- einfo (_("%F%P: can not create hash table: %E\n")); -+ fatal (_("%P: can not create hash table: %E\n")); - } - - static void -@@ -1485,7 +1485,7 @@ lang_memory_region_alias (const char *alias, const char *region_name) - the default memory region. */ - if (strcmp (region_name, DEFAULT_MEMORY_REGION) == 0 - || strcmp (alias, DEFAULT_MEMORY_REGION) == 0) -- einfo (_("%F%P:%pS: error: alias for default memory region\n"), NULL); -+ fatal (_("%P:%pS: error: alias for default memory region\n"), NULL); - - /* Look for the target region and check if the alias is not already - in use. */ -@@ -1496,14 +1496,14 @@ lang_memory_region_alias (const char *alias, const char *region_name) - if (region == NULL && strcmp (n->name, region_name) == 0) - region = r; - if (strcmp (n->name, alias) == 0) -- einfo (_("%F%P:%pS: error: redefinition of memory region " -+ fatal (_("%P:%pS: error: redefinition of memory region " - "alias `%s'\n"), - NULL, alias); - } - - /* Check if the target region exists. */ - if (region == NULL) -- einfo (_("%F%P:%pS: error: memory region `%s' " -+ fatal (_("%P:%pS: error: memory region `%s' " - "for alias `%s' does not exist\n"), - NULL, region_name, alias); - -@@ -1564,7 +1564,7 @@ lang_output_section_statement_lookup (const char *name, - if (entry == NULL) - { - if (create) -- einfo (_("%F%P: failed creating section `%s': %E\n"), name); -+ fatal (_("%P: failed creating section `%s': %E\n"), name); - return NULL; - } - -@@ -1607,7 +1607,7 @@ lang_output_section_statement_lookup (const char *name, - name); - if (entry == NULL) - { -- einfo (_("%F%P: failed creating section `%s': %E\n"), name); -+ fatal (_("%P: failed creating section `%s': %E\n"), name); - return NULL; - } - entry->root = last_ent->root; -@@ -2479,7 +2479,7 @@ static void - init_os (lang_output_section_statement_type *s, flagword flags) - { - if (strcmp (s->name, DISCARD_SECTION_NAME) == 0) -- einfo (_("%F%P: illegal use of `%s' section\n"), DISCARD_SECTION_NAME); -+ fatal (_("%P: illegal use of `%s' section\n"), DISCARD_SECTION_NAME); - - if (!s->dup_output) - s->bfd_section = bfd_get_section_by_name (link_info.output_bfd, s->name); -@@ -2488,7 +2488,7 @@ init_os (lang_output_section_statement_type *s, flagword flags) - s->name, flags); - if (s->bfd_section == NULL) - { -- einfo (_("%F%P: output format %s cannot represent section" -+ fatal (_("%P: output format %s cannot represent section" - " called %s: %E\n"), - link_info.output_bfd->xvec->name, s->name); - } -@@ -3076,11 +3076,11 @@ load_symbols (lang_input_statement_type *entry, - for (p = matching; *p != NULL; p++) - einfo (" %s", *p); - free (matching); -- einfo ("%F\n"); -+ fatal ("\n"); - } - else if (err != bfd_error_file_not_recognized - || place == NULL) -- einfo (_("%F%P: %pB: file not recognized: %E\n"), entry->the_bfd); -+ fatal (_("%P: %pB: file not recognized: %E\n"), entry->the_bfd); - - bfd_close (entry->the_bfd); - entry->the_bfd = NULL; -@@ -3153,7 +3153,7 @@ load_symbols (lang_input_statement_type *entry, - - if (!bfd_check_format (member, bfd_object)) - { -- einfo (_("%F%P: %pB: member %pB in archive is not an object\n"), -+ fatal (_("%P: %pB: member %pB in archive is not an object\n"), - entry->the_bfd, member); - loaded = false; - } -@@ -3174,7 +3174,7 @@ load_symbols (lang_input_statement_type *entry, - substitute BFD for us. */ - if (!bfd_link_add_symbols (subsbfd, &link_info)) - { -- einfo (_("%F%P: %pB: error adding symbols: %E\n"), member); -+ fatal (_("%P: %pB: error adding symbols: %E\n"), member); - loaded = false; - } - } -@@ -3188,7 +3188,7 @@ load_symbols (lang_input_statement_type *entry, - if (bfd_link_add_symbols (entry->the_bfd, &link_info)) - entry->flags.loaded = true; - else -- einfo (_("%F%P: %pB: error adding symbols: %E\n"), entry->the_bfd); -+ fatal (_("%P: %pB: error adding symbols: %E\n"), entry->the_bfd); - - return entry->flags.loaded; - } -@@ -3429,7 +3429,7 @@ open_output (const char *name) - { - char *in = lrealpath (f->local_sym_name); - if (filename_cmp (in, out) == 0) -- einfo (_("%F%P: input file '%s' is the same as output file\n"), -+ fatal (_("%P: input file '%s' is the same as output file\n"), - f->filename); - free (in); - } -@@ -3491,23 +3491,23 @@ open_output (const char *name) - if (link_info.output_bfd == NULL) - { - if (bfd_get_error () == bfd_error_invalid_target) -- einfo (_("%F%P: target %s not found\n"), output_target); -+ fatal (_("%P: target %s not found\n"), output_target); - -- einfo (_("%F%P: cannot open output file %s: %E\n"), name); -+ fatal (_("%P: cannot open output file %s: %E\n"), name); - } - - delete_output_file_on_failure = true; - - if (!bfd_set_format (link_info.output_bfd, bfd_object)) -- einfo (_("%F%P: %s: can not make object file: %E\n"), name); -+ fatal (_("%P: %s: can not make object file: %E\n"), name); - if (!bfd_set_arch_mach (link_info.output_bfd, -- ldfile_output_architecture, -- ldfile_output_machine)) -- einfo (_("%F%P: %s: can not set architecture: %E\n"), name); -+ ldfile_output_architecture, -+ ldfile_output_machine)) -+ fatal (_("%P: %s: can not set architecture: %E\n"), name); - - link_info.hash = bfd_link_hash_table_create (link_info.output_bfd); - if (link_info.hash == NULL) -- einfo (_("%F%P: can not create hash table: %E\n")); -+ fatal (_("%P: can not create hash table: %E\n")); - - bfd_set_gp_size (link_info.output_bfd, g_switch_value); - } -@@ -3721,7 +3721,7 @@ open_input_bfds (lang_statement_union_type *s, - - /* Exit if any of the files were missing. */ - if (input_flags.missing_file) -- einfo ("%F"); -+ fatal (""); - } - - #ifdef ENABLE_LIBCTF -@@ -4032,7 +4032,7 @@ insert_undefined (const char *name) - - h = bfd_link_hash_lookup (link_info.hash, name, true, false, true); - if (h == NULL) -- einfo (_("%F%P: bfd_link_hash_lookup failed: %E\n")); -+ fatal (_("%P: bfd_link_hash_lookup failed: %E\n")); - if (h->type == bfd_link_hash_new) - { - h->type = bfd_link_hash_undefined; -@@ -4318,7 +4318,7 @@ map_input_to_output_sections - else if (strcmp (name, "SHT_PREINIT_ARRAY") == 0) - type = SHT_PREINIT_ARRAY; - else -- einfo (_ ("%F%P: invalid type for output section `%s'\n"), -+ fatal (_ ("%P: invalid type for output section `%s'\n"), - os->name); - } - else -@@ -4327,7 +4327,7 @@ map_input_to_output_sections - if (expld.result.valid_p) - type = expld.result.value; - else -- einfo (_ ("%F%P: invalid type for output section `%s'\n"), -+ fatal (_ ("%P: invalid type for output section `%s'\n"), - os->name); - } - break; -@@ -4476,7 +4476,7 @@ process_insert_statements (lang_statement_union_type **start) - } - if (where == NULL) - { -- einfo (_("%F%P: %s not found for insert\n"), i->where); -+ fatal (_("%P: %s not found for insert\n"), i->where); - return; - } - -@@ -5558,12 +5558,12 @@ size_input_section - if (dot + TO_ADDR (i->size) > end) - { - if (i->flags & SEC_LINKER_CREATED) -- einfo (_("%F%P: Output section `%pA' not large enough for " -+ fatal (_("%P: Output section `%pA' not large enough for " - "the linker-created stubs section `%pA'.\n"), - i->output_section, i); - - if (i->rawsize && i->rawsize != i->size) -- einfo (_("%F%P: Relaxation not supported with " -+ fatal (_("%P: Relaxation not supported with " - "--enable-non-contiguous-regions (section `%pA' " - "would overflow `%pA' after it changed size).\n"), - i, i->output_section); -@@ -5919,7 +5919,7 @@ lang_size_sections_1 - dot += expld.result.section->vma; - } - else if (expld.phase != lang_mark_phase_enum) -- einfo (_("%F%P:%pS: non constant or forward reference" -+ fatal (_("%P:%pS: non constant or forward reference" - " address expression for section %s\n"), - os->addr_tree, os->name); - } -@@ -6002,7 +6002,7 @@ lang_size_sections_1 - overridden by the using the --no-check-sections - switch. */ - if (command_line.check_section_addresses) -- einfo (_("%F%P: error: no memory region specified" -+ fatal (_("%P: error: no memory region specified" - " for loadable section `%s'\n"), - bfd_section_name (os->bfd_section)); - else -@@ -6309,7 +6309,7 @@ lang_size_sections_1 - bool again; - - if (!bfd_relax_section (i->owner, i, &link_info, &again)) -- einfo (_("%F%P: can't relax section: %E\n")); -+ fatal (_("%P: can't relax section: %E\n")); - if (again) - *relax = true; - } -@@ -6718,7 +6718,7 @@ lang_do_assignments_1 (lang_statement_union_type *s, - s->data_statement.value += expld.result.section->vma; - } - else if (expld.phase == lang_final_phase_enum) -- einfo (_("%F%P: invalid data statement\n")); -+ fatal (_("%P: invalid data statement\n")); - { - unsigned int size; - switch (s->data_statement.type) -@@ -6751,7 +6751,7 @@ lang_do_assignments_1 (lang_statement_union_type *s, - if (expld.result.valid_p) - s->reloc_statement.addend_value = expld.result.value; - else if (expld.phase == lang_final_phase_enum) -- einfo (_("%F%P: invalid reloc statement\n")); -+ fatal (_("%P: invalid reloc statement\n")); - dot += TO_ADDR (bfd_get_reloc_size (s->reloc_statement.howto)); - break; - -@@ -7169,7 +7169,7 @@ lang_end (void) - break; - } - if (!sym) -- einfo (_("%F%P: --gc-sections requires a defined symbol root " -+ fatal (_("%P: --gc-sections requires a defined symbol root " - "specified by -e or -u\n")); - } - -@@ -7194,7 +7194,7 @@ lang_end (void) - + bfd_section_vma (h->u.def.section->output_section) - + h->u.def.section->output_offset); - if (!bfd_set_start_address (link_info.output_bfd, val)) -- einfo (_("%F%P: %s: can't set start address\n"), entry_symbol.name); -+ fatal (_("%P: %s: can't set start address\n"), entry_symbol.name); - } - else - { -@@ -7207,7 +7207,7 @@ lang_end (void) - if (*send == '\0') - { - if (!bfd_set_start_address (link_info.output_bfd, val)) -- einfo (_("%F%P: can't set start address\n")); -+ fatal (_("%P: can't set start address\n")); - } - /* BZ 2004952: Only use the start of the entry section for executables. */ - else if bfd_link_executable (&link_info) -@@ -7226,7 +7226,7 @@ lang_end (void) - bfd_section_vma (ts)); - if (!bfd_set_start_address (link_info.output_bfd, - bfd_section_vma (ts))) -- einfo (_("%F%P: can't set start address\n")); -+ fatal (_("%P: can't set start address\n")); - } - else - { -@@ -7295,11 +7295,10 @@ lang_check (void) - != bfd_get_flavour (link_info.output_bfd))) - && (bfd_get_file_flags (input_bfd) & HAS_RELOC) != 0) - { -- einfo (_("%F%P: relocatable linking with relocations from" -+ fatal (_("%P: relocatable linking with relocations from" - " format %s (%pB) to format %s (%pB) is not supported\n"), - bfd_get_target (input_bfd), input_bfd, - bfd_get_target (link_info.output_bfd), link_info.output_bfd); -- /* einfo with %F exits. */ - } - - if (compatible == NULL) -@@ -7400,7 +7399,7 @@ lang_one_common (struct bfd_link_hash_entry *h, void *info) - - section = h->u.c.p->section; - if (!bfd_define_common_symbol (link_info.output_bfd, &link_info, h)) -- einfo (_("%F%P: could not define common symbol `%pT': %E\n"), -+ fatal (_("%P: could not define common symbol `%pT': %E\n"), - h->root.string); - - if (config.map_file != NULL) -@@ -7578,7 +7577,7 @@ lang_set_flags (lang_memory_region_type *ptr, const char *flags, int invert) - break; - - default: -- einfo (_("%F%P: invalid character %c (%d) in flags\n"), -+ fatal (_("%P: invalid character %c (%d) in flags\n"), - *flags, *flags); - break; - } -@@ -7672,7 +7671,7 @@ lang_enter_output_section_statement (const char *output_section_statement_name, - constraint, - in_section_ordering ? 0 : 2); - if (os == NULL) /* && in_section_ordering */ -- einfo (_("%F%P:%pS: error: output section '%s' must already exist\n"), -+ fatal (_("%P:%pS: error: output section '%s' must already exist\n"), - NULL, output_section_statement_name); - current_section = os; - -@@ -7696,7 +7695,7 @@ lang_enter_output_section_statement (const char *output_section_statement_name, - - os->align_lma_with_input = align_with_input == ALIGN_WITH_INPUT; - if (os->align_lma_with_input && align != NULL) -- einfo (_("%F%P:%pS: error: align with input and explicit align specified\n"), -+ fatal (_("%P:%pS: error: align with input and explicit align specified\n"), - NULL); - - os->subsection_alignment = subalign; -@@ -8233,7 +8232,7 @@ lang_process (void) - lang_place_undefineds (); - - if (!bfd_section_already_linked_table_init ()) -- einfo (_("%F%P: can not create hash table: %E\n")); -+ fatal (_("%P: can not create hash table: %E\n")); - - /* A first pass through the memory regions ensures that if any region - references a symbol for its origin or length then this symbol will be -@@ -8271,7 +8270,7 @@ lang_process (void) - files = file_chain; - inputfiles = input_file_chain; - if (plugin_call_all_symbols_read ()) -- einfo (_("%F%P: %s: plugin reported error after all symbols read\n"), -+ fatal (_("%P: %s: plugin reported error after all symbols read\n"), - plugin_error_plugin ()); - link_info.lto_all_symbols_read = true; - /* Open any newly added files, updating the file chains. */ -@@ -8508,7 +8507,7 @@ lang_process (void) - assigning dynamic symbols, since removing whole input sections - is hard then. */ - if (!bfd_merge_sections (link_info.output_bfd, &link_info)) -- einfo (_("%F%P: bfd_merge_sections failed: %E\n")); -+ fatal (_("%P: bfd_merge_sections failed: %E\n")); - - /* Look for a text section and set the readonly attribute in it. */ - found = bfd_get_section_by_name (link_info.output_bfd, ".text"); -@@ -8884,9 +8883,7 @@ void - lang_startup (const char *name) - { - if (first_file->filename != NULL) -- { -- einfo (_("%F%P: multiple STARTUP files\n")); -- } -+ fatal (_("%P: multiple STARTUP files\n")); - first_file->filename = name; - first_file->local_sym_name = name; - first_file->flags.real = true; -@@ -9113,7 +9110,7 @@ lang_record_phdrs (void) - break; - } - if (last == NULL) -- einfo (_("%F%P: no sections assigned to phdrs\n")); -+ fatal (_("%P: no sections assigned to phdrs\n")); - } - pl = last; - } -@@ -9151,7 +9148,7 @@ lang_record_phdrs (void) - if (!bfd_record_phdr (link_info.output_bfd, l->type, - l->flags != NULL, flags, l->at != NULL, - at, l->filehdr, l->phdrs, c, secs)) -- einfo (_("%F%P: bfd_record_phdr failed: %E\n")); -+ fatal (_("%P: bfd_record_phdr failed: %E\n")); - } - - free (secs); -@@ -10441,7 +10438,7 @@ setup_section (bfd *ibfd, sec_ptr isection, void *p) - - loser: - arg->status = 1; -- einfo (_("%P%F: setup_section: %s: %s\n"), err, name); -+ fatal (_("%P: setup_section: %s: %s\n"), err, name); - } - - /* Copy the data of input section ISECTION of IBFD -@@ -10536,7 +10533,7 @@ copy_section (bfd *ibfd, sec_ptr isection, void *p) - return; - - loser: -- einfo (_("%P%F: copy_section: %s: %s\n"), err, isection->name); -+ fatal (_("%P: copy_section: %s: %s\n"), err, isection->name); - } - /* Open the temporary bfd created in the same directory as PATH. */ - -@@ -10773,7 +10770,7 @@ cmdline_add_object_only_section (bfd_byte *contents, size_t size) - if (!bfd_close (obfd)) - { - unlink (ofilename); -- einfo (_("%P%F: failed to finish output with object-only section\n")); -+ fatal (_("%P: failed to finish output with object-only section\n")); - } - - /* Must be freed after bfd_close (). */ -@@ -10783,7 +10780,7 @@ cmdline_add_object_only_section (bfd_byte *contents, size_t size) - if (rename (ofilename, output_filename)) - { - unlink (ofilename); -- einfo (_("%P%F: failed to rename output with object-only section\n")); -+ fatal (_("%P: failed to rename output with object-only section\n")); - } - - free (ofilename); -@@ -10799,7 +10796,7 @@ loser: - unlink (ofilename); - free (ofilename); - } -- einfo (_("%P%F: failed to add object-only section: %s\n"), err); -+ fatal (_("%P: failed to add object-only section: %s\n"), err); - } - - /* Emit the final output with object-only section. */ -@@ -10832,7 +10829,7 @@ cmdline_emit_object_only_section (void) - ldemul_create_output_section_statements (); - - if (!bfd_section_already_linked_table_init ()) -- einfo (_("%P%F: Failed to create hash table\n")); -+ fatal (_("%P: Failed to create hash table\n")); - - /* Call cmdline_on_object_only_archive_list_p to check which member - should be loaded. */ -@@ -10896,8 +10893,8 @@ cmdline_emit_object_only_section (void) - lang_finish (); - - if (! bfd_close (link_info.output_bfd)) -- einfo (_("%P%F:%s: final close failed on object-only output: %E\n"), -- output_filename); -+ fatal (_("%P:%s: final close failed on object-only output: %E\n"), -+ output_filename); - - link_info.output_bfd = NULL; - -@@ -10906,7 +10903,7 @@ cmdline_emit_object_only_section (void) - if (fd < 0) - { - bfd_set_error (bfd_error_system_call); -- einfo (_("%P%F:%s: cannot open object-only output: %E\n"), -+ fatal (_("%P:%s: cannot open object-only output: %E\n"), - output_filename); - } - -@@ -10914,7 +10911,7 @@ cmdline_emit_object_only_section (void) - if (fstat (fd, &st) != 0) - { - bfd_set_error (bfd_error_system_call); -- einfo (_("%P%F:%s: cannot stat object-only output: %E\n"), -+ fatal (_("%P:%s: cannot stat object-only output: %E\n"), - output_filename); - } - -@@ -10929,7 +10926,7 @@ cmdline_emit_object_only_section (void) - if (got < 0) - { - bfd_set_error (bfd_error_system_call); -- einfo (_("%P%F:%s: read failed on object-only output: %E\n"), -+ fatal (_("%P:%s: read failed on object-only output: %E\n"), - output_filename); - } - -@@ -10956,8 +10953,7 @@ cmdline_extract_object_only_section (bfd *abfd) - const char *name = bfd_extract_object_only_section (abfd); - - if (name == NULL) -- einfo (_("%P%F: cannot extract object-only section from %B: %E\n"), -- abfd); -+ fatal (_("%P: cannot extract object-only section from %B: %E\n"), abfd); - - /* It should be removed after it is done. */ - cmdline_list_append (&cmdline_temp_object_only_list, -@@ -10991,7 +10987,7 @@ cmdline_load_object_only_section (const char *name) - if (bfd_link_add_symbols (entry->the_bfd, &link_info)) - entry->flags.loaded = true; - else -- einfo (_("%F%P: %pB: error adding symbols: %E\n"), entry->the_bfd); -+ fatal (_("%P: %pB: error adding symbols: %E\n"), entry->the_bfd); - } - - /* Check and handle the object-only section. */ -diff --git a/ld/ldlex.l b/ld/ldlex.l -index 58eca1b2fe7..a7bf4917642 100644 ---- a/ld/ldlex.l -+++ b/ld/ldlex.l -@@ -506,9 +506,7 @@ void - lex_push_file (FILE *file, const char *name, unsigned int sysrooted) - { - if (include_stack_ptr >= MAX_INCLUDE_DEPTH) -- { -- einfo (_("%F:includes nested too deeply\n")); -- } -+ fatal (_("%P: includes nested too deeply\n")); - file_name_stack[include_stack_ptr] = name; - lineno_stack[include_stack_ptr] = lineno; - sysrooted_stack[include_stack_ptr] = input_flags.sysrooted; -@@ -570,9 +568,7 @@ lex_redirect (const char *string, const char *fake_filename, unsigned int count) - - yy_init = 0; - if (include_stack_ptr >= MAX_INCLUDE_DEPTH) -- { -- einfo (_("%F: macros nested too deeply\n")); -- } -+ fatal (_("%P: macros nested too deeply\n")); - file_name_stack[include_stack_ptr] = fake_filename; - lineno_stack[include_stack_ptr] = lineno; - include_stack[include_stack_ptr] = YY_CURRENT_BUFFER; -@@ -676,7 +672,7 @@ yy_input (char *buf, int max_size) - { - result = fread (buf, 1, max_size, yyin); - if (result < max_size && ferror (yyin)) -- einfo (_("%F%P: read in flex scanner failed\n")); -+ fatal (_("%P: read in flex scanner failed\n")); - } - } - return result; -@@ -713,7 +709,7 @@ comment (void) - - if (c == 0) - { -- einfo (_("%F%P: EOF in comment\n")); -+ fatal (_("%P: EOF in comment\n")); - break; - } - } -@@ -734,7 +730,7 @@ lex_warn_invalid (char *where, char *what) - if (ldfile_assumed_script) - { - bfd_set_error (bfd_error_file_not_recognized); -- einfo (_("%F%s: file not recognized: %E\n"), ldlex_filename ()); -+ fatal (_("%s: file not recognized: %E\n"), ldlex_filename ()); - } - - if (! ISPRINT (*what)) -diff --git a/ld/ldmain.c b/ld/ldmain.c -index f1c5f7035c5..cb5e58d8f36 100644 ---- a/ld/ldmain.c -+++ b/ld/ldmain.c -@@ -195,7 +195,7 @@ write_dependency_file (void) - if (out == NULL) - { - bfd_set_error (bfd_error_system_call); -- einfo (_("%F%P: cannot open dependency file %s: %E\n"), -+ fatal (_("%P: cannot open dependency file %s: %E\n"), - config.dependency_file); - } - -@@ -288,7 +288,7 @@ main (int argc, char **argv) - expandargv (&argc, &argv); - - if (bfd_init () != BFD_INIT_MAGIC) -- einfo (_("%F%P: fatal error: libbfd ABI mismatch\n")); -+ fatal (_("%P: fatal error: libbfd ABI mismatch\n")); - - bfd_set_error_program_name (program_name); - -@@ -496,14 +496,14 @@ main (int argc, char **argv) - xexit (0); - - if (link_info.inhibit_common_definition && !bfd_link_dll (&link_info)) -- einfo (_("%F%P: --no-define-common may not be used without -shared\n")); -+ fatal (_("%P: --no-define-common may not be used without -shared\n")); - - if (!lang_has_input_file) - { - if (version_printed || command_line.print_output_format) - xexit (0); - output_unknown_cmdline_warnings (); -- einfo (_("%F%P: no input files\n")); -+ fatal (_("%P: no input files\n")); - } - - if (verbose) -@@ -525,7 +525,7 @@ main (int argc, char **argv) - if (config.map_file == (FILE *) NULL) - { - bfd_set_error (bfd_error_system_call); -- einfo (_("%F%P: cannot open map file %s: %E\n"), -+ einfo (_("%P: cannot open map file %s: %E\n"), - config.map_filename); - } - } -@@ -600,7 +600,7 @@ main (int argc, char **argv) - bfd *obfd = link_info.output_bfd; - link_info.output_bfd = NULL; - if (!bfd_close (obfd)) -- einfo (_("%F%P: %s: final close failed: %E\n"), output_filename); -+ fatal (_("%P: %s: final close failed: %E\n"), output_filename); - - link_info.output_bfd = NULL; - -@@ -629,10 +629,10 @@ main (int argc, char **argv) - dst = fopen (dst_name, FOPEN_WB); - - if (!src) -- einfo (_("%F%P: unable to open for source of copy `%s'\n"), -+ fatal (_("%P: unable to open for source of copy `%s'\n"), - output_filename); - if (!dst) -- einfo (_("%F%P: unable to open for destination of copy `%s'\n"), -+ fatal (_("%P: unable to open for destination of copy `%s'\n"), - dst_name); - while ((l = fread (buf, 1, bsize, src)) > 0) - { -@@ -746,7 +746,7 @@ get_emulation (int argc, char **argv) - i++; - } - else -- einfo (_("%F%P: missing argument to -m\n")); -+ fatal (_("%P: missing argument to -m\n")); - } - else if (strcmp (argv[i], "-mips1") == 0 - || strcmp (argv[i], "-mips2") == 0 -@@ -800,11 +800,11 @@ add_ysym (const char *name) - bfd_hash_newfunc, - sizeof (struct bfd_hash_entry), - 61)) -- einfo (_("%F%P: bfd_hash_table_init failed: %E\n")); -+ fatal (_("%P: bfd_hash_table_init failed: %E\n")); - } - - if (bfd_hash_lookup (link_info.notice_hash, name, true, true) == NULL) -- einfo (_("%F%P: bfd_hash_lookup failed: %E\n")); -+ fatal (_("%P: bfd_hash_lookup failed: %E\n")); - } - - void -@@ -817,11 +817,11 @@ add_ignoresym (struct bfd_link_info *info, const char *name) - bfd_hash_newfunc, - sizeof (struct bfd_hash_entry), - 61)) -- einfo (_("%F%P: bfd_hash_table_init failed: %E\n")); -+ fatal (_("%P: bfd_hash_table_init failed: %E\n")); - } - - if (bfd_hash_lookup (info->ignore_hash, name, true, true) == NULL) -- einfo (_("%F%P: bfd_hash_lookup failed: %E\n")); -+ fatal (_("%P: bfd_hash_lookup failed: %E\n")); - } - - /* Record a symbol to be wrapped, from the --wrap option. */ -@@ -837,11 +837,11 @@ add_wrap (const char *name) - bfd_hash_newfunc, - sizeof (struct bfd_hash_entry), - 61)) -- einfo (_("%F%P: bfd_hash_table_init failed: %E\n")); -+ fatal (_("%P: bfd_hash_table_init failed: %E\n")); - } - - if (bfd_hash_lookup (link_info.wrap_hash, name, true, true) == NULL) -- einfo (_("%F%P: bfd_hash_lookup failed: %E\n")); -+ fatal (_("%P: bfd_hash_lookup failed: %E\n")); - } - - /* Handle the -retain-symbols-file option. */ -@@ -869,7 +869,7 @@ add_keepsyms_file (const char *filename) - xmalloc (sizeof (struct bfd_hash_table)); - if (!bfd_hash_table_init (link_info.keep_hash, bfd_hash_newfunc, - sizeof (struct bfd_hash_entry))) -- einfo (_("%F%P: bfd_hash_table_init failed: %E\n")); -+ fatal (_("%P: bfd_hash_table_init failed: %E\n")); - - bufsize = 100; - buf = (char *) xmalloc (bufsize); -@@ -899,7 +899,7 @@ add_keepsyms_file (const char *filename) - buf[len] = '\0'; - - if (bfd_hash_lookup (link_info.keep_hash, buf, true, true) == NULL) -- einfo (_("%F%P: bfd_hash_lookup for insertion failed: %E\n")); -+ fatal (_("%P: bfd_hash_lookup for insertion failed: %E\n")); - } - } - -@@ -1311,7 +1311,7 @@ constructor_callback (struct bfd_link_info *info, - if (bfd_reloc_type_lookup (info->output_bfd, BFD_RELOC_CTOR) == NULL - && (bfd_link_relocatable (info) - || bfd_reloc_type_lookup (abfd, BFD_RELOC_CTOR) == NULL)) -- einfo (_("%F%P: BFD backend error: BFD_RELOC_CTOR unsupported\n")); -+ fatal (_("%P: BFD backend error: BFD_RELOC_CTOR unsupported\n")); - - s = set_name; - if (bfd_get_symbol_leading_char (abfd) != '\0') -@@ -1323,7 +1323,7 @@ constructor_callback (struct bfd_link_info *info, - - h = bfd_link_hash_lookup (info->hash, set_name, true, true, true); - if (h == (struct bfd_link_hash_entry *) NULL) -- einfo (_("%F%P: bfd_link_hash_lookup failed: %E\n")); -+ fatal (_("%P: bfd_link_hash_lookup failed: %E\n")); - if (h->type == bfd_link_hash_new) - { - h->type = bfd_link_hash_undefined; -@@ -1356,7 +1356,7 @@ symbol_warning (const char *warning, const char *symbol, bfd *abfd) - struct warning_callback_info cinfo; - - if (!bfd_generic_link_read_symbols (abfd)) -- einfo (_("%F%P: %pB: could not read symbols: %E\n"), abfd); -+ fatal (_("%P: %pB: could not read symbols: %E\n"), abfd); - - cinfo.found = false; - cinfo.warning = warning; -@@ -1418,14 +1418,14 @@ warning_find_reloc (bfd *abfd, asection *sec, void *iarg) - - relsize = bfd_get_reloc_upper_bound (abfd, sec); - if (relsize < 0) -- einfo (_("%F%P: %pB: could not read relocs: %E\n"), abfd); -+ fatal (_("%P: %pB: could not read relocs: %E\n"), abfd); - if (relsize == 0) - return; - - relpp = (arelent **) xmalloc (relsize); - relcount = bfd_canonicalize_reloc (abfd, sec, relpp, info->asymbols); - if (relcount < 0) -- einfo (_("%F%P: %pB: could not read relocs: %E\n"), abfd); -+ fatal (_("%P: %pB: could not read relocs: %E\n"), abfd); - - p = relpp; - pend = p + relcount; -diff --git a/ld/ldmisc.c b/ld/ldmisc.c -index f18a6b5c3c6..9ee0781b4de 100644 ---- a/ld/ldmisc.c -+++ b/ld/ldmisc.c -@@ -70,7 +70,7 @@ - void - vfinfo (FILE *fp, const char *fmt, va_list ap, bool is_warning) - { -- bool fatal = false; -+ bool isfatal = false; - const char *scan; - int arg_type; - unsigned int arg_count = 0; -@@ -282,7 +282,7 @@ vfinfo (FILE *fp, const char *fmt, va_list ap, bool is_warning) - - case 'F': - /* Error is fatal. */ -- fatal = true; -+ isfatal = true; - break; - - case 'P': -@@ -324,7 +324,7 @@ vfinfo (FILE *fp, const char *fmt, va_list ap, bool is_warning) - if (abfd != NULL) - { - if (!bfd_generic_link_read_symbols (abfd)) -- einfo (_("%F%P: %pB: could not read symbols: %E\n"), abfd); -+ fatal (_("%P: %pB: could not read symbols: %E\n"), abfd); - - asymbols = bfd_get_outsymbols (abfd); - } -@@ -587,7 +587,7 @@ vfinfo (FILE *fp, const char *fmt, va_list ap, bool is_warning) - if (is_warning && config.fatal_warnings) - config.make_executable = false; - -- if (fatal) -+ if (isfatal) - xexit (1); - } - -@@ -620,6 +620,21 @@ einfo (const char *fmt, ...) - fflush (stderr); - } - -+/* Fatal error. */ -+ -+void -+fatal (const char *fmt, ...) -+{ -+ va_list arg; -+ -+ fflush (stdout); -+ va_start (arg, fmt); -+ vfinfo (stderr, fmt, arg, true); -+ va_end (arg); -+ fflush (stderr); -+ xexit (1); -+} -+ - /* The buffer size for each command-line option warning. */ - #define CMDLINE_WARNING_SIZE 256 - -@@ -698,7 +713,7 @@ output_unknown_cmdline_warnings (void) - void - info_assert (const char *file, unsigned int line) - { -- einfo (_("%F%P: internal error %s %d\n"), file, line); -+ fatal (_("%P: internal error %s %d\n"), file, line); - } - - /* ('m' for map) Format info message and print on map. */ -@@ -767,8 +782,7 @@ ld_abort (const char *file, int line, const char *fn) - else - einfo (_("%P: internal error: aborting at %s:%d\n"), - file, line); -- einfo (_("%F%P: please report this bug\n")); -- xexit (1); -+ fatal (_("%P: please report this bug\n")); - } - - /* Decode a hexadecimal character. Return -1 on error. */ -diff --git a/ld/ldmisc.h b/ld/ldmisc.h -index cac36f01114..7103b537108 100644 ---- a/ld/ldmisc.h -+++ b/ld/ldmisc.h -@@ -23,6 +23,7 @@ - - extern void vfinfo (FILE *fp, const char *fmt, va_list arg, bool is_warning); - extern void einfo (const char *, ...); -+extern void fatal (const char *, ...) ATTRIBUTE_NORETURN; - extern void minfo (const char *, ...); - extern void info_msg (const char *, ...); - extern void lfinfo (FILE *, const char *, ...); -diff --git a/ld/ldwrite.c b/ld/ldwrite.c -index b8b9ff176a4..7613def6767 100644 ---- a/ld/ldwrite.c -+++ b/ld/ldwrite.c -@@ -57,14 +57,14 @@ build_link_order (lang_statement_union_type *statement) - - link_order = bfd_new_link_order (link_info.output_bfd, output_section); - if (link_order == NULL) -- einfo (_("%F%P: bfd_new_link_order failed: %E\n")); -+ fatal (_("%P: bfd_new_link_order failed: %E\n")); - - link_order->type = bfd_data_link_order; - link_order->offset = statement->data_statement.output_offset; - link_order->u.data.contents = bfd_alloc (link_info.output_bfd, - QUAD_SIZE); - if (link_order->u.data.contents == NULL) -- einfo (_("%F%P: bfd_new_link_order failed: %E\n")); -+ fatal (_("%P: bfd_new_link_order failed: %E\n")); - - value = statement->data_statement.value; - -@@ -170,7 +170,7 @@ build_link_order (lang_statement_union_type *statement) - - link_order = bfd_new_link_order (link_info.output_bfd, output_section); - if (link_order == NULL) -- einfo (_("%F%P: bfd_new_link_order failed: %E\n")); -+ fatal (_("%P: bfd_new_link_order failed: %E\n")); - - link_order->offset = rs->output_offset; - link_order->size = bfd_get_reloc_size (rs->howto); -@@ -178,7 +178,7 @@ build_link_order (lang_statement_union_type *statement) - link_order->u.reloc.p = (struct bfd_link_order_reloc *) - bfd_alloc (link_info.output_bfd, sizeof (struct bfd_link_order_reloc)); - if (link_order->u.reloc.p == NULL) -- einfo (_("%F%P: bfd_new_link_order failed: %E\n")); -+ fatal (_("%P: bfd_new_link_order failed: %E\n")); - - link_order->u.reloc.p->reloc = rs->reloc; - link_order->u.reloc.p->addend = rs->addend_value; -@@ -224,7 +224,7 @@ build_link_order (lang_statement_union_type *statement) - link_order = bfd_new_link_order (link_info.output_bfd, - output_section); - if (link_order == NULL) -- einfo (_("%F%P: bfd_new_link_order failed: %E\n")); -+ fatal (_("%P: bfd_new_link_order failed: %E\n")); - - if ((i->flags & SEC_NEVER_LOAD) != 0 - && (i->flags & SEC_DEBUGGING) == 0) -@@ -265,7 +265,7 @@ build_link_order (lang_statement_union_type *statement) - link_order = bfd_new_link_order (link_info.output_bfd, - output_section); - if (link_order == NULL) -- einfo (_("%F%P: bfd_new_link_order failed: %E\n")); -+ fatal (_("%P: bfd_new_link_order failed: %E\n")); - link_order->type = bfd_data_link_order; - link_order->size = statement->padding_statement.size; - link_order->offset = statement->padding_statement.output_offset; -@@ -334,8 +334,7 @@ clone_section (bfd *abfd, asection *s, const char *name, int *count) - if (startswith (name, ".stab") - || strcmp (name, "$GDB_SYMBOLS$") == 0) - { -- einfo (_ ("%F%P: cannot create split section name for %s\n"), name); -- /* Silence gcc warnings. einfo exits, so we never reach here. */ -+ fatal (_ ("%P: cannot create split section name for %s\n"), name); - return NULL; - } - tname[5] = 0; -@@ -346,8 +345,7 @@ clone_section (bfd *abfd, asection *s, const char *name, int *count) - || (h = bfd_link_hash_lookup (link_info.hash, - sname, true, true, false)) == NULL) - { -- einfo (_("%F%P: clone section failed: %E\n")); -- /* Silence gcc warnings. einfo exits, so we never reach here. */ -+ fatal (_("%P: clone section failed: %E\n")); - return NULL; - } - free (tname); -@@ -550,8 +548,8 @@ ldwrite (void) - if (!bfd_final_link (link_info.output_bfd, &link_info)) - { - if (bfd_get_error () != bfd_error_no_error) -- einfo (_("%F%P: final link failed: %E\n")); -+ fatal (_("%P: final link failed: %E\n")); - else -- einfo (_("%F%P: final link failed\n")); -+ fatal (_("%P: final link failed\n")); - } - } -diff --git a/ld/lexsup.c b/ld/lexsup.c -index 58b9bdd4974..7de6e257ad0 100644 ---- a/ld/lexsup.c -+++ b/ld/lexsup.c -@@ -818,7 +818,8 @@ parse_args (unsigned argc, char **argv) - && optc != argv[last_optind][1]) - { - if (optarg) -- einfo (_("%F%P: Error: unable to disambiguate: %s (did you mean -%s ?)\n"), -+ fatal (_("%P: Error: unable to disambiguate: " -+ "%s (did you mean -%s ?)\n"), - argv[last_optind], argv[last_optind]); - else - einfo (_("%P: Warning: grouped short command line options are deprecated: %s\n"), argv[last_optind]); -@@ -858,7 +859,7 @@ parse_args (unsigned argc, char **argv) - /* Fall through. */ - - default: -- einfo (_("%F%P: use the --help option for usage information\n")); -+ fatal (_("%P: use the --help option for usage information\n")); - break; - - case 1: /* File name. */ -@@ -877,7 +878,7 @@ parse_args (unsigned argc, char **argv) - || strcmp (optarg, "default") == 0) - input_flags.dynamic = true; - else -- einfo (_("%F%P: unrecognized -a option `%s'\n"), optarg); -+ fatal (_("%P: unrecognized -a option `%s'\n"), optarg); - break; - case OPTION_ASSERT: - /* FIXME: We just ignore these, but we should handle them. */ -@@ -890,7 +891,7 @@ parse_args (unsigned argc, char **argv) - else if (strcmp (optarg, "pure-text") == 0) - ; - else -- einfo (_("%F%P: unrecognized -assert option `%s'\n"), optarg); -+ fatal (_("%P: unrecognized -assert option `%s'\n"), optarg); - break; - case 'A': - ldfile_add_arch (optarg); -@@ -934,8 +935,7 @@ parse_args (unsigned argc, char **argv) - - style = cplus_demangle_name_to_style (optarg); - if (style == unknown_demangling) -- einfo (_("%F%P: unknown demangling style `%s'\n"), -- optarg); -+ fatal (_("%P: unknown demangling style `%s'\n"), optarg); - - cplus_demangle_set_style (style); - } -@@ -1042,7 +1042,7 @@ parse_args (unsigned argc, char **argv) - char *end; - g_switch_value = strtoul (optarg, &end, 0); - if (*end) -- einfo (_("%F%P: invalid number `%s'\n"), optarg); -+ fatal (_("%P: invalid number `%s'\n"), optarg); - } - break; - case 'g': -@@ -1138,7 +1138,7 @@ parse_args (unsigned argc, char **argv) - link_info.unresolved_syms_in_shared_libs = RM_IGNORE; - } - else -- einfo (_("%F%P: bad --unresolved-symbols option: %s\n"), optarg); -+ fatal (_("%P: bad --unresolved-symbols option: %s\n"), optarg); - break; - case OPTION_WARN_UNRESOLVED_SYMBOLS: - link_info.warn_unresolved_syms = true; -@@ -1225,7 +1225,7 @@ parse_args (unsigned argc, char **argv) - break; - case OPTION_PLUGIN_OPT: - if (plugin_opt_plugin_arg (optarg)) -- einfo (_("%F%P: bad -plugin-opt option\n")); -+ fatal (_("%P: bad -plugin-opt option\n")); - break; - case OPTION_PLUGIN_SAVE_TEMPS: - config.plugin_save_temps = true; -@@ -1245,11 +1245,11 @@ parse_args (unsigned argc, char **argv) - an error message here. We cannot just make this a warning, - increment optind, and continue because getopt is too confused - and will seg-fault the next time around. */ -- einfo(_("%F%P: unrecognised option: %s\n"), argv[optind]); -+ fatal(_("%P: unrecognised option: %s\n"), argv[optind]); - - if (bfd_link_pic (&link_info)) -- einfo (_("%F%P: -r and %s may not be used together\n"), -- bfd_link_dll (&link_info) ? "-shared" : "-pie"); -+ fatal (_("%P: -r and %s may not be used together\n"), -+ bfd_link_dll (&link_info) ? "-shared" : "-pie"); - - link_info.type = type_relocatable; - config.build_constructors = false; -@@ -1358,7 +1358,7 @@ parse_args (unsigned argc, char **argv) - if (config.has_shared) - { - if (bfd_link_relocatable (&link_info)) -- einfo (_("%F%P: -r and %s may not be used together\n"), -+ fatal (_("%P: -r and %s may not be used together\n"), - "-shared"); - - link_info.type = type_dll; -@@ -1370,7 +1370,7 @@ parse_args (unsigned argc, char **argv) - link_info.unresolved_syms_in_shared_libs = RM_IGNORE; - } - else -- einfo (_("%F%P: -shared not supported\n")); -+ fatal (_("%P: -shared not supported\n")); - break; - case OPTION_NO_PIE: - link_info.type = type_pde; -@@ -1379,12 +1379,12 @@ parse_args (unsigned argc, char **argv) - if (config.has_shared) - { - if (bfd_link_relocatable (&link_info)) -- einfo (_("%F%P: -r and %s may not be used together\n"), "-pie"); -+ fatal (_("%P: -r and %s may not be used together\n"), "-pie"); - - link_info.type = type_pie; - } - else -- einfo (_("%F%P: -pie not supported\n")); -+ fatal (_("%P: -pie not supported\n")); - break; - case 'h': /* Used on Solaris. */ - case OPTION_SONAME: -@@ -1401,7 +1401,7 @@ parse_args (unsigned argc, char **argv) - else if (strcmp (optarg, N_("ascending")) == 0) - config.sort_common = sort_ascending; - else -- einfo (_("%F%P: invalid common section sorting option: %s\n"), -+ fatal (_("%P: invalid common section sorting option: %s\n"), - optarg); - break; - case OPTION_SORT_SECTION: -@@ -1410,8 +1410,7 @@ parse_args (unsigned argc, char **argv) - else if (strcmp (optarg, N_("alignment")) == 0) - sort_section = by_alignment; - else -- einfo (_("%F%P: invalid section sorting option: %s\n"), -- optarg); -+ fatal (_("%P: invalid section sorting option: %s\n"), optarg); - break; - case OPTION_SECTION_ORDERING_FILE: - if (command_line.section_ordering_file != NULL -@@ -1453,14 +1452,14 @@ parse_args (unsigned argc, char **argv) - /* Check for <something>=<somthing>... */ - optarg2 = strchr (optarg, '='); - if (optarg2 == NULL) -- einfo (_("%F%P: invalid argument to option" -+ fatal (_("%P: invalid argument to option" - " \"--section-start\"\n")); - - optarg2++; - - /* So far so good. Are all the args present? */ - if ((*optarg == '\0') || (*optarg2 == '\0')) -- einfo (_("%F%P: missing argument(s) to option" -+ fatal (_("%P: missing argument(s) to option" - " \"--section-start\"\n")); - - /* We must copy the section name as set_section_start -@@ -1507,8 +1506,8 @@ parse_args (unsigned argc, char **argv) - /* Fall through. */ - case OPTION_UR: - if (bfd_link_pic (&link_info)) -- einfo (_("%F%P: -r and %s may not be used together\n"), -- bfd_link_dll (&link_info) ? "-shared" : "-pie"); -+ fatal (_("%P: -r and %s may not be used together\n"), -+ bfd_link_dll (&link_info) ? "-shared" : "-pie"); - - link_info.type = type_relocatable; - config.build_constructors = true; -@@ -1538,7 +1537,7 @@ parse_args (unsigned argc, char **argv) - char *end; - int level ATTRIBUTE_UNUSED = strtoul (optarg, &end, 0); - if (*end) -- einfo (_("%F%P: invalid number `%s'\n"), optarg); -+ fatal (_("%P: invalid number `%s'\n"), optarg); - #if BFD_SUPPORTS_PLUGINS - report_plugin_symbols = level > 1; - #endif /* BFD_SUPPORTS_PLUGINS */ -@@ -1733,7 +1732,7 @@ parse_args (unsigned argc, char **argv) - break; - case ')': - if (! ingroup) -- einfo (_("%F%P: group ended before it began (--help for usage)\n")); -+ fatal (_("%P: group ended before it began (--help for usage)\n")); - - lang_leave_group (); - ingroup--; -@@ -1749,7 +1748,7 @@ parse_args (unsigned argc, char **argv) - - case OPTION_REMAP_INPUTS_FILE: - if (! ldfile_add_remap_file (optarg)) -- einfo (_("%F%P: failed to add remap file %s\n"), optarg); -+ fatal (_("%P: failed to add remap file %s\n"), optarg); - break; - - case OPTION_REMAP_INPUTS: -@@ -1758,7 +1757,7 @@ parse_args (unsigned argc, char **argv) - if (optarg2 == NULL) - /* FIXME: Should we allow --remap-inputs=@myfile as a synonym - for --remap-inputs-file=myfile ? */ -- einfo (_("%F%P: invalid argument to option --remap-inputs\n")); -+ fatal (_("%P: invalid argument to option --remap-inputs\n")); - size_t len = optarg2 - optarg; - char * pattern = xmalloc (len + 1); - memcpy (pattern, optarg, len); -@@ -1779,8 +1778,7 @@ parse_args (unsigned argc, char **argv) - char *end; - bfd_size_type cache_size = strtoul (optarg, &end, 0); - if (*end != '\0') -- einfo (_("%F%P: invalid cache memory size: %s\n"), -- optarg); -+ fatal (_("%P: invalid cache memory size: %s\n"), optarg); - link_info.max_cache_size = cache_size; - } - break; -@@ -1805,7 +1803,7 @@ parse_args (unsigned argc, char **argv) - - case OPTION_POP_STATE: - if (input_flags.pushed == NULL) -- einfo (_("%F%P: no state pushed before popping\n")); -+ fatal (_("%P: no state pushed before popping\n")); - else - { - struct lang_input_statement_flags *oldp = input_flags.pushed; -@@ -1828,7 +1826,7 @@ parse_args (unsigned argc, char **argv) - else if (strcasecmp (optarg, "discard") == 0) - config.orphan_handling = orphan_handling_discard; - else -- einfo (_("%F%P: invalid argument to option" -+ fatal (_("%P: invalid argument to option" - " \"--orphan-handling\"\n")); - break; - -@@ -1873,7 +1871,7 @@ parse_args (unsigned argc, char **argv) - else if (strcmp (optarg, "share-duplicated") == 0) - config.ctf_share_duplicated = true; - else -- einfo (_("%F%P: bad --ctf-share-types option: %s\n"), optarg); -+ fatal (_("%P: bad --ctf-share-types option: %s\n"), optarg); - break; - } - } -@@ -2059,7 +2057,7 @@ parse_args (unsigned argc, char **argv) - if (config.no_section_header) - { - if (bfd_link_relocatable (&link_info)) -- einfo (_("%F%P: -r and -z nosectionheader may not be used together\n")); -+ fatal (_("%P: -r and -z nosectionheader may not be used together\n")); - - link_info.strip = strip_all; - } -@@ -2067,9 +2065,9 @@ parse_args (unsigned argc, char **argv) - if (!bfd_link_dll (&link_info)) - { - if (command_line.filter_shlib) -- einfo (_("%F%P: -F may not be used without -shared\n")); -+ fatal (_("%P: -F may not be used without -shared\n")); - if (command_line.auxiliary_filters) -- einfo (_("%F%P: -f may not be used without -shared\n")); -+ fatal (_("%P: -f may not be used without -shared\n")); - } - - /* Treat ld -r -s as ld -r -S -x (i.e., strip all local symbols). I -@@ -2110,7 +2108,7 @@ set_section_start (char *sect, char *valstr) - const char *end; - bfd_vma val = bfd_scan_vma (valstr, &end, 16); - if (*end) -- einfo (_("%F%P: invalid hex number `%s'\n"), valstr); -+ fatal (_("%P: invalid hex number `%s'\n"), valstr); - lang_section_start (sect, exp_intop (val), NULL); - } - -@@ -2123,7 +2121,7 @@ set_segment_start (const char *section, char *valstr) - - bfd_vma val = bfd_scan_vma (valstr, &end, 16); - if (*end) -- einfo (_("%F%P: invalid hex number `%s'\n"), valstr); -+ fatal (_("%P: invalid hex number `%s'\n"), valstr); - /* If we already have an entry for this segment, update the existing - value. */ - name = section + 1; -diff --git a/ld/mri.c b/ld/mri.c -index 68c024a83e4..586d23d2743 100644 ---- a/ld/mri.c -+++ b/ld/mri.c -@@ -288,7 +288,7 @@ mri_format (const char *name) - lang_add_output_format ("srec", NULL, NULL, 1); - - else -- einfo (_("%F%P: unknown format type %s\n"), name); -+ fatal (_("%P: unknown format type %s\n"), name); - } - - void -diff --git a/ld/pe-dll.c b/ld/pe-dll.c -index f24b8716ae2..4e72f1b8d8d 100644 ---- a/ld/pe-dll.c -+++ b/ld/pe-dll.c -@@ -777,7 +777,7 @@ process_def_file_and_drectve (bfd *abfd ATTRIBUTE_UNUSED, struct bfd_link_info * - - if (!bfd_generic_link_read_symbols (b)) - { -- einfo (_("%F%P: %pB: could not read symbols: %E\n"), b); -+ fatal (_("%P: %pB: could not read symbols: %E\n"), b); - return; - } - -@@ -1069,7 +1069,7 @@ build_filler_bfd (bool include_edata) - bfd_get_arch (link_info.output_bfd), - bfd_get_mach (link_info.output_bfd))) - { -- einfo (_("%F%P: can not create BFD: %E\n")); -+ fatal (_("%P: can not create BFD: %E\n")); - return; - } - -@@ -1347,7 +1347,7 @@ pe_walk_relocs (struct bfd_link_info *info, - - if (!bfd_generic_link_read_symbols (b)) - { -- einfo (_("%F%P: %pB: could not read symbols: %E\n"), b); -+ fatal (_("%P: %pB: could not read symbols: %E\n"), b); - return; - } - -@@ -1428,7 +1428,7 @@ pe_find_data_imports (const char *symhead, - if (!bfd_hash_table_init (import_hash, - bfd_hash_newfunc, - sizeof (struct bfd_hash_entry))) -- einfo (_("%F%P: bfd_hash_table_init failed: %E\n")); -+ fatal (_("%P: bfd_hash_table_init failed: %E\n")); - } - else - import_hash = NULL; -@@ -1468,7 +1468,7 @@ pe_find_data_imports (const char *symhead, - - if (!bfd_generic_link_read_symbols (b)) - { -- einfo (_("%F%P: %pB: could not read symbols: %E\n"), b); -+ fatal (_("%P: %pB: could not read symbols: %E\n"), b); - return; - } - -@@ -1570,7 +1570,7 @@ generate_reloc (bfd *abfd, struct bfd_link_info *info) - - if (!bfd_generic_link_read_symbols (b)) - { -- einfo (_("%F%P: %pB: could not read symbols: %E\n"), b); -+ fatal (_("%P: %pB: could not read symbols: %E\n"), b); - return; - } - -diff --git a/ld/plugin.c b/ld/plugin.c -index 8aec84852c0..dedd1a08b30 100644 ---- a/ld/plugin.c -+++ b/ld/plugin.c -@@ -252,7 +252,7 @@ plugin_opt_plugin (const char *plugin) - newplug->name = plugin; - newplug->dlhandle = dlopen (plugin, RTLD_NOW); - if (!newplug->dlhandle) -- einfo (_("%F%P: %s: error loading plugin: %s\n"), plugin, dlerror ()); -+ fatal (_("%P: %s: error loading plugin: %s\n"), plugin, dlerror ()); - - /* Check if plugin has been loaded already. */ - while (curplug) -@@ -343,7 +343,7 @@ plugin_get_ir_dummy_bfd (const char *name, bfd *srctemplate) - } - } - report_error: -- einfo (_("%F%P: could not create dummy IR bfd: %E\n")); -+ fatal (_("%P: could not create dummy IR bfd: %E\n")); - return NULL; - } - -@@ -424,7 +424,7 @@ asymbol_from_plugin_symbol (bfd *abfd, asymbol *asym, - unsigned char visibility; - - if (!elfsym) -- einfo (_("%F%P: %s: non-ELF symbol in ELF BFD!\n"), asym->name); -+ fatal (_("%P: %s: non-ELF symbol in ELF BFD!\n"), asym->name); - - if (ldsym->def == LDPK_COMMON) - { -@@ -435,7 +435,7 @@ asymbol_from_plugin_symbol (bfd *abfd, asymbol *asym, - switch (ldsym->visibility) - { - default: -- einfo (_("%F%P: unknown ELF symbol visibility: %d!\n"), -+ fatal (_("%P: unknown ELF symbol visibility: %d!\n"), - ldsym->visibility); - return LDPS_ERR; - -@@ -557,7 +557,7 @@ get_view (const void *handle, const void **viewp) - - /* FIXME: einfo should support %lld. */ - if ((off_t) size != input->filesize) -- einfo (_("%F%P: unsupported input file size: %s (%ld bytes)\n"), -+ fatal (_("%P: unsupported input file size: %s (%ld bytes)\n"), - input->name, (long) input->filesize); - - /* Check the cached view buffer. */ -@@ -833,7 +833,7 @@ get_symbols (const void *handle, int nsyms, struct ld_plugin_symbol *syms, - && blhe->type != bfd_link_hash_common) - { - /* We should not have a new, indirect or warning symbol here. */ -- einfo (_("%F%P: %s: plugin symbol table corrupt (sym type %d)\n"), -+ fatal (_("%P: %s: plugin symbol table corrupt (sym type %d)\n"), - called_plugin->name, blhe->type); - } - -@@ -985,13 +985,14 @@ message (int level, const char *format, ...) - case LDPL_ERROR: - default: - { -- char *newfmt = concat (level == LDPL_FATAL ? "%F" : "%X", -- _("%P: error: "), format, "\n", -+ char *newfmt = concat (_("%X%P: error: "), format, "\n", - (const char *) NULL); - fflush (stdout); - vfinfo (stderr, newfmt, args, true); - fflush (stderr); - free (newfmt); -+ if (level == LDPL_FATAL) -+ fatal (""); - } - break; - } -@@ -1134,14 +1135,14 @@ plugin_load_plugins (void) - if (!onloadfn) - onloadfn = (ld_plugin_onload) dlsym (curplug->dlhandle, "_onload"); - if (!onloadfn) -- einfo (_("%F%P: %s: error loading plugin: %s\n"), -+ fatal (_("%P: %s: error loading plugin: %s\n"), - curplug->name, dlerror ()); - set_tv_plugin_args (curplug, &my_tv[tv_header_size]); - called_plugin = curplug; - rv = (*onloadfn) (my_tv); - called_plugin = NULL; - if (rv != LDPS_OK) -- einfo (_("%F%P: %s: plugin error: %d\n"), curplug->name, rv); -+ fatal (_("%P: %s: plugin error: %d\n"), curplug->name, rv); - curplug = curplug->next; - } - -@@ -1205,7 +1206,7 @@ plugin_strdup (bfd *abfd, const char *str) - strlength = strlen (str) + 1; - copy = bfd_alloc (abfd, strlength); - if (copy == NULL) -- einfo (_("%F%P: plugin_strdup failed to allocate memory: %s\n"), -+ fatal (_("%P: plugin_strdup failed to allocate memory: %s\n"), - bfd_get_error ()); - memcpy (copy, str, strlength); - return copy; -@@ -1247,7 +1248,7 @@ plugin_object_p (bfd *ibfd, bool known_used) - - input = bfd_alloc (abfd, sizeof (*input)); - if (input == NULL) -- einfo (_("%F%P: plugin failed to allocate memory for input: %s\n"), -+ fatal (_("%P: plugin failed to allocate memory for input: %s\n"), - bfd_get_error ()); - - if (!bfd_plugin_open_input (ibfd, &file)) -@@ -1276,7 +1277,7 @@ plugin_object_p (bfd *ibfd, bool known_used) - - if (plugin_call_claim_file (&file, &claimed, &claim_file_handler_v2, - known_used)) -- einfo (_("%F%P: %s: plugin reported error claiming file\n"), -+ fatal (_("%P: %s: plugin reported error claiming file\n"), - plugin_error_plugin ()); - - if (input->fd != -1