mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-09-04 20:19:47 +08:00 
			
		
		
		
	 6975a783d7
			
		
	
	
		6975a783d7
		
	
	
	
	
		
			
			This patch adds code, linker script and makefile support to allow building the zImage wrapper around the kernel as a position independent executable. This results in an ET_DYN instead of an ET_EXEC ELF output file, which can be loaded at any location by the firmware and will process its own relocations to work correctly at the loaded address. This is of interest particularly since the standard ePAPR image format must be an ET_DYN (although this patch alone is not sufficient to produce a fully ePAPR compliant boot image). Note for now we don't enable building with -pie for anything. Signed-off-by: Paul Mackerras <paulus@samba.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Michael Ellerman <michael@ellerman.id.au> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
		
			
				
	
	
		
			50 lines
		
	
	
		
			649 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			649 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| OUTPUT_ARCH(powerpc:common)
 | |
| ENTRY(_zimage_start_opd)
 | |
| EXTERN(_zimage_start_opd)
 | |
| SECTIONS
 | |
| {
 | |
|   .text      :
 | |
|   {
 | |
|     _start = .;
 | |
|     *(.text)
 | |
|     *(.fixup)
 | |
|     _etext = .;
 | |
|   }
 | |
|   . = ALIGN(4096);
 | |
|   .data    :
 | |
|   {
 | |
|     *(.rodata*)
 | |
|     *(.data*)
 | |
|     *(__builtin_*)
 | |
|     *(.sdata*)
 | |
|     *(.got2)
 | |
| 
 | |
|     _dtb_start = .;
 | |
|     *(.kernel:dtb)
 | |
|     _dtb_end = .;
 | |
| 
 | |
|     _vmlinux_start =  .;
 | |
|     *(.kernel:vmlinux.strip)
 | |
|     _vmlinux_end =  .;
 | |
| 
 | |
|     _initrd_start =  .;
 | |
|     *(.kernel:initrd)
 | |
|     _initrd_end =  .;
 | |
|   }
 | |
| 
 | |
|   . = ALIGN(4096);
 | |
|   _edata  =  .;
 | |
|   __bss_start = .;
 | |
|   .bss       :
 | |
|   {
 | |
|    *(.sbss)
 | |
|    *(.bss)
 | |
|   }
 | |
|   _end = . ;
 | |
| 
 | |
|   /DISCARD/ :
 | |
|   {
 | |
|     *(.comment)
 | |
|   }
 | |
| }
 |