~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/arm64/kernel/vmlinux.lds.S

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /arch/arm64/kernel/vmlinux.lds.S (Version linux-6.12-rc7) and /arch/i386/kernel/vmlinux.lds.S (Version linux-6.6.60)


  1 /* SPDX-License-Identifier: GPL-2.0 */            
  2 /*                                                
  3  * ld script to make ARM Linux kernel             
  4  * taken from the i386 version by Russell King    
  5  * Written by Martin Mares <mj@atrey.karlin.mff    
  6  */                                               
  7                                                   
  8 #include <asm/hyp_image.h>                        
  9 #ifdef CONFIG_KVM                                 
 10 #define HYPERVISOR_EXTABLE                        
 11         . = ALIGN(SZ_8);                          
 12         __start___kvm_ex_table = .;               
 13         *(__kvm_ex_table)                         
 14         __stop___kvm_ex_table = .;                
 15                                                   
 16 #define HYPERVISOR_DATA_SECTIONS                  
 17         HYP_SECTION_NAME(.rodata) : {             
 18                 . = ALIGN(PAGE_SIZE);             
 19                 __hyp_rodata_start = .;           
 20                 *(HYP_SECTION_NAME(.data..ro_a    
 21                 *(HYP_SECTION_NAME(.rodata))      
 22                 . = ALIGN(PAGE_SIZE);             
 23                 __hyp_rodata_end = .;             
 24         }                                         
 25                                                   
 26 #define HYPERVISOR_PERCPU_SECTION                 
 27         . = ALIGN(PAGE_SIZE);                     
 28         HYP_SECTION_NAME(.data..percpu) : {       
 29                 *(HYP_SECTION_NAME(.data..perc    
 30         }                                         
 31                                                   
 32 #define HYPERVISOR_RELOC_SECTION                  
 33         .hyp.reloc : ALIGN(4) {                   
 34                 __hyp_reloc_begin = .;            
 35                 *(.hyp.reloc)                     
 36                 __hyp_reloc_end = .;              
 37         }                                         
 38                                                   
 39 #define BSS_FIRST_SECTIONS                        
 40         __hyp_bss_start = .;                      
 41         *(HYP_SECTION_NAME(.bss))                 
 42         . = ALIGN(PAGE_SIZE);                     
 43         __hyp_bss_end = .;                        
 44                                                   
 45 /*                                                
 46  * We require that __hyp_bss_start and __bss_s    
 47  * with an assertion. But the BSS_SECTION macr    
 48  * between them, which can in some cases cause    
 49  * work around the issue, force a page alignme    
 50  */                                               
 51 #define SBSS_ALIGN                      PAGE_S    
 52 #else /* CONFIG_KVM */                            
 53 #define HYPERVISOR_EXTABLE                        
 54 #define HYPERVISOR_DATA_SECTIONS                  
 55 #define HYPERVISOR_PERCPU_SECTION                 
 56 #define HYPERVISOR_RELOC_SECTION                  
 57 #define SBSS_ALIGN                      0         
 58 #endif                                            
 59                                                   
 60 #define RO_EXCEPTION_TABLE_ALIGN        4         
 61 #define RUNTIME_DISCARD_EXIT                      
 62                                                   
 63 #include <asm-generic/vmlinux.lds.h>              
 64 #include <asm/cache.h>                            
 65 #include <asm/kernel-pgtable.h>                   
 66 #include <asm/kexec.h>                            
 67 #include <asm/memory.h>                           
 68 #include <asm/page.h>                             
 69                                                   
 70 #include "image.h"                                
 71                                                   
 72 OUTPUT_ARCH(aarch64)                              
 73 ENTRY(_text)                                      
 74                                                   
 75 jiffies = jiffies_64;                             
 76                                                   
 77 #define HYPERVISOR_TEXT                           
 78         . = ALIGN(PAGE_SIZE);                     
 79         __hyp_idmap_text_start = .;               
 80         *(.hyp.idmap.text)                        
 81         __hyp_idmap_text_end = .;                 
 82         __hyp_text_start = .;                     
 83         *(.hyp.text)                              
 84         HYPERVISOR_EXTABLE                        
 85         . = ALIGN(PAGE_SIZE);                     
 86         __hyp_text_end = .;                       
 87                                                   
 88 #define IDMAP_TEXT                                
 89         . = ALIGN(SZ_4K);                         
 90         __idmap_text_start = .;                   
 91         *(.idmap.text)                            
 92         __idmap_text_end = .;                     
 93                                                   
 94 #ifdef CONFIG_HIBERNATION                         
 95 #define HIBERNATE_TEXT                            
 96         ALIGN_FUNCTION();                         
 97         __hibernate_exit_text_start = .;          
 98         *(.hibernate_exit.text)                   
 99         __hibernate_exit_text_end = .;            
100 #else                                             
101 #define HIBERNATE_TEXT                            
102 #endif                                            
103                                                   
104 #ifdef CONFIG_KEXEC_CORE                          
105 #define KEXEC_TEXT                                
106         ALIGN_FUNCTION();                         
107         __relocate_new_kernel_start = .;          
108         *(.kexec_relocate.text)                   
109         __relocate_new_kernel_end = .;            
110 #else                                             
111 #define KEXEC_TEXT                                
112 #endif                                            
113                                                   
114 #ifdef CONFIG_UNMAP_KERNEL_AT_EL0                 
115 #define TRAMP_TEXT                                
116         . = ALIGN(PAGE_SIZE);                     
117         __entry_tramp_text_start = .;             
118         *(.entry.tramp.text)                      
119         . = ALIGN(PAGE_SIZE);                     
120         __entry_tramp_text_end = .;               
121         *(.entry.tramp.rodata)                    
122 #else                                             
123 #define TRAMP_TEXT                                
124 #endif                                            
125                                                   
126 #ifdef CONFIG_UNWIND_TABLES                       
127 #define UNWIND_DATA_SECTIONS                      
128         .eh_frame : {                             
129                 __pi___eh_frame_start = .;        
130                 *(.eh_frame)                      
131                 __pi___eh_frame_end = .;          
132         }                                         
133 #else                                             
134 #define UNWIND_DATA_SECTIONS                      
135 #endif                                            
136                                                   
137 /*                                                
138  * The size of the PE/COFF section that covers    
139  * runs from _stext to _edata, must be a round    
140  * FileAlignment, which we set to its minimum     
141  * itself is 4 KB aligned, so padding out _eda    
142  * boundary should be sufficient.                 
143  */                                               
144 PECOFF_FILE_ALIGNMENT = 0x200;                    
145                                                   
146 #ifdef CONFIG_EFI                                 
147 #define PECOFF_EDATA_PADDING    \                 
148         .pecoff_edata_padding : { BYTE(0); . =    
149 #else                                             
150 #define PECOFF_EDATA_PADDING                      
151 #endif                                            
152                                                   
153 SECTIONS                                          
154 {                                                 
155         /*                                        
156          * XXX: The linker does not define how    
157          * assigned to input sections when the    
158          * matching the same input section nam    
159          * order of matching.                     
160          */                                       
161         DISCARDS                                  
162         /DISCARD/ : {                             
163                 *(.interp .dynamic)               
164                 *(.dynsym .dynstr .hash .gnu.h    
165         }                                         
166                                                   
167         . = KIMAGE_VADDR;                         
168                                                   
169         .head.text : {                            
170                 _text = .;                        
171                 HEAD_TEXT                         
172         }                                         
173         .text : ALIGN(SEGMENT_ALIGN) {  /* Rea    
174                 _stext = .;             /* Tex    
175                         IRQENTRY_TEXT             
176                         SOFTIRQENTRY_TEXT         
177                         ENTRY_TEXT                
178                         TEXT_TEXT                 
179                         SCHED_TEXT                
180                         LOCK_TEXT                 
181                         KPROBES_TEXT              
182                         HYPERVISOR_TEXT           
183                         *(.gnu.warning)           
184         }                                         
185                                                   
186         . = ALIGN(SEGMENT_ALIGN);                 
187         _etext = .;                     /* End    
188                                                   
189         /* everything from this point to __ini    
190         RO_DATA(PAGE_SIZE)                        
191                                                   
192         HYPERVISOR_DATA_SECTIONS                  
193                                                   
194         .got : { *(.got) }                        
195         /*                                        
196          * Make sure that the .got.plt is eith    
197          * contains only the lazy dispatch ent    
198          */                                       
199         .got.plt : { *(.got.plt) }                
200         ASSERT(SIZEOF(.got.plt) == 0 || SIZEOF    
201                "Unexpected GOT/PLT entries det    
202                                                   
203         /* code sections that are never execut    
204         .rodata.text : {                          
205                 TRAMP_TEXT                        
206                 HIBERNATE_TEXT                    
207                 KEXEC_TEXT                        
208                 IDMAP_TEXT                        
209                 . = ALIGN(PAGE_SIZE);             
210         }                                         
211                                                   
212         idmap_pg_dir = .;                         
213         . += PAGE_SIZE;                           
214                                                   
215 #ifdef CONFIG_UNMAP_KERNEL_AT_EL0                 
216         tramp_pg_dir = .;                         
217         . += PAGE_SIZE;                           
218 #endif                                            
219                                                   
220         reserved_pg_dir = .;                      
221         . += PAGE_SIZE;                           
222                                                   
223         swapper_pg_dir = .;                       
224         . += PAGE_SIZE;                           
225                                                   
226         . = ALIGN(SEGMENT_ALIGN);                 
227         __init_begin = .;                         
228         __inittext_begin = .;                     
229                                                   
230         INIT_TEXT_SECTION(8)                      
231                                                   
232         __exittext_begin = .;                     
233         .exit.text : {                            
234                 EXIT_TEXT                         
235         }                                         
236         __exittext_end = .;                       
237                                                   
238         . = ALIGN(4);                             
239         .altinstructions : {                      
240                 __alt_instructions = .;           
241                 *(.altinstructions)               
242                 __alt_instructions_end = .;       
243         }                                         
244                                                   
245         UNWIND_DATA_SECTIONS                      
246                                                   
247         . = ALIGN(SEGMENT_ALIGN);                 
248         __inittext_end = .;                       
249         __initdata_begin = .;                     
250                                                   
251         init_idmap_pg_dir = .;                    
252         . += INIT_IDMAP_DIR_SIZE;                 
253         init_idmap_pg_end = .;                    
254                                                   
255         .init.data : {                            
256                 INIT_DATA                         
257                 INIT_SETUP(16)                    
258                 INIT_CALLS                        
259                 CON_INITCALL                      
260                 INIT_RAM_FS                       
261                 *(.init.altinstructions .init.    
262         }                                         
263         .exit.data : {                            
264                 EXIT_DATA                         
265         }                                         
266                                                   
267         RUNTIME_CONST_VARIABLES                   
268                                                   
269         PERCPU_SECTION(L1_CACHE_BYTES)            
270         HYPERVISOR_PERCPU_SECTION                 
271                                                   
272         HYPERVISOR_RELOC_SECTION                  
273                                                   
274         .rela.dyn : ALIGN(8) {                    
275                 __pi_rela_start = .;              
276                 *(.rela .rela*)                   
277                 __pi_rela_end = .;                
278         }                                         
279                                                   
280         .relr.dyn : ALIGN(8) {                    
281                 __pi_relr_start = .;              
282                 *(.relr.dyn)                      
283                 __pi_relr_end = .;                
284         }                                         
285                                                   
286         . = ALIGN(SEGMENT_ALIGN);                 
287         __initdata_end = .;                       
288         __init_end = .;                           
289                                                   
290         _data = .;                                
291         _sdata = .;                               
292         RW_DATA(L1_CACHE_BYTES, PAGE_SIZE, THR    
293                                                   
294         /*                                        
295          * Data written with the MMU off but r    
296          * cache lines to be invalidated, disc    
297          * Granule (CWG) of data from the cach    
298          * requires this type of maintenance t    
299          * Granule (CWG) area so the cache mai    
300          * interfere with adjacent data.          
301          */                                       
302         .mmuoff.data.write : ALIGN(SZ_2K) {       
303                 __mmuoff_data_start = .;          
304                 *(.mmuoff.data.write)             
305         }                                         
306         . = ALIGN(SZ_2K);                         
307         .mmuoff.data.read : {                     
308                 *(.mmuoff.data.read)              
309                 __mmuoff_data_end = .;            
310         }                                         
311                                                   
312         PECOFF_EDATA_PADDING                      
313         __pecoff_data_rawsize = ABSOLUTE(. - _    
314         _edata = .;                               
315                                                   
316         /* start of zero-init region */           
317         BSS_SECTION(SBSS_ALIGN, 0, 0)             
318                                                   
319         . = ALIGN(PAGE_SIZE);                     
320         init_pg_dir = .;                          
321         . += INIT_DIR_SIZE;                       
322         init_pg_end = .;                          
323         /* end of zero-init region */             
324                                                   
325         . += SZ_4K;             /* stack for t    
326         early_init_stack = .;                     
327                                                   
328         . = ALIGN(SEGMENT_ALIGN);                 
329         __pecoff_data_size = ABSOLUTE(. - __in    
330         _end = .;                                 
331                                                   
332         STABS_DEBUG                               
333         DWARF_DEBUG                               
334         ELF_DETAILS                               
335                                                   
336         HEAD_SYMBOLS                              
337                                                   
338         /*                                        
339          * Sections that should stay zero size    
340          * explicitly check instead of blindly    
341          */                                       
342         .plt : {                                  
343                 *(.plt) *(.plt.*) *(.iplt) *(.    
344         }                                         
345         ASSERT(SIZEOF(.plt) == 0, "Unexpected     
346                                                   
347         .data.rel.ro : { *(.data.rel.ro) }        
348         ASSERT(SIZEOF(.data.rel.ro) == 0, "Une    
349 }                                                 
350                                                   
351 #include "image-vars.h"                           
352                                                   
353 /*                                                
354  * The HYP init code and ID map text can't be     
355  * former is page-aligned, but the latter may     
356  * it should also not cross a page boundary.      
357  */                                               
358 ASSERT(__hyp_idmap_text_end - __hyp_idmap_text    
359         "HYP init code too big")                  
360 ASSERT(__idmap_text_end - (__idmap_text_start     
361         "ID map text too big or misaligned")      
362 #ifdef CONFIG_HIBERNATION                         
363 ASSERT(__hibernate_exit_text_end - __hibernate    
364        "Hibernate exit text is bigger than 4 K    
365 ASSERT(__hibernate_exit_text_start == swsusp_a    
366        "Hibernate exit text does not start wit    
367 #endif                                            
368 #ifdef CONFIG_UNMAP_KERNEL_AT_EL0                 
369 ASSERT((__entry_tramp_text_end - __entry_tramp    
370         "Entry trampoline text too big")          
371 #endif                                            
372 #ifdef CONFIG_KVM                                 
373 ASSERT(__hyp_bss_start == __bss_start, "HYP an    
374 #endif                                            
375 /*                                                
376  * If padding is applied before .head.text, vi    
377  */                                               
378 ASSERT(_text == KIMAGE_VADDR, "HEAD is misalig    
379                                                   
380 ASSERT(swapper_pg_dir - reserved_pg_dir == RES    
381        "RESERVED_SWAPPER_OFFSET is wrong!")       
382                                                   
383 #ifdef CONFIG_UNMAP_KERNEL_AT_EL0                 
384 ASSERT(swapper_pg_dir - tramp_pg_dir == TRAMP_    
385        "TRAMP_SWAPPER_OFFSET is wrong!")          
386 #endif                                            
387                                                   
388 #ifdef CONFIG_KEXEC_CORE                          
389 /* kexec relocation code should fit into one K    
390 ASSERT(__relocate_new_kernel_end - __relocate_    
391        "kexec relocation code is bigger than 4    
392 ASSERT(KEXEC_CONTROL_PAGE_SIZE >= SZ_4K, "KEXE    
393 ASSERT(__relocate_new_kernel_start == arm64_re    
394        "kexec control page does not start with    
395 #endif                                            
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php