meaningless p_offset for zero p_filesz PT_LOAD

H.J. Lu hjl.tools@gmail.com
Sun Mar 9 23:22:22 GMT 2025
On Sun, Mar 9, 2025 at 4:14 AM Alan Modra <amodra@gmail.com> wrote:
>
> Maybe I should have stayed with WONTFIX for pr25237..
>
> This patch avoids generating PT_LOAD segments that trip a bug in
> glibc's loader.
>
>         PR 25237
>         PR 32763
>         * elf.c (assign_file_positions_for_load_sections): Don't put
>         p_offset zero for empty PT_LOAD.
>
> diff --git a/bfd/elf.c b/bfd/elf.c
> index 20f96e689ce..ee89dd909da 100644
> --- a/bfd/elf.c
> +++ b/bfd/elf.c
> @@ -6170,7 +6170,10 @@ assign_file_positions_for_load_sections (bfd *abfd,
>                     align = p->p_align;
>                   if (align < 1)
>                     align = 1;
> -                 p->p_offset = off % align;
> +                 /* Avoid p_offset of zero, which might be wrongly
> +                    interpreted as the segment being the first one,
> +                    containing the file header.  PR32763.  */
> +                 p->p_offset = (off + align - 1) % align + 1;

I think your original patch makes sense since it is odd
for p_offset > file size even if it isn't used.

>                 }
>             }
>           else
>
> --
> Alan Modra



-- 
H.J.


More information about the Binutils mailing list