1/* Copyright 2018 The Fuchsia Authors
2 *
3 * Use of this source code is governed by a MIT-style
4 * license that can be found in the LICENSE file or at
5 * https://opensource.org/licenses/MIT
6 */
7
8OUTPUT_FORMAT(elf32-i386)
9OUTPUT_ARCH(i386)
10
11ENTRY(_start)
12SECTIONS
13{
14    PHYS_LOAD_ADDRESS = 0x100000;
15    . = PHYS_LOAD_ADDRESS + SIZEOF_HEADERS;
16
17    .multiboot.header : {
18        /*
19         * The Multiboot header goes next.  The Multiboot format
20         * requires that it be somewhere in the first 8192 bytes.
21         */
22        KEEP(*(.multiboot.header))
23        ASSERT(ABSOLUTE(.) <= PHYS_LOAD_ADDRESS + 8192, "headers too big");
24    } :load
25
26    .note.gnu.build-id : {
27        *(.note.gnu.build-id)
28    } :load :note
29
30    .rodata : {
31        *(.rodata*)
32    } :load
33
34    .text : {
35        *(.text*)
36    } :load
37
38    .data : {
39        *(.data*)
40        PROVIDE_HIDDEN(edata = .);
41    } :load
42
43    .bss : {
44        *(.bss*) *(.sbss*) *(COMMON)
45    } :load
46
47    PROVIDE_HIDDEN(end = .);
48}
49
50PHDRS
51{
52    load PT_LOAD FLAGS(7); /* PF_R|PF_W|PF_X */
53    note PT_NOTE FLAGS(4); /* PF_R */
54}
55