mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 09:22:44 +00:00 
			
		
		
		
	 08ff25f4ef
			
		
	
	
		08ff25f4ef
		
	
	
	
	
		
			
			By having a separate list of constructors for the kernel heap code, we can properly use constructors without re-running them after the heap was already initialized. This solves some problems where values were wiped out because they were overwritten by running their constructors later in the initialization process.
		
			
				
	
	
		
			49 lines
		
	
	
	
		
			917 B
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
	
		
			917 B
		
	
	
	
		
			Text
		
	
	
	
	
	
| ENTRY(start)
 | |
| 
 | |
| SECTIONS
 | |
| {
 | |
|     . = 0xc0100000;
 | |
| 
 | |
|     start_of_kernel_image = .;
 | |
| 
 | |
|     .text ALIGN(4K) : AT (ADDR(.text) - 0xc0000000)
 | |
|     {
 | |
|         $<TARGET_OBJECTS:boot>
 | |
|         *(.multiboot)
 | |
|         start_of_kernel_text = .;
 | |
|         *(.text)
 | |
|         *(.text.startup)
 | |
|         end_of_kernel_text = .;
 | |
|     }
 | |
| 
 | |
|     .rodata ALIGN(4K) : AT (ADDR(.rodata) - 0xc0000000)
 | |
|     {
 | |
|         start_heap_ctors = .;
 | |
|         *libkernel_heap.a:*(.ctors)
 | |
|         end_heap_ctors = .;
 | |
| 
 | |
|         start_ctors = .;
 | |
|         *(.ctors)
 | |
|         end_ctors = .;
 | |
| 
 | |
|         *(.rodata)
 | |
|     }
 | |
| 
 | |
|     .data ALIGN(4K) : AT (ADDR(.data) - 0xc0000000)
 | |
|     {
 | |
|         start_of_kernel_data = .;
 | |
|         *(.data)
 | |
|         end_of_kernel_data = .;
 | |
|     }
 | |
| 
 | |
|     .bss ALIGN(4K) : AT (ADDR(.bss) - 0xc0000000)
 | |
|     {
 | |
|         start_of_kernel_bss = .;
 | |
|         *(page_tables)
 | |
|         *(COMMON)
 | |
|         *(.bss)
 | |
|         end_of_kernel_bss = .;
 | |
|     }
 | |
| 
 | |
|     end_of_kernel_image = .;
 | |
| }
 |