Re: segment alignment in AMD64

From: Sean P. Dew <freebsd.work_at_gmail.com>
Date: Mon, 29 Jun 2009 02:05:19 -0700
I applied this patch to modify the MAXPAGE size to 4K instead of 1 MB. Do I
need to rebuild the toolchain? I have not been able to execute the
genscripts.sh for generating the ld scripts. I tried to  run the "make" in
/usr/src/gnu/usr.bin/binutils/ld/ but got the following error. Any help is
appreciated. Thanks a million

libintl.h: No such file or directory


Thanks
Sean


Index: /usr/src/contrib/binutils/ld/emulparams/elf_x86_64.sh
===================================================================
RCS file: /usr/ncvs/src/contrib/binutils/ld/emulparams/elf_x86_64.sh,v
retrieving revision 1.1.1.6
diff -u -r1.1.1.6 elf_x86_64.sh
--- /usr/src/contrib/binutils/ld/emulparams/elf_x86_64.sh       16 Jun 2004
05:45:40 -0000      1.1.1.6
+++ /usr/src/contrib/binutils/ld/emulparams/elf_x86_64.sh       7 Sep 2007
00:20:31 -0000
_at__at_ -2,7 +2,7 _at__at_
ELFSIZE=64
OUTPUT_FORMAT="elf64-x86-64"
TEXT_START_ADDR=0x400000
-MAXPAGESIZE=0x100000
+MAXPAGESIZE=0x1000
COMMONPAGESIZE=0x1000
NONPAGED_TEXT_START_ADDR=0x400000
ARCH="i386:x86-64"

------------------------------------------------------------------------------------------------------------------



On Sun, Jun 28, 2009 at 5:37 PM, Alan Cox <alan.l.cox_at_gmail.com> wrote:

>  On Sun, Jun 28, 2009 at 6:42 PM, Sean P. Dew <freebsd.work_at_gmail.com>wrote:
>
>> Hi,
>>
>> Why is a loadable segment aligned to 1 MB on AMD64 while the pagezie is
>> still 4K for a user application. Is there anyway to change it back to 4K,
>> It
>> is not making sense to me is because if my file segment is around 400K, we
>> are wasting 1 MB of virtual address space ( granted it is not a lot for
>> X64).  I am trying to find out the reason. I am posting the readelf output
>> of a .so. Any help is appreciated.
>>
>
> You'll find this question discussed in the mailing list archives on more
> than one occasion.  Here is one such message:
>
> http://lists.freebsd.org/pipermail/freebsd-amd64/2007-September/010260.html
>
> To be a little more explicit, it is done to increase the likelihood that
> the entire code segment of a large program can be mapped using 2 MB page
> mappings.  Moreover, to be able to do so without wasting any physical memory
> on padding.  Although we have the necessary 2 MB page support in the virtual
> memory system, the kernel's image activator hasn't been modified to take
> advantage of this.  Only a few programs with large code and data segments,
> e.g., emacs, will benefit.
>
> Regards,
> Alan
>
>
Received on Mon Jun 29 2009 - 07:05:21 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:50 UTC