Date: Mon, 29 Jun 2009 02:05:19 -0700 From: "Sean P. Dew" <freebsd.work@gmail.com> To: alc@freebsd.org, freebsd-current@freebsd.org Subject: Re: segment alignment in AMD64 Message-ID: <45d874490906290205h41c6d08ajfdc0d4cf012f5389@mail.gmail.com> In-Reply-To: <ca3526250906281737w771c7825sfb006f6046c18b91@mail.gmail.com> References: <45d874490906281642r470089e2sc5b770f239f428e2@mail.gmail.com> <ca3526250906281737w771c7825sfb006f6046c18b91@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
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 @@ -2,7 +2,7 @@ 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@gmail.com> wrote: > On Sun, Jun 28, 2009 at 6:42 PM, Sean P. Dew <freebsd.work@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 > >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?45d874490906290205h41c6d08ajfdc0d4cf012f5389>