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