blob: cd3b0a982dac85dcd15634f6c95e5b284898521f [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
9#include <config.h>
10
11OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
12OUTPUT_ARCH(i386)
13ENTRY(_start)
14SECTIONS
15{
16 image_base = .;
17 .hash : { *(.hash) } /* this MUST come first, EFI expects it */
18 . = ALIGN(4096);
19 .text :
20 {
21 *(.text)
22 *(.text.*)
23 *(.gnu.linkonce.t.*)
24 }
25 . = ALIGN(4096);
26 .sdata :
27 {
28 *(.got.plt)
29 *(.got)
30 *(.srodata)
31 *(.sdata)
32 *(.sbss)
33 *(.scommon)
34 }
35 . = ALIGN(4096);
36 .data :
37 {
38 *(.rodata*)
39 *(.data)
40 *(.data1)
41 *(.data.*)
42 *(.sdata)
43 *(.got.plt)
44 *(.got)
45 /*
46 * the EFI loader doesn't seem to like a .bss section, so we
47 * stick it all into .data:
48 */
49 *(.sbss)
50 *(.scommon)
51 *(.dynbss)
52 *(.bss)
53 *(COMMON)
54
55 /* U-Boot lists and device tree */
56 . = ALIGN(8);
57 *(SORT(.u_boot_list*));
58 . = ALIGN(8);
59 *(.dtb*);
60 }
61
62 . = ALIGN(4096);
63 .dynamic : { *(.dynamic) }
64 . = ALIGN(4096);
65 .rel :
66 {
67 *(.rel.data)
68 *(.rel.data.*)
69 *(.rel.got)
70 *(.rel.stab)
71 *(.data.rel.ro.local)
72 *(.data.rel.local)
73 *(.data.rel.ro)
74 *(.data.rel*)
75 *(.rel.u_boot_list*)
76 }
77 . = ALIGN(4096);
78 .reloc : /* This is the PECOFF .reloc section! */
79 {
80 *(.reloc)
81 }
82 . = ALIGN(4096);
83 .dynsym : { *(.dynsym) }
84 . = ALIGN(4096);
85 .dynstr : { *(.dynstr) }
86 . = ALIGN(4096);
87 /DISCARD/ :
88 {
89 *(.rel.reloc)
90 *(.eh_frame)
91 *(.note.GNU-stack)
92 }
93 .comment 0 : { *(.comment) }
94}