.. | .. |
---|
15 | 15 | /* Handle ro_after_init data on our own. */ |
---|
16 | 16 | #define RO_AFTER_INIT_DATA |
---|
17 | 17 | |
---|
| 18 | +#define RUNTIME_DISCARD_EXIT |
---|
| 19 | + |
---|
| 20 | +#define EMITS_PT_NOTE |
---|
| 21 | + |
---|
18 | 22 | #include <asm-generic/vmlinux.lds.h> |
---|
| 23 | +#include <asm/vmlinux.lds.h> |
---|
19 | 24 | |
---|
20 | 25 | OUTPUT_FORMAT("elf64-s390", "elf64-s390", "elf64-s390") |
---|
21 | 26 | OUTPUT_ARCH(s390:64-bit) |
---|
.. | .. |
---|
49 | 54 | _etext = .; /* End of text section */ |
---|
50 | 55 | } :text = 0x0700 |
---|
51 | 56 | |
---|
52 | | - NOTES :text :note |
---|
53 | | - |
---|
54 | | - .dummy : { *(.dummy) } :data |
---|
55 | | - |
---|
56 | | - RO_DATA_SECTION(PAGE_SIZE) |
---|
| 57 | + RO_DATA(PAGE_SIZE) |
---|
57 | 58 | |
---|
58 | 59 | . = ALIGN(PAGE_SIZE); |
---|
59 | 60 | _sdata = .; /* Start of data section */ |
---|
.. | .. |
---|
62 | 63 | __start_ro_after_init = .; |
---|
63 | 64 | .data..ro_after_init : { |
---|
64 | 65 | *(.data..ro_after_init) |
---|
65 | | - } |
---|
| 66 | + JUMP_TABLE_DATA |
---|
| 67 | + } :data |
---|
66 | 68 | EXCEPTION_TABLE(16) |
---|
67 | 69 | . = ALIGN(PAGE_SIZE); |
---|
68 | 70 | __end_ro_after_init = .; |
---|
69 | 71 | |
---|
70 | | - RW_DATA_SECTION(0x100, PAGE_SIZE, THREAD_SIZE) |
---|
| 72 | + RW_DATA(0x100, PAGE_SIZE, THREAD_SIZE) |
---|
| 73 | + BOOT_DATA_PRESERVED |
---|
71 | 74 | |
---|
72 | 75 | _edata = .; /* End of data section */ |
---|
73 | 76 | |
---|
.. | .. |
---|
121 | 124 | /* |
---|
122 | 125 | * Table with the patch locations to undo expolines |
---|
123 | 126 | */ |
---|
| 127 | + . = ALIGN(4); |
---|
124 | 128 | .nospec_call_table : { |
---|
125 | 129 | __nospec_call_start = . ; |
---|
126 | 130 | *(.s390_indirect*) |
---|
.. | .. |
---|
132 | 136 | __nospec_return_end = . ; |
---|
133 | 137 | } |
---|
134 | 138 | |
---|
| 139 | + BOOT_DATA |
---|
| 140 | + |
---|
135 | 141 | /* early.c uses stsi, which requires page aligned data. */ |
---|
136 | 142 | . = ALIGN(PAGE_SIZE); |
---|
137 | 143 | INIT_DATA_SECTION(0x100) |
---|
138 | 144 | |
---|
139 | 145 | PERCPU_SECTION(0x100) |
---|
| 146 | + |
---|
| 147 | + .dynsym ALIGN(8) : { |
---|
| 148 | + __dynsym_start = .; |
---|
| 149 | + *(.dynsym) |
---|
| 150 | + __dynsym_end = .; |
---|
| 151 | + } |
---|
| 152 | + .rela.dyn ALIGN(8) : { |
---|
| 153 | + __rela_dyn_start = .; |
---|
| 154 | + *(.rela*) |
---|
| 155 | + __rela_dyn_end = .; |
---|
| 156 | + } |
---|
| 157 | + |
---|
140 | 158 | . = ALIGN(PAGE_SIZE); |
---|
141 | 159 | __init_end = .; /* freed after init ends here */ |
---|
142 | 160 | |
---|
.. | .. |
---|
144 | 162 | |
---|
145 | 163 | _end = . ; |
---|
146 | 164 | |
---|
| 165 | + /* |
---|
| 166 | + * uncompressed image info used by the decompressor |
---|
| 167 | + * it should match struct vmlinux_info |
---|
| 168 | + */ |
---|
| 169 | + .vmlinux.info 0 (INFO) : { |
---|
| 170 | + QUAD(_stext) /* default_lma */ |
---|
| 171 | + QUAD(startup_continue) /* entry */ |
---|
| 172 | + QUAD(__bss_start - _stext) /* image_size */ |
---|
| 173 | + QUAD(__bss_stop - __bss_start) /* bss_size */ |
---|
| 174 | + QUAD(__boot_data_start) /* bootdata_off */ |
---|
| 175 | + QUAD(__boot_data_end - __boot_data_start) /* bootdata_size */ |
---|
| 176 | + QUAD(__boot_data_preserved_start) /* bootdata_preserved_off */ |
---|
| 177 | + QUAD(__boot_data_preserved_end - |
---|
| 178 | + __boot_data_preserved_start) /* bootdata_preserved_size */ |
---|
| 179 | + QUAD(__dynsym_start) /* dynsym_start */ |
---|
| 180 | + QUAD(__rela_dyn_start) /* rela_dyn_start */ |
---|
| 181 | + QUAD(__rela_dyn_end) /* rela_dyn_end */ |
---|
| 182 | + } :NONE |
---|
| 183 | + |
---|
147 | 184 | /* Debugging sections. */ |
---|
148 | 185 | STABS_DEBUG |
---|
149 | 186 | DWARF_DEBUG |
---|
| 187 | + ELF_DETAILS |
---|
150 | 188 | |
---|
151 | 189 | /* Sections to be discarded */ |
---|
152 | 190 | DISCARDS |
---|
153 | 191 | /DISCARD/ : { |
---|
154 | 192 | *(.eh_frame) |
---|
| 193 | + *(.interp) |
---|
155 | 194 | } |
---|
156 | 195 | } |
---|