/* SPDX-License-Identifier: BSD-2-Clause */
/*
 * U-Boot EFI linker script
 *
 * Modified from usr/lib32/elf_ia32_efi.lds in gnu-efi
 */

OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
OUTPUT_ARCH(i386)
ENTRY(_start)
SECTIONS
{
	image_base = .;
	.hash : { *(.hash) }	/* this MUST come first, EFI expects it */
	. = ALIGN(4096);
	.text :
	{
		*(.text)
		*(.text.*)
		*(.gnu.linkonce.t.*)
	}
	. = ALIGN(4096);
	.sdata :
	{
		*(.got.plt)
		*(.got)
		*(.srodata)
		*(.sdata)
		*(.sbss)
		*(.scommon)
	}
	. = ALIGN(4096);
	.data :
	{
		*(.rodata*)
		*(.data)
		*(.data1)
		*(.data.*)
		*(.sdata)
		*(.got.plt)
		*(.got)
		/*
		 * the EFI loader doesn't seem to like a .bss section, so we
		 * stick it all into .data:
		 */
		*(.sbss)
		*(.scommon)
		*(.dynbss)
		*(.bss)
		*(COMMON)

		/* U-Boot lists and device tree */
		. = ALIGN(8);
		*(SORT(.u_boot_list*));
		. = ALIGN(8);
		*(.dtb*);
	}

	. = ALIGN(4096);
	.dynamic  : { *(.dynamic) }
	. = ALIGN(4096);
	.rel :
	{
		*(.rel.data)
		*(.rel.data.*)
		*(.rel.got)
		*(.rel.stab)
		*(.data.rel.ro.local)
		*(.data.rel.local)
		*(.data.rel.ro)
		*(.data.rel*)
		*(.rel.u_boot_list*)
	}
	. = ALIGN(4096);
		.reloc :	/* This is the PECOFF .reloc section! */
	{
	*(.reloc)
	}
	. = ALIGN(4096);
	.dynsym   : { *(.dynsym) }
	. = ALIGN(4096);
	.dynstr   : { *(.dynstr) }
	. = ALIGN(4096);
	/DISCARD/ :
	{
		*(.rel.reloc)
		*(.eh_frame)
		*(.note.GNU-stack)
	}
	.comment 0 : { *(.comment) }
}
