mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-31 08:38:45 +02:00 
			
		
		
		
	kbuild: add CONFIG_VMLINUX_MAP expert option
It can be quite useful to have ld emit a link map file, in order to debug or verify that special sections end up where they are supposed to, and to see what LD_DEAD_CODE_DATA_ELIMINATION manages to get rid of. The only reason I'm not just adding this unconditionally is that the .map file can be rather large (several MB), and that's a waste of space when one isn't interested in these things. Also make it depend on CONFIG_EXPERT. Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
This commit is contained in:
		
							parent
							
								
									609bbb4de4
								
							
						
					
					
						commit
						5cc1247204
					
				
					 4 changed files with 20 additions and 0 deletions
				
			
		
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							|  | @ -59,6 +59,7 @@ modules.order | |||
| /linux | ||||
| /vmlinux | ||||
| /vmlinux.32 | ||||
| /vmlinux.map | ||||
| /vmlinux.symvers | ||||
| /vmlinux-gdb.py | ||||
| /vmlinuz | ||||
|  |  | |||
|  | @ -252,6 +252,7 @@ vmlinux-* | |||
| vmlinux.aout | ||||
| vmlinux.bin.all | ||||
| vmlinux.lds | ||||
| vmlinux.map | ||||
| vmlinux.symvers | ||||
| vmlinuz | ||||
| voffset.h | ||||
|  |  | |||
|  | @ -449,6 +449,16 @@ config VMLINUX_VALIDATION | |||
| 	depends on STACK_VALIDATION && DEBUG_ENTRY && !PARAVIRT | ||||
| 	default y | ||||
| 
 | ||||
| config VMLINUX_MAP | ||||
| 	bool "Generate vmlinux.map file when linking" | ||||
| 	depends on EXPERT | ||||
| 	help | ||||
| 	  Selecting this option will pass "-Map=vmlinux.map" to ld | ||||
| 	  when linking vmlinux. That file can be useful for verifying | ||||
| 	  and debugging magic section games, and for seeing which | ||||
| 	  pieces of code get eliminated with | ||||
| 	  CONFIG_LD_DEAD_CODE_DATA_ELIMINATION. | ||||
| 
 | ||||
| config DEBUG_FORCE_WEAK_PER_CPU | ||||
| 	bool "Force weak per-cpu definitions" | ||||
| 	depends on DEBUG_KERNEL | ||||
|  |  | |||
|  | @ -155,6 +155,7 @@ vmlinux_link() | |||
| 	local output=${1} | ||||
| 	local objects | ||||
| 	local strip_debug | ||||
| 	local map_option | ||||
| 
 | ||||
| 	info LD ${output} | ||||
| 
 | ||||
|  | @ -166,6 +167,10 @@ vmlinux_link() | |||
| 		strip_debug=-Wl,--strip-debug | ||||
| 	fi | ||||
| 
 | ||||
| 	if [ -n "${CONFIG_VMLINUX_MAP}" ]; then | ||||
| 		map_option="-Map=${output}.map" | ||||
| 	fi | ||||
| 
 | ||||
| 	if [ "${SRCARCH}" != "um" ]; then | ||||
| 		if [ -n "${CONFIG_LTO_CLANG}" ]; then | ||||
| 			# Use vmlinux.o instead of performing the slow LTO | ||||
|  | @ -187,6 +192,7 @@ vmlinux_link() | |||
| 		${LD} ${KBUILD_LDFLAGS} ${LDFLAGS_vmlinux}	\ | ||||
| 			${strip_debug#-Wl,}			\ | ||||
| 			-o ${output}				\ | ||||
| 			${map_option}				\ | ||||
| 			-T ${lds} ${objects} | ||||
| 	else | ||||
| 		objects="-Wl,--whole-archive			\ | ||||
|  | @ -200,6 +206,7 @@ vmlinux_link() | |||
| 		${CC} ${CFLAGS_vmlinux}				\ | ||||
| 			${strip_debug}				\ | ||||
| 			-o ${output}				\ | ||||
| 			${map_option:+-Wl,${map_option}}	\ | ||||
| 			-Wl,-T,${lds}				\ | ||||
| 			${objects}				\ | ||||
| 			-lutil -lrt -lpthread | ||||
|  | @ -303,6 +310,7 @@ cleanup() | |||
| 	rm -f .tmp_vmlinux* | ||||
| 	rm -f System.map | ||||
| 	rm -f vmlinux | ||||
| 	rm -f vmlinux.map | ||||
| 	rm -f vmlinux.o | ||||
| } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Rasmus Villemoes
						Rasmus Villemoes