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