From aff68bd0415c6f834cf1717865b5b44dea6b9ef5 Mon Sep 17 00:00:00 2001 From: "Maciej W. Rozycki" Date: Tue, 27 Nov 2018 16:34:03 +0000 Subject: [PATCH] MIPS/LD: Continue processing with refused relocations in PIC code Switch from `_bfd_error_handler' to `info->callbacks->einfo' with error reporting concerning the use of position-dependent relocations such as R_MIPS_HI16 or R_MIPS_26 in PIC code and continue processing so that any subsequent link errors are also shown rather than the linker terminating right away. This can reduce user frustration where correcting one error only reveals another one; instead all are shown together making them all possible to investigate at once. The use of the `%X' specifier causes the linker to terminate unsuccessfully at the end of processing. Also fix the message to say `cannot' rather than `can not'. bfd/ * elfxx-mips.c (_bfd_mips_elf_check_relocs) : Use `info->callbacks->einfo' rather than `_bfd_error_handler' to report refused relocations in PIC code and continue processing. Fix error message: `can not' -> `cannot'. --- bfd/ChangeLog | 8 ++++++++ bfd/elfxx-mips.c | 11 +++++------ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 272ae0e1076..e737f35e4b2 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,11 @@ +2018-11-27 Maciej W. Rozycki + + * elfxx-mips.c (_bfd_mips_elf_check_relocs) + : Use `info->callbacks->einfo' + rather than `_bfd_error_handler' to report refused relocations + in PIC code and continue processing. Fix error message: `can + not' -> `cannot'. + 2018-11-27 H.J. Lu PR binutils/23919 diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c index dfb36014066..298f465e432 100644 --- a/bfd/elfxx-mips.c +++ b/bfd/elfxx-mips.c @@ -9077,14 +9077,13 @@ _bfd_mips_elf_check_relocs (bfd *abfd, struct bfd_link_info *info, case R_MIPS_26: case R_MICROMIPS_26_S1: howto = MIPS_ELF_RTYPE_TO_HOWTO (abfd, r_type, FALSE); - _bfd_error_handler + info->callbacks->einfo /* xgettext:c-format */ - (_("%pB: relocation %s against `%s' can not be used" - " when making a shared object; recompile with -fPIC"), - abfd, howto->name, + (_("%X%H: relocation %s against `%s' cannot be used" + " when making a shared object; recompile with -fPIC\n"), + abfd, sec, rel->r_offset, howto->name, (h) ? h->root.root.string : "a local symbol"); - bfd_set_error (bfd_error_bad_value); - return FALSE; + break; default: break; } -- 2.30.2