1/* SPDX-License-Identifier: BSD-2-Clause */
2/*
3 * U-Boot ARM EFI linker script
4 *
5 * Modified from elf_arm_efi.lds in gnu-efi
6 */
7
8OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
9OUTPUT_ARCH(arm)
10
11PHDRS
12{
13	data PT_LOAD FLAGS(3); /* PF_W | PF_X */
14}
15
16ENTRY(_start)
17SECTIONS
18{
19	.text 0x0 : {
20		_text = .;
21		*(.text.head)
22		*(.text)
23		*(.text.*)
24		*(.gnu.linkonce.t.*)
25		*(.srodata)
26		*(.rodata*)
27		. = ALIGN(16);
28		*(.dynamic);
29		. = ALIGN(512);
30	}
31	_etext = .;
32	_text_size = . - _text;
33	. = ALIGN(4096);
34	.data : {
35		_data = .;
36		*(.sdata)
37		*(.data)
38		*(.data1)
39		*(.data.*)
40		*(.got.plt)
41		*(.got)
42
43		/*
44		 * The EFI loader doesn't seem to like a .bss section, so we
45		 * stick it all into .data:
46		 */
47		. = ALIGN(16);
48		_bss = .;
49		*(.sbss)
50		*(.scommon)
51		*(.dynbss)
52		*(.bss)
53		*(.bss.*)
54		*(COMMON)
55		. = ALIGN(512);
56		_bss_end = .;
57		_edata = .;
58	} :data
59	_data_size = . - _data;
60
61	/DISCARD/ : {
62		/*
63		 * We don't support relocations. These would have to be
64		 * translated from ELF to PE format and added to the .reloc
65		 * section.
66		 */
67		*(.rel.dyn)
68		*(.rel.plt)
69		*(.rel.got)
70		*(.rel.data)
71		*(.rel.data*)
72		*(.rel.reloc)
73		*(.eh_frame)
74		*(.note.GNU-stack)
75		*(.dynsym)
76		*(.dynstr)
77		*(.note.gnu.build-id)
78		*(.comment)
79	}
80}
81