[Patch] ld: check for address space overflow

Tristan Gingold gingold@adacore.com
Tue Mar 14 08:15:00 GMT 2017


[...]

> This works:
> 
> diff --git a/ld/ldlang.c b/ld/ldlang.c
> index a0638ea..8c1d829 100644
> --- a/ld/ldlang.c
> +++ b/ld/ldlang.c
> @@ -4783,13 +4783,13 @@ lang_check_section_addresses (void)
>   for (s = link_info.output_bfd->sections; s != NULL; s = s->next)
>     {
>       s_end = (s->vma + s->size) & addr_mask;
> -      if (s_end != 0 && s_end < s->vma)
> +      if (s_end != 0 && s_end < (s->vma & addr_mask))
>   einfo (_("%X%P: section %s VMA wraps around address space\n"),
>          s->name);
>       else
>   {
>     s_end = (s->lma + s->size) & addr_mask;
> -    if (s_end != 0 && s_end < s->lma)
> +    if (s_end != 0 && s_end < (s->lma & addr_mask))
>       einfo (_("%X%P: section %s LMA wraps around address space\n"),
>         s->name);
>   }

Yes, that makes sense.
Do you plan to commit it ?



More information about the Binutils mailing list