Skip site navigation (1)Skip section navigation (2)
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>