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