Loading...
1#include <asm-generic/vmlinux.lds.h>
2
3OUTPUT_FORMAT(CONFIG_OUTPUT_FORMAT, CONFIG_OUTPUT_FORMAT, CONFIG_OUTPUT_FORMAT)
4
5#undef i386
6
7#include <asm/cache.h>
8#include <asm/page_types.h>
9
10#ifdef CONFIG_X86_64
11OUTPUT_ARCH(i386:x86-64)
12ENTRY(startup_64)
13#else
14OUTPUT_ARCH(i386)
15ENTRY(startup_32)
16#endif
17
18SECTIONS
19{
20 /* Be careful parts of head_64.S assume startup_32 is at
21 * address 0.
22 */
23 . = 0;
24 .head.text : {
25 _head = . ;
26 HEAD_TEXT
27 _ehead = . ;
28 }
29 .rodata..compressed : {
30 *(.rodata..compressed)
31 }
32 .text : {
33 _text = .; /* Text */
34 *(.text)
35 *(.text.*)
36 _etext = . ;
37 }
38 .rodata : {
39 _rodata = . ;
40 *(.rodata) /* read-only data */
41 *(.rodata.*)
42 _erodata = . ;
43 }
44 .got : {
45 _got = .;
46 KEEP(*(.got.plt))
47 KEEP(*(.got))
48 _egot = .;
49 }
50 .data : {
51 _data = . ;
52 *(.data)
53 *(.data.*)
54 _edata = . ;
55 }
56 . = ALIGN(L1_CACHE_BYTES);
57 .bss : {
58 _bss = . ;
59 *(.bss)
60 *(.bss.*)
61 *(COMMON)
62 . = ALIGN(8); /* For convenience during zeroing */
63 _ebss = .;
64 }
65#ifdef CONFIG_X86_64
66 . = ALIGN(PAGE_SIZE);
67 .pgtable : {
68 _pgtable = . ;
69 *(.pgtable)
70 _epgtable = . ;
71 }
72#endif
73 _end = .;
74}
1/* SPDX-License-Identifier: GPL-2.0 */
2#include <asm-generic/vmlinux.lds.h>
3
4OUTPUT_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
12OUTPUT_ARCH(i386:x86-64)
13ENTRY(startup_64)
14#else
15OUTPUT_ARCH(i386)
16ENTRY(startup_32)
17#endif
18
19SECTIONS
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}