This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH 1/2] RISC-V: Print an error when unable to align a section


Committed.

On Wed, 06 Sep 2017 13:43:47 PDT (-0700), Palmer Dabbelt wrote:
> This used to just print "can't relax section: Success", which is a silly
> error message.
>
> bfd/ChangeLog
>
> 2017-09-06  Palmer Dabbelt  <palmer@dabbelt.com>
>
>         * elfnn-riscv.c (_bfd_riscv_relax_align): Call bfd_set_error and
>         print an error message when unable to relax a .align directive.
> ---
>  bfd/elfnn-riscv.c | 11 +++++++++--
>  1 file changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/bfd/elfnn-riscv.c b/bfd/elfnn-riscv.c
> index fdb151be827f..b4d7b9b00455 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);


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]