From 9eb7b0acb54e18e7cbca196a8bdb320844a858b3 Mon Sep 17 00:00:00 2001 From: Palmer Dabbelt Date: Fri, 16 Jun 2017 14:19:55 -0700 Subject: [PATCH] RISC-V: Print an error when unable to align a section This used to just print "can't relax section: Success", which is a silly error message. bfd/ChangeLog 2017-09-07 Palmer Dabbelt * elfnn-riscv.c (_bfd_riscv_relax_align): Call bfd_set_error and print an error message when unable to relax a .align directive. --- bfd/ChangeLog | 5 +++++ bfd/elfnn-riscv.c | 11 +++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 8096040a48..d89909b37a 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2017-09-07 Palmer Dabbelt + + * (_bfd_riscv_relax_align): Call bfd_set_error and + print an error message when unable to relax a .align directive. + 2017-09-07 Palmer Dabbelt * elfnn-riscv.c (riscv_zero_pcrel_hi_reloc): New function. diff --git a/bfd/elfnn-riscv.c b/bfd/elfnn-riscv.c index fdb151be82..b4d7b9b004 100644 --- a/bfd/elfnn-riscv.c +++ b/bfd/elfnn-riscv.c @@ -2986,7 +2986,7 @@ _bfd_riscv_relax_tls_le (bfd *abfd, static bfd_boolean _bfd_riscv_relax_align (bfd *abfd, asection *sec, - asection *sym_sec ATTRIBUTE_UNUSED, + asection *sym_sec, struct bfd_link_info *link_info ATTRIBUTE_UNUSED, Elf_Internal_Rela *rel, bfd_vma symval, @@ -3008,7 +3008,14 @@ _bfd_riscv_relax_align (bfd *abfd, asection *sec, /* Make sure there are enough NOPs to actually achieve the alignment. */ if (rel->r_addend < nop_bytes) - return FALSE; + { + (*_bfd_error_handler) + (_("%B(%A+0x%lx): %d bytes required for alignment" + "to %d-byte boundary, but only %d present"), + abfd, sym_sec, rel->r_offset, nop_bytes, alignment, rel->r_addend); + bfd_set_error (bfd_error_bad_value); + return FALSE; + } /* Delete the reloc. */ rel->r_info = ELFNN_R_INFO (0, R_RISCV_NONE); -- 2.34.1