svn commit: r214799 - projects/binutils-2.17/sys/conf
Dimitry Andric
dim at FreeBSD.org
Thu Nov 4 18:57:52 UTC 2010
Author: dim
Date: Thu Nov 4 18:57:51 2010
New Revision: 214799
URL: http://svn.freebsd.org/changeset/base/214799
Log:
Binutils commit 0c845abb5a0083c6deebc75975608237015badba increased
ELF_MAXPAGESIZE for amd64 from 0x00100000 to 0x00200000. This caused
the kernel to be incorrectly linked, using the existing linker script,
resulting in a virtual address of 0xffffffff80000000 for the LOAD
program header.
The boot loader will load such a kernel at a real address of 0x00000000,
which either causes protection faults in btx, crashes the machine, or
(in case of a VMware guest) even makes it power down. :)
Fix this by partially synchronizing the amd64 linker script with
binutils own updated version, in particular replacing a hardcoded
value of 0x00100000 by CONSTANT(MAXPAGESIZE).
Modified:
projects/binutils-2.17/sys/conf/ldscript.amd64
Modified: projects/binutils-2.17/sys/conf/ldscript.amd64
==============================================================================
--- projects/binutils-2.17/sys/conf/ldscript.amd64 Thu Nov 4 18:43:57 2010 (r214798)
+++ projects/binutils-2.17/sys/conf/ldscript.amd64 Thu Nov 4 18:57:51 2010 (r214799)
@@ -6,7 +6,7 @@ SEARCH_DIR("/usr/lib");
SECTIONS
{
/* Read-only sections, merged into text segment: */
- . = kernbase + 0x00100000 + SIZEOF_HEADERS;
+ . = kernbase + CONSTANT (MAXPAGESIZE) + SIZEOF_HEADERS;
.interp : { *(.interp) }
.hash : { *(.hash) }
.dynsym : { *(.dynsym) }
@@ -61,7 +61,8 @@ SECTIONS
.eh_frame_hdr : { *(.eh_frame_hdr) }
/* Adjust the address for the data segment. We want to adjust up to
the same address within the page on the next page up. */
- . = DATA_SEGMENT_ALIGN(0x100000, 0x1000);
+ . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1));
+ . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE));
/* Ensure the __preinit_array_start label is properly aligned. We
could instead move the label definition inside the section, but
the linker would then create the section even if it turns out to
More information about the svn-src-projects
mailing list