]> Git Repo - linux.git/blob - arch/x86/boot/compressed/vmlinux.lds.S
Linux 6.14-rc3
[linux.git] / arch / x86 / boot / compressed / vmlinux.lds.S
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #include <asm-generic/vmlinux.lds.h>
3
4 OUTPUT_FORMAT(CONFIG_OUTPUT_FORMAT)
5
6 #undef i386
7
8 #include <asm/cache.h>
9 #include <asm/page_types.h>
10
11 #ifdef CONFIG_X86_64
12 OUTPUT_ARCH(i386:x86-64)
13 ENTRY(startup_64)
14 #else
15 OUTPUT_ARCH(i386)
16 ENTRY(startup_32)
17 #endif
18
19 SECTIONS
20 {
21         /* Be careful parts of head_64.S assume startup_32 is at
22          * address 0.
23          */
24         . = 0;
25         .head.text : {
26                 _head = . ;
27                 HEAD_TEXT
28                 _ehead = . ;
29         }
30         .rodata..compressed : {
31                 *(.rodata..compressed)
32         }
33         .text : {
34                 _text = .;      /* Text */
35                 *(.text)
36                 *(.text.*)
37                 *(.noinstr.text)
38                 _etext = . ;
39         }
40         .rodata : {
41                 _rodata = . ;
42                 *(.rodata)       /* read-only data */
43                 *(.rodata.*)
44                 _erodata = . ;
45         }
46         .data : ALIGN(0x1000) {
47                 _data = . ;
48                 *(.data)
49                 *(.data.*)
50
51                 /* Add 4 bytes of extra space for a CRC-32 checksum */
52                 . = ALIGN(. + 4, 0x200);
53                 _edata = . ;
54         }
55         . = ALIGN(L1_CACHE_BYTES);
56         .bss : {
57                 _bss = . ;
58                 *(.bss)
59                 *(.bss.*)
60                 *(COMMON)
61                 . = ALIGN(8);   /* For convenience during zeroing */
62                 _ebss = .;
63         }
64 #ifdef CONFIG_X86_64
65        . = ALIGN(PAGE_SIZE);
66        .pgtable : {
67                 _pgtable = . ;
68                 *(.pgtable)
69                 _epgtable = . ;
70         }
71 #endif
72         . = ALIGN(PAGE_SIZE);   /* keep ZO size page aligned */
73         _end = .;
74
75         STABS_DEBUG
76         DWARF_DEBUG
77         ELF_DETAILS
78
79         DISCARDS
80         /DISCARD/ : {
81                 *(.dynamic) *(.dynsym) *(.dynstr) *(.dynbss)
82                 *(.hash) *(.gnu.hash)
83                 *(.note.*)
84         }
85
86         .got.plt (INFO) : {
87                 *(.got.plt)
88         }
89         ASSERT(SIZEOF(.got.plt) == 0 ||
90 #ifdef CONFIG_X86_64
91                SIZEOF(.got.plt) == 0x18,
92 #else
93                SIZEOF(.got.plt) == 0xc,
94 #endif
95                "Unexpected GOT/PLT entries detected!")
96
97         /*
98          * Sections that should stay zero sized, which is safer to
99          * explicitly check instead of blindly discarding.
100          */
101         .got : {
102                 *(.got)
103         }
104         ASSERT(SIZEOF(.got) == 0, "Unexpected GOT entries detected!")
105
106         .plt : {
107                 *(.plt) *(.plt.*)
108         }
109         ASSERT(SIZEOF(.plt) == 0, "Unexpected run-time procedure linkages detected!")
110
111         .rel.dyn : {
112                 *(.rel.*) *(.rel_*)
113         }
114         ASSERT(SIZEOF(.rel.dyn) == 0, "Unexpected run-time relocations (.rel) detected!")
115
116         .rela.dyn : {
117                 *(.rela.*) *(.rela_*)
118         }
119         ASSERT(SIZEOF(.rela.dyn) == 0, "Unexpected run-time relocations (.rela) detected!")
120 }
This page took 0.043682 seconds and 4 git commands to generate.