1
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
22
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 = .;
35 *(.text)
36 *(.text.*)
37 _etext = . ;
38 }
39 .rodata : {
40 _rodata = . ;
41 *(.rodata)
42 *(.rodata.*)
43 _erodata = . ;
44 }
45 .data : {
46 _data = . ;
47 *(.data)
48 *(.data.*)
49 *(.bss.efistub)
50 _edata = . ;
51 }
52 . = ALIGN(L1_CACHE_BYTES);
53 .bss : {
54 _bss = . ;
55 *(.bss)
56 *(.bss.*)
57 *(COMMON)
58 . = ALIGN(8);
59 _ebss = .;
60 }
61#ifdef CONFIG_X86_64
62 . = ALIGN(PAGE_SIZE);
63 .pgtable : {
64 _pgtable = . ;
65 *(.pgtable)
66 _epgtable = . ;
67 }
68#endif
69 . = ALIGN(PAGE_SIZE);
70 _end = .;
71
72 STABS_DEBUG
73 DWARF_DEBUG
74 ELF_DETAILS
75
76 DISCARDS
77 /DISCARD/ : {
78 *(.dynamic) *(.dynsym) *(.dynstr) *(.dynbss)
79 *(.hash) *(.gnu.hash)
80 *(.note.*)
81 }
82
83 .got.plt (INFO) : {
84 *(.got.plt)
85 }
86 ASSERT(SIZEOF(.got.plt) == 0 ||
87#ifdef CONFIG_X86_64
88 SIZEOF(.got.plt) == 0x18,
89#else
90 SIZEOF(.got.plt) == 0xc,
91#endif
92 "Unexpected GOT/PLT entries detected!")
93
94
95
96
97
98 .got : {
99 *(.got)
100 }
101 ASSERT(SIZEOF(.got) == 0, "Unexpected GOT entries detected!")
102
103 .plt : {
104 *(.plt) *(.plt.*)
105 }
106 ASSERT(SIZEOF(.plt) == 0, "Unexpected run-time procedure linkages detected!")
107
108 .rel.dyn : {
109 *(.rel.*) *(.rel_*)
110 }
111 ASSERT(SIZEOF(.rel.dyn) == 0, "Unexpected run-time relocations (.rel) detected!")
112
113 .rela.dyn : {
114 *(.rela.*) *(.rela_*)
115 }
116 ASSERT(SIZEOF(.rela.dyn) == 0, "Unexpected run-time relocations (.rela) detected!")
117}
118