This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [PATCH] ld: Default the maximum page size to the common page size for -z separate-code
On Fri, Jan 12, 2018 at 3:39 AM, H.J. Lu <hjl.tools@gmail.com> wrote:
> On Thu, Jan 11, 2018 at 9:55 PM, Alan Modra <amodra@gmail.com> wrote:
>> On Thu, Jan 11, 2018 at 09:13:19PM -0800, H.J. Lu wrote:
>>> When -z separate-code is used, code segment is aligned and padded to
>>> the maximum page size on disk. This patch defaults the maximum page
>>> size to the common page size for -z separate-code to reduce file size.
>>
>> I think this is a bad idea. Options should have as few magical
>> side-effects as possible. If you want -z separate-code to align to
>> common-page-size, then do that in the script (and document in
>> ld.texinfo that code separation is only effective for system page size
>> up to common-page-size, like -z relro).
>>
>
> RELRO segment is optional. Ignoring it at run-time won't crash
> the program.
>
> How about adding ELF_MAXCODEPAGESIZE which defaults to
> ELF_COMMONPAGESIZE and -z max-code-page-size?
>
Never mind. This is the same approach with a different implementation.
The problem with aligning code segment to common-page-size while
keeping the maximum page size is we don't get code separation with
the maximum page size is used:
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
LOAD 0x000000 0x00000000 0x00000000 0x00200 0x00200 R 0x200000
LOAD 0x001000 0x00001000 0x00001000 0x00036 0x00036 R E 0x200000
LOAD 0x002000 0x00202000 0x00202000 0x00064 0x00064 R 0x200000
LOAD 0x002f80 0x00402f80 0x00402f80 0x000a0 0x000a0 RW 0x200000
The program runs with 2MB page size. But the 2MB code page contains
RO and RW data.
--
H.J.