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_ia32_efi.lds in gnu-efi 7*4882a593Smuzhiyun */ 8*4882a593Smuzhiyun 9*4882a593SmuzhiyunOUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") 10*4882a593SmuzhiyunOUTPUT_ARCH(i386) 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 .text : 18*4882a593Smuzhiyun { 19*4882a593Smuzhiyun *(.text) 20*4882a593Smuzhiyun *(.text.*) 21*4882a593Smuzhiyun *(.gnu.linkonce.t.*) 22*4882a593Smuzhiyun } 23*4882a593Smuzhiyun . = ALIGN(4096); 24*4882a593Smuzhiyun .sdata : 25*4882a593Smuzhiyun { 26*4882a593Smuzhiyun *(.got.plt) 27*4882a593Smuzhiyun *(.got) 28*4882a593Smuzhiyun *(.srodata) 29*4882a593Smuzhiyun *(.sdata) 30*4882a593Smuzhiyun *(.sbss) 31*4882a593Smuzhiyun *(.scommon) 32*4882a593Smuzhiyun } 33*4882a593Smuzhiyun . = ALIGN(4096); 34*4882a593Smuzhiyun .data : 35*4882a593Smuzhiyun { 36*4882a593Smuzhiyun *(.rodata*) 37*4882a593Smuzhiyun *(.data) 38*4882a593Smuzhiyun *(.data1) 39*4882a593Smuzhiyun *(.data.*) 40*4882a593Smuzhiyun *(.sdata) 41*4882a593Smuzhiyun *(.got.plt) 42*4882a593Smuzhiyun *(.got) 43*4882a593Smuzhiyun /* 44*4882a593Smuzhiyun * the EFI loader doesn't seem to like a .bss section, so we 45*4882a593Smuzhiyun * stick it all into .data: 46*4882a593Smuzhiyun */ 47*4882a593Smuzhiyun *(.sbss) 48*4882a593Smuzhiyun *(.scommon) 49*4882a593Smuzhiyun *(.dynbss) 50*4882a593Smuzhiyun *(.bss) 51*4882a593Smuzhiyun *(COMMON) 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun /* U-Boot lists and device tree */ 54*4882a593Smuzhiyun . = ALIGN(8); 55*4882a593Smuzhiyun *(SORT(.u_boot_list*)); 56*4882a593Smuzhiyun . = ALIGN(8); 57*4882a593Smuzhiyun *(.dtb*); 58*4882a593Smuzhiyun } 59*4882a593Smuzhiyun 60*4882a593Smuzhiyun . = ALIGN(4096); 61*4882a593Smuzhiyun .dynamic : { *(.dynamic) } 62*4882a593Smuzhiyun . = ALIGN(4096); 63*4882a593Smuzhiyun .rel : 64*4882a593Smuzhiyun { 65*4882a593Smuzhiyun *(.rel.data) 66*4882a593Smuzhiyun *(.rel.data.*) 67*4882a593Smuzhiyun *(.rel.got) 68*4882a593Smuzhiyun *(.rel.stab) 69*4882a593Smuzhiyun *(.data.rel.ro.local) 70*4882a593Smuzhiyun *(.data.rel.local) 71*4882a593Smuzhiyun *(.data.rel.ro) 72*4882a593Smuzhiyun *(.data.rel*) 73*4882a593Smuzhiyun *(.rel.u_boot_list*) 74*4882a593Smuzhiyun } 75*4882a593Smuzhiyun . = ALIGN(4096); 76*4882a593Smuzhiyun .reloc : /* This is the PECOFF .reloc section! */ 77*4882a593Smuzhiyun { 78*4882a593Smuzhiyun *(.reloc) 79*4882a593Smuzhiyun } 80*4882a593Smuzhiyun . = ALIGN(4096); 81*4882a593Smuzhiyun .dynsym : { *(.dynsym) } 82*4882a593Smuzhiyun . = ALIGN(4096); 83*4882a593Smuzhiyun .dynstr : { *(.dynstr) } 84*4882a593Smuzhiyun . = ALIGN(4096); 85*4882a593Smuzhiyun /DISCARD/ : 86*4882a593Smuzhiyun { 87*4882a593Smuzhiyun *(.rel.reloc) 88*4882a593Smuzhiyun *(.eh_frame) 89*4882a593Smuzhiyun *(.note.GNU-stack) 90*4882a593Smuzhiyun } 91*4882a593Smuzhiyun .comment 0 : { *(.comment) } 92*4882a593Smuzhiyun} 93