1*4882a593Smuzhiyun/* 2*4882a593Smuzhiyun * U-Boot EFI linker script 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * SPDX-License-Identifier: BSD-2-Clause 5*4882a593Smuzhiyun * 6*4882a593Smuzhiyun * Modified from usr/lib32/elf_x86_64_efi.lds in gnu-efi 7*4882a593Smuzhiyun */ 8*4882a593Smuzhiyun 9*4882a593SmuzhiyunOUTPUT_FORMAT("elf64-x86-64", "elf64-x86-64", "elf64-x86-64") 10*4882a593SmuzhiyunOUTPUT_ARCH(i386:x86-64) 11*4882a593SmuzhiyunENTRY(_start) 12*4882a593SmuzhiyunSECTIONS 13*4882a593Smuzhiyun{ 14*4882a593Smuzhiyun image_base = .; 15*4882a593Smuzhiyun .hash : { *(.hash) } /* this MUST come first, EFI expects it */ 16*4882a593Smuzhiyun . = ALIGN(4096); 17*4882a593Smuzhiyun .eh_frame : { 18*4882a593Smuzhiyun *(.eh_frame) 19*4882a593Smuzhiyun } 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun . = ALIGN(4096); 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun .text : { 24*4882a593Smuzhiyun *(.text) 25*4882a593Smuzhiyun *(.text.*) 26*4882a593Smuzhiyun *(.gnu.linkonce.t.*) 27*4882a593Smuzhiyun } 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun . = ALIGN(4096); 30*4882a593Smuzhiyun 31*4882a593Smuzhiyun .reloc : { 32*4882a593Smuzhiyun *(.reloc) 33*4882a593Smuzhiyun } 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun . = ALIGN(4096); 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun .data : { 38*4882a593Smuzhiyun *(.rodata*) 39*4882a593Smuzhiyun *(.got.plt) 40*4882a593Smuzhiyun *(.got) 41*4882a593Smuzhiyun *(.data*) 42*4882a593Smuzhiyun *(.sdata) 43*4882a593Smuzhiyun /* the EFI loader doesn't seem to like a .bss section, so we stick 44*4882a593Smuzhiyun * it all into .data: */ 45*4882a593Smuzhiyun *(.sbss) 46*4882a593Smuzhiyun *(.scommon) 47*4882a593Smuzhiyun *(.dynbss) 48*4882a593Smuzhiyun *(.bss) 49*4882a593Smuzhiyun *(COMMON) 50*4882a593Smuzhiyun *(.rel.local) 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun /* U-Boot lists and device tree */ 53*4882a593Smuzhiyun . = ALIGN(8); 54*4882a593Smuzhiyun *(SORT(.u_boot_list*)); 55*4882a593Smuzhiyun . = ALIGN(8); 56*4882a593Smuzhiyun *(.dtb*); 57*4882a593Smuzhiyun } 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun . = ALIGN(4096); 60*4882a593Smuzhiyun .dynamic : { *(.dynamic) } 61*4882a593Smuzhiyun . = ALIGN(4096); 62*4882a593Smuzhiyun 63*4882a593Smuzhiyun .rela : { 64*4882a593Smuzhiyun *(.rela.data*) 65*4882a593Smuzhiyun *(.rela.got) 66*4882a593Smuzhiyun *(.rela.stab) 67*4882a593Smuzhiyun } 68*4882a593Smuzhiyun 69*4882a593Smuzhiyun . = ALIGN(4096); 70*4882a593Smuzhiyun .dynsym : { *(.dynsym) } 71*4882a593Smuzhiyun . = ALIGN(4096); 72*4882a593Smuzhiyun .dynstr : { *(.dynstr) } 73*4882a593Smuzhiyun . = ALIGN(4096); 74*4882a593Smuzhiyun .ignored.reloc : { 75*4882a593Smuzhiyun *(.rela.reloc) 76*4882a593Smuzhiyun *(.eh_frame) 77*4882a593Smuzhiyun *(.note.GNU-stack) 78*4882a593Smuzhiyun } 79*4882a593Smuzhiyun 80*4882a593Smuzhiyun .comment 0 : { *(.comment) } 81*4882a593Smuzhiyun} 82