blob: 174d36f758e3731bf851785480d3e9d8dc14ca9e [file] [log] [blame]
Ben Stoltzab76a472015-08-04 12:33:46 -06001/*
2 * U-Boot EFI linker script
3 *
4 * SPDX-License-Identifier: BSD-2-Clause
5 *
6 * Modified from usr/lib32/elf_ia32_efi.lds in gnu-efi
7 */
8
Ben Stoltzab76a472015-08-04 12:33:46 -06009OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
10OUTPUT_ARCH(i386)
11ENTRY(_start)
12SECTIONS
13{
14 image_base = .;
15 .hash : { *(.hash) } /* this MUST come first, EFI expects it */
16 . = ALIGN(4096);
17 .text :
18 {
19 *(.text)
20 *(.text.*)
21 *(.gnu.linkonce.t.*)
22 }
23 . = ALIGN(4096);
24 .sdata :
25 {
26 *(.got.plt)
27 *(.got)
28 *(.srodata)
29 *(.sdata)
30 *(.sbss)
31 *(.scommon)
32 }
33 . = ALIGN(4096);
34 .data :
35 {
36 *(.rodata*)
37 *(.data)
38 *(.data1)
39 *(.data.*)
40 *(.sdata)
41 *(.got.plt)
42 *(.got)
43 /*
44 * the EFI loader doesn't seem to like a .bss section, so we
45 * stick it all into .data:
46 */
47 *(.sbss)
48 *(.scommon)
49 *(.dynbss)
50 *(.bss)
51 *(COMMON)
52
53 /* U-Boot lists and device tree */
54 . = ALIGN(8);
55 *(SORT(.u_boot_list*));
56 . = ALIGN(8);
57 *(.dtb*);
58 }
59
60 . = ALIGN(4096);
61 .dynamic : { *(.dynamic) }
62 . = ALIGN(4096);
63 .rel :
64 {
65 *(.rel.data)
66 *(.rel.data.*)
67 *(.rel.got)
68 *(.rel.stab)
69 *(.data.rel.ro.local)
70 *(.data.rel.local)
71 *(.data.rel.ro)
72 *(.data.rel*)
73 *(.rel.u_boot_list*)
74 }
75 . = ALIGN(4096);
76 .reloc : /* This is the PECOFF .reloc section! */
77 {
78 *(.reloc)
79 }
80 . = ALIGN(4096);
81 .dynsym : { *(.dynsym) }
82 . = ALIGN(4096);
83 .dynstr : { *(.dynstr) }
84 . = ALIGN(4096);
85 /DISCARD/ :
86 {
87 *(.rel.reloc)
88 *(.eh_frame)
89 *(.note.GNU-stack)
90 }
91 .comment 0 : { *(.comment) }
92}