1/* SPDX-License-Identifier: BSD-2-Clause */
2/*
3 * U-Boot aarch64 EFI linker script
4 *
5 * Modified from elf_aarch64_efi.lds in gnu-efi
6 */
7
8OUTPUT_FORMAT("elf64-littleaarch64", "elf64-littleaarch64", "elf64-littleaarch64")
9OUTPUT_ARCH(aarch64)
10ENTRY(_start)
11SECTIONS
12{
13	.text 0x0 : {
14		_text = .;
15		*(.text.head)
16		*(.text)
17		*(.text.*)
18		*(.gnu.linkonce.t.*)
19		*(.srodata)
20		*(.rodata*)
21		. = ALIGN(16);
22	}
23	_etext = .;
24	_text_size = . - _text;
25	.dynamic  : { *(.dynamic) }
26	.data : {
27		_data = .;
28		*(.sdata)
29		*(.data)
30		*(.data1)
31		*(.data.*)
32		*(.got.plt)
33		*(.got)
34
35		/*
36		 * The EFI loader doesn't seem to like a .bss section, so we
37		 * stick it all into .data:
38		 */
39		. = ALIGN(16);
40		_bss = .;
41		*(.sbss)
42		*(.scommon)
43		*(.dynbss)
44		*(.bss)
45		*(.bss.*)
46		*(COMMON)
47		. = ALIGN(16);
48		_bss_end = .;
49		_edata = .;
50	}
51	.rela.dyn : { *(.rela.dyn) }
52	.rela.plt : { *(.rela.plt) }
53	.rela.got : { *(.rela.got) }
54	.rela.data : { *(.rela.data) *(.rela.data*) }
55	_data_size = . - _etext;
56
57	. = ALIGN(4096);
58	.dynsym   : { *(.dynsym) }
59	. = ALIGN(4096);
60	.dynstr   : { *(.dynstr) }
61	. = ALIGN(4096);
62	.note.gnu.build-id : { *(.note.gnu.build-id) }
63	/DISCARD/ : {
64		*(.rel.reloc)
65		*(.eh_frame)
66		*(.note.GNU-stack)
67	}
68	.comment 0 : { *(.comment) }
69}
70