[PATCH v3] elf: Set p_align to the minimum page size if possible

Jan Beulich jbeulich@suse.com
Fri Jan 14 13:40:14 GMT 2022


On 14.01.2022 14:03, H.J. Lu wrote:
> On Fri, Jan 14, 2022 at 12:27 AM Jan Beulich <jbeulich@suse.com> wrote:
>>
>> On 29.12.2021 20:39, H.J. Lu via Binutils wrote:
>>> --- a/ld/testsuite/ld-elf/linux-x86.exp
>>> +++ b/ld/testsuite/ld-elf/linux-x86.exp
>>> @@ -185,6 +185,42 @@ run_ld_link_exec_tests [list \
>>>       "" \
>>>       "tmpdir/indirect-extern-access-2.so" \
>>>      ] \
>>> +    [list \
>>> +     "Run p_align-1a without PIE" \
>>> +     "$NOPIE_LDFLAGS" \
>>> +     "" \
>>> +     { p_align-1.c } \
>>> +     "p_align-1a" \
>>> +     "pass.out" \
>>> +     "$NOPIE_CFLAGS" \
>>> +    ] \
>>> +    [list \
>>> +     "Run p_align-1b with PIE" \
>>> +     "-pie" \
>>> +     "" \
>>> +     { p_align-1.c } \
>>> +     "p_align-1b" \
>>> +     "pass.out" \
>>> +     "-fpie" \
>>> +    ] \
>>> +    [list \
>>> +     "Run p_align-1c with -Wl,-z,max-page-size=0x1000 without PIE" \
>>> +     "$NOPIE_LDFLAGS -Wl,-z,max-page-size=0x1000" \
>>> +     "" \
>>> +     { p_align-1.c } \
>>> +     "p_align-1c" \
>>> +     "pass.out" \
>>> +     "$NOPIE_CFLAGS" \
>>> +    ] \
>>> +    [list \
>>> +     "Run p_align-1d with -Wl,-z,max-page-size=0x1000 with PIE" \
>>> +     "-pie -Wl,-z,max-page-size=0x1000" \
>>> +     "" \
>>> +     { p_align-1.c } \
>>> +     "p_align-1d" \
>>> +     "pass.out" \
>>> +     "-fpie" \
>>> +    ] \
>>>  ]
>>
>> The two PIE variants of this also fail for me on glibc 2.26. Looks
>> like LOAD segments' alignment isn't being honored there, at least
>> not if it's as big as it is here.
>>
> 
> The PIE alignment needs the kernel fix:
> 
> commit ce81bb256a224259ab686742a6284930cbe4f1fa
> Author: Chris Kennelly <ckennelly@google.com>
> Date:   Thu Oct 15 20:12:32 2020 -0700
> 
>     fs/binfmt_elf: use PT_LOAD p_align values for suitable start address

Well, then the test needs to be skipped if that fix is not in place.
After all you're testing binutils behavior here, not kernel or libc one.
I'm running a variety of (largely up-to-date) kernels on all of my
systems. But it looks like our kernel folks decided against backporting
this particular change. And I don't think you expect people to remember
to run the testsuite only on top of "certain" kernels?

Jan



More information about the Binutils mailing list