2 #include "ldscript.inc"
15 #define LOAD_OFFSET (0x0)
17 #define LOAD_OFFSET (0xf0000)
21 .jh-startup : { *(.jh.startup) }
31 . = LINKADDR + SIZEOF_HEADERS;
35 PROVIDE (ImageBase = LINKADDR);
36 /*.hash : AT (ADDR(.hash) - LOAD_OFFSET) { *(.hash) } : data */ /* this MUST come first! */
37 /* Merge .text, .rodata, and .data in one segment to save space */
39 /* provide at least 1K space for PE header in case of EFI */
40 /* NOTE: the .hash section is not used for EFI, so we declare
41 * this as free space for PE too
43 /* FXIME: should make this depending on EFI */
44 /*. = (. < (0x400 + LINKADDR)) ? (LINKADDR + 0x400) : .;*/
46 .text : AT (ADDR(.text) - LOAD_OFFSET)
49 *(.text .text.* .gnu.linkonce.t*)
54 .dynsym : AT (ADDR(.dynsym) - LOAD_OFFSET) { *(.dynsym) } /*: data*/
55 .dynstr : AT (ADDR(.dynstr) - LOAD_OFFSET) { *(.dynstr) } /*: data*/
56 .reloc : AT (ADDR(.reloc) - LOAD_OFFSET) { *(.reloc) } /*: data*/
57 .rel.dyn : AT (ADDR(.rel.dyn) - LOAD_OFFSET)
59 *(.rel.*) *(.rel.module_info)
63 .data : AT (ADDR(.data) - LOAD_OFFSET)
78 .data.module_info : AT (ADDR(.data.module_info) - LOAD_OFFSET)
81 _module_info_start = .;
82 *(.module_info .module_info.*)
87 .dynamic : AT (ADDR(.dynamic) - LOAD_OFFSET) { *(.dynamic) } /*: data*/
88 .rela.dyn : AT (ADDR(.rela.dyn) - LOAD_OFFSET)
91 *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
93 *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
94 *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
95 *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*)
96 *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*)
100 *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
101 *(.rela.ldata .rela.ldata.* .rela.gnu.linkonce.l.*)
102 *(.rela.lbss .rela.lbss.* .rela.gnu.linkonce.lb.*)
103 *(.rela.lrodata .rela.lrodata.* .rela.gnu.linkonce.lr.*)
109 .rela.plt : AT (ADDR(.rela.plt) - LOAD_OFFSET)
120 .bss : AT (ADDR(.bss) - LOAD_OFFSET)
133 /* Only move modules to modaddr if bootstrap is being loaded by an elf
134 * loader, and we do not need to copy images around at runtime (e.g. with
137 #if defined(PLACE_MODULES_AT_MODADDR) && !defined(SINGLE_SECTION)
138 . = RAM_BASE + MODADDR;
140 _module_data_start = .;
141 .module_data : AT (ADDR(.module_data) - LOAD_OFFSET) {
142 *(EXCLUDE_FILE (*mod00.bin *mod01.bin *mod02.bin) .module_data)
146 _module_data_end = .;