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