xref: /openbmc/u-boot/arch/x86/lib/elf_x86_64_efi.lds (revision 26699998e9f4adb8c0ac8b36a2c3089fa8f05283)
183d290c5STom Rini/* SPDX-License-Identifier: BSD-2-Clause */
2d36badfdSSimon Glass/*
3d36badfdSSimon Glass * U-Boot EFI linker script
4d36badfdSSimon Glass *
5d36badfdSSimon Glass * Modified from usr/lib32/elf_x86_64_efi.lds in gnu-efi
6d36badfdSSimon Glass */
7d36badfdSSimon Glass
8d36badfdSSimon GlassOUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64")
9d36badfdSSimon GlassOUTPUT_ARCH(i386:x86-64)
10d36badfdSSimon GlassENTRY(_start)
11d36badfdSSimon GlassSECTIONS
12d36badfdSSimon Glass{
13d36badfdSSimon Glass	image_base = .;
14d36badfdSSimon Glass	.hash : { *(.hash) }	/* this MUST come first, EFI expects it */
15d36badfdSSimon Glass	. = ALIGN(4096);
16d36badfdSSimon Glass	.eh_frame : {
17d36badfdSSimon Glass		*(.eh_frame)
18d36badfdSSimon Glass	}
19d36badfdSSimon Glass
20d36badfdSSimon Glass	. = ALIGN(4096);
21d36badfdSSimon Glass
22d36badfdSSimon Glass	.text : {
23d36badfdSSimon Glass		*(.text)
24d36badfdSSimon Glass		*(.text.*)
25d36badfdSSimon Glass		*(.gnu.linkonce.t.*)
26d36badfdSSimon Glass	}
27d36badfdSSimon Glass
28d36badfdSSimon Glass	. = ALIGN(4096);
29d36badfdSSimon Glass
30d36badfdSSimon Glass	.reloc : {
31d36badfdSSimon Glass		*(.reloc)
32d36badfdSSimon Glass	}
33d36badfdSSimon Glass
34d36badfdSSimon Glass	. = ALIGN(4096);
35d36badfdSSimon Glass
36d36badfdSSimon Glass	.data : {
37d36badfdSSimon Glass		*(.rodata*)
38d36badfdSSimon Glass		*(.got.plt)
39d36badfdSSimon Glass		*(.got)
40d36badfdSSimon Glass		*(.data*)
41d36badfdSSimon Glass		*(.sdata)
42d36badfdSSimon Glass		/* the EFI loader doesn't seem to like a .bss section, so we stick
43d36badfdSSimon Glass		 * it all into .data: */
44d36badfdSSimon Glass		*(.sbss)
45d36badfdSSimon Glass		*(.scommon)
46d36badfdSSimon Glass		*(.dynbss)
47*6331cb21SAlexander Graf		*(.bss*)
48d36badfdSSimon Glass		*(COMMON)
49d36badfdSSimon Glass		*(.rel.local)
50d36badfdSSimon Glass
51d36badfdSSimon Glass		/* U-Boot lists and device tree */
52d36badfdSSimon Glass		. = ALIGN(8);
53d36badfdSSimon Glass		*(SORT(.u_boot_list*));
54d36badfdSSimon Glass		. = ALIGN(8);
55d36badfdSSimon Glass		*(.dtb*);
56d36badfdSSimon Glass	}
57d36badfdSSimon Glass
58d36badfdSSimon Glass	. = ALIGN(4096);
59d36badfdSSimon Glass	.dynamic : { *(.dynamic) }
60d36badfdSSimon Glass	. = ALIGN(4096);
61d36badfdSSimon Glass
62d36badfdSSimon Glass	.rela : {
63d36badfdSSimon Glass		*(.rela.data*)
64d36badfdSSimon Glass		*(.rela.got)
65d36badfdSSimon Glass		*(.rela.stab)
66d36badfdSSimon Glass	}
67d36badfdSSimon Glass
68d36badfdSSimon Glass	. = ALIGN(4096);
69d36badfdSSimon Glass	.dynsym : { *(.dynsym) }
70d36badfdSSimon Glass	. = ALIGN(4096);
71d36badfdSSimon Glass	.dynstr : { *(.dynstr) }
72d36badfdSSimon Glass	. = ALIGN(4096);
73d36badfdSSimon Glass	.ignored.reloc : {
74d36badfdSSimon Glass		*(.rela.reloc)
75d36badfdSSimon Glass		*(.eh_frame)
76d36badfdSSimon Glass		*(.note.GNU-stack)
77d36badfdSSimon Glass	}
78d36badfdSSimon Glass
79d36badfdSSimon Glass	.comment 0 : { *(.comment) }
80d36badfdSSimon Glass}
81