mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	kbuild: Allow LD_DEAD_CODE_DATA_ELIMINATION to be selectable if enabled
Architectures that are capable can select HAVE_LD_DEAD_CODE_DATA_ELIMINATION to enable selection of that option (as an EXPERT kernel option). Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
This commit is contained in:
		
							parent
							
								
									6ca8d9433d
								
							
						
					
					
						commit
						5d20ee3192
					
				
					 2 changed files with 27 additions and 15 deletions
				
			
		
							
								
								
									
										15
									
								
								arch/Kconfig
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								arch/Kconfig
									
									
									
									
									
								
							| 
						 | 
					@ -596,21 +596,6 @@ config CC_STACKPROTECTOR_AUTO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
endchoice
 | 
					endchoice
 | 
				
			||||||
 | 
					
 | 
				
			||||||
config LD_DEAD_CODE_DATA_ELIMINATION
 | 
					 | 
				
			||||||
	bool
 | 
					 | 
				
			||||||
	help
 | 
					 | 
				
			||||||
	  Select this if the architecture wants to do dead code and
 | 
					 | 
				
			||||||
	  data elimination with the linker by compiling with
 | 
					 | 
				
			||||||
	  -ffunction-sections -fdata-sections and linking with
 | 
					 | 
				
			||||||
	  --gc-sections.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	  This requires that the arch annotates or otherwise protects
 | 
					 | 
				
			||||||
	  its external entry points from being discarded. Linker scripts
 | 
					 | 
				
			||||||
	  must also merge .text.*, .data.*, and .bss.* correctly into
 | 
					 | 
				
			||||||
	  output sections. Care must be taken not to pull in unrelated
 | 
					 | 
				
			||||||
	  sections (e.g., '.text.init'). Typically '.' in section names
 | 
					 | 
				
			||||||
	  is used to distinguish them from label names / C identifiers.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
config HAVE_ARCH_WITHIN_STACK_FRAMES
 | 
					config HAVE_ARCH_WITHIN_STACK_FRAMES
 | 
				
			||||||
	bool
 | 
						bool
 | 
				
			||||||
	help
 | 
						help
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										27
									
								
								init/Kconfig
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								init/Kconfig
									
									
									
									
									
								
							| 
						 | 
					@ -1038,6 +1038,33 @@ config CC_OPTIMIZE_FOR_SIZE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
endchoice
 | 
					endchoice
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					config HAVE_LD_DEAD_CODE_DATA_ELIMINATION
 | 
				
			||||||
 | 
						bool
 | 
				
			||||||
 | 
						help
 | 
				
			||||||
 | 
						  This requires that the arch annotates or otherwise protects
 | 
				
			||||||
 | 
						  its external entry points from being discarded. Linker scripts
 | 
				
			||||||
 | 
						  must also merge .text.*, .data.*, and .bss.* correctly into
 | 
				
			||||||
 | 
						  output sections. Care must be taken not to pull in unrelated
 | 
				
			||||||
 | 
						  sections (e.g., '.text.init'). Typically '.' in section names
 | 
				
			||||||
 | 
						  is used to distinguish them from label names / C identifiers.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					config LD_DEAD_CODE_DATA_ELIMINATION
 | 
				
			||||||
 | 
						bool "Dead code and data elimination (EXPERIMENTAL)"
 | 
				
			||||||
 | 
						depends on HAVE_LD_DEAD_CODE_DATA_ELIMINATION
 | 
				
			||||||
 | 
						depends on EXPERT
 | 
				
			||||||
 | 
						help
 | 
				
			||||||
 | 
						  Select this if the architecture wants to do dead code and
 | 
				
			||||||
 | 
						  data elimination with the linker by compiling with
 | 
				
			||||||
 | 
						  -ffunction-sections -fdata-sections, and linking with
 | 
				
			||||||
 | 
						  --gc-sections.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						  This can reduce on disk and in-memory size of the kernel
 | 
				
			||||||
 | 
						  code and static data, particularly for small configs and
 | 
				
			||||||
 | 
						  on small systems. This has the possibility of introducing
 | 
				
			||||||
 | 
						  silently broken kernel if the required annotations are not
 | 
				
			||||||
 | 
						  present. This option is not well tested yet, so use at your
 | 
				
			||||||
 | 
						  own risk.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
config SYSCTL
 | 
					config SYSCTL
 | 
				
			||||||
	bool
 | 
						bool
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue