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