Prepare v2023.10
[platform/kernel/u-boot.git] / arch / x86 / cpu / u-boot.lds
1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /*
3  * (C) Copyright 2002
4  * Daniel Engström, Omicron Ceti AB, daniel@omicron.se.
5  */
6
7 #include <config.h>
8 OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
9 OUTPUT_ARCH(i386)
10 ENTRY(_start)
11
12 SECTIONS
13 {
14 #ifndef CONFIG_CMDLINE
15         /DISCARD/ : { *(__u_boot_list_2_cmd_*) }
16 #endif
17
18         . = CONFIG_TEXT_BASE;   /* Location of bootcode in flash */
19         __text_start = .;
20
21         .text.start : { *(.text.start); }
22
23         .__efi_runtime_start : {
24                 *(.__efi_runtime_start)
25         }
26
27         .efi_runtime : {
28                 *(.text.efi_runtime*)
29                 *(.rodata.efi_runtime*)
30                 *(.data.efi_runtime*)
31         }
32
33         .__efi_runtime_stop : {
34                 *(.__efi_runtime_stop)
35         }
36
37         .text  : { *(.text*); }
38
39         . = ALIGN(4);
40
41         . = ALIGN(4);
42         __u_boot_list : {
43                 KEEP(*(SORT(__u_boot_list*)));
44         }
45
46         . = ALIGN(4);
47         .rodata : {
48                 *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
49                 KEEP(*(.rodata.efi.init));
50         }
51
52         . = ALIGN(4);
53         .data : { *(.data*) }
54
55         . = ALIGN(4);
56         .hash : { *(.hash*) }
57
58         . = ALIGN(4);
59         .got : { *(.got*) }
60
61         . = ALIGN(4);
62
63         .efi_runtime_rel_start :
64         {
65                 *(.__efi_runtime_rel_start)
66         }
67
68         .efi_runtime_rel : {
69                 *(.rel*.efi_runtime)
70                 *(.rel*.efi_runtime.*)
71         }
72
73         .efi_runtime_rel_stop :
74         {
75                 *(.__efi_runtime_rel_stop)
76         }
77
78         . = ALIGN(4);
79
80         __data_end = .;
81         __init_end = .;
82
83         . = ALIGN(4);
84         .dynsym : { *(.dynsym*) }
85
86         . = ALIGN(4);
87         __rel_dyn_start = .;
88         .rel.dyn : {
89                 *(.rel*)
90         }
91         __rel_dyn_end = .;
92         . = ALIGN(4);
93         _end = .;
94
95         .bss __rel_dyn_start (OVERLAY) : {
96                 __bss_start = .;
97                 *(.bss*)
98                 *(COM*)
99                 . = ALIGN(4);
100                 __bss_end = .;
101         }
102
103         /DISCARD/ : { *(.dynstr*) }
104         /DISCARD/ : { *(.dynamic*) }
105         /DISCARD/ : { *(.plt*) }
106         /DISCARD/ : { *(.interp*) }
107         /DISCARD/ : { *(.gnu*) }
108         /DISCARD/ : { *(.note.gnu.property) }
109
110 #ifdef CONFIG_X86_16BIT_INIT
111         /*
112          * The following expressions place the 16-bit Real-Mode code and
113          * Reset Vector at the end of the Flash ROM
114          */
115         . = START_16 - RESET_SEG_START;
116         .start16 : AT (START_16) {
117                 KEEP(*(.start16));
118         }
119
120         . = RESET_VEC_LOC - RESET_SEG_START;
121         .resetvec : AT (RESET_VEC_LOC) {
122                 KEEP(*(.resetvec));
123         }
124 #endif
125
126 }