From d9c434dc91daa60f45d297989ad537e36afc92b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Fri, 14 Aug 2009 00:18:25 +0000 Subject: [PATCH] [ARM] Use the same trick as for m68k (r26536) to get separate text & data segments for the kernel, though this should really not be needed. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32340 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/ldscripts/arm/kernel.ld | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/system/ldscripts/arm/kernel.ld b/src/system/ldscripts/arm/kernel.ld index 515ab49861..bb305a58e0 100644 --- a/src/system/ldscripts/arm/kernel.ld +++ b/src/system/ldscripts/arm/kernel.ld @@ -2,12 +2,20 @@ OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) + +/* XXX: this shouldn't be needed to make kernel_arm have separate text and data segments!!! */ +PHDRS +{ + headers PT_PHDR PHDRS ; + text PT_LOAD FILEHDR PHDRS ; + data PT_LOAD ; + dynamic PT_DYNAMIC ; +} SECTIONS { - . = 0x80500000; -/* . = 0x80000000;*/ + . = 0x80000000; - .interp : { *(.interp) } + .interp : { *(.interp) } :text .hash : { *(.hash) } .dynsym : { *(.dynsym) } .dynstr : { *(.dynstr) } @@ -35,7 +43,7 @@ SECTIONS .plt : { *(.plt) } /* text/read-only data */ - .text : { *(.text .text.* .glue_7* .gnu.linkonce.t.*) } =0x9090 + .text : { *(.text .text.* .glue_7* .gnu.linkonce.t.*) } :text =0x9090 .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) @@ -60,7 +68,7 @@ SECTIONS /* writable data */ __data_start_rom = .; /* in one segment binaries, the rom data address is on top of the ram data address */ __data_start = .; - .data : SUBALIGN(4) { *(.data .data.* .gnu.linkonce.d.*) } + .data : SUBALIGN(4) { *(.data .data.* .gnu.linkonce.d.*) } :data __ctor_list = .; .ctors : { *(.ctors) }