45 lines
		
	
	
	
		
			1.3 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			45 lines
		
	
	
	
		
			1.3 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
|   | #!/bin/sh -x | ||
|  | # Based on the vmlinux file create the System.map file | ||
|  | # System.map is used by module-init tools and some debugging | ||
|  | # tools to retreive the actual addresses of symbols in the kernel. | ||
|  | # | ||
|  | # Usage | ||
|  | # mksysmap vmlinux System.map | ||
|  | 
 | ||
|  | 
 | ||
|  | ##### | ||
|  | # Generate System.map (actual filename passed as second argument) | ||
|  | 
 | ||
|  | # $NM produces the following output: | ||
|  | # f0081e80 T alloc_vfsmnt | ||
|  | 
 | ||
|  | #   The second row specify the type of the symbol: | ||
|  | #   A = Absolute | ||
|  | #   B = Uninitialised data (.bss) | ||
|  | #   C = Comon symbol | ||
|  | #   D = Initialised data | ||
|  | #   G = Initialised data for small objects | ||
|  | #   I = Indirect reference to another symbol | ||
|  | #   N = Debugging symbol | ||
|  | #   R = Read only | ||
|  | #   S = Uninitialised data for small objects | ||
|  | #   T = Text code symbol | ||
|  | #   U = Undefined symbol | ||
|  | #   V = Weak symbol | ||
|  | #   W = Weak symbol | ||
|  | #   Corresponding small letters are local symbols | ||
|  | 
 | ||
|  | # For System.map filter away: | ||
|  | #   a - local absolute symbols | ||
|  | #   U - undefined global symbols | ||
|  | #   w - local weak symbols | ||
|  | 
 | ||
|  | # readprofile starts reading symbols when _stext is found, and | ||
|  | # continue until it finds a symbol which is not either of 'T', 't', | ||
|  | # 'W' or 'w'. __crc_ are 'A' and placed in the middle | ||
|  | # so we just ignore them to let readprofile continue to work. | ||
|  | # (At least sparc64 has __crc_ in the middle). | ||
|  | 
 | ||
|  | $NM -n $1 | grep -v '\( [aUw] \)\|\(__crc_\)\|\( \$[adt]\)' > $2 | ||
|  | 
 |