diff options
author | Maciej W. Rozycki <macro@imgtec.com> | 2017-02-07 02:07:21 +0000 |
---|---|---|
committer | Maciej W. Rozycki <macro@imgtec.com> | 2017-02-15 13:40:43 +0000 |
commit | 174d0a74a2e631d7303fe00b517bcee75003a4a6 (patch) | |
tree | 349eb2f6d68f05099033762cf85be89d9ca2e6da /bfd | |
parent | befe814dd9ac6489c84ecd5c839b3b48aca95280 (diff) | |
download | binutils-174d0a74a2e631d7303fe00b517bcee75003a4a6.zip binutils-174d0a74a2e631d7303fe00b517bcee75003a4a6.tar.gz binutils-174d0a74a2e631d7303fe00b517bcee75003a4a6.tar.bz2 |
PowerPC/BFD: Convert `%P: %H:' to `%H:' in error messages
Remove an inconsistency in BFD linker error messages across the PowerPC
backends, where in the presence of line information the `%P: %H:' format
sequence makes the first error message produced for any given function
different from subsequent ones.
Taking the `ld/testsuite/ld-powerpc/tocopt7.s' test case source as an
example and the `powerpc-linux' target we have:
$ as -gdwarf2 -o tocopt.o -a64 tocopt.s
$ ld -o tocopt -melf64ppc tocopt.o
ld: tocopt.o: In function `_start':
tocopt.s:35:(.text+0x14): toc optimization is not supported for 0x3fa00000 instruction.
ld: tocopt.s:49:(.text+0x34): toc optimization is not supported for 0x3fa00000 instruction.
$
where the first error message does not have the source file name
prefixed with the linker program executable's name, i.e. `ld:', whereas
the second error message does, as would any subsequent.
This is because with a multiple-line error message such as `%H' produces
`%P' only prints the program executable's name on the first line and not
any later ones. Also the PowerPC backend is the only part of BFD which
uses `%P' along with one of the clever `%C', `%D', `%G', `%H' format
specifiers. And last but not least this breaks a GNU Coding Standard's
requirement that error messages from compilers should look like this:
source-file-name:lineno: message
also quoted in `vfinfo' code handling these specifiers.
Convert `%P: %H:' to `%H:' in error messages across the PowerPC backends
then, yielding:
$ as -gdwarf2 -o tocopt.o -a64 tocopt.s
$ ld -o tocopt -melf64ppc tocopt.o
tocopt.o: In function `_start':
tocopt.s:35:(.text+0x14): toc optimization is not supported for 0x3fa00000 instruction.
tocopt.s:49:(.text+0x34): toc optimization is not supported for 0x3fa00000 instruction.
$
instead, making it consistent and matching the GNU Coding Standard's
requirement.
bfd/
* elf32-ppc.c (ppc_elf_check_relocs): Use `%H:' rather than
`%P: %H:' with `info->callbacks->einfo'.
(ppc_elf_relocate_section): Likewise.
* elf64-ppc.c (ppc64_elf_check_relocs): Likewise.
(ppc64_elf_edit_toc): Likewise.
(ppc64_elf_relocate_section): Likewise.
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/ChangeLog | 9 | ||||
-rw-r--r-- | bfd/elf32-ppc.c | 22 | ||||
-rw-r--r-- | bfd/elf64-ppc.c | 24 |
3 files changed, 32 insertions, 23 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 252c1d5..edd7633 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,12 @@ +2017-02-15 Maciej W. Rozycki <macro@imgtec.com> + + * elf32-ppc.c (ppc_elf_check_relocs): Use `%H:' rather than + `%P: %H:' with `info->callbacks->einfo'. + (ppc_elf_relocate_section): Likewise. + * elf64-ppc.c (ppc64_elf_check_relocs): Likewise. + (ppc64_elf_edit_toc): Likewise. + (ppc64_elf_relocate_section): Likewise. + 2017-02-14 Alan Modra <amodra@gmail.com> * elf64-ppc.c (ppc64_elf_gc_mark_dynamic_ref): Support diff --git a/bfd/elf32-ppc.c b/bfd/elf32-ppc.c index 353845a..30998b1 100644 --- a/bfd/elf32-ppc.c +++ b/bfd/elf32-ppc.c @@ -4298,7 +4298,7 @@ ppc_elf_check_relocs (bfd *abfd, table entry for a non-ifunc local symbol. */ info->callbacks->einfo /* xgettext:c-format */ - (_("%P: %H: %s reloc against local symbol\n"), + (_("%H: %s reloc against local symbol\n"), abfd, sec, rel->r_offset, ppc_elf_howto_table[r_type]->name); bfd_set_error (bfd_error_bad_value); @@ -8221,7 +8221,7 @@ ppc_elf_relocate_section (bfd *output_bfd, off = (p - contents) - (rel->r_offset - d_offset); if (off > 0x1fffffc || (off & 3) != 0) info->callbacks->einfo - (_("%P: %H: fixup branch overflow\n"), + (_("%H: fixup branch overflow\n"), input_bfd, input_section, rel->r_offset); bfd_put_32 (input_bfd, B | off, @@ -8261,7 +8261,7 @@ ppc_elf_relocate_section (bfd *output_bfd, else info->callbacks->einfo /* xgettext:c-format */ - (_("%P: %H: error: %s with unexpected instruction %x\n"), + (_("%H: error: %s with unexpected instruction %x\n"), input_bfd, input_section, rel->r_offset, "R_PPC_ADDR16_HA", insn); } @@ -8296,7 +8296,7 @@ ppc_elf_relocate_section (bfd *output_bfd, else info->callbacks->einfo /* xgettext:c-format */ - (_("%P: %H: error: %s with unexpected instruction %x\n"), + (_("%H: error: %s with unexpected instruction %x\n"), input_bfd, input_section, rel->r_offset, "R_PPC_ADDR16_LO", insn); } @@ -8352,7 +8352,7 @@ ppc_elf_relocate_section (bfd *output_bfd, into .got2). */ info->callbacks->einfo /* xgettext:c-format */ - (_("%X%P: %H: unsupported bss-plt -fPIC ifunc %s\n"), + (_("%X%H: unsupported bss-plt -fPIC ifunc %s\n"), input_bfd, input_section, rel->r_offset, sym_name); } if (h == NULL && (ent->plt.offset & 1) == 0) @@ -8690,7 +8690,7 @@ ppc_elf_relocate_section (bfd *output_bfd, if (addend != 0) info->callbacks->einfo /* xgettext:c-format */ - (_("%P: %H: non-zero addend on %s reloc against `%s'\n"), + (_("%H: non-zero addend on %s reloc against `%s'\n"), input_bfd, input_section, rel->r_offset, howto->name, sym_name); @@ -8722,7 +8722,7 @@ ppc_elf_relocate_section (bfd *output_bfd, -fPIC code, so the linker won't know whether r30 is _GLOBAL_OFFSET_TABLE_ or pointing into a .got2 section. */ /* xgettext:c-format */ - info->callbacks->einfo (_("%X%P: %H: @local call to ifunc %s\n"), + info->callbacks->einfo (_("%X%H: @local call to ifunc %s\n"), input_bfd, input_section, rel->r_offset, h->root.root.string); } @@ -8912,7 +8912,7 @@ ppc_elf_relocate_section (bfd *output_bfd, indirection function to resolve the reloc. */ info->callbacks->einfo /* xgettext:c-format */ - (_("%P: %H: relocation %s for indirect " + (_("%H: relocation %s for indirect " "function %s unsupported\n"), input_bfd, input_section, rel->r_offset, howto->name, @@ -9609,7 +9609,7 @@ ppc_elf_relocate_section (bfd *output_bfd, relocation ^= lobit; info->callbacks->einfo /* xgettext:c-format */ - (_("%P: %H: error: %s against `%s' not a multiple of %u\n"), + (_("%H: error: %s against `%s' not a multiple of %u\n"), input_bfd, input_section, rel->r_offset, howto->name, sym_name, mask + 1); bfd_set_error (bfd_error_bad_value); @@ -9638,7 +9638,7 @@ ppc_elf_relocate_section (bfd *output_bfd, { info->callbacks->einfo /* xgettext:c-format */ - (_("%P: %H: unresolvable %s relocation against symbol `%s'\n"), + (_("%H: unresolvable %s relocation against symbol `%s'\n"), input_bfd, input_section, rel->r_offset, howto->name, sym_name); @@ -9719,7 +9719,7 @@ ppc_elf_relocate_section (bfd *output_bfd, { info->callbacks->einfo /* xgettext:c-format */ - (_("%P: %H: %s reloc against `%s': error %d\n"), + (_("%H: %s reloc against `%s': error %d\n"), input_bfd, input_section, rel->r_offset, howto->name, sym_name, (int) r); ret = FALSE; diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c index ad54384..56b94f9 100644 --- a/bfd/elf64-ppc.c +++ b/bfd/elf64-ppc.c @@ -5554,7 +5554,7 @@ ppc64_elf_check_relocs (bfd *abfd, struct bfd_link_info *info, table entry for a non-ifunc local symbol. */ info->callbacks->einfo /* xgettext:c-format */ - (_("%P: %H: %s reloc against local symbol\n"), + (_("%H: %s reloc against local symbol\n"), abfd, sec, rel->r_offset, ppc64_elf_howto_table[r_type]->name); bfd_set_error (bfd_error_bad_value); @@ -5602,7 +5602,7 @@ ppc64_elf_check_relocs (bfd *abfd, struct bfd_link_info *info, if (!ppc64_elf_howto_table[R_PPC64_ADDR32]) ppc_howto_init (); /* xgettext:c-format */ - info->callbacks->einfo (_("%P: %H: %s reloc unsupported " + info->callbacks->einfo (_("%H: %s reloc unsupported " "in shared libraries and PIEs.\n"), abfd, sec, rel->r_offset, ppc64_elf_howto_table[r_type]->name); @@ -9234,7 +9234,7 @@ ppc64_elf_edit_toc (struct bfd_link_info *info) sprintf (str, "%#08x", insn); info->callbacks->einfo /* xgettext:c-format */ - (_("%P: %H: toc optimization is not supported for" + (_("%H: toc optimization is not supported for" " %s instruction.\n"), ibfd, sec, rel->r_offset & ~3, str); } @@ -9463,7 +9463,7 @@ ppc64_elf_edit_toc (struct bfd_link_info *info) ppc_howto_init (); info->callbacks->einfo /* xgettext:c-format */ - (_("%P: %H: %s references " + (_("%H: %s references " "optimized away TOC entry\n"), ibfd, sec, rel->r_offset, ppc64_elf_howto_table[r_type]->name); @@ -13572,9 +13572,9 @@ ppc64_elf_relocate_section (bfd *output_bfd, info->callbacks->einfo (!IS_PPC64_TLS_RELOC (r_type) /* xgettext:c-format */ - ? _("%P: %H: %s used with TLS symbol `%T'\n") + ? _("%H: %s used with TLS symbol `%T'\n") /* xgettext:c-format */ - : _("%P: %H: %s used with non-TLS symbol `%T'\n"), + : _("%H: %s used with non-TLS symbol `%T'\n"), input_bfd, input_section, rel->r_offset, ppc64_elf_howto_table[r_type]->name, sym_name); @@ -14204,13 +14204,13 @@ ppc64_elf_relocate_section (bfd *output_bfd, || stub_entry->stub_type == ppc_stub_plt_call_r2save) info->callbacks->einfo /* xgettext:c-format */ - (_("%P: %H: call to `%T' lacks nop, can't restore toc; " + (_("%H: call to `%T' lacks nop, can't restore toc; " "recompile with -fPIC\n"), input_bfd, input_section, rel->r_offset, sym_name); else info->callbacks->einfo /* xgettext:c-format */ - (_("%P: %H: call to `%T' lacks nop, can't restore toc; " + (_("%H: call to `%T' lacks nop, can't restore toc; " "(-mcmodel=small toc adjust stub)\n"), input_bfd, input_section, rel->r_offset, sym_name); @@ -14887,7 +14887,7 @@ ppc64_elf_relocate_section (bfd *output_bfd, { info->callbacks->einfo /* xgettext:c-format */ - (_("%P: %H: %s for indirect " + (_("%H: %s for indirect " "function `%T' unsupported\n"), input_bfd, input_section, rel->r_offset, ppc64_elf_howto_table[r_type]->name, @@ -15174,7 +15174,7 @@ ppc64_elf_relocate_section (bfd *output_bfd, relocation ^= relocation & mask; info->callbacks->einfo /* xgettext:c-format */ - (_("%P: %H: error: %s not a multiple of %u\n"), + (_("%H: error: %s not a multiple of %u\n"), input_bfd, input_section, rel->r_offset, howto->name, mask + 1); @@ -15196,7 +15196,7 @@ ppc64_elf_relocate_section (bfd *output_bfd, { info->callbacks->einfo /* xgettext:c-format */ - (_("%P: %H: unresolvable %s against `%T'\n"), + (_("%H: unresolvable %s against `%T'\n"), input_bfd, input_section, rel->r_offset, howto->name, h->elf.root.root.string); @@ -15293,7 +15293,7 @@ ppc64_elf_relocate_section (bfd *output_bfd, { info->callbacks->einfo /* xgettext:c-format */ - (_("%P: %H: %s against `%T': error %d\n"), + (_("%H: %s against `%T': error %d\n"), input_bfd, input_section, rel->r_offset, reloc_name, sym_name, (int) r); ret = FALSE; |