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